基于avs运动补偿的运动矢量计算装置的硬件实现方法

文档序号:7954091阅读:198来源:国知局
专利名称:基于avs运动补偿的运动矢量计算装置的硬件实现方法
技术领域
本发明涉及数字视频编解码技术领域,具体是一种基于AVS运动补偿的运动矢量计算装置的硬件实现方法。
背景技术
数字音视频编解码技术标准工作组(AVS工作组)由国家信息产业部科学技术司于2002年6月批准成立。工作组的任务是面向我国的信息产业需求,联合国内企业和科研机构,制(修)订数字音视频的压缩、解压缩、处理和表示等共性技术标准,为数字音视频设备与系统提供高效经济的编解码技术,服务于高分辨率数字广播、高密度激光数字存储媒体、无线宽带多媒体通讯、互联网宽带流媒体等重大信息产业应用。
由该工作组制定的AVS音视频编解码技术标准的视频部分于2006年2月22日被颁布为中华人民共和国国家标准,标准号GB/T 20090.2-2006,于2006年3月1日起实施。
运动补偿作为运动估计的逆运算,是AVS解码算法最重要的组成部分之一。运动估计和运动补偿旨在消除视频数据帧与帧之间的时间冗余,从而达到视频数据压缩的目的。
为了达到高标准的视频压缩质量,AVS音视频编解码技术标准共有16×16,16×8,8×16和8×8四种宏块划分方式,对每一个划分后的子块分配一组运动矢量,每组运动矢量根据其时间相邻块或空间相邻块的运动矢量计算得到,具体细节可参考AVS标准的文档和参考软件。
运动矢量的计算是一个计算量相对较大的模块,采用多种宏块划分的目的在于提高图像的压缩率,但是宏块划分的不统一,给硬件在读取相邻参考块以及运动矢量存储上都带来了控制复杂,存储器利用率低等问题。
经对现有技术文献的检索,发现王占辉等人在电子器件,2005(9)所发表的“MPEG-4运动补偿处理器的VLSI结构设计”中提到一种用于MPEG-4运动矢量计算的方法,该方法将16×16宏块和8×8块均统一为8×8块进行计算,如果只有宏块的运动向量就将该宏块的四个子块的运动向量都等于该宏块的运动向量,但是,对于如AVS等宏块划分比较复杂的编码方式,解码器还需要一个合理的控制机制来调度各个子块的计算和结果存储。

发明内容
本发明为了解决上述问题,提供一种基于AVS运动补偿的运动矢量计算装置的硬件实现方法。本发明主要面向高清晰度视频解码专用芯片的设计,在对计算单元和存储单元进行合理划分的基础上,将各种划分类型的宏块都统一到8×8块进行计算和存储,于是可在不扩大硬件资源使用量的情况下大规模提高了计算速度。使用该方法实现运动向量计算装置,可在确保视频实时播放的前提下,有效的降低系统时钟频率。
本发明是通过以下的技术方案实现的,包括以下步骤(1)预解码依据当前解码宏快所在的帧类型以及宏块类型编号,给出每个宏块的划分方式。
(2)顶层计数将一个宏块划分为4个8×8的子块,并对这4个子块按照左上、右上、左下、右下得顺序从0到3进行编号,依据当前宏块的划分方式,采用计数模块对当前解码的8×8子块进行计数,具体的计数方法为a)当前宏块为16×16划分时,计数值始终为0;b)当前宏块为16×8划分时,若当前计数值为0,则下一个计数值为2,若当前计数值为2,则下一个计数值为0;c)当前宏块为8×16划分时,若当前计数值为0,则下一个计数值为1,若当前计数值为1,则下一个计数值为0;d)当前宏块为8×8划分时,若当前计数值为0、1或2,则下一个计数值为当前计数值加1,若当前计数值为3,则下一个计数值为0。
(3)计算运动矢量根据当前解码的8×8子块的计数值以及当前解码宏块的宏块号,到运动矢量存储器中读取空间相邻8×8子块和时间相邻8×8子块的运动失量参考值,用该参考值计算当前8×8子块的运动矢量,具体计算方法参照《信息技术先进音视频编码第二部分视频》。
(4)存储计算结果根据当前解码的8×8子块的计数值,当前解码宏块的宏块号以及当前宏块的宏块划分方式,采用结果存储模块将运动矢量的计算结果写到运动矢量存储器的相应位置,具体存储方式为a)宏块划分为16×16时,将计算结果同时写回到0、1、2、3四个8×8子块对应的位置上;b)宏块划分为16×8时,若计数器当前计数值为0,则将结果同时写回到0、1两个子块对应的位置上,若计数器当前计数值为2,则将结果同时写回到2、3两个子块对应的位置上;c)宏块划分为8×16时,若计数器当前计数值为0,则将结果同时写回到0、2两个子块对应的位置上,若计数器当前计数值为1,则将结果同时写回到1、3两个子块对应的位置上;d)宏块划分为8×8时,将结果写回到与当前计数值相对应的8×8子块的位置上。
本发明上述方法主要面向AVS高清晰度视频解码,但又不局限于解码AVS高清晰度视频。通过改变步骤其中对最小解码单位以及宏块中对最小解码单位的编号,可以使该实现方法适用于其它宏块划分方式的视频解码器,并同时保证硬件资源的合理分配。
特别的,本发明与前文中所提到的王占辉等人提出的方法相比,对多种宏块划分情况下,各个子块的计算和存储的次序进行详细规划,具有很强的扩展性。
由上可知,本发明所述的一种基于AVS运动补偿的运动矢量计算装置的VLSI实现方法,通过对计算单元和存储单元进行合理划分,采用8×8块级流水线结构,将各种划分类型的宏块均统一到8×8子块进行计算和存储。使用该方法实现运动向量计算装置,可在确保视频实时播放的前提下,有效的降低了系统时钟频率。


