2016-11-26 102 views
1

我使用三類對OSX爲什麼CVPixelBufferGetDataSize總是返回更多32字節的數據?

AVCaptureSession *m_captureSession; // AVCaptureSession 
AVCaptureScreenInput *m_screenInput;  //AVCaptureScreenInput 
AVCaptureVideoDataOutput *m_videoOutput;  // AVCaptureVideoDataOutput 

而且AVCaptureVideoDataOutputSampleBufferDelegate屏幕捕捉回調時,新的幀可用。

但是,當我調用CVPixelBufferGetDataSize來獲取緩衝區中的幀大小時,它總是返回32個字節。

例如,屏幕尺寸爲2880 * 1800,每個像素包含4個字節的數據(ARGB模式)。 所以幀大小應該是2880 * 1800 * 4字節作爲圖像。但是CVPixelBufferGetDataSize總是返回2880 * 1800 * 4 + 32字節。

有誰知道這個32字節是幹什麼用的?

回答

2

CVPixelBufferGetDataSize

返回PixelBuffer的contigous面的數據大小。

也許這是指你得到什麼,當你撥打CVPixelBufferGetBaseAddress一個「矮胖」緩衝:

對於矮胖的緩衝區,這將在緩衝區在0,0返回一個指針像素對於平面緩衝區,這將返回一個指向一個PlanarComponentInfo結構

所以它可能是一個CVPlanarPixelBufferInfo結構,與4在它的每個通道8個字節的CVPlanarComponentInfo領域。