2014-06-09 81 views
0

我不知道使用哪個值來獲取原始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 

可以是其中之一嗎?

回答

4

這要看具體的YUV420你想: Planar/Biplanar指的是內存中的亮度和色度分量,Planar這意味着每個組件出現在緩衝區中,連續的或不的安排,Biplanar指向兩個緩衝區,一個用於亮度,另一個用於色度,通常是交錯的。的Planar一個例子是YUV420格式和Biplanar一個例子是NV21NV12

VideoRangeFullRange指亮度分量的值,Video參照[16235]接受水平和FullRange爲[0255]。這個混淆的協議來自MPEG標準(see here)...