Как создать CVPixelBuffer с форматом 32RGBA для iPhone? - PullRequest
6 голосов
/ 06 ноября 2011

При попытке создать 32-битный CVPixelBuffer RGBA я постоянно получаю ошибки.

В частности, ошибка -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);

Может кто-нибудь подсказать, что я делаю не так?

1 Ответ

7 голосов
/ 06 ноября 2011

Вам нужно будет использовать другой формат пикселей.То, что для 32RGBA определена константа, не означает, что она поддерживается.В этой технической записке перечислены поддерживаемые форматы (на момент написания) и функции, которые вы можете использовать, чтобы узнать, какие форматы в настоящее время поддерживаются:

Технические вопросы и ответы QA1501 Core Video - Доступные форматы пикселей

Наиболее похожие поддерживаемые форматы: 32ARGB и 32BGRA.

...