Hello, First of all, sorry in advance if i'm not addressing the right mailing list.
I'm currently using the CVPixelBufferRef API and more precisely the CVPixelBufferCreateWithPlanarBytes function so I can use my own video buffers. This function let the user provide a callback so the user can provide a function to free its buffer on release. However I can't get my own callback to be executed which leads to severe memory leaks in my application. You can find attached to this email, an example to reproduce the issue. Note that the first example with CVPixelBufferCreateWithBytes works but the CVPixelBufferCreateWithPlanarBytes one don't. Maybe i'm missing something ? I'm facing this issue on OSX 10.9. To compile the example: gcc -framework CoreVideo test_cvbuffer.m -o test_cvbuffer Thanks in advance for your help. Best regards, Matthieu Bouron
#import <CoreVideo/CoreVideo.h> void release_cb (void *releaseRefCon, const void *dataPtr) { printf ("release cb\n"); } void release_planar_cb (void * releaseRefConf, const void *dataPtr, size_t dataSize, size_t numberOfPlanes, const void *planeAddresses[]) { printf ("release planar cb\n"); } int main(int argc, const char * argv[]) { int ret; size_t width = 1280; size_t height = 720; size_t depth = 4; /* Fake packed buffer: 32BGRA */ uint8_t *p = malloc (width * height * depth); /* Fake planar contiguous buffer: 420v */ size_t p2_size = width * height + ((width * height) / 4); uint8_t *p2 = malloc (p2_size); size_t widths[2] = { 1280, 1280 / 2 }; size_t heights[2] = { 720, 720 / 2 }; size_t rows[2] = { 1280 , 1280 }; CVPixelBufferRef buffer; ret = CVPixelBufferCreateWithBytes (NULL, width, height, kCVPixelFormatType_32BGRA, p, width * 4, release_cb, NULL, NULL, &buffer); printf ("ret = %d\n", ret); CVPixelBufferRelease (buffer); buffer = NULL; ret = CVPixelBufferCreateWithPlanarBytes(NULL, width, height,kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, NULL, p2_size, 2, (void **)&p2, widths, heights, rows, release_planar_cb, NULL, NULL, &buffer); printf ("ret = %d\n", ret); CVPixelBufferRelease (buffer); free(p); free(p2); return 0; }
_______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com