+typedef struct qtcapture_block_t
+{
+ block_t block;
+ CVImageBufferRef imageBuffer;
+ block_free_t pf_original_release;
+} qtcapture_block_t;
+
+static void qtcapture_block_release( block_t *p_block )
+{
+ qtcapture_block_t * p_qtblock = (qtcapture_block_t *)p_block;
+ CVBufferRelease(p_qtblock->imageBuffer);
+ CVPixelBufferUnlockBaseAddress(p_qtblock->imageBuffer, 0);
+ p_qtblock->pf_original_release( &p_qtblock->block );
+}
+
+static block_t * qtcapture_block_new( void * p_buffer,
+ int i_buffer,
+ CVImageBufferRef imageBufferToRelease )
+{
+ qtcapture_block_t * p_qtblock;
+
+ /* Build block */
+ p_qtblock = malloc( sizeof( qtcapture_block_t ) );
+ if(!p_qtblock) return NULL;
+
+ /* Fill all fields */
+ block_Init( &p_qtblock->block, p_buffer, i_buffer );
+ p_qtblock->block.pf_release = qtcapture_block_release;
+ p_qtblock->imageBuffer = imageBufferToRelease;
+
+ return (block_t *)p_qtblock;
+}
+
+