public virtual unsafe void ReadACValues(int[] p0, global::Org.Jcodec.Common.IO.VLC p1)
        {
            if (id_readACValues_arrayILorg_jcodec_common_io_VLC_ == IntPtr.Zero)
            {
                id_readACValues_arrayILorg_jcodec_common_io_VLC_ = JNIEnv.GetMethodID(class_ref, "readACValues", "([ILorg/jcodec/common/io/VLC;)V");
            }
            IntPtr native_p0 = JNIEnv.NewArray(p0);

            try {
                JValue *__args = stackalloc JValue [2];
                __args [0] = new JValue(native_p0);
                __args [1] = new JValue(p1);

                if (GetType() == ThresholdType)
                {
                    JNIEnv.CallVoidMethod(((global::Java.Lang.Object) this).Handle, id_readACValues_arrayILorg_jcodec_common_io_VLC_, __args);
                }
                else
                {
                    JNIEnv.CallNonvirtualVoidMethod(((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "readACValues", "([ILorg/jcodec/common/io/VLC;)V"), __args);
                }
            } finally {
                if (p0 != null)
                {
                    JNIEnv.CopyArray(native_p0, p0);
                    JNIEnv.DeleteLocalRef(native_p0);
                }
            }
        }
        static int n_ReadDCValue_ILorg_jcodec_common_io_VLC_(IntPtr jnienv, IntPtr native__this, int p0, IntPtr native_p1)
        {
            global::Org.Jcodec.Codecs.Mjpeg.JPEGBitStream __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Codecs.Mjpeg.JPEGBitStream> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
            global::Org.Jcodec.Common.IO.VLC p1 = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.VLC> (native_p1, JniHandleOwnership.DoNotTransfer);
            int __ret = __this.ReadDCValue(p0, p1);

            return(__ret);
        }
        static int n_ReadVLC_Lorg_jcodec_common_io_BitReader_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
        {
            global::Org.Jcodec.Common.IO.VLC       __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.VLC> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
            global::Org.Jcodec.Common.IO.BitReader p0     = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.BitReader> (native_p0, JniHandleOwnership.DoNotTransfer);
            int __ret = __this.ReadVLC(p0);

            return(__ret);
        }
 static void n_ReadACValues_arrayILorg_jcodec_common_io_VLC_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0, IntPtr native_p1)
 {
     global::Org.Jcodec.Codecs.Mjpeg.JPEGBitStream __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Codecs.Mjpeg.JPEGBitStream> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     int[] p0 = (int[])JNIEnv.GetArray(native_p0, JniHandleOwnership.DoNotTransfer, typeof(int));
     global::Org.Jcodec.Common.IO.VLC p1 = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.VLC> (native_p1, JniHandleOwnership.DoNotTransfer);
     __this.ReadACValues(p0, p1);
     if (p0 != null)
     {
         JNIEnv.CopyArray(p0, native_p0);
     }
 }
        static int n_ReadCoeffs_Lorg_jcodec_common_io_BitReader_Lorg_jcodec_common_io_VLC_arrayLorg_jcodec_common_io_VLC_arrayIIIarrayI(IntPtr jnienv, IntPtr native__this, IntPtr native_p0, IntPtr native_p1, IntPtr native_p2, IntPtr native_p3, int p4, int p5, IntPtr native_p6)
        {
            global::Org.Jcodec.Codecs.H264.IO.CAVLC __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Codecs.H264.IO.CAVLC> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
            global::Org.Jcodec.Common.IO.BitReader  p0     = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.BitReader> (native_p0, JniHandleOwnership.DoNotTransfer);
            global::Org.Jcodec.Common.IO.VLC        p1     = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.VLC> (native_p1, JniHandleOwnership.DoNotTransfer);
            global::Org.Jcodec.Common.IO.VLC[]      p2     = (global::Org.Jcodec.Common.IO.VLC[])JNIEnv.GetArray(native_p2, JniHandleOwnership.DoNotTransfer, typeof(global::Org.Jcodec.Common.IO.VLC));
            int[] p3    = (int[])JNIEnv.GetArray(native_p3, JniHandleOwnership.DoNotTransfer, typeof(int));
            int[] p6    = (int[])JNIEnv.GetArray(native_p6, JniHandleOwnership.DoNotTransfer, typeof(int));
            int   __ret = __this.ReadCoeffs(p0, p1, p2, p3, p4, p5, p6);

            if (p2 != null)
            {
                JNIEnv.CopyArray(p2, native_p2);
            }
            if (p3 != null)
            {
                JNIEnv.CopyArray(p3, native_p3);
            }
            if (p6 != null)
            {
                JNIEnv.CopyArray(p6, native_p6);
            }
            return(__ret);
        }
        public virtual unsafe int ReadDCValue(int p0, global::Org.Jcodec.Common.IO.VLC p1)
        {
            if (id_readDCValue_ILorg_jcodec_common_io_VLC_ == IntPtr.Zero)
            {
                id_readDCValue_ILorg_jcodec_common_io_VLC_ = JNIEnv.GetMethodID(class_ref, "readDCValue", "(ILorg/jcodec/common/io/VLC;)I");
            }
            try {
                JValue *__args = stackalloc JValue [2];
                __args [0] = new JValue(p0);
                __args [1] = new JValue(p1);

                int __ret;
                if (GetType() == ThresholdType)
                {
                    __ret = JNIEnv.CallIntMethod(((global::Java.Lang.Object) this).Handle, id_readDCValue_ILorg_jcodec_common_io_VLC_, __args);
                }
                else
                {
                    __ret = JNIEnv.CallNonvirtualIntMethod(((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "readDCValue", "(ILorg/jcodec/common/io/VLC;)I"), __args);
                }
                return(__ret);
            } finally {
            }
        }
        public virtual unsafe int ReadCoeffs(global::Org.Jcodec.Common.IO.BitReader p0, global::Org.Jcodec.Common.IO.VLC p1, global::Org.Jcodec.Common.IO.VLC[] p2, int[] p3, int p4, int p5, int[] p6)
        {
            if (id_readCoeffs_Lorg_jcodec_common_io_BitReader_Lorg_jcodec_common_io_VLC_arrayLorg_jcodec_common_io_VLC_arrayIIIarrayI == IntPtr.Zero)
            {
                id_readCoeffs_Lorg_jcodec_common_io_BitReader_Lorg_jcodec_common_io_VLC_arrayLorg_jcodec_common_io_VLC_arrayIIIarrayI = JNIEnv.GetMethodID(class_ref, "readCoeffs", "(Lorg/jcodec/common/io/BitReader;Lorg/jcodec/common/io/VLC;[Lorg/jcodec/common/io/VLC;[III[I)I");
            }
            IntPtr native_p2 = JNIEnv.NewArray(p2);
            IntPtr native_p3 = JNIEnv.NewArray(p3);
            IntPtr native_p6 = JNIEnv.NewArray(p6);

            try {
                JValue *__args = stackalloc JValue [7];
                __args [0] = new JValue(p0);
                __args [1] = new JValue(p1);
                __args [2] = new JValue(native_p2);
                __args [3] = new JValue(native_p3);
                __args [4] = new JValue(p4);
                __args [5] = new JValue(p5);
                __args [6] = new JValue(native_p6);

                int __ret;
                if (GetType() == ThresholdType)
                {
                    __ret = JNIEnv.CallIntMethod(((global::Java.Lang.Object) this).Handle, id_readCoeffs_Lorg_jcodec_common_io_BitReader_Lorg_jcodec_common_io_VLC_arrayLorg_jcodec_common_io_VLC_arrayIIIarrayI, __args);
                }
                else
                {
                    __ret = JNIEnv.CallNonvirtualIntMethod(((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "readCoeffs", "(Lorg/jcodec/common/io/BitReader;Lorg/jcodec/common/io/VLC;[Lorg/jcodec/common/io/VLC;[III[I)I"), __args);
                }
                return(__ret);
            } finally {
                if (p2 != null)
                {
                    JNIEnv.CopyArray(native_p2, p2);
                    JNIEnv.DeleteLocalRef(native_p2);
                }
                if (p3 != null)
                {
                    JNIEnv.CopyArray(native_p3, p3);
                    JNIEnv.DeleteLocalRef(native_p3);
                }
                if (p6 != null)
                {
                    JNIEnv.CopyArray(native_p6, p6);
                    JNIEnv.DeleteLocalRef(native_p6);
                }
            }
        }
 static void n_WriteVLC_Lorg_jcodec_common_io_BitWriter_I(IntPtr jnienv, IntPtr native__this, IntPtr native_p0, int p1)
 {
     global::Org.Jcodec.Common.IO.VLC       __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.VLC> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Org.Jcodec.Common.IO.BitWriter p0     = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.BitWriter> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.WriteVLC(p0, p1);
 }
 static void n_PrintTable_Ljava_io_PrintStream_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
 {
     global::Org.Jcodec.Common.IO.VLC __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.VLC> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Java.IO.PrintStream      p0     = global::Java.Lang.Object.GetObject <global::Java.IO.PrintStream> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.PrintTable(p0);
 }
 static IntPtr n_GetCodes(IntPtr jnienv, IntPtr native__this)
 {
     global::Org.Jcodec.Common.IO.VLC __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Common.IO.VLC> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     return(JNIEnv.NewArray(__this.GetCodes()));
 }