当尝试创建32位RGBA CVPixelBuffer时,我经常会出错。
最值得注意的是错误-6680,这意味着:“缓冲区不支持指定的像素格式。”
这是代码片段:(宽度和高度指定为256 * 256)
NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
// [NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey,
// [NSNumber numberWithBool:YES], kCVPixelBufferCGImageCompatibilityKey,
// [NSNumber numberWithBool:YES], kCVPixelBufferOpenGLCompatibilityKey,
nil];
CVPixelBufferRef pxbuffer = NULL;
CVReturn status = CVPixelBufferCreate(kCFAllocatorDefault, WIDTH,
HEIGHT, kCVPixelFormatType_32RGBA, (CFDictionaryRef) options,
&pxbuffer);
NSParameterAssert(status == kCVReturnSuccess && pxbuffer != NULL);
任何人都可以暗示我做错了吗?
答案 0 :(得分:7)
您需要使用不同的像素格式。仅仅因为有一个为32RGBA定义的常量并不意味着它被支持。本技术说明列出了支持的格式(截至编写时)以及可用于查找当前支持的格式的功能:
Technical Q&A QA1501 Core Video - Available Pixel Formats
支持的最相似的格式是32ARGB和32BGRA。