《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 实时MPEG-2压缩流分析仪的设计

实时MPEG-2压缩流分析仪的设计

2008-09-25
作者:孙小叶 刘济林 王兴国

    摘  要: 在分析压缩视频流结构的基础上,设计高性能软件解码器内核和可视化界面,实现一个实时MPEG-2视频码流分析仪" title="码流分析仪">码流分析仪。它是视频编码研究、质量分析的理想辅助工具,此方法也适用于其它基于运动补偿/DCT框架的压缩码流分析仪的设计。 

    关键词: MPEG-2  内核  压缩视频流

 

    MPEG-2视频编码标准[1]只定义了压缩码流语法结构和解码过程,编码过程和算法无定义,不同的研发者可以采用完全不同的结构和算法。评价编码性能的参数通常有:压缩比、图像质量、编码速度、软硬件复杂度等。MPEG的各种参数以编码的形式存在于压缩比特流中,这使得在研发中无法直观地对它们进行统计分析。另外,采用基于运动补偿、DCT变换的MPEG编码技术使得编码、解码高度不对称,编码方法复杂多样,解码一致简单,所以编码算法的研究和评估常常在压缩码流上进行。传统上采用硬件实现的码流分析器,如:Tektronix 的AD954,速度快,但价格昂贵,开发周期长,灵活性差,且不便于二次开发。随着处理器性能的提高,实时软件解码比较容易实现,同时灵活的可扩展性和低成本特性使得纯软件设计成为视频码流分析仪的一个发展方向。 

    基于软件的码流分析仪由高性能软件解码器内核和可视化用户分析界面和统计两部分组成。 

    ·高性能软件解码器内核:通常压缩流比较长,高效分析要求很高的解码速度;要求解码内核具有高度的误码" title="误码">误码容错功能,能尽可能多地接收不同程度的非法码流;要求较强的从序列层(sequence)到块层(block)的随机访问功能(定位功能)。 

    ·可视化用户分析界面和统计部分:能够让用户尽可能地定量定性分析各种码流参数,如定量表示信噪比PSNR、 DCT系数、量化步长、比特开销、运动矢量等; 直观表达序列组成、图组结构、编码类型、图像质量、量化分布、比特分布、运动信息等。 

1 MPEG-2压缩流参数组成及解析过程 

    根据ISO/IEC13818-2(MPEG-2)国际标准中码流的语法定义,压缩流中视频数据采用分层的比特流结构。第一层称为基本层,可以独立被解码;其他层称之为增强层,其解码依赖于基本层,用于不同的信道环境中,对基本层视频质量有特定的提高;编码比特流中视频数据结构包括视频序列层、图像组块层、图像层、码片层(可选层用于误码容错快速重新同步)、宏块" title="宏块">宏块层和块层。MPEG-2语法流结构如图1。

 

 

    ·视频序列处于最高层。视频序列从视频序列头开始,后面紧接着一系列数据单元。序列头提供同步字、图像分辨率、图像宽高比、帧率、码率、解码缓存需求、量化矩阵、级类、扫描方式(逐行/隔行、帧图/场图)、色度模式(4:2:0、4:2:2、4:4:4)等信息。 

    ·图组层由一系列具有时间预测关系的图像组成,它包含同步字、时间码、图组类型(封闭或是开放)等信息。 

    ·图像层包含同步字、时间参考、图像编码类型I图、P图、B图(I图使用自身图进行编码,P图使用先前的I图或P图信息预测编码,B图由过去或将来的I图或P图双向预测编码得到)、解码延时、运动信息码字选取、图像结构、场时序、时间预测类型、DCT变换方式、量化类型(线性/非线性)、变长编码方式、Z扫描方式、色度模式、隔行或是逐行图像、量化矩阵、显示信息、产权信息等。 

    ·码片层包含同步字、码片垂直位置、量化因子、码片属性标志等信息。宏块层包含宏块地址、量化因子、编码模式、运动矢量、DCT类型等,块层包含量化DCT系数信息。 

    MPEG码流的编码参数合成于这种分层的比特流中。本文利用码流的这种分层结构,在解码过程中提取感兴趣的重要参数,实现MPEG-2码流分析仪的众多功能。 

    MPEG-2码流的解码过程有其固定的格式,可用图2表示。从图2中可以看出解码过程由五个主要功能模块组成:变长码解码、反扫描、反量化、反DCT和运动补偿。这些模块的执行速度直接影响着整个码流的解析效率,其处理结果也决定了解码图像恢复的效果。下面将谈到对其中一些主要功能模块的优化处理,以提高整个解析过程的性能。 

 

 

2 MPEG-2压缩流分析仪的实现 

    MPEG-2码流实时分析需要一个高性能MPEG-2解码核,它要求解码器能进行实时解码,同时具有强大的纠错功能。从以下几方面着手进行MPEG-2分析仪的设计优化。 

