法律状态公告日
法律状态信息
法律状态
2014-12-31
未缴年费专利权终止 IPC(主分类):H04N7/32 授权公告日:20080723 终止日期:20131118 申请日:20051118
专利权的终止
2008-07-23
授权
授权
2006-09-06
实质审查的生效
实质审查的生效
2006-07-12
公开
公开
技术领域
本发明涉及一种运动矢量预测复用设计方法,特别涉及一种在H.264/AVS多模标准解码器中的运动矢量预测(MVP)复用设计方法。
背景技术
AVS是中国第一个具有自主知识产权的数字音视频编解码标准,全称是《信息技术先进音视频编码标准》。H.264是由ITU-T和ISO两个国际标准化组织的有关视频编码专家联合组成的视频联合工作组(JVT)开发制定的一个视频编码标准,这两种标准在编码效率上较之以往的视频压缩标准都有了显著的提高,但是与此同时硬件实现解码的复杂度也随之上升,给硬件设计带来一定的挑战。
在实时的高清视频解码运算中,需要大量的运算逻辑且有大量中间数据需要保存和读取。尤其是要实现同时支持AVS及H.264标准的高清解码器,如果简单地将两个解码器叠加,其面积将非常巨大。在这种情况下,如何充分利用标准的相关性来实现解码器的最大程度复用就变得越来越重要。
发明内容
本发明所要解决的技术问题是针对上述现有技术现状而提供一种能够同时支持AVS及H.264标准的高清解码器的运动矢量预测(MVP)复用设计方法。
本发明解决上述技术问题所采用的技术方案为:一种多模标准解码器中运动矢量预测复用设计方法,其特征在于:(1)由固件(firmware)发送给MVP模块一个avs_flag标志,作为区分两个标准的依据,能使同一个模块处理两种标准;(2)块运动矢量预测采用分块(partition)下嵌套子块(sub-partition)的形式,能兼容两种标准的算法;(3)取相邻块信息模块中,利用对帧场自适应(MBAFF)标志置数,使两种不同标准可以进行相同处理,完全实现复用;(4)取参考宏块信息的设计,并行宏块(colocatedmacroblock)的所有运动信息总从参考图像宏块运动信息缓存(reference pictures mbmotion info buffer)中的第一个参考图像取,更新时也总是保存到第一个参考图像中,简化了存取的逻辑,提高了存取的速度;(5)对邻块数据流更新机制的设计,使复用所需的相邻块信息量降至最少,减少了读外存次数。
由固件(firmware)发送给MVP模块一个avs_flag标志,作为区分两个标准的依据,能使同一个模块处理两种标准。
进行块运动矢量预测的主循环机制采用分块(partition)循环下嵌套按子块(sub-partition)循环的双重循环形式,能兼容两种标准的算法。
取相邻块信息模块中,利用对帧场自适应(MBAFF)标志置数,既兼容H.264与AVS的非宏块级帧场自适应模式,又支持H.264特有的宏块级帧场自适应模式,使两种不同标准可以进行相同处理,完全实现复用。
取参考宏块信息的设计,并行宏块(colocated macroblock)的所有运动信息总从参考图像宏块运动信息缓存(reference pictures mb motion info buffer)中的第一个参考图像取,更新时也总是保存到第一个参考图像中,简化了存取的逻辑,提高了存取的速度。
对邻块数据流更新机制的设计,仅更新紧密相邻的相邻块,使复用所需的相邻块信息量降至最少,更新时仅取右上宏块对,仅存左邻宏块,减少了读写外存次数。
与现有技术相比,本发明的优点在于,实现了H.264与AVS两种视频编码标准MVP功能的兼容,不仅保证了正确性,且可以大幅度减少解码器硬件面积。经验证,可以减少75%的片上缓存,资源占用情况是单独同时实现两个标准的70%,能实现对高清图像的实时解码。
具体实施方式
以下结合附图实施例对本发明作进一步详细描述。
一种多模标准解码器中运动矢量预测复用设计方法,包括:
1.MVP模块根据数据流的性质,可以划分成输入模块、运动矢量预测主循环模块、块运动预测模块、取相邻块信息模块、取参考宏块信息和输出模块,其复用设计方法:
1)输入模块:包括″读命令模块(read cmd fifo)″、″读残差信息模块(read vldfifo)″,它们分别传送command和残差信息。在固件(firmware)发送序列级信息时首先发送一个avs_flag标志,在其后的所有模块都通过这个标志来区分两个标准中的相异部分,使同一模块处理两个标准。
2)运动矢量预测主循环模块:因为在整个凤芯二号系统划分时每个模块(例如MVP模块、IQ模块等)独立完成的最小任务是一个宏块的解码过程,而在宏块中通过partition和sub-partition会将模块划分成若干个小块。AVS中没有sub-partition的小块,也就是说没有8×8以下的划分,除此以外和H.264的宏块划分是完全一样的,因此可以将循环做成partition下嵌套sub-partition的形式,解决AVS没有子划分只要让AVS忽略子循环就可以了。这样设计能兼容两种标准的算法,比设计两套独立的循环机制减少33%的逻辑单元。
3)块运动预测模块(block mv prediction):对两个标准的处理方法基本相同,只不过AVS在这里的计算量要大得多,无需特殊设计。
4)取相邻块信息模块(GetNeighborBlkInfo:get neighbor block information):只需要在AVS时将帧场自适应标志置为0,就可以做到和H.264相同的处理方法。从而,两种不同标准可以进行相同处理,完全实现复用,比单独设计减低了50%的逻辑单元。
5)取参考宏块信息:包括三个模块,取图像级信息(GetColPicInfo)、取宏块层信息(getMBColocated)和取块级信息(get4x4Colocated)三个模块。因为H.264中并行参考图像可以多达5帧(就其main profile中level 4.0以上而言),而AVS中仅仅使用一帧最近解码的后向参考帧,因此AVS中不存在取并行宏块时去寻找它属于哪幅参考图像的问题。也就是说可以不考虑宏块以上的信息保存的问题。所以复用时仅仅默认成并行宏块信息总从参考图像宏块信息缓存中的第一个参考图像取,而更新时也总是保存到第一个参考图像中。这样设计可以简化存取的逻辑,提高存取的速度。
6)输出模块:包括输出到片外存储器(memory access)、参考图像取得模块(RDR)和环路滤波器模块(deblock loop filter)三部分,这三部分两种标准处理方法基本相同,无需进行特殊设计。
2.邻块数据更新机制的设计,使复用时所需保存的相邻块的信息量降至最少,没有了冗余信息的保存;同时减小了去读取外存的次数。
1)复用的片内缓存大小统计:
(1)相邻块运动矢量和参考索引的信息:
每个小块需要保存(也就是要去片外取)的信息:39bits×2=78(bits);
相邻块需要保存:38×78=2964(bits)
当前宏块对需要保存:32×78=2496(bits)
总共需要:2964+2496=5460(bits)
(2)参考列表的信息:
需要保存当前条带的两个列表和参考并行宏块所在的条带的两个列表,总共需要:26×6×2×5×2=3120(bits)
(3)先进先出队列(fifo)的信息:
需要至少保存:cmd_mvp_fifo:27×32=864(bits);
vld_mvp_fifo:32×28=896(bits);
总共需要:864+894=1760(bits);
(4)总缓存大小为:5460+3120+1760=10340(bits)
如果对AVS与H.264单独设计片上缓存,那么所需的相邻块运动矢量和参考索引的信息与参考列表的信息要分别保存,总缓存的大小会是:5460*2+3120*1.2+1760=16424(bits),
可见复用之后减少了37%的片上缓存。
2)更新的过程:
(1)当前宏块解码前的初始化过程:
将上邻宏块对中的八个小块保存到左上邻宏块对的缓存(buffer)中;
将右上邻宏块对中的八个小块读入上邻宏块对的缓存(buffer)中;
从外存中读取右上宏块对的八个小块的信息。
(2)当前宏块解码完成后:
将左邻宏块中可能用于参考的块保存到片外;
将当前解码块中需要保存起来的块存放到左邻宏块的缓存(buffer)中。
在这种更新机制下,每个宏块读取外存仅仅为4个小块的相邻块信息(当为最左列宏块时需要读8个),当为直接解码模式时还需要读取16个并行小块信息。在128位的带宽下每次读写2个小块的信息。
因为是仅仅存取与当前宏块″紧密相邻″的小块信息,是实现正确解码所必需且最少的邻域信息,比存取一个宏块所有16个小块减少了75%的信息量,所以相应的访问外存的次数也减至25%。
机译: /在视频编解码器中预测运动矢量的方法,该方法允许使用该视频编解码器的多个参考运动矢量编码/解码设备
机译: /在视频编解码器中预测运动矢量的方法,该方法允许使用该视频编解码器的多个参考运动矢量编码/解码设备
机译: /在视频编解码器中预测运动矢量的方法,该方法允许使用该视频编解码器的多个参考运动矢量编码/解码设备