一种增强像素域码流转换方法
技术领域
本发明涉及信号处理中的音视频编解码技术领域,尤其涉及一种增强像素域码流转换方法。
背景技术
目前,数字电视节目广播(通过卫星、电缆或者地面无线信道)、数字化视频光盘/高清数字化视频光盘/增强型通用光盘(DVD/HD-DVD/EVD)出版和数字录像机(DV)等领域普遍采用的信源编码标准是MPEG-2。MPEG-2是十年以前制定的标准,这些信源编码标准的制定是建立在当时的压缩技术水平和集成电路技术水平之上的。
近年来,出现了一批数字音视频编解码标准,具有代表性的有国际标准MPEG-4、H.264/MPEG-4AVC,以及我国自主制定的标准AVS,微软公司推出的WM9等等。AVS是我国在数字音视频核心技术和工业标准上争取主动的一次尝试。在AVS标准中大多数是我国自主的专利技术,也有一些少部分国外相关公司申请的专利,加上简洁的一站式授权以及新颖的专利池管理策略,较好地解决了专利问题。另外,AVS在性能上和H.264和MPEG-2相比有比较明显的优势。压缩效率比MPEG-2提高2~3倍,和H.264相当,实现复杂度明显低于H.264。
标准的多样化使不同标准之间的数据格式转换变得越来越重要。AVS是我国自主制定的标准,为了推广中国相关公司制定的标准AVS,需要首先解决MPEG-2到AVS的转码问题,以实现视频数据从MPEG-2到AVS的高质量低延迟转码。
请先参见图1所示,最简单的转码方法是先完全解码视频数据,得到解码后的象素值,然后再用新的编码标准重新编码。这种转码方法称为级联像素域转码(CPDT,Cascaded Pixel Domain Transcoding),此方法的优点是重建图像质量高,失真小,转码器结构简单。级联像素域转码的缺点是计算量大,延迟大,难以达到实时转码的要求。
另一种转码方法是压缩域转码(CDT,Compressed DomainTranscoding),其基本思想是只利用输入码流中已压缩的信息,如视频序列头信息、宏块编码模式信息、运动矢量信息和量化后的离散余弦变换(DCT)系数等,直接生成转码后的码流,如图2所示。这种方法极大的降低了转码过程的运算量,转码功能能够在现有条件下通过软件来实现,且转码效率高,延迟小。但是这种方法只适合处理算法基本相同的压缩格式之间的转码。
发明内容
本发明目的是针对传统的转码方法存在的上述缺点,提供一种增强像素域码流转换方法,以实现MPEG-2到AVS高质量低延迟的实时转码转码。
为了实现上述目的,本明采用如下技术方案,
该增强像素域码流转换方法包括以下步骤:
a,首先把MPEG-2输入码流完全解码,输出YUV格式的视频数据外,还输出解码信息,解码信息包括每帧图像的编码模式,每个宏块的编码模式,如运动矢量、帧内预测模式、量化参数、非零系数个数;
b,然后,充分利用MPEG-2解码得到的输出信息,重新对输出的YUV格式的视频数据进行AVS编码;
c,综合考虑MPEG-2编码和AVS编码的特征,并遵循转码原则进行编码。
所述的步骤a中,
将解码信息包括每帧图像的编码模式,每个宏块的编码模式,如运动矢量、帧内预测模式、量化参数、非零系数个数等放入一个公共缓冲区中,对视频图像进行重新编码,最后输出AVS视频基本流。
利用解码信息帮助提高AVS视频编码效率。
所述的步骤b中,如果MPEG-2中当前解码宏块的离散余弦变换系数为零,AVS编码此宏块时就不要再进行离散余弦变换,直接视此宏块的AVS的离散余弦变换为零。
所遵循的转码原则包括,
对于包含可伸缩编码的MPEG-2视频流,不作速度上的要求;
对于4:4:4格式的MPEG-2视频流,首先下采样为4:2:0格式,速度上仍然不作要求;
保持视频流的高层语法结构,即序列头的位置不变,图像组的位置和结构不变,帧的预测类型不变。
所述的预测类型是指帧内预测、向前预测和双向预测,也就是说,I帧转码后仍然为I帧,P帧转码后仍然为P帧,B帧转码后仍然为B帧。
所述的步骤c中,
所遵循的转码原则还包括,
尽量保持帧的扫描类型不变,即转码前按照帧编码的图像,转码后仍然按照帧编码,转码前按照场编码的图像,转码后仍然按照场编码:
重新划分条带,默认为每一帧只划分为1个条带;
I帧的每一个宏块都将采用AVS的帧内编码算法重新编码,在编码时参考输入码流中对应宏块的编码信息。
对于逐行帧中采用场模式编码的宏块,统一改为按照帧模式编码。
所述的步骤c中,
所遵循的转码原则还包括,
对于MPEG-2视频流中采用跳过模式编码的宏块,转码时直接按照跳过模式编码,不再进行宏块编码模式选择和运动补偿;
对于MPEG-2视频流中运动矢量非零但是非零离散余弦变换系数个数为0的宏块,转码时不再进行宏块编码模式选择和运动补偿,直接采用转码前的运动矢量;
对于MPEG-2视频流中采用其他模式编码的宏块,包括P帧和B帧中采用帧内模式编码的宏块,转码时重新进行宏块编码模式选择和运动补偿,在搜索运动矢量时以转码前的运动矢量为中心在一个较小的范围内。
在本发明的上述技术方案中,该方法首先把MPEG-2输入码流完全解码,输出YUV格式的视频数据外,还输出解码信息,解码信息包括每帧图像的编码模式,每个宏块的编码模式,如运动矢量、帧内预测模式、量化参数、非零系数个数等等;然后,充分利用MPEG-2解码得到的输出信息,重新对输出的YUV格式的视频数据进行AVS编码;最后在编码时,综合考虑MPEG-2编码和AVS编码的特征,并遵循转码原则,以兼顾转码的质量与速度。因此本发明的方法在转换过程中尽可能地利用了输入码流的编码信息,如视频序列头信息、宏块编码模式信息和运动矢量信息等,来提高AVS编码速度,保证了转码的高质量,又降低了转码的运算量。
附图说明
图1为采用级联像素域转码示意图。
图2为采用压缩域转码示意图。
图3为本发明的转换方法示意图。
图4为MPEG-2到AVS转码的转码器原理框图。
图5为增强像素域转码处理流程图。
具体实施方式
为了便于对本发明的增强像素域码流转换方法(实际上是将MPEG-2码流转换为AVS码流)的理解,先对数字视频转码作一简单介绍:数字视频转码就是对编码后的视频数据进行端到端的处理,使其从一种格式转变为另一种格式。所谓的格式包括编码标准、空间分辨率、帧速率、数据传输率等等,其中任何一项特征发生改变都认为是发生了转码。在这里主要不同编码标准之间的转码,即转码前后视频的空间分辨率和帧速率都不改变,只是编码标准发生了改变,当然,其中必然伴随着数据传输率的改变。
我们要转码的是两种不同的标准,首先要比较这两种标准的异同点。
共同点:
AVS和MPEG-2视频流都由序列头和帧组成,图像组(GOP)结构为可选项。帧的编码方式有帧内预测编码、向前预测编码和双向预测编码。每一帧由图像头和若干条带(slice)构成。每个条带(slice)由条带(slice)头和若干编码宏块组成。
不同点:
AVS视频编码和MPEG-2编码也有很大区别,如下表1所示。
表1 MPEG-2与AVS标准的主要区别
内容 |
MPEG2 |
AVS |
说明 |
支持可伸缩编码 |
支持四种:数据分割,空间可伸缩,、时间可伸缩,质量可伸缩 |
AVS1.0不支持 | |
支持色彩采样模式 |
4:2:0、4:2:2、4:4:4 |
4:2:0、4:2:2 | |
变换矩阵和量化方式 |
是8×8离散余弦变换(DCT)加量化矩阵 |
是8×8整系数类离散余弦变换(DCT),量化时根据变换系数的位置把变换系数区分为三类 |
转码中不能使用原来的变换系数,重新进行变换和量化 |
帧内预测 |
变换域预测直流系数 |
空间域预测 |
两者之间无法直接转换 |
条带(slice) |
条带(slice)不能跨越两 |
每个条带(slice) | |
|
行或更多行宏块 |
由若干整行宏块组成 | |
对逐行序列宏块内编码 |
在一个宏块内可以按帧模式编码,也可以按场模式编码 |
只支持帧模式编码 | |
请先参阅图3和图5所示,本发明的增强像素域码流转换方法,该方法在将MPEG-2码流转换为AVS码流时,
主要包括以下步骤:
a,首先把MPEG-2输入码流完全解码,输出YUV格式的视频数据外,还输出解码信息,解码信息包括每帧图像的编码模式,每个宏块的编码模式,如运动矢量、帧内预测模式、量化参数、非零系数个数等等;
b,然后,充分利用MPEG-2解码得到的输出信息,重新对输出的YUV格式的视频数据进行AVS编码;
c,在编码时,综合考虑MPEG-2编码和AVS编码的特征,并遵循转码原则,以兼顾转码的质量与速度。
其中,MPEG-2的视频基本流经过MPEG-2视频解码器后,得到YUV格式的视频数据,以及每帧图像的编码模式,每个宏块的编码模式,如运动矢量、帧内预测模式、量化参数、非零系数个数等信息。并将这些信息放入一个公共缓冲区中。AVS视频编码器从公共缓冲区取得上述信息,对视频图像进行重新编码,最后输出AVS视频基本流。
这些解码信息能够帮助接下来的AVS视频编码提高编码效率。这些解码信息包括YUV格式的视频数据,以及每帧图像的编码模式,每个宏块的编码模式、运动矢量、帧内预测模式、量化参数、非零系数个数等等信息。
MPEG-2解码得到的输出信息能够有效地加快AVS的编码速度。如:如果MPEG-2中当前解码宏块的离散余弦变换(DCT)系数为零,AVS编码此宏块时就不要再进行离散余弦变换(DCT)了,直接认为此宏块的AVS的离散余弦变换(DCT)为零。
依本发明的上述转换方法原理所得到的转码器可参阅图4所示,
考虑到转码的实用性,我们的转码器除了可以把MPEG-2视频流转换为AVS视频流外,还包括MPEG-2解复用和AVS复用功能,可以直接把MPEG-2的传输流(TS)和节目流(PS)转码为AVS的传输流(TS)和节目流(PS)。配以合适的接口,就可以直接嵌入到目前使用的MPEG-2格式的数字电视播出系统。在图4中,MPEG-2的传输流(TS)和节目流(PS)先进入MPEG-2解复用器,得到MPEG-2的视频码流,然后再进入MPEG-2到AVS视频转码器,对于MPEG-2的基本流(ES)则直接进入转码器,在输出端,为了输出传输流(TS)和节目流(PS),AVS的视频码流需要经过AVS复用器与相应的音频数据复用后输出。
MPEG-2的基本流(ES)经过MPEG-2视频解码器后,得到YUV4:2:0格式的视频数据,以及每帧图像的编码模式,每个宏块的编码模式(运动矢量、帧内预测模式、量化参数、非零系数个数等)等信息。并将这些信息放入一个公共缓冲区中。AVS视频编码器从公共缓冲区取得上述信息,对视频图像进行重新编码,最后输出AVS视频基本流。
为了兼顾质量与速度,在转码中遵循以下原则:
暂时不支持可伸缩编码,即对于包含可伸缩编码的MPEG-2视频流,不作速度上的要求。
对于4:4:4格式的MPEG-2视频流,首先下采样为4:2:0格式,速度上仍然不作要求。
保持视频流的高层语法结构,即序列头的位置不变,图像组(GOP)的位置和结构不变,帧的预测类型不变。预测类型是指帧内预测、向前预测和双向预测。也就是说,I帧转码后仍然为I帧,P帧转码后仍然为P帧,B帧转码后仍然为B帧。采用这种方式的除了计算量小以外,还避免了帧重排序延迟。
尽量保持帧的扫描类型不变,即转码前按照帧编码的图像,转码后仍然按照帧编码,转码前按照场编码的图像,转码后仍然按照场编码。但是,由于AVS不允许把逐行帧拆成两场,因此对于逐行帧,不论转码前按照什么方式编码,转码后都只能按照帧编码。值得一提的是把逐行帧拆成两场的做法在MPEG-2中是非常少见的。
重新划分条带(slice),默认为每一帧只划分为1个条带(slice)。
I帧的每一个宏块都将采用AVS的帧内编码算法重新编码。在编码时参考输入码流中对应宏块的编码信息。
对于逐行帧中采用场模式编码的宏块,统一改为按照帧模式编码。
对于MPEG-2视频流中采用跳过(skip)模式编码的宏块,转码时直接按照跳过模式编码,不再进行宏块编码模式选择和运动补偿。
对于MPEG-2视频流中运动矢量非零但是非零离散余弦变换(DCT)系数个数为0的宏块,转码时不再进行宏块编码模式选择和运动补偿,直接采用转码前的运动矢量。
对于MPEG-2视频流中采用其他模式编码的宏块,包括P帧和B帧中采用帧内模式编码的宏块,转码时重新进行宏块编码模式选择和运动补偿。在搜索运动矢量时以转码前的运动矢量为中心在一个较小的范围内。
由图5所示,可以看出,对输入的码流经过可变长解码(VLD)、反量化(Q1)-1、反余弦变换(IDCT)后,得到的DCT系数直接作二次量化(Q2),变长编码(VLC)输出需要的码流。码率转换主要通过采用二次量化系数Q2实现。
当然,本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上所述实施例的变化、变型都将落在本发明权利要求书的范围内。