public VTStatus EncodeFrame(CVImageBuffer imageBuffer, CMTime presentationTimestamp, CMTime duration, NSDictionary frameProperties, IntPtr sourceFrame, out VTEncodeInfoFlags infoFlags, VTCompressionOutputHandler outputHandler) { if (Handle == IntPtr.Zero) { throw new ObjectDisposedException("CompressionSession"); } if (imageBuffer == null) { throw new ArgumentNullException("imageBuffer"); } if (outputHandler == null) { throw new ArgumentNullException("outputHandler"); } unsafe { var block = new BlockLiteral(); var blockPtr = █ block.SetupBlockUnsafe(compressionOutputHandlerTrampoline, outputHandler); try { return(VTCompressionSessionEncodeFrameWithOutputHandler(Handle, imageBuffer.Handle, presentationTimestamp, duration, frameProperties == null ? IntPtr.Zero : frameProperties.Handle, out infoFlags, blockPtr)); } finally { blockPtr->CleanupBlock(); } } }
public VTStatus EncodeFrame (CVImageBuffer imageBuffer, CMTime presentationTimestamp, CMTime duration, NSDictionary frameProperties, IntPtr sourceFrame, out VTEncodeInfoFlags infoFlags, VTCompressionOutputHandler outputHandler) { if (Handle == IntPtr.Zero) throw new ObjectDisposedException ("CompressionSession"); if (imageBuffer == null) throw new ArgumentNullException ("imageBuffer"); if (outputHandler == null) throw new ArgumentNullException ("outputHandler"); unsafe { var block = new BlockLiteral (); var blockPtr = █ block.SetupBlock (compressionOutputHandlerTrampoline, outputHandler); try { return VTCompressionSessionEncodeFrameWithOutputHandler (Handle, imageBuffer.Handle, presentationTimestamp, duration, frameProperties == null ? IntPtr.Zero : frameProperties.Handle, out infoFlags, blockPtr); } finally { blockPtr->CleanupBlock (); } } }