- FFmpeg音视频开发基础与实战
- 殷汶杰编著
- 697字
- 2022-05-05 20:41:25
3.4.3 H.264的基本算法
1.帧内预测
H.264中采用了基于像素块的帧内预测技术,主要可分为以下类型。
◎ 16像素×16像素的亮度块:4种预测模式。
◎ 4像素×4像素的亮度块:9种预测模式。
◎ 色度块:4种预测模式,与16像素×16像素的亮度块的4种预测模式相同。
16像素×16像素的亮度块的4种预测模式如图3-4所示。
图3-4
4像素×4像素的亮度块的9种预测模式如图3-5所示。
图3-5
2.帧间预测
H.264中的帧间预测方法使用了基于块的运动估计和补偿方法,主要特点如下。
◎ 有多个候选参考帧。
◎ B帧可以作为参考帧。
◎ 参考帧可以任意排序。
◎ 有多种运动补偿像素块形状,包括16像素×16像素、16像素×8像素、8像素×16像素、8像素×8像素、8像素×4像素、4像素×8像素和4像素×4像素。
◎ 有1/4(亮度)像素插值。
◎ 有对交错视频的基于帧或场的运动估计。
把帧间预测的宏块分割为子宏块的方式如图3-6所示。
图3-6
亚像素插值的表示如图3-7所示。其中,Pixel表示图像中整像素点的位置,Half Pixel表示1/2像素插值的位置,Quat.Pixel表示1/4像素插值的位置。
图3-7
3.交错视频编码
针对隔行扫描的视频,H.264专门定义了用于处理此类交错视频的算法。
◎ 图像层的帧场自适应(Picture Adaptive Frame Field,PicAFF)。
◎ 宏块层的帧场自适应(MacroBlock Adaptive Frame Field,MBAFF)。
4.整数变换算法和量化编码
H.264 的变换编码创新性地使用了类似离散余弦变换的整数变换算法,有效降低了运算复杂度。对于基础版的H.264,变换矩阵为4像素×4像素;在FRExt扩展中,还支持8像素×8像素的变换矩阵。
H.264的量化编码算法使用的是标量量化。
5.熵编码
H.264针对不同的语法元素指定了不同的熵编码算法,主要有:
◎ 指数哥伦布编码(Universal Variable Length Coding,UVLC)算法。
◎ 上下文自适应的变长编码(CAVLC)算法。
◎ 上下文自适应的二进制算术编码(CABAC)算法。