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