extern static unsafe VTStatus VTCompressionSessionEncodeFrameWithOutputHandler( /* VTCompressionSessionRef */ IntPtr session, /* CVImageBufferRef */ IntPtr imageBuffer, /* CMTime */ CMTime presentation, /* CMTime */ CMTime duration, // can ve CMTime.Invalid /* CFDictionaryRef */ IntPtr dict, // can be null, undocumented options /* VTEncodeInfoFlags */ out VTEncodeInfoFlags flags, /* VTCompressionOutputHandler */ BlockLiteral *outputHandler);
extern static VTStatus VTCompressionSessionEncodeFrame( /* VTCompressionSessionRef */ IntPtr session, /* CVImageBufferRef */ IntPtr imageBuffer, /* CMTime */ CMTime presentation, /* CMTime */ CMTime duration, // can ve CMTime.Invalid /* CFDictionaryRef */ IntPtr dict, // can be null, undocumented options /* void* */ IntPtr sourceFrame, /* VTEncodeInfoFlags */ out VTEncodeInfoFlags flags);
static void CompressionCallback (IntPtr outputCallbackClosure, IntPtr sourceFrame, VTStatus status, VTEncodeInfoFlags infoFlags, IntPtr cmSampleBufferPtr) { var gch = GCHandle.FromIntPtr (outputCallbackClosure); var func = (VTCompressionOutputCallback) gch.Target; using (var sampleBuffer = new CMSampleBuffer (cmSampleBufferPtr)) { func (sourceFrame, status, infoFlags, sampleBuffer); } }
static unsafe void VTCompressionOutputHandlerTrampoline(BlockLiteral *block, VTStatus status, VTEncodeInfoFlags infoFlags, IntPtr sampleBuffer) { var del = (VTCompressionOutputHandler)(block->Target); if (del != null) { del(status, infoFlags, new CMSampleBuffer(sampleBuffer)); } }
static void CompressionCallback(IntPtr outputCallbackClosure, IntPtr sourceFrame, VTStatus status, VTEncodeInfoFlags infoFlags, IntPtr cmSampleBufferPtr) { CompressionCallback(outputCallbackClosure, sourceFrame, status, infoFlags, cmSampleBufferPtr, true); }
static void CompressionCallback(IntPtr outputCallbackClosure, IntPtr sourceFrame, VTStatus status, VTEncodeInfoFlags infoFlags, IntPtr cmSampleBufferPtr, bool owns) { var gch = GCHandle.FromIntPtr(outputCallbackClosure); var func = (VTCompressionOutputCallback)gch.Target; if (cmSampleBufferPtr == IntPtr.Zero) { func(sourceFrame, status, infoFlags, null); } else { using (var sampleBuffer = new CMSampleBuffer(cmSampleBufferPtr, owns: owns)) func(sourceFrame, status, infoFlags, sampleBuffer); } }
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 presentationTimestampe, CMTime duration, NSDictionary frameProperties, IntPtr sourceFrame, out VTEncodeInfoFlags infoFlags) { if (Handle == IntPtr.Zero) { throw new ObjectDisposedException("CompressionSession"); } if (imageBuffer == null) { throw new ArgumentNullException("imageBuffer"); } return(VTCompressionSessionEncodeFrame(Handle, imageBuffer.Handle, presentationTimestampe, duration, frameProperties == null ? IntPtr.Zero : frameProperties.Handle, sourceFrame, out infoFlags)); }
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 (); } } }
static unsafe void VTCompressionOutputHandlerTrampoline (BlockLiteral *block, VTStatus status, VTEncodeInfoFlags infoFlags, IntPtr sampleBuffer) { var del = (VTCompressionOutputHandler)(block->Target); if (del != null) del (status, infoFlags, new CMSampleBuffer (sampleBuffer)); }
extern static unsafe VTStatus VTCompressionSessionEncodeFrameWithOutputHandler ( /* VTCompressionSessionRef */ IntPtr session, /* CVImageBufferRef */ IntPtr imageBuffer, /* CMTime */ CMTime presentation, /* CMTime */ CMTime duration, // can ve CMTime.Invalid /* CFDictionaryRef */ IntPtr dict, // can be null, undocumented options /* VTEncodeInfoFlags */ out VTEncodeInfoFlags flags, /* VTCompressionOutputHandler */ BlockLiteral *outputHandler);
public VTStatus EncodeFrame (CVImageBuffer imageBuffer, CMTime presentationTimestampe, CMTime duration, NSDictionary frameProperties, IntPtr sourceFrame, out VTEncodeInfoFlags infoFlags) { if (Handle == IntPtr.Zero) throw new ObjectDisposedException ("CompressionSession"); if (imageBuffer == null) throw new ArgumentNullException ("imageBuffer"); return VTCompressionSessionEncodeFrame (Handle, imageBuffer.Handle, presentationTimestampe, duration, frameProperties == null ? IntPtr.Zero : frameProperties.Handle, sourceFrame, out infoFlags); }
extern static VTStatus VTCompressionSessionEncodeFrame ( /* VTCompressionSessionRef */ IntPtr session, /* CVImageBufferRef */ IntPtr imageBuffer, /* CMTime */ CMTime presentation, /* CMTime */ CMTime duration, // can ve CMTime.Invalid /* CFDictionaryRef */ IntPtr dict, // can be null, undocumented options /* void* */ IntPtr sourceFrame, /* VTEncodeInfoFlags */ out VTEncodeInfoFlags flags);
static void CompressionCallback(IntPtr outputCallbackClosure, IntPtr sourceFrame, VTStatus status, VTEncodeInfoFlags infoFlags, IntPtr cmSampleBufferPtr) { var gch = GCHandle.FromIntPtr(outputCallbackClosure); var func = (VTCompressionOutputCallback)gch.Target; using (var sampleBuffer = new CMSampleBuffer(cmSampleBufferPtr)) { func(sourceFrame, status, infoFlags, sampleBuffer); } }