2016-11-26 52 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领域。

相关问题