Ejemplo n.º 1
0
        public byte[] decodeFrameToBuffer(byte[] rawFrame, int[] widthHeight, int[] result)
        {
            var rawFramePtr = JNIEnv.NewArray(rawFrame);

            try
            {
                result[0] = Java_com_google_libvpx_LibVpxDec_vpxCodecDecDecode(JNIEnv.Handle, IntPtr.Zero, vpxCodecIface, rawFramePtr, rawFrame.Length);
                if (result[0] == 5)
                {
                    return(null);
                }
                if (result[0] != 0)
                {
                    throw new LibVpxException(errorDetailString());
                }

                var widthHeightPtr = JNIEnv.NewArray(widthHeight);
                try
                {
                    byte[] decoded = (byte[])JNIEnv.GetArray(Java_com_google_libvpx_LibVpxDec_vpxCodecDecGetFrame(JNIEnv.Handle, IntPtr.Zero, vpxCodecIface, widthHeightPtr), JniHandleOwnership.TransferLocalRef, typeof(byte));
                    widthHeight[0] = JNIEnv.GetArrayItem <int>(widthHeightPtr, 0);
                    widthHeight[1] = JNIEnv.GetArrayItem <int>(widthHeightPtr, 1);
                    return(decoded);
                }
                finally
                {
                    JNIEnv.DeleteLocalRef(widthHeightPtr);
                }
            }
            finally
            {
                JNIEnv.DeleteLocalRef(rawFramePtr);
            }
        }
 public void SetArrayItem_JavaLangString()
 {
     using (var stringArray = new Java.Lang.Object(JNIEnv.NewArray(new[] { "a", "b" }), JniHandleOwnership.TransferLocalRef)) {
         using (var v = new Java.Lang.String("d"))
             JNIEnv.SetArrayItem(stringArray.Handle, 1, v);
         Assert.AreEqual("d", JNIEnv.GetArrayItem <string> (stringArray.Handle, 1));
     }
 }
 public void GetArrayItem()
 {
     using (var byteArray = new Java.Lang.Object(JNIEnv.NewArray(new byte[] { 1, 2, 3 }), JniHandleOwnership.TransferLocalRef)) {
         Assert.AreEqual(2, JNIEnv.GetArrayItem <byte> (byteArray.Handle, 1));
         JNIEnv.SetArrayItem(byteArray.Handle, 1, (byte)42);
         Assert.AreEqual(42, JNIEnv.GetArrayItem <byte> (byteArray.Handle, 1));
     }
 }
 public void CopyArray_JavaLangObjectArrayToJavaLangStringArray()
 {
     using (var stringArray = new Java.Lang.Object(JNIEnv.NewArray(new[] { "a", "b" }), JniHandleOwnership.TransferLocalRef)) {
         Java.Lang.Object[] values = (Java.Lang.Object[])JNIEnv.GetArray(stringArray.Handle, JniHandleOwnership.DoNotTransfer, typeof(Java.Lang.Object));
         values [0] = new Java.Lang.String("c");
         JNIEnv.CopyArray(values, stringArray.Handle);
         Assert.AreEqual("c", JNIEnv.GetArrayItem <string> (stringArray.Handle, 0));
         Assert.AreEqual("c", JNIEnv.GetArrayItem <Java.Lang.String> (stringArray.Handle, 0));
     }
 }
        public void GetArrayItem_Int32ArrayArray()
        {
            IntPtr array = JNIEnv.NewObjectArray(1, Java.Lang.Class.Object);

            Assert.AreEqual("[Ljava/lang/Object;", JNIEnv.GetClassNameFromInstance(array));
            int[] seq = new int[] { 1, 2, 3 };
            JNIEnv.SetArrayItem(array, 0, seq);
            int[] oArray = JNIEnv.GetArrayItem <int[]> (array, 0);
            AssertArrays("GetArrayItem_Int32ArrayArray", seq, oArray);
            JNIEnv.DeleteLocalRef(array);
        }
        public void CopyObjectArray()
        {
            IntPtr p = JNIEnv.NewObjectArray(new byte[] { 1, 2, 3 });

            byte[] dest = new byte [3];
            JNIEnv.CopyObjectArray(p, dest);
            AssertArrays("CopyObjectArray: java->C#", dest, (byte)1, (byte)2, (byte)3);
            dest = new byte[] { 42 };
            JNIEnv.CopyObjectArray(dest, p);
            byte written;

            using (var b = JNIEnv.GetArrayItem <Java.Lang.Byte>(p, 0))
                written = (byte)b.ByteValue();
            Assert.AreEqual(42, written);
            JNIEnv.DeleteLocalRef(p);
        }