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); }