本文将介绍H.264视频编码器的基本原理,对当今流行的H264编码器进行比较,以 X264 开源编码器为例进行了源码级的分析,介绍X264 中的主要数据结构和函数调用关系。本文的分析能使各位读者对 H264 视频编码原理有更深入的认识,并为自己的应用设计独特的视频编码器,提高视频编码性能。
H264编码器原理:
H.264编码器的功能结构:
如下图所示,H.264 标准压缩系统由视频编码层(Video Coding Layer,VCL)和网络提取层(Network Abstraction Layer,NAL)两部分组成。VCL 层主要包括帧内预测,帧间预测、变换量化、熵编码等压缩单元。NAL 层则用于为 VCL 层提供一个与网络无关的统一接口,它负责对视频数据进行封装打包后使其在网络中传送,它采用统一的数据格式,包括单个字节的包头信息、多个字节的视频数据与组帧、逻辑信道信令、定时信息、序列结束信号等。包头中包含存储标志和类型标志。存储标志用于指示当前数据不属于被参考的帧。类型标志用于指示图像数据的类型。VCL 可以传输按当前的网络情况调整的编码参数。

H264 编码器工作流程 如下图所示,编码器采用的是变换和预测的混合编码法。输入的帧或场 Fn 以宏块为单位被编码器处理。首先,按帧内或帧间预测编码的方法进行处理。若采用帧内预测编码,其预测值 PRED 是由当前片中当前块的左侧和上侧已编码的象素点推出的,而如果采用帧间预测编码,其预测值 PRED 是由已编码的视频帧/场通过运动补偿得到的。预测值 PRED 和当前块相减后,产生一个残差块 Dn,经变换,量化后产生的变化系数 X 再经熵编码,与解码需要信息一起组成一个压缩码流, 经NAL 供传输和存储用。 为进一步提供预测用的参考图像,编码器还需要有重建图像的功能。 即将残差图像经反量化, 反变换后得到 Dn′与预测值PRED相加,得到 uFn′,经过滤波后得到 Fn′即为重建图像,可用于参考图像。
且听下回分解。
|