视频解码器的dc/ac系数预测方法及视频解码器的制作方法

文档序号:7993260阅读:190来源:国知局
专利名称:视频解码器的dc/ac系数预测方法及视频解码器的制作方法
技术领域
本发明关于一种视频解码器,尤其涉及一种视频解码器的DC/AC系数预测方法以及使用该方法的视频解码器。
背景技术
目前,多媒体压缩技术已广泛地应用于各种消费类产品和通信设备,例如V⑶播放器、DVD播放器、移动电话、和MP4播放器等。一种常规的多媒体压缩技术是例如最新的MPEG压缩技术,即MPEG-4。MPEG-4能够在各种带宽范围内提供专业质量的音频和视频流服务。MPEG-4是由运动图像专家组(Moving Picture Experts Group,MPEG)定义的,该规范于2000年正式成为一项国际标准。与MPEG-1和MPEG-2相比,MPEG-4更适于交互AV服务以及远程监控,它的设计目标是使其具有更广泛的适应性和可扩展性,可以利用很窄的带宽通过帧重建技术压缩和传输数据,从而能以最少的数据获得最佳的图像质量。MPEG4在编码过程中分为4个主要部分:I)将每帧视频分成像素块;2)帧内预测,削减空间冗余;3)通过运动估计和运动补偿进行帧间预测,削减时间冗余;4)通过对原始块和对应的预测块之间差别形成的残差块进行变换、量化和熵编码,进一步削减空间冗余。如图1所示,宏块P是MPEG4编解码的最小单位,每帧根据分辨率不同包含多个宏块P。每个宏块P可以分解为4个亮度块Bb和2个色度块Bh,每个块的大小为8X8。一个
8X 8的块经过DCT变换后,可以分为DC和AC系数两个部分,DC系数是图像的低频部分,是最重要的信息,是不可以丢失的。AC系数是图形的高频部分,是图像细节的描述,AC系数可以丢掉部分信息,因而AC系数的编码精度决定了图像的质量和码流的大小。宏块P按类型可以分为巾贞内和巾贞间宏块。巾贞内宏块米用DC和AC系数单独编码;巾贞间宏块一般米用DC和AC系数统一编码,因而可以在AC系数的解码过程中一并将DC系数也解出来。DC与AC系数的预测方向的自适应选择是基于被解码块周围的水平和垂直梯度的比较的。图2显示了被解码块周围的三个块。块“X”、“A”、“B”和“C”分别代表了当前块、左边的块、左上角的块和上边的块。如果块A的DC系数与块B的DC系数的差的绝对值小于块B的DC系数与块C的DC系数的差的绝对值,则块A的DC系数与块B的DC系数在数值上比较接近,即在垂直方向上的数值比水平方向上更接近,所以采用块C的DC系数来预测当前块X的DC系数;反之,在水平方向的数值比较接近,即采用块A的DC系数来预测当前块X的DC系数。并且AC系数的预测采用与DC系数的预测相同的方向,色度块的预测采用和亮度块的预测相同的方向。传统的DC/AC系数预测的缓冲区设计如图3a和图3b所示,分别为宏块亮度和色度的缓冲区设计。传统缓冲区需要保存当前宏块所在行的上面一个宏块行的所有的相邻8x8块的DC/AC系数,同时保存当前宏块所在列的前一列相邻一个宏块中的8x8块的DC/AC系数,来预测当前宏块中各块的DC/AC系数值,因此需要开辟的内存空间为:以分辨率大小为176X144的QCIF为例,每处理一个宏块,需要保存的DC系数为(11χ2+2+(11+1)χ2)=48个,需要保存的AC系数为(48x7) = 336个,总共384个系数;然而,传统缓冲区计算所用系数的检索过程繁琐,每计算一个8x8块的系数均需要从上一个宏块行的首地址计算开始,同时每帧的第一个宏块行和第一个宏块列的边界处理繁琐,需要分帧内或帧外的情况,流程分支较多。本发明则提供一种新的视频解码器的DC/AC系数预测方法及视频解码器用以改善或解决上述的问题。

