public ImageFrame(ImageFormat format, int width, int height, int widthStep, NativeArray <byte> pixelData)
        {
            FreeMemoryHandler memoryHandler = (IntPtr ptr) => { pixelData.Dispose(); };

            freePixelDataHandle = GCHandle.Alloc(memoryHandler, GCHandleType.Pinned);

            unsafe {
                ptr = UnsafeNativeMethods.MpImageFrameCreateWithPixelData(
                    (int)format, width, height, widthStep,
                    (IntPtr)NativeArrayUnsafeUtility.GetUnsafeReadOnlyPtr(pixelData),
                    Marshal.GetFunctionPointerForDelegate(memoryHandler)
                    );
            }

            base.TakeOwnership(ptr);
        }