图1是本发明实施例使用的运动矢量计算装置的总体结构;图2是AVS宏块划分的4种类型;图3是每个宏块中4个8×8子块的标记方式;图4是四种宏块划分方式下当前解码宏块的空间相邻子块;其中E是当前解码的8×8子块,A、B、C、D是当前解码子块的空间相邻子块。
图5是当前解码宏块的时间相邻子块;其中E是当前解码的8×8子块,E是当前解码字块的时间相邻子块,即显示顺序的后一帧上与当前解码子块相对应的块。
具体实施例方式
结合本发明技术方案以及附图提供以下实施例实施例1,本实施例使用的运动矢量计算装置的总体结构,如图1所示,共包括顶层计数模块、预解码模块、运动矢量计算模块、计算结果存储模块四个功能模块以及一个分别于运动矢量计算模块和计算结果存储模块相连的运动矢量存储器。具体说明如下预解码模块依据外部输入的当前解码宏块所在的帧类型以及宏块类型编号,得出当前宏块的划分类型,划分类型如附图2所示,用两个比特来表示,输出给顶层计数控制模块和计算结果存储模块。
顶层计数模块完成计数控制功能,该模块接收到外部的mv计算起始信号后开始计数,每收到一个计算结果存储模块发出的子块mv完成信号后,依据宏块划分方式对计数器赋新的计数值,具体计数规则为当前宏块为16×16划分时,接收到8×8子块完成信号后,计数值清0;当前宏块为16×8划分时,若当前计数值为0,收到8×8子块完成信号后,计数值增加到2,若当前计数值为2,收到8×8子块完成信号后,计数值清0;当前宏块为8×16划分时,若当前计数值为0,收到8×8子块完成信号后,计数值增加到1,若当前计数值为1,收到8×8子块完成信号后,计数值清0;当前宏块为8×8划分时,若当前计数值为0、1或2,收到8×8子块完成信号后,计数值加1,若当前计数值为3,收到8×8子块完成信号后,计数值清0。其中各个8×8子块的序号标记方式如附图3所示。
运动矢量计算模块该模块完成运动矢量的计算,根据计数控制模块输出的计数值以及外部输入的运动矢量参数信息,从运动矢量存储器中读取如附图4的空间相邻8×8子块和如附图5的时间相邻8×8子块的运动失量参考值,用该参考值计算当前8×8子块的运动矢量。
计算结果存储模块该模块将计算结果输出并写到运动矢量存储器中,然后返回8×8子块完成信号给顶层计数控制模块,存储方法为依赖于预解码模块输出的宏块划分方式,具体存储方法为宏块划分为16×16时,将计算结果同时写回到0、1、2、3四个8x8子块对应的位置上;宏块划分为16×8时,若计数器当前计数值为0,则将结果同时写回到0、1两个子块对应的位置上,若计数器当前计数值为2,则将结果同时写回到2、3两个子块对应的位置上;宏块划分为8x16时,若计数器当前计数值为0,则将结果同时写回到0、2两个子块对应的位置上,若计数器当前计数值为1,则将结果同时写回到1、3两个子块对应的位置上;宏块划分为8×8时,将结果写回到与当前计数值相对应的8×8子块的位置上。
如上所述的一种AVS运动矢量计算装置的VLSI实现,解码一个P帧宏块最少需要15个时钟周期(I8×8类型宏块),最多需要63个时钟周期(P8×8类型宏块),解码一个B帧宏块最少需要15个时钟周期(I8×8类型宏块),最多需要127个时钟周期(B8×8类型宏块)。在不扩大硬件资源使用量的情况下大规模提高了计算速度,达到了实时解码的要求。
权利要求
1.一种基于AVS运动补偿的运动矢量计算装置的VLSI实现方法,其特征在于,包括以下步骤(1)预解码依据当前解码宏快所在的帧类型以及宏块类型编号,给出每个宏块的划分方式;(2)顶层计数将一个宏块划分为4个8x8的子块,并对这4个子块按照左上、右上、左下、右下得顺序从0到3进行编号,依据当前宏块的划分方式,采用计数模块对当前解码的8x8子块进行计数;(3)计算运动矢量根据当前解码的8x8子块的计数值以及当前解码宏块的宏块号,到运动矢量存储器中读取空间相邻8x8子块和时间相邻8x8子块的运动失量参考值,用该参考值计算当前8x8子块的运动矢量;(4)存储计算结果根据当前解码的8x8子块的计数值,当前解码宏块的宏块号以及当前宏块的宏块划分方式,采用结果存储模块将运动矢量的计算结果写到运动矢量存储器的相应位置。
2.根据权利要求1所述的基于AVS运动补偿的运动矢量计算装置的VLSI实现方法,其特征是,所述的依据当前宏块的划分方式,采用计数模块对当前解码的8x8子块进行计数,具体的计数方法为a)当前宏块为16x16划分时,计数值始终为0;b)当前宏块为16x8划分时,若当前计数值为0,则下一个计数值为2,若当前计数值为2,则下一个计数值为0;c)当前宏块为8x16划分时,若当前计数值为0,则下一个计数值为1,若当前计数值为1,则下一个计数值为0;d)当前宏块为8x8划分时,若当前计数值为0、1或2,则下一个计数值为当前计数值加1,若当前计数值为3,则下一个计数值为0。
3.根据权利要求1所述的基于AVS运动补偿的运动矢量计算装置的VLSI实现方法,其特征是,所述的存储计算结果,具体存储方式为a)宏块划分为16x16时,将计算结果同时写回到0、1、2、3四个8x8子块对应的位置上;b)宏块划分为16x8时,若计数器当前计数值为0,则将结果同时写回到0、1两个子块对应的位置上,若计数器当前计数值为2,则将结果同时写回到2、3两个子块对应的位置上;c)宏块划分为8x16时,若计数器当前计数值为0,则将结果同时写回到0、2两个子块对应的位置上,若计数器当前计数值为1,则将结果同时写回到1、3两个子块对应的位置上;d)宏块划分为8x8时,将结果写回到与当前计数值相对应的8x8子块的位置上。
全文摘要
一种基于AVS运动补偿的运动矢量计算装置的硬件实现方法,属于数字视频编解码技术领域。方法为预解码;顶层计数将一个宏块划分为4个8×8的子块,并对这4个子块进行编号,依据当前宏块的划分方式,采用计数模块对当前解码的8×8子块进行计数;计算运动矢量;存储计算结果根据当前解码的8×8子块的计数值,当前解码宏块的宏块号以及当前宏块的宏块划分方式,采用结果存储模块将运动矢量的计算结果写到运动矢量存储器的相应位置。本发明将各种划分类型的宏块都统一到8×8块进行计算和存储,在不扩大硬件资源使用量的情况下大规模提高了计算速度,实现运动向量计算装置,可在确保视频实时播放的前提下,有效的降低了系统时钟频率。
文档编号H04N7/50GK1874518SQ200610027980
公开日2006年12月6日 申请日期2006年6月22日 优先权日2006年6月22日
发明者邵楠, 刘佩林 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1