发明内容
本发明要解决的技术问题在于提供一种在存储空间相当的情况下,预测值循环存储方式和预测相关块检索方式,从而简化了预测流程提高以块为单位的预测效率的视频解码器的DC/AC系数预测方法以及视频解码器。本发明通过这样的技术方案解决上述的技术问题:一种视频解码器的DC/AC系数预测方法,该方法具有以下步骤:以宏块作为处理单元,预设六缓冲区,分别对应亮度块的DC系数缓冲区、亮度块的AC系数缓冲区、每个色度块的DC系数缓冲区以及每个色度块的AC系数缓冲区,每个缓冲区内存有预测需要块的DC或AC系数和需要预测的块的DC或AC系数;将各缓冲区内的AC系数或DC系数赋予初始值;预测当前块的DC或AC系数,并将预测后的数值保存于各对应的缓冲区内;按照块的位置进行块的系数预测;指向当前需要预测的块的指针PTR在指到末尾块时跳至指针初始值。作为本发明的一种改进,每解码一个块,位置指针位置向前移动两位。作为本发明的一种改进,AC系数初始值为0,DC初始值为1024。作为本发明的一种改进,每个块预测完后位置指针PTR的变换情况固定,采用表格的方式实现,查表实现方式为:Intl6_t offset[] = {1,-2,1,2}PTR+ = Offset [η],其中 η = 0,1,2, 3。本发明另提供一种视频解码器,该视频解码器使用上述预测方法,该解码器以宏块作为处理单元,并设有六缓冲区,分别对应亮度块的DC系数缓冲区、亮度块的AC系数缓冲区、每个色度块的DC系数缓冲区以及每个色度块的AC系数缓冲区,,每一缓冲区内存有预测需要块的DC或AC系数和需要预测的块的DC或AC系数,位置指针PTR指向缓冲区内的任意位置并具有初始值,位置指针PTR在指到末尾块时跳至指针初始值,各缓冲区内的AC系数和DC系数赋予初始值。作为本发明的一种改进,每解码一个块,位置指针PTR位置向前移动两位。作为本发明的一种改进,AC系数初始值为0,DC初始值为1024。作为本发明的一种改进,每个块预测完后位置指针PTR的变换情况固定,采用表格的方式实现,查表实现方式为:
Intl6_t offset[] = {1,-2,1,2}PTR+ = Offset[n],其中 n = 0,1,2,3。与现有技术相比较,本发明具有以下优点:采用了循环缓冲区来保存预测用到的宏块数据,从而大大简化了预测系数的索引和边界判断,在存储空间相当的情况下,简化预测流程,提高以块为单位的预测效率。


图1是视频宏块的示意图;图2是被解码块以及周围的三个块的示意图;图3a和图3b是传统的DC/AC系数预测的缓冲区设计示意图;图4是本发明视频解码器的DC/AC系数预测方法中解码宏块之前的亮度块缓冲区的数据示意图;图5是本发明视频解码器的DC/AC系数预测方法中预测解码Xl块后缓冲区的数据示意图;图6是本发明视频解码器的DC/AC系数预测方法中预测解码X2块后缓冲区的数据不意图;图7是本发明视频解码器的DC/AC系数预测方法中预测解码X3块后缓冲区的数据不意图;图8是本发明视频解码器的DC/AC系数预测方法中预测解码X4块后缓冲区的数据示意图;图9是本发明视频解码器的DC/AC系数预测方法中宏块中的亮度块的分布示意图;图10是本发明视频解码器的DC/AC系数预测方法中经简化过的宏块分布示意图。
具体实施例方式下面结合附图详细说明本发明的具体实施方式
。本发明视频解码器的DC/AC系数预测方法依照一般原则,每个块的DC/AC系数的预测使用与之相邻的3个块来进行,在内存的限制比较严格的情况下,不可能保存一帧图像所有的DC/AC系数,因而只保存预测必需的数据。为此本发明视频解码器的DC/AC系数预测方法采用了循环缓冲区来预测以块为单位的DC和AC系数。下面以亮度块的DC系数为例对该预测过程进行详细的描述。请参照图4至图8,图中每个点表示一个块,带有剖面线的圆点表示数据不再使用,带数字的圆点表示数据在循环缓冲区之中,数字表示该块在缓冲区中的位置序号,白色的圆点表示需要预测点,X1、X2、X3、X4是当前宏块中需要预测的4个亮度块。图4表示预测之前的缓冲区的数据。预测Xl块需要4、5、6三个点,此时位置代表Xl点周围参考块的位置,用这三个点的预测值计算预测方向,并根据预测方向进行当前8x8块的预测。Xl预测完成后,5号点已经不再使用,即Xl左上方的点不在需要,因而Xl占据5号点的位置,如图5所示,它表示了预测Xl后缓冲区的数据变化。同理,预测X2块需要5、6、7三个点。X2预测完成后,6号点已经不再使用,因而X2占据6号点的位置,如图6所示,它表示了预测解码X2后缓冲区的数据变化。同理,预测X3块需要3、4、5三个点。X3预测完成后,4号点已经不再使用,因而X3占据4号点的位置,如图7所示,它表示了预测X3后缓冲区的数据变化。同理,预测X4块需要4、5、6三个点。X4预测完成后,5号点已经不再使用,因而X4占据5号点的位置,如图8所示,它表示了预测解码X4后缓冲区的数据变化。对比图4至图8,可以看出,每次解码一个宏块的所有亮度块之后,将会修改3个点。在图4中,假设缓冲区的当前位置指针指向的是5,与之相应在图8中指向的是7。由此还可以看出每解码一个宏块,当前位置指针向前移动2。关键每个块预测完后位置指针(ptr)的变换情况固定,如下所示:Xl:ptr+ = IX2:ptr- = 2X3:ptr+ = IX4:ptr+ = 2因此,通过位置指针的位置,按宏块号顺序进行解码时,每次对参考DC值存取非常方便和快速,摒弃了传统方式中的需要从首地址重新计算的过程。由于是循环缓冲区,位置指针ptr指到末尾的时候再往下加就会自动跳到开头,同样,指到开头的时候再减就会自动跳到末尾。亮度块的AC系数和色度块的DC/AC系数的预测过程与前面讲的亮度块的DC系数预测过程类似。由于每个块的AC预测使用垂直预测参考块的第一行或水平预测参考块的第一列,所以亮度或色度AC系数缓冲区中对于每个DC系数的位置对应7个AC系数。亮度块的DC系数缓冲区设计详细说明如下:1.使用循环缓冲区之前先要对缓冲区赋初值,对于AC系数,赋初值0,对于DC系数赋初值1024 ;2.解码到每行的最后一个宏块的最后一个块的时候,需要对后面的连续3个数赋初值,AC为O、DC为1024,同时位置指针ptr+ = 2 (对于帧间宏块,也需要类似处理);3.预测某个值时,预测后的值存放在LoopBuffer [ptr],A、B、C对应值为:A = LoopBuffer[ptr~l]B = LoopBuffer [ptr]C = LoopBuffer[ptr+1]LoopBuffer[ptr] = predValue4.缓冲区的亮度块个数为:2 X每行宏块数+45.缓冲区的初始指针ptr可以设置到任意位置,但必须在缓冲区范围内;6.每次预测完成后,ptr的变化按如下规则:Blockl ptr+ = IBlock2 ptr+ = -2Block3 ptr+ = IBlock4 ptr+ = 2
具体实现时可以采用查表的方式,示例代码如下:

Intl6_t offset[] = {1,_2,1,2}

ptr+ = offset [η]其中 η = 0,1,2,3为了简化分析,我们假设每行有4个宏块,如图9所示,共表示了 9个宏块A、B、C、D、E、F、G、H、1、J。表I是亮度块数据变化情况:

权利要求
1.一种视频解码器的DC/AC系数预测方法,其特征在于,该方法具有以下步骤: 以宏块作为处理单元,预设六缓冲区,分别对应亮度块的DC系数缓冲区、亮度块的AC系数缓冲区、每个色度块的DC系数缓冲区以及每个色度块的AC系数缓冲区,每个缓冲区内存有预测需要块的DC或AC系数和需要预测的块的DC或AC系数; 将各缓冲区内的AC系数或DC系数赋予初始值; 预测当前块的DC或AC系数,并将预测后的数值保存于各对应的缓冲区内; 按照块的位置进行块的系数预测; 指向当前需要预测块的指针PTR在指到末尾块时跳至指针初始值。
2.根据权利要求1所述的视频解码器的DC/AC系数预测方法,其特征在于:每解码一个块,位置指针位置向前移动两位。
3.根据权利要求1所述的视频解码器的DC/AC系数预测方法,其特征在于:AC系数初始值为O,DC初始值为1024。
4.根据权利要求2所述的视频解码器的DC/AC系数预测方法,其特征在于:每个块预测完后位置指针PTR的变换情况固定,采用表格的方式实现,查表实现方式为:Intl6_t offset[] = {1,-2,1,2}PTR+ = Offset [η],其中 η = 0,1,2,3。
5.一种使用如权利要求1所述的视频解码器的DC/AC系数预测方法的视频解码器,其特征在于,该解码器以宏块作为处理单元,并设有六缓冲区,分别对应亮度块的DC系数缓冲区、亮度块的AC系数缓冲区、每个色度块的DC系数缓冲区以及每个色度块的AC系数缓冲区,,每一缓冲区内存有预测需要块的DC或AC系数和需要预测的块的DC或AC系数,位置指针PTR指向缓冲区内的任意位置并具有初始值,位置指针PTR在指到末尾块时跳至指针初始值,各缓冲区内的AC系数和DC系数赋予初始值。
6.根据权利要求5所述的视频解码器,其特征在于:每解码一个块,位置指针PTR位置向前移动两位。
7.根据权利要求5所述的视频解码器,其特征在于:AC系数初始值为0,DC初始值为1024。
8.根据权利要求6所述的视频解码器,其特征在于:每个块预测完后位置指针PTR的变换情况固定,米用表格的方式实现,查表实现方式为:Intl6_t offset[] = {1,-2,1,2}PTR+ = Offset [η],其中 η = 0,1,2,3。
全文摘要
本发明提供一种视频解码器的DC/AC系数预测方法,该方法具有以下步骤预设一缓冲区,缓冲区内存有需要预测的块和当前待预测块,指针PTR指向当前待预测块,指针PTR具有初始值;在缓冲区内的块被设置位置序号;将缓冲区内的AC系数或DC系数赋予初始值;预测当前块的系数,将预测后的数值保存于缓冲区内;按照块的位置序号进行块的系数预测;指针PTR在指到末尾块时跳至指针初始值。本发明采用了循环缓冲区来保存预测用到的宏块数据,从而大大简化了预测系数的索引和边界判断,在存储空间相当的情况下,简化预测流程,提高以块为单位的预测效率。本发明还提供了一种使用上述方法的视频解码器。
文档编号H04N7/50GK103139558SQ20111038902
公开日2013年6月5日 申请日期2011年11月30日 优先权日2011年11月30日
发明者付宝玲, 高超, 刘春花 申请人:联芯科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1