CMSampleBuffer的理解

CMSampleBufferRef

对于CMSampleBufferRef,苹果官方文档的介绍如下:
A reference to a CMSampleBuffer. A CMSampleBuffer is a Core Foundation object containing zero or more compressed (or uncompressed) samples of a particular media type (audio, video, muxed, and so on).

对 CMSampleBuffer 的引用。 CMSampleBuffer 是一个核心基础对象,包含零个或多个特定媒体类型(音频、视频、多路混合等)的压缩(或未压缩)样本。

也就是说CMSampleBufferRef是对CMSampleBuffer的一样引用。

CMSampleBuffer

CMSampleBuffer是一个 Core Foundation 框架的内容,是c实现的,需要手动管理内存

CMSampleBuffer 是一个核心基础对象。是音视频处理管道传输中的通用数据结构。摄像头采集的视频数据接口、麦克风采集的音频数据接口、编码和解码数据接口、读取和存储视频接口、视频渲染接口等等,都以它作为参数

CMSampleBuffer 中包含着零个或多个某一类型(audio、video等)的采样数据。比如:
要么是一个或多个媒体采样的 CMBlockBuffer(An object used to move blocks of memory through a processing system.用于通过处理系统移动内存块的对象。)。其中可以封装:音频采集后、编码后、解码后的数据(如:PCM 数据、AAC 数据);视频编码后的数据(如:H.264 数据)。
要么是一个 CVImageBuffer(也作 CVPixelBuffer)。其中包含媒体流中 CMSampleBuffers 的格式描述、每个采样的宽高和时序信息、缓冲级别和采样级别的附属信息。缓冲级别的附属信息是指缓冲区整体的信息,比如播放速度、对后续缓冲数据的操作等。采样级别的附属信息是指单个采样的信息,比如视频帧的时间戳、是否关键帧等。其中可以封装:视频采集后、解码后等未经编码的数据(如:YCbCr 数据、RGBA 数据)。

你可能感兴趣的:(CMSampleBuffer的理解)