H.264/AVC图标插入转码算法及软件实现
2012-06-06程相昱段继忠汪少初
程相昱,刘 昱,段继忠,汪少初
(天津大学 信息工程学院,天津 300072)
H.264/AVC[1]作为新一代视频压缩编码标准,由于其高效的压缩性能和良好的网络亲和性,在数字广播电视领域和互联网领域逐步进入实际应用。基于视频转换编码技术[2-3]的H.264/AVC图标、字幕插入应用将会有广泛的应用需求。视频转换编码的核心思想是通过信息重用在视频质量、码率和编码计算量之间取得平衡。经测算,在H.264/AVC编码过程中,宏块模式判断和帧间运动估计占用了75%左右的计算量。因此,在转码系统中,编码端重用解码获得的宏块类型、帧内/帧间预测模式、运动矢量、参考帧等编码参数,可以在保证输出高质量视频的前提下,大幅度降低计算量,提高编码速度。
文献[4]系统评价了多种转码架构的优劣性,根据转码需求,本文采用像素域级联转码架构。文献[5]讨论了在MPEG-2码流中的图标插入算法。文献[6]提出一种H.264码流中的图标插入算法,该算法在帧内编码时,对图标周围的宏块采用IPCM编码的方式以保证无损,但此方案在应用中会造成码率明显增大,且不能有效解决帧间编码由于图标插入而造成的影响。笔者在此基础上,提出了一种高效、优质,且支持码流特性全面的H.264/AVC图标插入转换编码器。
1 H.264/AVC图标插入关键技术
1.1 转码器架构
转码器架构如图1所示。
图1 转码器架构框图
该转码器架构采用像素域的级联转码器(Cascaded Pixel-Domain Transcoder,CPDT)[4],解码端将视频完整解码到像素域作为编码端输入,重新执行变换和量化,编码所需要的宏块类型、量化参数、预测模式、运动矢量等参数从解码端获得。重用的语法信息如表1所示。
表1 重用的语法元素(对应标准)
本文采用了无再损编码方案,减少二次编码过程的信息损失,保证转码得到的码流具有高图像质量;通过重用输入码流的编码参数,节省编码过程中模式判断和运动估计的计算量,大幅提高编码速度。
1.2 无再损H.264编码
简化的转码过程如图2所示。
图2 简化的转码过程框图
无再损H.264编码,即第一次编码的重建图像和第二次编码的重建图像严格一致。文献[7]提出无再损帧内编码的算法,解决了帧内编码中由于数据溢出和整数运算误差造成的图像失真问题。
H.264中引入去块效应滤波,滤波会修改宏块边界以及边界附近的像素。为保证两次编码重构图像一致,笔者在解码过程中关闭去块效应滤波,以未滤波的图像作为编码端输入,最大限度地减少了二次编码过程的信息损失。
在以未滤波图像为输入源的情况下,假设反变换与反量化均为线性可逆运算,则图2中,从B到G的过程没有信息损失,两次编码的重建图像严格一致,即为无再损编码。H.264编解码中大多数运算为8 bit整数运算,在重构过程中可能产生数据溢出,H.264标准中规定了Clip运算保证输出数据的有效性。由于整数运算的误差及数据溢出的误差,严格的无再损无法实现,但实验结果表明,在大多数情况下,该方法可高质量恢复原图像,部分序列可实现完全恢复原图像。
1.3 H.264对帧/场特性的支持
编码器大多只实现标准中的一部分特性而非全部,而在实际转码应用中,存在一些码流,含有不被编码器支持的码流特性。在这种情况下,解码参数直接映射到编码端,不能被正确编码。解决此类问题有两个方案,一是设计合理的算法,选择其他参数代替该特性;二是对于一些常见的而编码器不支持的码流特性,完善编码器,并加入其对该特性的支持。
该转码平台选用x264作为编码器,此编码器不支持宏块帧场自适应编码(MacroBlock Adaptive Field Frame,MBAFF),而此特性在码流中较为常见,因此笔者为x264平台加入其对宏块帧场自适应的支持。
MBAFF帧编码最核心的问题是相邻宏块、块地址的推导,相邻像素的加载、相邻宏块的帧/场状态、CBP(Code Block Pattern)、非零系数个数、运动矢量等参数的加载都与此直接相关。
MBAFF帧中,直接赋予宏块帧/场状态、宏块类型等编码参数。在P、B帧中,遇到Skip类型的宏块,会出现特殊问题。由于Skip类型的宏块在码流中只有1个mb_skip_flag的标志位,表征该宏块帧/场状态的语法元素mb_field_decoding_flag的值与该宏块对中另一非Skip类型宏块的值相同,如果1个宏块对中的2个宏块均为Skip类型,则该宏块对中的每个宏块都不存在mb_field_decoding_flag。这时,根据标准,该宏块对的mb_field_decoding_flag值将按下列规则推导出。相应程序段为:
一对在原始码流中不全为Skip类型的宏块对,可能在第二次编码后,恰好全满足Skip类型的条件,这是在被赋予的mb_field_decoding_flag值条件下满足Skip类型的条件。解码过程中,如果按上述规则推导出的mb_field_decoding_flag值与当前宏块编码的真实mb_field_decoding_flag值不一致时,由于帧/场状态错误,解码图像将出现错误,后续解码宏块也都将解码错误。因此,如果一个宏块对中的每个宏块的mb_field_decoding_flag都不存在,且该宏块对的mb_field_decoding_flag值与按照标准预测出的值不一致时,本文将强制把该宏块对的底宏块的类型修正为非Skip类型,且将正确的mb_field_decoding_flag赋予该宏块,并写入码流中,以保证码流中存在表征该宏块对真实帧/场状态的语法信息。
1.4 图标插入后编码参数的优化
根据插入图标处理对宏块编码参数造成的影响,可将一帧中的宏块分为3类,如图3所示。Ⅰ为图标区域宏块,图像数据发生变化;Ⅱ为非图标区域的宏块,自身图像没有变化,但帧内、帧间预测时参考了图标区域的图像;Ⅲ为非图标区域的宏块,自身图像、参考图像都没有变化。
图3 受图标插入影响不同的几类宏块示意图
对应上述不同类型的宏块,编码参数的优化采取不同方案。
Ⅰ、Ⅱ类宏块,由于图像数据或参考图像数据的变化,其宏块类型、预测模式、运动矢量等参数已非最优,如果把这些参数编入码流,将会导致图像质量恶化、码率增加。因此,这两类宏块须重新做模式判断和运动估计,以得到最优的编码参数。
Ⅲ类宏块,自身图像和参考图像都没有变化,直接用原码流的参数,可大幅度提高编码速度。
在Ⅲ类宏块中,帧间的Skip类型宏块必须同时满足运动矢量残差为0和像素残差为0;由于图标插入处理,相邻宏块的运动矢量可能发生变化,导致当前宏块运动矢量残差不再为0,同时,由于二次编码中,变换、量化中整数运算造成的舍入误差和数据溢出的误差,像素残差也可能不再为0。因此,Skip类型宏块需要判断是否满足Skip条件,做出调整,规则(程序段)如下:
2 实验结果及性能比较
本文使用H.264码流作为测试输入,序列采用walk、crew、ice、soccer、city,格式为 720 ×756,GOP 长度为 15,帧结构为“I-B-B-P-B-B-P”,I,P,B 帧 QP 分别为25,28,30,叠加的图标尺寸为160×60。运行平台为Pentium(R)4,CPU 3.00 GHz,Windows XP。
实验分别采用本文提出的转码算法,和完整解码到像素域用JM重新编码两种方案,进行图标插入的转换编码测试,每个序列编码298帧,将输入H.264码流解码到像素域,叠加图标,作为基准参考图像,比较两种方案得到码流的PSNR、码率以及各自的编码时间。walk序列转码前、后码流第一帧的解码图像如图4所示。
图4 walk序列转码前后码流第一帧的解码图像
如图4所示,转码后,在主观上,人眼几乎察觉不到图像变化;客观上,非图标区域宏块参数保持不变,最大限度地保持了输入码流的图像质量。
该设计的转码器,编码端采用开源代码自由软件库x264,x264是通用计算平台上较为快速的H.264编码器。作为官方标准的编解码模型,JM[8]注重全面实现H.264标准中定义的编解码工具,而不注重编码速度。因此,为了公平评价实验结果,本文只与JM编码得到的码流比较PSNR、码率的变化,不比较编码速度。为了体现转码器速度上的优势,以解码到像素域并叠加图标的YUV数据作为输入,用x264编码器重新编码,记录编码时间,与转码器运行实际时间进行对比。
表2列出了图标插入的情况下,分别采用本文设计的转码器和全解全编(JM编码)转码后码流的PSNR、两种方案得到码流码率与原始输入码流码率相比变化的百分比,以及x264编码器重新编码时间和转码器运行时间。
表2 图标插入的转换编码PSNR、码率和编码时间的比较
实验结果表明,转码前后,码率波动幅度较小;在保持码率稳定的情况下,与JM相比,可以获得具有较高PSNR值的码流。表2的运行时间数据表明,转码运行的时间受码率大小影响明显,表明大部分计算量被用于熵编码过程,即用于模式判断计算量的优化已趋近极限。多种序列的测试结果表明,本文提出的H.264/AVC图标插入架构可高效、优质地实现标清H.264码流中的图标插入应用。
3 结束语
本文实现了一种基于x264编码平台的像素域级联转码器,高效、优质地实现在H.264码流中实时插入图标的需求,支持大多数码流特性,可用于实用产品。与H.264标准编码器JM和开源的x264相比,本文无论在编码速度上,还是图像质量上,均具有明显优势。
[1] ITU-T Recommendations H.264-ISO/IEC 14496-10,Advanced video coding for generic audiovisual services[S].2005.
[2]李桂苓,王立.转换编码技术述评[J].电视技术,2007,31(7):18-20.
[3]殷国炯,薛永林.MPEG-2到H.264转码的快速模式选择算法[J].电视技术,2010,34(1):26-29.
[4] XIN J,LIN C,SUN M.Digital video transcoding[J].Proceedings of the IEEE,2005,93(1):84-97.
[5] LIU Yu,LI Guiling,TANG Qiang,et al.DCT domain logo insertion of MPEG2 transcoding[C]//Proc.IEEE CCECE 2003.[S.l.]:IEEE Press,2003:1219-1222.
[6] XU Di,NASIOPOULOS P.Logo insertion transcoding for H.264/AVC compressed video[C]//Proc.the 16th IEEE ICIP 2009.[S.l.]:IEEE Press,2009:3693-3696.
[7]董鹏宇,林涛.基于H.264的无再损帧内编码[J].电子与信息学报,2010,32(1):848-851.
[8] Joint Video Team.JVT reference software version 12.4[EB/OL].[2011-07-22].http://iphome.hhi.de/suehring/tml/.