From 78f104aa61d03fe5e29cc7b9c63077ba4e134d3a Mon Sep 17 00:00:00 2001 From: Matthieu Bouron Date: Thu, 7 Nov 2013 12:29:48 +0000 Subject: [PATCH] applemedia: coremediabuffer: use correct retain/release functions on CMSampleBufferRef buffer Fixes a crash while releasing the sample buffer after the image buffer it contains. Also fixes a minor coding style error. https://bugzilla.gnome.org/show_bug.cgi?id=711606 --- sys/applemedia/coremediabuffer.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/sys/applemedia/coremediabuffer.c b/sys/applemedia/coremediabuffer.c index 283d02f908..cf48154218 100644 --- a/sys/applemedia/coremediabuffer.c +++ b/sys/applemedia/coremediabuffer.c @@ -22,15 +22,11 @@ static void gst_core_media_meta_free (GstCoreMediaMeta * meta, GstBuffer * buf) { - if (meta->image_buf != NULL) { + if (meta->image_buf != NULL) CVPixelBufferUnlockBaseAddress (meta->image_buf, kCVPixelBufferLock_ReadOnly); - CVBufferRelease(meta->image_buf); - } - if (meta->block_buf != NULL) { - CFRelease (meta->block_buf); - } - CVBufferRelease ((CVBufferRef)meta->sample_buf); + + CFRelease (meta->sample_buf); } GType @@ -78,8 +74,7 @@ gst_core_media_buffer_new (CMSampleBufferRef sample_buf) pixel_buf = NULL; block_buf = CMSampleBufferGetDataBuffer (sample_buf); - if (image_buf != NULL && - CFGetTypeID (image_buf) == CVPixelBufferGetTypeID ()) { + if (image_buf != NULL && CFGetTypeID (image_buf) == CVPixelBufferGetTypeID ()) { pixel_buf = (CVPixelBufferRef) image_buf; if (CVPixelBufferLockBaseAddress (pixel_buf, @@ -116,7 +111,7 @@ gst_core_media_buffer_new (CMSampleBufferRef sample_buf) meta = (GstCoreMediaMeta *) gst_buffer_add_meta (buf, gst_core_media_meta_get_info (), NULL); - CVBufferRetain ((CVBufferRef)sample_buf); + CFRetain (sample_buf); meta->sample_buf = sample_buf; meta->image_buf = image_buf; meta->pixel_buf = pixel_buf;