H264研究笔记

Oct 1, 2017


记录解决项目中视频编解码实际问题时需要掌握的一些H264协议细节。


Picture Management




基本概念


宏块(Macro Block)


一个编码图像首先需要被划分为多个块(4x4像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为16x16个像素。宏块分为I、P、B三种。

  • I宏块: 只能使用当前片(slice)中已经解码后的像素作为参考进行帧内预测(intra prediction)。
  • P宏块: 可以使用前面解码的图像作为参考进行帧内预测。
  • B宏块: 使用前后的参考图像进行帧内预测。


片(slice)


一帧视频图像可以编码成一个或者多个片,每个片包含整数个宏块。片的目的是为了限制误码的扩散和传输,使编码片之间互相保持独立。片共有5种类型:

  • I slice: 只包含I宏块。
  • P slice: 包含p和I宏块。
  • B slice: 包含B和I宏块。
  • SP slice: 用于不同编码流之间的切换。
  • SI slice: 特殊类型的编码宏块。

片组成示意图如下:片头规定了片的类型、属于哪个图像、有关参考图像信息等。片的数据包含了一系列宏块和不编码数据。

h264_0