VideoToolbox可以将视频解压到CVPixelBuffer,也可以压缩到CMSampleBuffer
相关对象:
CVPixelBuffer
 CVPixelBufferPool - 存放CVPixelBuffer
 pixelBufferAttributes - CFDictionary对象,可能会包含视频的宽高,像素格式类型(32RGBA, YCbCr420),是否可以用于OpenGL ES等相关信息
 CMSampleBuffer - 对于压缩的视频帧来说,包含了CMTime,CMVideoFormatDesc和CMBlockBuffer;对于未压缩的光栅图像的话,则包含了CMTime,CMVideoFormatDesc和CMPixelBuffer
 CMTime - 分子是64-bit的时间值,分母是32-bit的时标(time scale)
 CMVideoFormatDescription - 视频宽高,格式(kCMPixelFormat_32RGBA, kCMVideoCodecType_H264), 其他诸如颜色空间等信息的扩展
一般的解码流程:
- 从H.264 流中生成单独的 NALU

 - 使用 CMVideoFormatDescriptionCreateFromH264ParameterSets( ) 从 SPS 和 PPS NALU 创建一个 CMVideoFormatDescriptionRef。如果不先执行此操作,将无法显示任何帧。
 - 根据“AVCC”格式重新打包 IDR 和非 IDR 帧 NALU。 这需要用一个4字节的说明NALU长度的标头去替换NALU的起始代码。不需要为 SPS 和 PPS NALU 执行此操作。
 - 将 CMBlockBuffer 打包到 CMSampleBuffer 中。
 - 创建一个 VTDecompressionSessionRef 并将样本缓冲区输入 VTDecompressionSessionDecodeFrame( )。
 - 在 VTDecompSession 回调中,使用生成的 CVImageBufferRef 来显示视频帧。
 










