public void GetImageBuffer(IntPtr imageHandle, out int width, out int height, out IntPtr yPlane, out IntPtr uPlane, out IntPtr vPlane, out int yRowStride, out int uvPixelStride, out int uvRowStride) { IntPtr ndkImageHandle = IntPtr.Zero; ExternApi.ArImage_getNdkImage(imageHandle, ref ndkImageHandle); width = 0; ExternApi.AImage_getWidth(ndkImageHandle, ref width); height = 0; ExternApi.AImage_getHeight(ndkImageHandle, ref height); const int Y_PLANE = 0; const int U_PLANE = 1; const int V_PLANE = 2; int bufferLength = 0; yPlane = IntPtr.Zero; ExternApi.AImage_getPlaneData(ndkImageHandle, Y_PLANE, ref yPlane, ref bufferLength); uPlane = IntPtr.Zero; ExternApi.AImage_getPlaneData(ndkImageHandle, U_PLANE, ref uPlane, ref bufferLength); vPlane = IntPtr.Zero; ExternApi.AImage_getPlaneData(ndkImageHandle, V_PLANE, ref vPlane, ref bufferLength); yRowStride = 0; ExternApi.AImage_getPlaneRowStride(ndkImageHandle, Y_PLANE, ref yRowStride); uvPixelStride = 0; ExternApi.AImage_getPlanePixelStride(ndkImageHandle, U_PLANE, ref uvPixelStride); uvRowStride = 0; ExternApi.AImage_getPlaneRowStride(ndkImageHandle, U_PLANE, ref uvRowStride); }