另外,H.264使用以下几项关 键技术:
(1)H.264除了支持P帧、B帧外,还包括流间传送帧—SP帧,能在有类似内容但有不同码率的码流之间快速切换,使用多参考帧进行帧间预测编码,其中参考帧的个数为1~5个,这样比单参考帧节省了5%~10%的码子空间;
(2)帧间预测可以基于7种不同大小的块来进行,这比单独的16×16块预测方法提高大于15%的编码率;
(3)H.264的运动估计采用高精度的亚像素运动补偿,支持1/4或者1/8像素精度的运动估值。对于QCIF的视频格式使用1/4像素精度预测方式;对CIF的视频格式使用1/8像素精度预测方式。
(4)H.264中可选32种不同的量化步长,这与H.263中有31个量化步长很相似,但是在H.264中,步长是以12.5%的复合率递进的,而不是一个固定常数;
(5)H.264使用基于4×4块的整数残差变换编码方式,反变换过程中没有匹配错误问题;
(6)采用基于4×4块边界的去块滤波器来消除块效应,从而极大地改善了图像的主观质量;
(7)H.264采用两种可选择熵编码CAVLC(基于内容的自适应变长编码)和CABAC(自适应二进制算术
编码)。后者可以提高大约10%的编码率。
H.264算法的DSP实现和优化
代码实现
ITU-T官方提供的H.264的核心算法不仅在代码结构上需要改进,而且在具体的核心算法上也需要做大的改动,才能达到实时的要求。
需要做的具体工作包括:去除冗余代码,规范程序结构,全局和局部变量的调整和重新定义,结构体的调整等。开发工具CCS有自己的ANSIC编译器和优化器,并有自己的语法规则和定义,所以在DSP上实现H.264的算法要把PC机上C语言编写的H.264代码进行改动,使其完全符合DSP中C的规则。相关的改动包括:去除所有的文件操作;去除可视化界面的操作;合理安排内存空间的预留和分配;规范数据类型——因为C6416是定点DSP芯片,只支持4种数据类型:short型(16b)、int(32b)、long型(40b)和double型(64b),因此必须对数据进行重新规范,把浮点数的运算部分近似用定点表示,或用定点实现浮点运算;根据内存的分配定义远近程常量和变量;把常用的数据在数据结构中提取出来,以near型数据定义在DSP 内部存储空间,以减少对EMIF端口的读取,从而提高速度。
H.264的DSP算法优化
结合DSP本身的特点,对算法进一步优化,实现H.264算法对视频图像的实时处理。采取了以下措施:
(1)通过选择CCS提供的编译优化参数-mw、-pm、-o3和-mt等,根据H.264系统的要求进行优化,通过不断地对各个参数的选择、搭配、调整,改善循环、多重循环体的性能,从而提高软件的并行性。
(2)对反复调用和影响编码速度的关键C代码进行线性汇编重写。结合CCS代码剖析工具,利用线性汇编重写了反整数变换、1/4像素内插和去块效应等关键函数,函数运行时钟周期只是C语言的1/2~1/3。
(3)对原测试模型进行裁减,定制H.264的编码代码,通过实际测试盒性能分析,删除了对性能影响不大的算法,如峰值信噪比计算等部分。
(4)使用intrinsics内联函数优化C程序,内联函数直接替代复杂的C代码,有助于减少指令周期,提高代码性能。
(5)利用EDMA实现大容量数据传输,以DMA的方式加快数据处理速度,从而减少CPU接入,减轻处理器的负担。
(6)在网络软件实现、EDMA数据传输和定时器使用上,充分利用TI提供的库函数,有助于提高性能,降低代码长度。
H.264编码器防爆设计和性能评价
由于煤矿井下环境极其恶劣,因此除了在进行硬件设计时需考虑电路板的电气特性以外,基于编码器功耗和现场安全要求,对其采用防爆外壳。外壳的设计参照《煤矿安全规范》、《煤矿设计规范》、《爆炸性环境用防爆电气通用设备要求》、《煤矿通信、检测、控制用电工电子产品通用技术要求》、《爆炸性环境用防爆电气设备本质安全型电路和电气设备要求》等技术标准,要求产品能够通过振动、冲击、淋水、湿热、高低温工作、电压波动等10多项安全检测,并能安全运行在井下有爆炸性气体的环境中。
对H.264与MPEG-4、 H.263++编码性能在10/100Mbps工业以太网试验环境进行比较,结果表明:H.264具有比MPEG和H.263++更优秀的PSNR性能。 H.264的PSNR比MPEG-4平均要高2dB,比H.263++平均要高3dB。而且在同样的编码速率下,基于H.264的编码系统视频更清晰、流畅,能满足现场的需求。
结束语
本文提出了使用数字信号处理器和嵌入式网络微控制器,设计面向煤矿工业以太网应用的H.264编码器,从而构建基于工业以太网的网络化视频监控系统,对煤矿视频监控系统的网络化关键技术进行研究。有利于促进煤矿企业信息化和网络化,构建基于IP的管控一体化网络。