public unsafe MP4Packet(global::Org.Jcodec.Containers.Mp4.MP4Packet p0)
            : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
        {
            if (((global::Java.Lang.Object) this).Handle != IntPtr.Zero)
            {
                return;
            }

            try {
                JValue *__args = stackalloc JValue [1];
                __args [0] = new JValue(p0);
                if (GetType() != typeof(MP4Packet))
                {
                    SetHandle(
                        global::Android.Runtime.JNIEnv.StartCreateInstance(GetType(), "(Lorg/jcodec/containers/mp4/MP4Packet;)V", __args),
                        JniHandleOwnership.TransferLocalRef);
                    global::Android.Runtime.JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, "(Lorg/jcodec/containers/mp4/MP4Packet;)V", __args);
                    return;
                }

                if (id_ctor_Lorg_jcodec_containers_mp4_MP4Packet_ == IntPtr.Zero)
                {
                    id_ctor_Lorg_jcodec_containers_mp4_MP4Packet_ = JNIEnv.GetMethodID(class_ref, "<init>", "(Lorg/jcodec/containers/mp4/MP4Packet;)V");
                }
                SetHandle(
                    global::Android.Runtime.JNIEnv.StartCreateInstance(class_ref, id_ctor_Lorg_jcodec_containers_mp4_MP4Packet_, __args),
                    JniHandleOwnership.TransferLocalRef);
                JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, class_ref, id_ctor_Lorg_jcodec_containers_mp4_MP4Packet_, __args);
            } finally {
            }
        }
        static IntPtr n_ProcessFrame_Lorg_jcodec_containers_mp4_MP4Packet_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
        {
            global::Org.Jcodec.Movtool.Remux            __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Movtool.Remux> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
            global::Org.Jcodec.Containers.Mp4.MP4Packet p0     = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Containers.Mp4.MP4Packet> (native_p0, JniHandleOwnership.DoNotTransfer);
            IntPtr __ret = JNIEnv.ToLocalJniHandle(__this.ProcessFrame(p0));

            return(__ret);
        }
        public virtual unsafe void AddFrame(global::Org.Jcodec.Containers.Mp4.MP4Packet p0)
        {
            if (id_addFrame_Lorg_jcodec_containers_mp4_MP4Packet_ == IntPtr.Zero)
            {
                id_addFrame_Lorg_jcodec_containers_mp4_MP4Packet_ = JNIEnv.GetMethodID(class_ref, "addFrame", "(Lorg/jcodec/containers/mp4/MP4Packet;)V");
            }
            try {
                JValue *__args = stackalloc JValue [1];
                __args [0] = new JValue(p0);

                if (GetType() == ThresholdType)
                {
                    JNIEnv.CallVoidMethod(((global::Java.Lang.Object) this).Handle, id_addFrame_Lorg_jcodec_containers_mp4_MP4Packet_, __args);
                }
                else
                {
                    JNIEnv.CallNonvirtualVoidMethod(((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "addFrame", "(Lorg/jcodec/containers/mp4/MP4Packet;)V"), __args);
                }
            } finally {
            }
        }
 static void n_AddFrame_Lorg_jcodec_containers_mp4_MP4Packet_(IntPtr jnienv, IntPtr native__this, IntPtr native_p0)
 {
     global::Org.Jcodec.Containers.Mp4.Muxer.FramesMP4MuxerTrack __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Containers.Mp4.Muxer.FramesMP4MuxerTrack> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     global::Org.Jcodec.Containers.Mp4.MP4Packet p0 = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Containers.Mp4.MP4Packet> (native_p0, JniHandleOwnership.DoNotTransfer);
     __this.AddFrame(p0);
 }
 static int n_GetSize(IntPtr jnienv, IntPtr native__this)
 {
     global::Org.Jcodec.Containers.Mp4.MP4Packet __this = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Containers.Mp4.MP4Packet> (jnienv, native__this, JniHandleOwnership.DoNotTransfer);
     return(__this.Size);
 }
        protected virtual unsafe global::Org.Jcodec.Containers.Mp4.MP4Packet ProcessFrame(global::Org.Jcodec.Containers.Mp4.MP4Packet p0)
        {
            if (id_processFrame_Lorg_jcodec_containers_mp4_MP4Packet_ == IntPtr.Zero)
            {
                id_processFrame_Lorg_jcodec_containers_mp4_MP4Packet_ = JNIEnv.GetMethodID(class_ref, "processFrame", "(Lorg/jcodec/containers/mp4/MP4Packet;)Lorg/jcodec/containers/mp4/MP4Packet;");
            }
            try {
                JValue *__args = stackalloc JValue [1];
                __args [0] = new JValue(p0);

                global::Org.Jcodec.Containers.Mp4.MP4Packet __ret;
                if (GetType() == ThresholdType)
                {
                    __ret = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Containers.Mp4.MP4Packet> (JNIEnv.CallObjectMethod(((global::Java.Lang.Object) this).Handle, id_processFrame_Lorg_jcodec_containers_mp4_MP4Packet_, __args), JniHandleOwnership.TransferLocalRef);
                }
                else
                {
                    __ret = global::Java.Lang.Object.GetObject <global::Org.Jcodec.Containers.Mp4.MP4Packet> (JNIEnv.CallNonvirtualObjectMethod(((global::Java.Lang.Object) this).Handle, ThresholdClass, JNIEnv.GetMethodID(ThresholdClass, "processFrame", "(Lorg/jcodec/containers/mp4/MP4Packet;)Lorg/jcodec/containers/mp4/MP4Packet;"), __args), JniHandleOwnership.TransferLocalRef);
                }
                return(__ret);
            } finally {
            }
        }
            public unsafe RealPacket(global::Org.Jcodec.Movtool.Streaming.Tracks.RealTrack __self, global::Org.Jcodec.Containers.Mp4.MP4Packet p1)
                : base(IntPtr.Zero, JniHandleOwnership.DoNotTransfer)
            {
                if (((global::Java.Lang.Object) this).Handle != IntPtr.Zero)
                {
                    return;
                }

                try {
                    JValue *__args = stackalloc JValue [2];
                    __args [0] = new JValue(__self);
                    __args [1] = new JValue(p1);
                    if (GetType() != typeof(RealPacket))
                    {
                        SetHandle(
                            global::Android.Runtime.JNIEnv.StartCreateInstance(GetType(), "(L" + global::Android.Runtime.JNIEnv.GetJniName(GetType().DeclaringType) + ";Lorg/jcodec/containers/mp4/MP4Packet;)V", __args),
                            JniHandleOwnership.TransferLocalRef);
                        global::Android.Runtime.JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, "(L" + global::Android.Runtime.JNIEnv.GetJniName(GetType().DeclaringType) + ";Lorg/jcodec/containers/mp4/MP4Packet;)V", __args);
                        return;
                    }

                    if (id_ctor_Lorg_jcodec_movtool_streaming_tracks_RealTrack_Lorg_jcodec_containers_mp4_MP4Packet_ == IntPtr.Zero)
                    {
                        id_ctor_Lorg_jcodec_movtool_streaming_tracks_RealTrack_Lorg_jcodec_containers_mp4_MP4Packet_ = JNIEnv.GetMethodID(class_ref, "<init>", "(Lorg/jcodec/movtool/streaming/tracks/RealTrack;Lorg/jcodec/containers/mp4/MP4Packet;)V");
                    }
                    SetHandle(
                        global::Android.Runtime.JNIEnv.StartCreateInstance(class_ref, id_ctor_Lorg_jcodec_movtool_streaming_tracks_RealTrack_Lorg_jcodec_containers_mp4_MP4Packet_, __args),
                        JniHandleOwnership.TransferLocalRef);
                    JNIEnv.FinishCreateInstance(((global::Java.Lang.Object) this).Handle, class_ref, id_ctor_Lorg_jcodec_movtool_streaming_tracks_RealTrack_Lorg_jcodec_containers_mp4_MP4Packet_, __args);
                } finally {
                }
            }