Ejemplo n.º 1
0
        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);
        }