2.1实时解码优化 

    表1是优化前解码器上测试得到的解码过程中各主要功能模块所占用的时间百分比。对表格中各解码功能模块的耗时进行分析,发现用于运动补偿、反DCT变换、反量化、变长码的读取占用时间较多,如运动补偿约占整个解码过程的20%以上。究其原因,这些程序模块有着共同的特点:代码不长,但是高度循环,如运动矢量估计、反DCT变换;或者频繁调用同一函数,占用较多的CPU资源,如变长码的读取、反量化等。针对这些情况,本文从算法和代码两方面对解码过程进行了优化。 

 

 

    在算法优化上,本文调整函数结构以避免不必要的重复计算,从而缩短解码时间。同时在适当增加内存开销的前提下,用查表的方式取代了大量繁杂的乘除运算。这种优化主要用在变长码读取、反量化等一些占用大量CPU资源的环节。图3说明了变长码读取结构的调整,其中show_bits(n)、Flush_Buffer(n)的功能分别为读取n位比特数的值和从缓冲区中移走n位比特数。 

 

 

    在代码优化上,本文采用了MMX(多媒体增强指令集)[4][5]和SIMD(单指令多数据流)等技术来优化源代码。大家知道,在得到运动矢量后,要按照运动矢量进行运动补偿帧间预测,得到预测误差。一般来说,为了提高预测的准确性,运动矢量采用半象素精度,这时需要对参考帧做象素内插" title="内插">内插,以此来提高参考帧的空间分辨率。 

    假设Vx和Vy分别代表运动矢量在X方向和Y方向上的分量。对于普通汇编程序,当其中的一个为半象素另一个为整象素时,每次内插处理一个象素需要的运算为:2次读+1次写+1次加法+1次移位。假设所有的数据都在一个缓存中,这样读写操作只需要一个时钟周期" title="时钟周期">时钟周期,平均处理每个象素需要2.5个时钟周期。当Vx和Vy都为半象素时,每次内插处理一个象素需要的运算为:2次读+1次写+4次加法+1次移位。同样假设所有的数据都在一个缓存中,指令完全配对,平均处理每个象素需4个时钟周期。 

    采用MMX技术后,在第一种情况下处理8个象素需要16条指令,当指令完全配对时共需8个时钟周期,平均每象素1个时钟周期。第二种情况下处理8个象素要40个时钟周期,平均每个象素2.5个时钟周期。 

    从上面的例子可以看出,采用MMX等技术优化源代码在实时处理上效果明显,仿真结果在后面给出。 

2.2 容错解码实现 

    容错处理能力也是实现码流评析性能的一项重要指标。一般有两种方法实现误码容错:重新同步功能,MPEG码流提供不同层次的同步字,为误码发生后重新同步提供起始点; 另一个是误码恢复(隐藏),本文着重于这方面的研究。从基于块的编码可知,在一个受损的宏块中,有三类信息需要估计:纹理信息(包括原始图像块的象素值或块预测DCT系数差值) ;宏块的编码模式;运动信息,即P模式或者B模式的宏块运动矢量信息。 

    目前所有用来恢复纹理信息的技术都利用了视频信号的高时空相关特性,原理上都是在时域、空域上估值和内插;对于运动矢量而言,大部分恢复技术利用了平滑特性,进行了时空内插,而恢复编码模式的技术更多地采用了启发方式。所谓启发方式,就是根据相邻宏块编码模式决定当前出错宏块的模式。下面列举三类信息的错误掩盖方法并进行分析。 

    纹理信息的恢复采用空域内插方法。空域插值要考虑两个方面的因素:不能破坏边沿的平滑性,也不能导致图像的模糊;另一方面就是运算量。有的算法采用了比较复杂的内插算法,虽然效果较好,但运算量巨大,而不适合实时应用。 

    一种折衷的空域插值方法,在运算量和效果之间做了较好的平衡。如图4所示。白色的块表示出错的块,灰色的块为正确解码的块,将估计出错块中的每一个象素的值。上面说了边沿信息是最重要的,假设出错点到上面边沿位置距离为w2,到左边的距离为w1,到下边的距离为w3,而对应边沿象素的值为P2、P1、P3,设估计出错点的象素值为P,那么被恢复的P点的象素值为: 

    P=((w1+w2)P3+(w2+w3)P1+(w1+w3)P2)/(2×(w1 +w2+w3))     

 

          

    这种算法能够使边界平缓,在图像运动不大时不会导致太大的模糊,运算量也可以接受。如果丢失了宏块的编码模式,比较好的恢复方法就是:统计与当前宏块在空域或时域相邻的宏块的编码模式,从而得到当前宏块最有可能的编码模式。

    表2横向表示上宏块编码模式,纵向表示下宏块的编码模式。中间表示估计的宏块编码模式。需要说明的是,文中采用的方法只是利用了空域信息,这是因为从统计来看,宏块编码模式在时间上的相关性不强,仅通过空间上的相关性就可较理想地估计出宏块的编码类型。从表2可以看出,只要上下宏块有一个宏块的编码模式不是内部编码,那么预测块就不要用内部编码模式,因为帧内模式的信息量最多,帧内隐藏带来的误差也是最大的。 

 

 

    如果受损的宏块采用帧间编码模式,则必须进一步预测其运动矢量信息。运动矢量信息也必须用当前位置周围或者前一帧当前位置的运动矢量来估计,估计的方法有很多种,而且不同的序列可以有不同的方法。本文采用基于上、下以及前一帧当前位置的宏块运动信息的方法。 

    设待估计的帧间块的运动矢量为MV,上、下以及前一帧当前位置块的运动矢量为MVabo、MVbot、MVpre,步骤如下: 

    Step1:判断是否存在MVabo和MVbot,如果仅仅存在一个,跳到step2;如果两个都存在,跳到step3(不会一个都不存在,否则就不会使用帧间模式了)。 

    Step2:令MVtmp=MVabo或者MVtmp=MVbot,跳转到步骤4。 

    Step3:对两个运动矢量进行平均,令MVtmp=(MVabo+MVbot),然后跳到step4。 

    Step4:得到了由当前帧预测的运动矢量MVtmp,如果存在MVprv,判断MVtmp和MVprv的方向,如果二者在横向和纵向都是指向同一个方向,那么再对二者取加权平均,加权系数为1/4和3/4,结果作为本块最后的估计运动矢量。如果方向不一样,或者根本不存在MVpre,则MVtmp就作为最终得到的运动矢量。 

    概括来说,可采用错误隐藏的策略:先根据上下块信息估计宏块的编码模式,如果预测为跳过帧,那么就直接用前一帧的信息替代当前块的信息;如果为帧内编码,说明帧间相关性不大,则用空域内插方法估计象素值;如果是帧间模式,那么再估计运动信息进行时域内插。模拟结果会在下一章给出。 

