как получить необработанные данные камеры YUV420p

Я не знаю, какое значение использовать для получения необработанных данных YUV420p. сначала код ниже:

AVCaptureVideoDataOutput *output = [[AVCaptureVideoDataOutput alloc] init];
output.alwaysDiscardsLateVideoFrames = YES;
output.videoSettings = @{(id)kCVPixelBufferPixelFormatTypeKey: [NSNumber numberWithUnsignedInt:kCVPixelFormatType_420YpCbCr8BiPlanarFullRange]};
//output.videoSettings = @{(id)kCVPixelBufferPixelFormatTypeKey: [NSNumber numberWithUnsignedInt:kCVPixelFormatType_32BGRA]};

dispatch_queue_t queue;
queue = dispatch_queue_create("CameraQueue", NULL);
[output setSampleBufferDelegate:self queue:queue];

[session addOutput:output];

Я заметил, что kCVPixelFormatType имеет некоторые значения, кто-нибудь знает, какое значение подходит для получения необработанных данных YUV420p?

kCVPixelFormatType_420YpCbCr8Planar
kCVPixelFormatType_420YpCbCr8PlanarFullRange
kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
kCVPixelFormatType_420YpCbCr8BiPlanarFullRange

может один из них?


person Smeegol    schedule 09.06.2014    source источник


Ответы (1)


Это зависит от того, какой именно YUV420 вы хотите получить: Planar/Biplanar относится к расположению компонентов яркости и цветности в памяти, Planar означает, что каждый компонент поступает в буфер, непрерывный или нет, и Biplanar указывает на два буфера, один для яркость и другой для цветности, обычно с чередованием. Примером Planar является формат YUV420, а примером Biplanar является NV21 или NV12

VideoRange и FullRange относятся к значениям компонента яркости, Video относятся к [16,235] допустимым уровням, а FullRange к [0,255]. Это сбивающее с толку соглашение исходит из стандарта MPEG (см. здесь)...

person miguelao    schedule 09.06.2014