/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_libjpegturbo_turbojpeg_TJDecompressor */

#ifndef _Included_org_libjpegturbo_turbojpeg_TJDecompressor
#define _Included_org_libjpegturbo_turbojpeg_TJDecompressor
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    set
 * Signature: (II)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_set
  (JNIEnv *, jobject, jint, jint);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    get
 * Signature: (I)I
 */
JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_get
  (JNIEnv *, jobject, jint);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    init
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_init
  (JNIEnv *, jobject);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    destroy
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_destroy
  (JNIEnv *, jobject);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    decompressHeader
 * Signature: ([BI)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompressHeader
  (JNIEnv *, jobject, jbyteArray, jint);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    setCroppingRegion
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_setCroppingRegion
  (JNIEnv *, jobject);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    decompress8
 * Signature: ([BI[BIIII)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompress8___3BI_3BIIII
  (JNIEnv *, jobject, jbyteArray, jint, jbyteArray, jint, jint, jint, jint);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    decompress12
 * Signature: ([BI[SIIII)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompress12
  (JNIEnv *, jobject, jbyteArray, jint, jshortArray, jint, jint, jint, jint);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    decompress16
 * Signature: ([BI[SIIII)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompress16
  (JNIEnv *, jobject, jbyteArray, jint, jshortArray, jint, jint, jint, jint);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    decompress8
 * Signature: ([BI[IIIII)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompress8___3BI_3IIIII
  (JNIEnv *, jobject, jbyteArray, jint, jintArray, jint, jint, jint, jint);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    decompressToYUV8
 * Signature: ([BI[[B[I[I)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompressToYUV8
  (JNIEnv *, jobject, jbyteArray, jint, jobjectArray, jintArray, jintArray);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    decodeYUV8
 * Signature: ([[B[I[I[BIIIIII)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decodeYUV8___3_3B_3I_3I_3BIIIIII
  (JNIEnv *, jobject, jobjectArray, jintArray, jintArray, jbyteArray, jint, jint, jint, jint, jint, jint);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    decodeYUV8
 * Signature: ([[B[I[I[IIIIIII)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decodeYUV8___3_3B_3I_3I_3IIIIIII
  (JNIEnv *, jobject, jobjectArray, jintArray, jintArray, jintArray, jint, jint, jint, jint, jint, jint);

/*
 * Class:     org_libjpegturbo_turbojpeg_TJDecompressor
 * Method:    saveImage
 * Signature: (ILjava/lang/String;Ljava/lang/Object;IIII)V
 */
JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_saveImage
  (JNIEnv *, jobject, jint, jstring, jobject, jint, jint, jint, jint);

#ifdef __cplusplus
}
#endif
#endif