2.3 MPEG-2码流分析仪的实现 

    视频压缩过程是质量、码率、复杂度、速度的一个平衡折衷过程,其结果都体现在编码比特流中,因此要研究编码算法和结构的有效性,必然要对压缩目标码流进行统计分析。MPEG-2码流分析仪的设计功能是为了比较不同的编码算法,从中选择合适的算法,所以分析仪设计的前提是解码过程没有错误,是编码过程的真实反映。 

    在保证了解码器具有较高的解码性能的基础上,本文设计了MPEG-2压缩码流分析仪。作为研究分析和测试工具,码流分析仪设计的目标是使用正确、操作简单、功能齐全。 

    MPEG-2码流分析仪根据MPEG-2语法的分层结构进行参数提取,能对编码过程中宏块的编码模式、运动矢量的方向和大小、量化参数、每个宏块的编码比特数等情况作出统计,也能分析虚拟缓冲区的填充情况,这些都是判断编码算法优劣的重要参数。 

3 仿真结果和性能分析 

    上面提到,本文在代码和算法两个方面对解码过程作了优化。表3反映了经解码优化后在实时播放上的效果。Stefan序列为300帧,图像大小为352×288;Zorro序列有897帧,图像大小同上。从表3中可以看出,优化后解码速度都有很大的提高。 

 

 

    图5是不同错误掩盖技术下解码性能的比较。可以看出,没有采用错误掩盖技术解码的算法在出现解码错误后视频质量下降很大,并且质量的下降不容易恢复。而采用本文的技术后,图像质量没有太大的损失,基本满足要求。 

 

 

    文中设计的MPEG-2分析仪对被编码序列的主要参数如量化因子、编码比特数、虚拟缓冲区的填充情况等都进行了单独统计,不同序列的重要特征也进行了分析,使用者能够方便地获得需要的信息。 

    本文从码流解析速度、误码容错和统计分析的角度着手实现了一个基于软件的实时MPEG-2分析仪。从文中介绍的算法和模拟结果中可以看出,在算法和代码两方面进行改进的优化算法在速度上有了较大提高,同时采用解码端的错误恢复和掩盖技术在很大程度上增进了MPEG-2压缩流分析仪的解析能力。 

参考文献 

1 IA-32 Intel Architecture Software Developer's Manual——System Programming Guide. Copyright   1997-2001 Intel Corporation 

2 Intel Pentium4 Processor Optimization——Reference Manual,Copyright   1999-2001 Intel Corporation 

3 ISO/IEC 13818-2. INFORMATION TECHNOLOGY - GENERIC CODING OF MOVING PICTURES AND ASSO-CIATED AUDIO PART 2:VIDEO.1995 

4 Y. Wang and Q Zhu. Error Control and Concealment for Video Communication Review. Proc. Of IEEE,1998;87(May):974~997 

5 精英科技.视频压缩与音频编码技术.北京:中国电力出版社,2001 

6 粱 柱,王兆华.H.263视频编码流的时域错误掩盖.中国图象图形学报,2000;7(A)(11) 

7 吴乐南.PC平台新技术MMX——开发编程指南. 南京: 东南大学出版社,1997 

8 张 云,林 钟.PC平台新技术MMX——应用编程指南. 南京:东南大学出版社,1997

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。