CN101309405A - 参考数据载入的方法及装置 - Google Patents

参考数据载入的方法及装置 Download PDF

Info

Publication number
CN101309405A
CN101309405A CN 200710102090 CN200710102090A CN101309405A CN 101309405 A CN101309405 A CN 101309405A CN 200710102090 CN200710102090 CN 200710102090 CN 200710102090 A CN200710102090 A CN 200710102090A CN 101309405 A CN101309405 A CN 101309405A
Authority
CN
China
Prior art keywords
macro
reference picture
written
block line
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200710102090
Other languages
English (en)
Other versions
CN101309405B (zh
Inventor
孟新建
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN 200710102090 priority Critical patent/CN101309405B/zh
Publication of CN101309405A publication Critical patent/CN101309405A/zh
Application granted granted Critical
Publication of CN101309405B publication Critical patent/CN101309405B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种视频解码运动补偿参考数据载入的方法,包括:A.整行载入前n个宏块行对应参考图像区域的数据,对前n-1个宏块行进行解码运动补偿处理;B.对第n个宏块行进行解码运动补偿处理,若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则放弃片内存储区中存储的参考图像区域内上方与第n个宏块行的对应参考图像区域不重合参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行;n取值n+1,返回执行步骤B。本发明还公开了一种视频编码运动估计参考数据载入方法及视频编解码参考数据载入装置。能够充分实现相邻宏块间的参考数据重用。

Description

参考数据载入的方法及装置
技术领域
本发明涉及视频编解码技术,尤其涉及视频编码运动估计参考数据载入的方法及装置和视频解码运动补偿参考数据载入的方法及装置。
背景技术
视频编码技术是将数字视频信息压缩,以便实现更有效地被传送和存储;视频解码技术则是对已编码视频信息进行解析重建,得到视频图像。
目前,视频压缩编码标准主要由活动图像专家组(MPEG)、ITU-T SG16Q6视频编码专家组(VCEG)及VCEG与MPEG联合专家组(JVT)制定,这些标准包括:H.263、MPEG2、MPEG4-Part2及最新的H.264/AVC(MPEG4-Part10)。其它的视频编码标准还有VC-1和中国音视频标准组(AVS)制定的视频编码标准AVS1.0-P2等。上述视频编码标准均采用基于块的运动补偿和变换编码的混合编码架构,包括帧内预测、帧间预测、变换、量化和熵编码等。相应地,在解码时,包括熵解码、反量化、反变换以及预测补偿等一系列解码重建过程。
以H.264标准为例,视频编解码时,按时间、空间由高到低分成序列、图像组、图像(也称帧)、条带组、条带、宏块、子宏块等不同层次。其中,编解码的基本处理单元是宏块,一个宏块通常包括一个16×16的亮度样值块和对应的色度样值块,宏块又进一步可分为子宏块,在H.264标准中,子宏块的大小有16*8、8*16、8*8、8*4、4*8、4*4等。帧内、帧间预测和变换常常对子宏块进行。
参见图1,图1为H.264/AVC(MPEG4-Part10)标准的视频编码流程框架图。如图1所示,对当前帧Fn编码过程中,可选择采用帧内预测,也可选择采用帧间预测。若采用帧内预测,则在对一给定块编码时,可以使用空间预测模式,根据周围的块对该给定块进行帧内预测,得到预测值P,用实际值减去预测值得到残差值Dn;若采用帧间预测,则在对一给定块编码时,首先在参考图像F′n-1中进行运动估计,得到运动矢量,然后对参考图像按照运动矢量进行运动补偿(MC),得到预测值P,用实际值减去预测值得到残差值Dn。其中,为了提高预测精度,从而提高压缩比,实际的参考图像可在过去或未来(指显示次序上)已编码解码重建和滤波的帧中进行选择。之后,对残差值Dn经变换、量化后产生一组量化后的变换系数X,再经熵编码,与解码所需的一些边信息(如预测模式量化参数、运动矢量等)一起组成一个压缩后的码流。
其中,编码过程中的参考图像为已编码图像的重建图像,对残差图像进行反量化、反变换后得到D′n,将得到的D′n与预测值P相加,得到uF′n(未经滤波的帧)。为了去除编解码环路中产生的噪声,提高参考帧的图像质量,从而提高压缩图像性能,设置了一个环路滤波器,滤波后的输出即为重建图像F′n,可用作参考图像。其中,若为帧内预测,则预测值P根据相邻块帧内预测得到;若为帧间预测,则预测值P由解码已重建图像(即该重建图像编码时的参考图像)运动补偿(MC)得到。
参见图2,图2为H.264/AVC(MPEG4-Part10)标准的视频解码流程框架图。解码过程与编码时的重建过程类似,首先对压缩码流进行熵解码,解析出所有语法元素符号及系数符号,对系数符号进行反扫描排序后,得到残差图像,之后对残差图像进行反量化、反变换等重建过程,得到重建图像。
实际编解码过程中,对于新一代标准H.264/AVC(MPEG4-Part10)、VC-1、AVS1.0-P2而言,预测参考图像可有多个,帧间图像(P帧)除了有帧间宏块(P宏块),还可以有帧内宏块(I宏块),去块滤波器是必须的模块,被称为环路滤波;而在MPEG2、H.263、MPEG4-Part2标准中,预测参考图像只有一个,帧间图像只有P宏块,去块滤波器去块滤波器仅是解码器中可选的一个后处理环节。
帧间预测处理主要包括运动估计和运动补偿,在解码时只有运动补偿,在编码时既有运动估计又有运动补偿。
所谓运动估计,是指对于当前帧中的每一块(亮度宏块及其子宏块)到前一帧或后一帧某给定搜索范围内根据一定的匹配准则找出与当前块最相似的块,即匹配块,由匹配块与当前块的相对位移计算出运动矢量(MotionVector),运动矢量的单位可以为亮度采样值。搜索匹配块时常用的准则为绝对误差和(SAD)最小。其中,运动估计的越准确,补偿的残差就越小,编码效率就越高,编码出来的图像质量也就越好。为了块运动估计,需要读入该块对应搜索窗的参考帧数据(也称参考数据)。对于一个16*16宏块,如果运动估计搜索位置范围为:水平[-64,+64)、垂直[-32,+32),则需要读入的参考数据为参考帧中对应于本宏块及其周围的位置图像区域,大小为(64+16+64)*(32+16+32)=144*80。在多参考帧情况下,可能需要读入多个参考帧搜索窗数据。运动估计包括整像素运动估计和亚像素运动估计,亚像素包括1/2像素和1/4像素,亚像素运动估计时需要对参考帧整像素通过亚像素插值滤波获得亚像素参考图像,此时读入参考数据时,还需要考虑亚像素滤波越界量。亚像素滤波越界量为由整象素通过多阶滤波产生亚象素时所需要的(对一侧边界)超出本块范围的整象素的最大个数。亚像素滤波越界量对不同标准和档次(Profile)是不同的,如对于H.264为2,对于AVS1.0-P2为1,对于MPEG4 SP/H.263为0。以亚像素滤波越界量为2的情况为例,则对于上述16*16的宏块,需要载入的图像区域大小为(2+64+16+64+2)*(2+32+16+32+2)=148*84。
所谓运动补偿,就是根据运动矢量获得对应区域参考块数据,当运动矢量为亚像素时,进一步对整像素参考块数据通过亚像素插值滤波获得亚像素参考块图像。运动补偿输出的参考块图像用于块的重建。
存储系统是决定处理器性能的关键因素之一。处理器存储系统的基本结构是所谓多级存储系统,包括:寄存器组-片内存储器-片外主存储器-大容量存储器等,存储访问速度依次由高到低,配置容量则由小到大,单位存储的成本由高到低。片外主存储器常见的为动态存储器(DRAM),如SDRAM、DDR SDRAM,少数情况为静态存储器(SRAM),包括SSRAM,PSRAM等,当前,片外主存储容量一般为MB级(从几MB到几千MB)。片内存储器是芯片内配置的存储器,通常为SRAM,容量一般为KB级(从几KB到几千KB)。
视频编解码中,运动估计和运动补偿既分别是视频编码器和解码器中运算开销最大的环节,又分别是视频编码器和解码器中存储访问最多的部分。因为运动估计和运动补偿时的大量参考图像数据需要预先载入片内存储器中,供运动估计和运动补偿时使用。
一个视频帧数据占据的存储容量根据视频帧尺寸、视频格式、存放形式不同而不同,但不论怎样,由于片内存储器通常需要存放多种数据及指令,或者是基于存储器面积等的考虑,片内存储器一般都无法一次性存放一整帧参考图像数据。因此,视频参考帧只能缓存在外存中。由于外存访问的延迟较大,为了保证运算的高效,参考数据的载入通常采用两级存储体制,如图3所示,图3为现有技术中参考数据载入的示意图。图3中,预先将参考数据从片外主存转存到片内存储器,运动估计或运动补偿时时,从片内存储器读取参考数据。其中,从片外存储器读取参考数据存入片内存储器的过程被称为参考数据载入。
在进行参考数据载入时,如果以宏块为单位,假设搜索范围水平、垂直均为区间[-16,+16),则对于每个16*16的宏块,即使不计亚像素内插所需的相邻数据,仅整像素运动估计或运动补偿需要载入的参考数据区域就为48*48,可见,需载入的参考数据为当前宏块的9倍,对于一帧图像来说,则需要载入9帧的参考数据量。因此,为了降低参考数据的载入量,提高编解码效率,可对宏块间参考数据进行重用。
现有技术中,有的在解码时,对于当前待解码水平宏块行,利用多个DMA预先从外存中读取每个宏块的多个子宏块/多个宏块运动补偿所需参考数据块。有的在编码时,采用水平窗口滑动逐次载入水平宏块行每个宏块新增的搜索区参考图像数据,即对一个宏块运动估计前,载入该宏块运动估计所需的最大搜索区参考图像数据,并相应放弃前一个宏块对应载入数据中该宏块不需要的数据。但由于图像编解码过程中通常是按照光栅扫描顺序对每个宏块进行编解码,需要待上一个宏块行编解码完毕后才能编解码下一个宏块行,因此上述两种方法最多只能实现水平宏块间所用参考数据的重用,而无法实现垂直宏块间所用参考数据的重用。总之,现有技术中,参考数据载入的重用是很有限的,存在较多的无效存储访问,导致总线、存储接口带宽的浪费,限制了视频编解码性能的提高,并导致功耗加大。
发明内容
有鉴于此,本发明实施例中一方面提供一种视频编码运动估计参考数据载入的方法、视频解码运动补偿参考数据载入的方法;另一方面提供一种视频编码运动估计参考数据载入的装置、视频解码运动补偿参考数据载入的装置,以便更大限度地实现参考数据载入的重用。
本发明实施例中所提供的视频编码运动估计参考数据载入的方法,预先确定图像区域单元中单个宏块行对应的参考图像区域大小RA及初始整行载入的宏块行的个数n,该方法包括:
A、整行载入当前图像区域单元的前n个宏块行对应参考图像区域的数据,对前n-1个宏块行进行编码运动估计处理;
B、对第n个宏块行进行编码运动估计处理,若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则放弃所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行;
C、n取值为n+1,返回执行步骤B。
本发明实施例中所提供的视频解码运动补偿参考数据载入的方法,预先确定图像区域单元中单个宏块行对应的参考图像区域大小RA及初始整行载入的宏块行的个数n,该方法包括:
A、整行载入当前图像区域单元前n个宏块行对应参考图像区域的数据,对前n-1个宏块行进行解码运动补偿处理;
B、对第n个宏块行进行解码运动补偿处理,若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则,放弃所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行;
C、n取值为n+1,返回执行步骤B。
本发明实施例中所提供的视频编码运动估计参考数据载入的装置,包括:
片外存储器,用于存储参考图像数据;
片内存储器,用于缓存整行载入的参考图像数据;
编码运动估计数据载入单元,用于从所述片外存储器中读取预先确定的初始整行载入的前n个宏块行对应参考图像区域的数据写入所述片内存储器中,对前n-1个宏块行进行编码运动估计处理;在对第n个宏块行进行编码运动估计处理时,若第n个宏块行不是当前图像区域单元的最后一个宏块行,则放弃所述片内存储器所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,从所述片外存储器中读取第n个宏块行对应参考图像区域与第n+1个宏块行对应参考图像区域不重合的参考图像行写入所述片内存储器中,而后,n取值为n+1,并返回执行对第n个宏块行进行编码运动估计处理的操作。
本发明实施例中所提供的视频编码运动估计装置,包括:
片外存储器,用于存储参考图像数据;
条带组划分单元,用于将图像数据划分为1个或1个以上的条带组,并输出所划分的条带组信息;
条带组指配单元,用于获取划分的条带组信息,指配所划分的条带组;
一个以上的编码运动估计器,其中,每个编码运动估计器包括:
片内存储器,用于缓存整行载入的参考图像数据;
编码运动估计数据载入单元,用于根据条带组指配单元提供的条带组指配信息,从所述片外存储器中读取所处理条带组预先确定的初始整行载入的前n个宏块行对应参考图像区域的数据写入所述片内存储器中,对前n-1个宏块行进行编码运动估计处理;在对所处理条带组第n个宏块行进行编码运动估计处理时,若第n个宏块行不是当前条带组的最后一个宏块行,则放弃所述片内存储器中所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,从所述片外存储器中读取第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行写入所述片内存储器中,而后,n取值为n+1,并返回执行对第n个宏块行进行编码运动估计处理的操作。
本发明实施例中所提供的视频解码运动补偿参考数据载入的装置,包括:
片外存储器,用于存储参考图像数据;
片内存储器,用于缓存整行载入的参考图像数据;
解码运动补偿数据载入单元,用于从所述片外存储器中读取预先确定的初始整行载入的前n个宏块行对应参考图像区域的数据写入所述片内存储器中,对前n-1个宏块行进行解码运动补偿处理;在对第n个宏块行进行解码运动补偿处理时,若第n个宏块行不是当前图像区域单元的最后一个宏块行,则放弃所述片内存储器所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,从所述片外存储器中读取第n个宏块行对应参考图像区域与第n+1个宏块行对应参考图像区域不重合的参考图像行写入所述片内存储器中,而后,n取值为n+1,并返回执行对第n个宏块行进行解码运动补偿处理的操作。
从上述方案可以看出,本发明实施例中对第n个宏块行进行编、解码运动估计及运动补偿处理时,若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则放弃所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行,从而将编解码运动估计或运动补偿时片上缓存的参考数据从一个或几个宏块对应的参考图像区域提高到一个宏块行对应的参考图像区域,在保证运动估计或运动补偿连续进行的情况下,使载入参考数据的重用度最大化。
附图说明
图1为H.264/AVC(MPEG4-Part10)标准的视频编码流程框架图。
图2为H.264/AVC(MPEG4-Part10)标准的视频解码流程框架图。
图3为现有技术中参考数据载入的示意图。
图4为本发明实施例一中视频编码运动估计参考数据载入的方法流程图。
图5为本发明实施例一中视频编码运动估计参考数据载入的装置结构示意图。
图6为本发明实施例二中视频编码运动估计参考数据载入的方法流程图。
图7为图6所示流程中的参考图像数据载入流程的示意图。
图8为本发明实施例三中视频编码运动估计参考数据载入的方法流程图。
图9为图8所示流程中一种条带组的划分示意图。
图10为图8所示流程中的参考图像数据载入流程的示意图。
图11为本发明实施例三中视频编码运动估计参考数据载入的装置结构示意图。
图12为本发明实施例三中视频编码运动估计装置的结构示意图。
图13为本发明实施例四中视频编码运动估计参考数据载入的方法流程图。
图14为图13所示流程中参考数据载入的示意图。
图15为本发明实施例四中视频解码运动补偿参考数据载入的装置结构示意图。
图16为本发明实施例五中视频解码运动补偿参考数据载入的方法流程图。
图17为本发明实施例六中视频解码运动补偿参考数据载入的方法流程图。
图18为图17所示流程中一种条带组的划分示意图。
图19为图18所示流程中的参考图像数据载入流程的示意图。
具体实施方式
本发明实施例中,以宏块行为单位,垂直滑动载入每个宏块行对应的参考图像数据,即在对第k个宏块行进行运动估计/运动补偿处理时,若k+1小于等于宏块行总数,则整行载入第k+1个宏块行对应参考图像区域中下方的新增参考图像行,即第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行;并相应放弃所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,即第k个宏块行对应参考图像区域外上方的参考数据。其中,k为大于0的整数。
其中,宏块行对应参考图像区域的大小与运动估计的垂直搜索范围SY有关,而运动估计的垂直搜索范围的大小,根据编码器的性能需求及处理能力而定,习惯上[-SY,+SY)取[-32,+32)或[-16,+16)。相应地,垂直运动矢量(MVy)最大值范围为[-32,+32)或[-16,+16)。则一个宏块行对应参考图像区域的最大垂直行数应该为MVy的最大值区间范围(2*SY)+宏块高度,但为了使编码过程连续,如上述所述,本发明实施例中可在对当前宏块行,如第k个宏块行进行运动估计/运动补偿处理时,若第k个宏块行不是最后一个宏块行,则载入第k+1个宏块行对应参考图像区域的数据,由于第k个宏块行对应参考图像区域与第k+1个宏块行对应参考图像区域相交,且相交的区域的最大垂直行数为MVy的区间范围,因此对于第k+1个宏块行来说,所需载入的参考图像数据仅为该宏块行对应参考图像区域中下方的新增参考图像行。
一般情况下新增参考图像行的高度为宏块高度,但当第k+1个宏块行按照MVy的最大值区间范围计算得到的参考图像区域超出了图像下边界时,则该宏块行对应参考图像区域中下方的新增参考图像行的高度小于宏块高度,甚至为0。
同时,为了不至于使片内存储区的空间填满,可相应放弃片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行,如仅用于第k-1个宏块行,而不用于第k个宏块行的参考数据,即删除或覆盖第k个宏块行对应参考图像区域外上方的参考数据。但当k=1时,由于按照MVy的最大值区间范围计算得到的参考图像区域超出了图像的上边界,因此实际载入的参考图像区域为MVy的最大值区间范围的二分之一加宏块高度,因此载入第二个宏块行对应参考图像区域的数据时,没有可放弃的参考数据,即放弃的数据为0。同样,对第二个宏块行进行编码,并载入第三个宏块行对参考图像区域的数据时,同样存在这个情况,此时,所放弃的数据小于宏块高度,甚至为0。
此外,当需载入的第k+1个宏块行按照MVy的最大值区间范围计算得到的参考图像区域超出了图像下边界时,且该宏块行对应参考图像区域中下方的新增参考图像行的高度为0时,此时可不再对参考数据进行放弃。
因此,对于片内存储区来说,同时存储的最大垂直行数RLmax为:MVy的最大值区间范围加宏块高度,再加上宏块高度。即MVy的最大值区间范围加两倍的宏块高度。
此外,若考虑亚像素滤波越界量,则对于不同的标准或档次,片内存储区同时存储的最大垂直行数还需要再加上两倍的亚像素滤波越界量。因此,片内存储区同时存储的最大垂直行数RLmax为:MVy的最大值区间范围加两倍的宏块高度,再加上两倍的亚像素滤波越界量。其中,亚像素滤波越界量对于H.264为2,对于AVS 1.0-P2为1,对于MPEG4 SP/H.263为0。本发明实施例中所指的亚像素滤波越界量是对于编码运动估计搜索区、解码宏块行对应参考数据区而言。
当然,若片内存储区的空间允许,可在对第k个宏块行进行运动估计/运动补偿处理时,载入下几个宏块行对应参考图像区域的数据,如载入第k+1、第k+2(k+2小于等于宏块行总数)个宏块行对应参考图像区域的数据,由于当前宏块行为第k个,而第k个与第k+2个宏块行对应参考图像区域之和已经包括了第k+1个宏块行对应的参考图像区域,因此,此时相当于在对第k个宏块行进行运动估计/运动补偿处理,载入第k+2个宏块行对应参考图像区域中下方的新增参考图像行,但此时要求第k+2个宏块行对应参考图像区域与片内存储区中已存储的参考数据对应图像区域之间无空隙,即两个图像区域正好相邻,或有交集。或者,若之前已经载入了第k+1个宏块行对应的参考图像区域的数据,则在对第k个宏块行进行运动估计/运动补偿处理,也可直接载入第k+2个宏块行对应参考图像区域中下方的新增参考图像行。同理,为了不至于使片内存储区的空间填满,可相应放弃片内存储区中存储的仅用于第k-1个宏块行而不用于第k个宏块行的参考数据。或者,在对第k个宏块行进行运动估计/运动补偿处理,载入了第k+2个宏块行对应参考图像区域中下方的新增参考图像行,则在对第k+1个宏块行进行运动估计/运动补偿处理,可不进行数据的载入,而在对第k+2个宏块行进行运动估计/运动补偿处理,载入第k+4个宏块行对应参考图像区域中下方的新增参考图像行,依此类推。
现有编解码标准中,视频编(解)码次序通常是按按光栅扫描顺序,即从左到右完成一个宏块行后再换到下方一个宏块行,包括H.264/AVC(MPEG4-Part10)的主要档次(Main Profile)和高级档次(High Profile)及VC-1、AVS1.0-P2、MPEG4(MPEG4-Part2)、MPEG2等均只支持按光栅扫描划分条带组或不划分条带组(相当于只有一个条带组),当参考数据载入时,宏块行对应的参考图像行的宽度是整个图像宽度。
此外,H.264/AVC(MPEG4-Part10)的基本档次(Baseline Profile)和扩展档次还支持灵活的宏块顺序(FMO),在FMO中包括了7种可能的条带组(Slice Group)划分模式,除了一种模式是按光栅扫描划分条带组外,其它6种模式可以将同一行的宏块划分到不同的条带组,而每一个条带组内再按光栅扫描划分成不同的条带(Slice),条带(Slice)是一个视频编码标准中一个相对独立的编解码层次,此时参考数据载入时,宏块行是指同一个条带组内的属于同一水平行的宏块的集合,宏块行对应的参考图像行的宽度一般不再是整个图像宽度,而是条带组对应的参考图像区域宽度。此时,由于载入数据不再是整个水平图像行,因此可降低片内存储容量占用。
由于帧内预测时,仅涉及宏块类型及已重建的相邻宏块部分数据,不涉及参考图像,因此本发明中主要针对帧间预测。在H.264、VC-1、AVS1.0-P2中,帧间(P)图像的每个宏块可以是帧间(P)宏块,也可以是帧内(I)宏块,本发明针对帧间(P)宏块处理,遇到宏块行中的I宏块时另外按照帧内预测进行相应处理。
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
首先,对视频编码运动估计参考数据载入的方法及装置结合实施例及附图进行详细描述。
由于编码侧的运动估计是主动的,因此在所用标准及档次允许时,编码侧可以主动选择是否按光栅扫描划分条带组。如编码器工作在H.264/AVC(MPEG4-Part10)的基本档次(Baseline Profile)和扩展档次支持灵活的宏块顺序(FMO)的情形时,可以选择按非光栅扫描划分条带组,以缩短水平行宽度,达到降低片上存储容量的目的。但H.264/AVC(MPEG4-Part10)的主要档次(Main Profile)和高级档次(High Profile)及VC-1、AVS1.0-P2、MPEG4、MPEG2等由于仅支持按光栅扫描划分条带组或不划分条带组(相当于只有一个条带组),因此只能选择按光栅扫描划分条带组或不划分条带组。
另外,编码侧运动估计时,由于搜索范围是主动选定的,因此参考数据载入区域更新可以更有规律地进行。
由于多参考帧帧间预测实现方案的多样性,因此下面仅以其中的主参考图像运动估计参考数据载入的情况为例。
实施例一:
本实施例中,对视频编码运动估计参考数据载入的方法及装置进行综合描述。
参见图4,图4为本发明实施例一中视频编码运动估计参考数据载入的方法流程图。如图4所示,该流程包括如下步骤:
步骤401,对于待编码P图像,确定主参考图像。
根据所采用的视频编码标准,可知道是否是多参考图像预测,对于有多个参考图像的多参考图像预测,可预先估计确定其中一个参考图像作为主参考图像;对于只有一个参考图像的情况,则该参考图像即为主参考图像,则此时无需执行步骤401,按现有技术中确定参考图像即可。
例如:对于新一代标准H.264/AVC(MPEG4-Part10)、VC-1、AVS1.0-P2而言,预测参考图像可有多个,此时,可取使用宏块最多的参考图像作为主参考图像,一般使用宏块最多的参考图像为已重建的前一帧图像。而在MPEG2、H.263、MPEG4-Part2标准中,预测参考图像只有一个,即重建的前一帧图像,则该图像即为主参考图像。
步骤402,确定需载入的图像区域单元中单个宏块行对应参考图像区域的大小RA。
本步骤中,确定需载入的图像区域单元中单个宏块行对应参考图像区域的大小RA的方法可以为:根据可分配给运动估计参考数据缓存的片上存储容量RBmax、以及每像素存储量、图像区域单元对应参考图像区域的水平宽度W,计算得到可存储的图像区域单元中宏块行对应的参考图像最大垂直行数RLmax,即RLmax=RBmax/(W*每像素存储量),根据所计算的RLmax确定编码运动估计垂直搜索范围(SY,Search Range of Y Axis),根据所确定的SY、宏块高度以及亚像素滤波越界量,确定单个宏块行对应参考图像区域的最大垂直行数R1,则R1和W构成RA。
因为考虑到参考数据存储容量RM(Reference Data Memory)与存储的参考图像垂直行数(RL,Reference Picture Lines)之间满足关系式RM=W*RL*每像素存储量,因此有:参考数据最大存储容量(RMmax,Maximumof Reference Data Memory)与能够存储的参考图像最大垂直行数(RLmax,Maximum of Reference Picture Lines)满足关系式:RMmax=W*RLmax*每像素存储量。其中,对于不同的图像格式,每像素存储量是不同的,如对于8bit YCbCr 4:2:0,每像素存储量为1.5字节;对于8bit YCbCr 4:2:2,每像素存储量为2字节;对于8bit YCbCr 4:4:4,每像素存储量为3字节。当图像格式每分量为10bit或12bit时,每象素存储容量相应增加。这里,YCbCr是一种图像格式,其中Y是指亮度分量,Cb指蓝色色差分量,而Cr指红色色差分量。YCbCr 4:2:0表示每4个像素有4个Y象素,一个Cb、一个Cr象素;YCbCr 4:2:2表示每4个像素有有4个Y象素,2个Cb、2个Cr象素;YCbCr 4:4:4表示每4个像素有有4个Y象素,4个Cb、4个Cr象素。
因此,本步骤中,若已知W的取值,则可根据片内存储区可供分配给参考数据缓存最大容量(RBmax,Maximum of Reference Data Buffer)的值,利用关系式RMmax=W*RLmax*每像素存储量,令RBmax=W*RLmax*每像素存储量时,计算得到RLmax的值;根据所计算的RLmax的值,利用关系式RLmax=MVy的区间范围+两倍的宏块高度+两倍的亚像素滤波越界量,计算出MVy的区间范围;根据所计算的MVy的区间范围=2*SY,计算出SY的最大取值,进而确定出SY的实际取值。
根据所确定的SY,计算得到单个宏块行对应的参考图像区域的最大垂直行数R1为:2*SY+宏块高度+2*亚像素滤波越界量。并进一步得到可载入的宏块行对应的参考图像区域最大垂直行数RLmax的实际取值为:R1+宏块高度。
其中,对于采用按照光栅扫描划分条带组或不划分条带组的情况,W为图像水平宽度(PW,Picture Width);对于采用灵活划分条带组的情况,W为条带组对应参考图像区域的水平宽度(RSGW,Width of Reference picturefor Slice Group)。
或者,确定需载入的图像区域单元中单个宏块行对应参考图像区域的大小RA的方法还可以为:首先按现有技术确定待编码图像运动估计垂直搜索范围SY,之后,根据所确定的SY,计算得到图像区域单元中单个宏块行对应的参考图像区域的最大垂直行数R1为:2*SY+宏块高度+2*亚像素滤波越界量。则R1和W构成RA。
现有技术中,运动估计的垂直搜索范围SY的确定有很多种方法。一般情况下,SY的取值根据编码器的性能需求及处理能力而定,习惯上取SY为32或16。相应地,垂直运动矢量(MVy)最大值范围为[-32,+32)或[-16,+16)。此外,对于采用按照光栅扫描划分条带组或不划分条带组的情况,W为图像水平宽度(PW,Picture Width);对于采用灵活划分条带组的情况,W为条带组对应参考图像区域的水平宽度(RSGW,Width of Referencepicture for Slice Group)。
步骤403,确定初始整行载入的宏块行个数n。
本步骤中,可直接确定n=1,或n=2;或者也可以根据所述R1和宏块高度,即可载入的宏块行对应参考图像区域的最大垂直行数RLmax=R1+宏块高度,之后根据RLmax,确定初始可整行载入的宏块行的个数N,取n≤N作为初始整行载入的宏块行个数,其中,n=1,2,...,N。
通常情况下,初始整行载入的宏块行个数为1,即n取值为1。
此外,由于对第1个宏块行按照MVy的最大值区间范围计算得到的参考图像区域即参考图像区域=2*(SY+宏块高度+亚像素滤波越界量),超出了图像的上边界,因此实际可载入的参考图像区域为:SY+2*宏块高度+亚像素滤波越界量。对于片内存储区来说,可同时存储的最大垂直行数RLmax为:2*(SY+宏块高度+亚像素滤波越界量)。因此,只载入第1个宏块行对应的参考图像数据后,还有剩余空间,若同时载入第2个宏块行对应的参考图像数据,则所增加的图像区域垂直行数为宏块高度,仍然没有超过能够载入的最大垂直行数RLmax,因此可同时载入第1、第2个宏块行对应的参考数据,此时n取值为2。
实际应用中,若空间允许,也可以载入更多宏块行对应的参考数据,n相应的,可取大于2的数。
步骤404,预先整行载入当前图像区域单元的前n个宏块行对应的参考图像区域。
对于采用按照光栅扫描划分条带组或不划分条带组的情况,图像区域单元为整个图像,宏块行的水平宽度为整个待编码P图像的水平宽度,宏块行对应的参考图像区域的水平宽度为整个参考图像的图像行宽度。
对于采用灵活划分条带组的情况,图像区域单元为一个条带组,宏块行指条带组内部的同一水平行的所有所属宏块,且宏块行的水平宽度为该宏块行所在条带组的水平宽度,宏块行对应的参考图像区域的水平宽度为条带组对应参考图像区域的水平宽度。其中,条带组对应参考图像区域的左边界=条带组左边界-SGL,条带组对应参考图像区域的右边界=条带组右边界+SGR。其中,SGL为条带组的左侧水平搜索区域(Search Area of Slice GroupLeft)、SGR为条带组的右侧水平搜索区域(Search Area of Slice GroupRight),SGL、SGR根据待编码P图像条带组中相对于参考图像的运动估计水平搜索范围确定。
通常情况下,n取值为1,即本步骤中,预先整行载入待编码P图像第1个宏块行对应的参考图像区域。
为了提高载入速度,本实施例中,可采用DMA方式载入数据。
步骤405,对前n-1个宏块行进行编码运动估计处理。
本实施例中,若步骤403中的n取值为1,则本步骤中,不进行宏块行运动估计处理。若步骤403中的n取值为2,则本步骤中,对第1个宏块行进行编码运动估计处理。若步骤403中的n取值为3,则本步骤中,先对第1个宏块行进行编码运动估计处理,再对第2个宏块行进行编码运动估计处理。依次类推。
其中,对宏块行进行编码运动估计处理的过程中,可按照从左到右逐个宏块(每个宏块中每个子宏块)的顺序进行。并且运动估计时,一般可采用全搜索或快速搜索等算法,求出差分绝对值累积和(SAD),并将SAD最小的位置作为匹配点,计算出运动矢量。
步骤406,对第n个宏块行进行编码运动估计处理,若第n个宏块行不是当前图像区域单元的最后一个宏块行,则放弃片内存储区中存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,即不用于第n个宏块行的参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行,即第n+1个宏块行对应参考图像区域中下方的新增参考图像行。若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程。
本步骤中,为了使编码运动估计处理连续,在对第n+1个宏块行进行编码运动估计处理之前,若n+1小于等于宏块行总数,则事先整行载入第n+1个宏块行对应参考图像区域中下方的新增参考图像行。同时为了使得存储区域占用量最少,在对第n个宏块行进行编码运动估计处理的同时,载入第n+1个宏块行对应参考图像区域中下方的新增参考图像行,并相应地放弃片内存储区中存储的参考图像区域中上方不用于第n个宏块行的参考图像行,使得存储区中保存的参考数据为当前处理的宏块行和欲处理的宏块行对应的参考数据。其中,放弃过程可以是删除过程,也可以是覆盖过程等。
一般情况下,第n+1个宏块行对应参考图像区域中下方的新增参考图像行的高度为宏块高度,并且所放弃的片内存储区中存储的参考图像区域中上方不用于第n个宏块行的参考图像行的高度也为宏块高度。但当第n+1个宏块行比较接近或等于宏块行总数时,按照MVy的最大值区间范围计算的参考图像区域(即2*(SY+宏块高度+亚像素滤波越界量))会超出图像或条带组下边界,则此时新增参考图像行高度小于宏块高度,甚至为0。因此,当新增参考图像行高度为0时,片内存储区中可不再放弃已存储的参考数据。另外,对于第1至第2等前几个宏块行,由于按照MVy的最大值区间范围计算的参考图像区域会超出图像或条带组上边界,因此实际载入的参考图像数据会小于按照MVy的最大值区间范围计算的参考图像区域数据,因此所放弃的片内存储区中存储的参考图像区域中上方不用于第n个宏块行的参考图像行的高度也会小于宏块高度,甚至为0。
当然,若空间允许,也可以在对第n个宏块行进行编码运动估计处理的同时,载入更多宏块行对应的参考数据,此时本步骤中的n+1相应变为n+m,m>1。
对当前图像区域单元(待编码P图像或条带组)的最后一个宏块行进行编码运动估计处理完后,该图像区域单元(待编码P图像或条带组)的参考数据载入流程结束,否则执行步骤407。
步骤407,对第n个宏块行编码运动估计处理完后,n取值为n+1,并返回执行步骤406。
上述流程中,步骤401、步骤402以及步骤403之间没有绝对的先后顺序。而且,对于有多帧参考图像的帧间预测编码,也可以对多帧参考图像都进行上述编码过程,或当片内存储区空间足够时,可以同时将几帧参考图像的数据都进行整行载入,则此时无需执行步骤401。此外,步骤402至步骤403在执行一次之后,对其它情况相同的图像区域单元进行编码时,可无需每次执行步骤402至步骤403,而直接执行步骤404至步骤407即可。
以上对本发明实施例一中视频编码运动估计参考数据载入的方法进行了详细描述,下面再对本发明实施例一中视频编码运动估计参考数据载入的装置进行详细描述。
参见图5,图5为本发明实施例一中视频编码运动估计参考数据载入的装置结构示意图。如图5中的实线部分所示,该装置包括:片外存储器、片内存储器和编码运动估计数据载入单元。
其中,片外存储器,用于存储参考图像数据。
片内存储器,用于缓存整行载入的参考图像数据。整行缓存区缓存的数据至少大于一个宏块行对应的参考数据。
编码运动估计数据载入单元,用于从片外存储器中读取预先确定的初始整行载入的前n个宏块行对应参考图像区域的数据写入片内存储器中,对前n-1个宏块行进行编码运动估计处理;在对第n个宏块行进行编码运动估计处理时,若第n个宏块行不是当前图像区域单元的最后一个宏块行,则放弃片内存储器所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,从片外存储器中读取第n个宏块行对应参考图像区域与第n+1个宏块行对应参考图像区域不重合的参考图像行写入片内存储器中,而后,n取值为n+1,并返回执行对第n个宏块行进行编码运动估计处理的操作。
具体实现时,数据载入执行单元可有多种实现形式,其中一种实现形式可如图5中的虚线部分所示,包括:编码运动估计处理模块、控制模块和参考数据载入执行模块。
其中,编码运动估计处理模块,用于从片内存储器中读取当前宏块行对应的参考数据,对当前宏块行进行编码运动估计处理。
控制模块,用于控制编码运动估计处理模块对图像区域单元第1个宏块行进行编码运动估计处理前,向参考数据载入执行模块发送整行载入前n个宏块行对应参考图像区域的数据的控制指示;控制编码运动估计处理模块对第k,n≤k<Num,个宏块行进行编码运动估计处理,并向参考数据载入执行模块发送整行载入图像区域单元第k+1个宏块行对应参考图像区域中下方的新增参考图像行(即第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行)数据的控制指示。其中,Num为当前图像区域单元的宏块行总数。
参考数据载入执行模块,根据控制模块载入图像区域单元前n个宏块行对应参考图像区域的数据的控制指示,从片外存储器读取前n个宏块行对应参考图像区域的数据写入片内存储器中;根据控制模块载入图像区域单元第k+1个宏块行对应参考图像区域中下方的新增参考图像行(即第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行)数据的控制指示,从片外存储器读取第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据写入片内存储器中,并相应覆盖片内存储器中存储的参考图像区域内上方与第k个宏块行的参考图像区域不重合的参考图像行数据。
其中,k、n均为大于0的整数。较佳地,n为1,或为2。
以上,对视频编码运动估计参考数据载入的方法及装置进行了综合描述,下面再分别以按光栅扫描划分条带组或不划分条带组和灵活划分条带组的情况为例,结合具体实施例及附图对上述实施例中的方案进行详细描述。
实施例二:
本实施例中,以按光栅扫描划分条带组或不划分条带组的情况为例,并且编码标准以MPEG4为例,对视频编码运动估计参考数据载入的方法及装置进行详细描述。
参见图6,图6为本发明实施例二中视频编码运动估计参考数据载入的方法流程图。
假设本实施例中的芯片采用片上系统(SoC)芯片,片内存储区可供分配给参考数据缓存最大容量RBmax为32768字节,另外,假设芯片上编码处理器平台使用ZSP500 DSP(或者也可以为超大规模集成电路(VLSI)模块),片内指令存储器128k字节,数据存储器96k字节,片外存储器SDRAM16M字节,且参考图像以展平(Plainery)方式存储在该SDRAM中,所谓Plainery即Y和CbCr分别存放在不同的存储地址区域,各自按光栅扫描顺序地址递增存放各象素,对于常见的8bit YCbCr4:2:0格式,每4个象素Y分量占用一个32bit字存储单元。并且假设图像大小为320*240,则PW=320,若图像格式采用8bit YCbCr4:2:0,则每像素存储量为1.5字节(亮度Y为一个字节,CbCr为0.5字节)。此外,假设宏块大小为16*16。
另外对于MPEG4编码标准,由于半像素运动估计采用2阶插值,因此亚像素滤波越界量为0。
如图6所示,该流程包括如下步骤:
步骤601,对于待编码P图像,确定主参考图像。
本步骤中的具体实现过程可以与图4所示步骤401中的描述一致。
对于MPEG4编码标准,由于帧间预测时,只有一帧参考图像,因此该帧参考图像(即前一帧图像的重建图像)即为主参考图像,也即现有技术中所确定的参考图像。
步骤602,根据片内存储区可供分配给参考数据缓存最大容量RBmax,确定能够存储的参考图像最大垂直行数RLmax,RLmax不小于宏块高度,进而确定待编码P图像运动估计垂直搜索范围SY。
本步骤可按照图4所示流程中步骤402中的描述实现,因为本实施例中,PW为整个图像的宽度,因此PW已知,满足图4所示流程中步骤402中描述的条件。
根据关系式RBmax=PW*RLmax*每像素存储量,有RLmax=32768/(320*1.5)=68;再根据关系式RLmax=MVy的区间范围+两倍的宏块高度+两倍的亚像素滤波越界量,有SY=(68-16-16)/2=18,考虑到实现的简便,SY实际取16,即垂直运动估计搜索范围是[-16,+15.5]。
根据所确定的SY,计算得到单个宏块行对应的参考图像区域的最大垂直行数R1为:2*SY+宏块高度+2*亚像素滤波越界量。
其中,可载入的宏块行对应参考图像区域的最大垂直行数RLmax为:R1+宏块高度。
本实施例中,若将图像按照光栅扫描划分成1个或1个以上的多个条带组,则按照从上到下、从左到右的顺序,逐个条带组、逐个条带进行如下编码运动估计处理。
步骤603,预先整行载入待编码P图像第1个宏块行对应的参考图像区域,k取值为1。
本实施例中,宏块行的水平宽度为整个待编码P图像的水平宽度,即320,宏块行对应的参考图像区域的水平宽度为整个参考图像的图像行宽度,即也为320。又由于图像大小高度为240,宏块大小为16*16,因此宏块行总数为15。
参见图7,图7为本实施例中的参考图像数据载入示意图。如图7所示,对于第1个320*1 6的宏块行,由于宏块行上方的SY超出了图像的上边界,因此需要载入的参考图像区域为:参考图像最上方的320*(16+SY),即320*32的图像区域的数据。
步骤604,启动对第k个宏块行进行编码运动估计处理,同时判断第k个宏块行是否为P图像的最后一个宏块行,如果不是,则执行步骤605;否则,编码运动估计处理完后,结束当前编码图像的数据载入流程。
其中,对宏块行进行编码运动估计处理的过程中,可按照从左到右逐个宏块(每个宏块中每个子宏块)的顺序进行。并且运动估计时,一般可采用全搜索或快速搜索等算法,求出差分绝对值累积和(SAD),并将SAD最小的位置作为匹配点,计算出运动矢量。
本步骤中,当k<15时,在对第k个宏块行进行编码运动估计处理的同时,执行步骤605;当k=15时,由于已达到图像的最后一个宏块行,因此无需载入和放弃,或者也可以选择放弃不用于第15个宏块行的参考数据。在对最后一个宏块行编码运动估计处理完后,结束本流程。
步骤605,放弃片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行,整行载入第k+1个宏块行对应参考图像区域中下方的新增参考图像行。
其中,片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行为片内存储区中存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行;第k+1个宏块行对应参考图像区域中下方的新增参考图像行为第n个宏块行对应参考图像区域与第n+1个宏块行对应参考图像区域不重合的新增参考图像行。
本步骤在时间上和步骤604中的运动估计处理过程基本上是同时进行的。
如图7所示,当k=1时,对第1个宏块行进行运动估计时,载入第2个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的320*16的图像区域数据。由于此时片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行的行数为0,因此实际放弃的参考数据为0。当k=2时,对第2个宏块行进行运动估计时,载入第3个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的320*16的图像区域数据。此时片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行的行数仍然为0,因此实际放弃的参考数据为0。
当k=3时,对第3个宏块行进行运动估计时,载入第4个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的320*16的图像区域数据。此时片内存储区中存储的参考图像区域中上方不用于第4个宏块行的参考图像行的行数为16,因此实际放弃的参考数据为320*16的图像区域数据。同理,对于中间的宏块行,情况与k=3时类似。
当k比较靠近最后一个宏块行时,需载入的第k+1个宏块行对应参考图像区域中下方的新增参考图像行有可能小于宏块高度,甚至为0。如图7所示,当k=14时,对第14个宏块行进行运动估计时,载入第15个宏块行对应参考图像区域中下方的新增参考图像行,此时,由于对第15个宏块行按照最大垂直搜索范围计算得到的参考图像区域已超出图像的下边界16行,因此需载入的新增参考图像行数为0,由于无需新增数据,增大存储容量,因此,内存储区中存储的参考图像区域中上方不用于第14个宏块行的参考图像行的16个参考图像行可以放弃,也可以不放弃。
步骤606,对第k个宏块行编码运动估计处理完后,k取值为k+1,并返回执行步骤604。
本实施例中,整行载入可采用DMA方式。
上述流程中的步骤601和步骤602之间没有绝对的先后顺序,步骤601也可以在步骤602之后执行。
以上对本发明实施例二中视频编码运动估计参考数据载入的方法进行了详细描述。
本实施例中的视频编码运动估计参考数据载入装置与图5所示装置的组成及连接关系一致,功能也类似,不同之处在于,本实施例中的装置是图5所示装置的一个实例化。即,本实施例装置中的编码运动估计数据载入单元所处理的图像区域单元为整帧图像,并且首次载入时,可只整行载入图像中第1个宏块行对应参考图像区域的数据。
实施例三:
本实施例中,以灵活划分条带组的情况为例,并且编码标准以H.264/AVC(MPEG4-Part10)的基本档次(Baseline Profile)和扩展档次为例,对视频编码运动估计参考数据载入的方法及装置进行详细描述。因为该标准支持灵活的宏块顺序(FMO),FMO中包括7种可能的条带组划分模式,其中除了一种模式是按光栅扫描划分条带组外,还允许使用其它6种模式划分条带组。
参见图8,图8为本发明实施例三中视频编码运动估计参考数据载入的方法流程图。
本实施例中,假设编码器平台使用TI DM642 DSP,片内存储器为L1级高速缓存(L1 Cache)和L1级高速缓存(L2 Cache),其中,指令L1Cache 16K字节,数据L1 Cache 16K字节,L2 Cache 256K字节;或者也可以使用VLSI芯片等,片外存储器使用SDRAM或DDR SDRAM 64M字节。且假设参考帧以Plainery方式存放在外存SDRAM中。
如图8所示,该流程包括如下步骤:
步骤801,对于待编码P图像,确定主参考图像。
本步骤中的具体实现过程可以与图4所示步骤401中的描述一致。
对于H.264/AVC编码标准,由于帧间预测时,可有多帧参考图像,因此编码时,可预先估计确定其中一个参考图像作为主参考图像。
步骤802,确定待编码P图像运动估计垂直搜索范围SY。
本步骤中,SY的确定可根据经验或编码器的性能需求及处理能力而定,习惯上取SY为32或16。相应地,垂直运动矢量(MVy)最大值范围为[-32,+32)或[-16,+16)。
本实施例中,基于编码性能和实现代价的折中考虑,可确定SY取值为32,并设定运动估计搜索范围水平为[-64,-63.75]、垂直为[-32,-31.75]。
步骤803,划分条带组。
现有技术中,对于H.264/AVC(MPEG4-Part10)的基本档次(BaselineProfile)和扩展档次中允许的7种条带组划分模式,可根据具体情况进行选择,如基于是否有利于网络传送的健壮性、是否有利于并行编码处理、以及是否进行按区域编码等多种因素进行选择。
并且按不同模式进行划分时,所划分的组数及样式也可以根据具体情况进行选择。即现有技术中,可以有很多种方法进行条带组的划分。
此外,本实施例中,还可以采用如下方法确定条带组的宽度并进行划分:
(1)根据关系式RLmax=MVy的区间范围+两倍的宏块高度+两倍的亚像素滤波越界量,即RLmax=(SY+宏块高度+亚像素滤波越界量)*2,可确定RLmax的取值。
(2)再根据关系式RBmax=RSGWmax*RLmax*每像素存储量,可得到RSGWmax的取值。其中,RSGWmax(Width of Reference picture for SliceGroup)为条带组对应参考图像区域的最大水平宽度。
(3)因为条带组对应参考图像区域的左边界=条带组左边界-SGL,条带组对应参考图像区域的右边界=条带组右边界+SGR。因此,确定条带组的最大水平宽度SGWmax(Maximum Width of Slice Group)为RSGWmax-SGL-SGR,此外,若考虑亚像素滤波越界量,则还需再减去两倍的亚像素滤波越界量。
(4)根据所得到的SGWmax,按照每个条带组对应参考图像的宽度RSGW小于等于RSGWmax的原则,将图像划分成一个或多个条带组。
例如:若按6种划分模式中的“手绢”或“显式”进行划分,则(4)具体可以为:
根据关系式(PW÷SGWmax)取整=M,得到图像的宽度包括几个SGWmax,然后令条带组的数量Msg=1+M,从而确保每个条带组对应参考图像的宽度RSGW小于等于RSGWmax,之后按照宽度为SGW=PW÷Msg的情况,将图像划分为Msg个水平宽度相等的条带组。进一步地,为了使每个条带组包含整数个宏块,可对所得到的条带组宽度SGW进行调整,以确定最终每个条带组的宽度。
举例说明:假设本实施例中图像大小为1280*720,且图像格式采用8bitYCbCr4:2:0,则每像素存储量为1.5字节。此外,假设宏块大小为16*16。另外对于H.264编码标准,亚像素滤波越界量为2。
则划分条带组时,可以为:
(1)确定可载入的宏块行对应的参考图像区域最大垂直行数RLmax=32+32+16+16+4=100。
其中,单个宏块行对应的参考图像区域最大垂直行数R1=32+32+16+4=84。
(2)本实施例中,假设片内存储区可供分配给参考数据缓存最大容量RBmax为96K字节;则确定条带组所对应参考数据区最大水平宽度RSGWmax=RBmax÷(RLmax*1.5)=655.36,取656。
(3)确定条带组水平宽度SGWmax=656-(64+2)*2=524(按中间条带)。
(4)按照条带组水平宽度SGWmax,将图像划分成一个或多个条带组,每个条带组对应参考图像的宽度RSGW小于等于RSGWmax。若按6种划分模式中的“手绢”或“显式”进行划分,则过程如下:
计算M=(图像宽度PW÷条带组最大宽度SGWmax)取整=(1280/524)取整=2,则条带组的数量Msg=1+M=1+2=3,则SGW=1280/3=427,即将图像划分为Msg个水平宽度近似相等的条带组。
考虑到每个条带组的宽度必须是宏块宽度的整数倍,并且居中的条带组参考图像宽度要更大,实际划分结果如下:三个条带组的宽度SGW为432、416、432,对应水平宏块数分别为27、26、27。三个条带组对应参考图像的水平宽度RSGW为:
RSGW1=432+64+2=500;
RSGW2=416+(64+2)*2=552;
RSGW3=432+64+2=500。
具体的条带组划分情况如图9所示,图9为本实施例中一种条带组的划分示意图。本实施例中,将一个图像按照所计算的大小划分成3个条带组,并且将条带组按从左到右依次编号为条带组1~3,表中最右边一列是宏块行的编号,MBR1~45,每个宏块行有80个宏块,每个小格中的数字是宏块编号,按光栅扫描(从左向右,从上到下)递增。条带组1、3为27个宏块列、45个宏块行,即432*720像素块,条带组2位于图像中间,包括26个宏块列、45个宏块行,即416*720图像块。
其中,需载入的单个宏块行对应参考图像区域的大小RA由R1和RSGW构成。
按照从上到下、从左到右的顺序,逐个条带组进行编码运动估计处理,以条带组1为例,每个条带组的编码运动估计包括以下步骤:
步骤804,预先整行载入待编码P图像当前条带组的第1、2个宏块行对应的参考图像区域。
本实施例中,宏块行的水平宽度为自身所属条带组的水平宽度,即432,宏块行对应的参考图像区域的水平宽度为自身所属条带组对应参考图像区域的宽度,即为500。又由于图像大小高度为720,而条带组的高度也为720。宏块大小为16*16,因此宏块行总数为45。
参见图10,图10为本实施例中的参考图像数据载入示意图。如图10所示,对于第1个432*16的宏块行,由于宏块行上方的SY与亚像素滤波越界量超出了图像的上边界,因此对第一个宏块行需要载入的参考图像区域为:参考图像最上方的500*(16+SY+2),即500*50的图像区域的数据。由于本实施例中,RLmax的值为100,因此还可以同时将第2个宏块行对应参考图像区域中下方的新增参考图像行载入,即再载入500*16的图像区域的数据。
步骤805,对第1个宏块行进行编码运动估计处理,处理完后,k取值为2。
其中,对宏块行进行编码运动估计处理的过程中,可按照从左到右逐个宏块(每个宏块中每个子宏块)的顺序进行。并且运动估计时,一般可采用全搜索或快速搜索等算法,求出差分绝对值累积和(SAD),并将SAD最小的位置作为匹配点,计算出运动矢量。
步骤806,启动对第k个宏块行进行编码运动估计处理,同时判断第k个宏块行是否为当前条带组的最后一个宏块行,如果是,则编码运动估计处理完后,执行步骤807;否则,执行步骤808。
本实施例中,当k<45时,在对第k个宏块行进行编码运动估计处理的同时,执行步骤808;当k=45时,由于已达到条带组的最后一个宏块行,因此无需载入和放弃,或者也可以选择放弃不用于第45个宏块行的参考数据。在对最后一个宏块行编码运动估计处理完后,执行步骤807。
步骤807,判断当前条带组是否为最后一个条带组,如果是,则编码运动估计完成后,结束本流程;否则,开始下一个条带组,并返回执行步骤804。
步骤808,放弃片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行,整行载入第k+1个宏块行对应参考图像区域中下方的新增参考图像行。
其中,片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行,即片内存储区中存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行;第k+1个宏块行对应参考图像区域中下方的新增参考图像行,即第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行。
本步骤在时间上和步骤806中的运动估计处理过程基本上是同时进行的。
如图1 0所示,当k=2时,对第2个宏块行进行运动估计时,载入第3个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的500*1 6的图像区域数据。由于此时片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行的行数为0,因此实际放弃的参考数据为0。
当k=3时,对第3个宏块行进行运动估计时,载入第4个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的500*1 6的图像区域数据。此时片内存储区中存储的参考图像区域中上方不用于第4个宏块行的参考图像行的行数为16,因此实际放弃的参考数据为500*16的图像区域数据。同理,对于中间的宏块行,情况与k=3时类似。
当k比较靠近最后一个宏块行时,需载入的第k+1个宏块行对应参考图像区域中下方的新增参考图像行有可能小于宏块高度,甚至为0。如图10所示,当k=42时,对第42个宏块行进行运动估计时,载入第43个宏块行对应参考图像区域中下方的新增参考图像行,此时,由于对第43个宏块行按照最大垂直搜索范围计算得到的参考图像区域已超出条带组的下边界12行,因此需载入的新增参考图像行数为14,此时片内存储区中存储的参考图像区域中上方不用于第4个宏块行的参考图像行的行数为16,因此实际放弃的参考数据为500*16的图像区域数据。当k=43时,对第43个宏块行进行运动估计时,载入第44个宏块行对应参考图像区域中下方的新增参考图像行,此时,由于对第44个宏块行按照最大垂直搜索范围计算得到的参考图像区域已超出条带组的下边界18行,因此需载入的新增参考图像行数为0,由于无需新增数据,增大存储容量,因此,内存储区中存储的参考图像区域中上方不用于第43个宏块行的参考图像行的16个参考图像行可以放弃,也可以不放弃。同理,当k=44时,需载入的新增图像行也为0,因此可不再放弃。
步骤809,对第k个宏块行编码运动估计处理完后,k取值为k+1,并返回执行步骤806。
本实施例中,整行载入同样可采用DMA方式。此外,为了使编码达到高清实时,可采用多个编码处理器并行编码。如本实施例中,可以用4个编码器平台构成并行高清编码器,一个编码器平台负责图像预处理、条带组划分、网络适配层(NAL)编码打包等,另3个编码器平台每个负责编码一个条带组等。
此外,如果两个条带组上下相邻,则上一个条带组最后一个宏块行运动补偿完成后,片内存储区存留的参考图像数据可作为当前待运动补偿条带组参考数据的载入数据的一部分或全部。
上述流程中,对整个待编码图像,确定一个主参考图像。实际应用中,也可以对每个条带组分别确定一个主参考图像。且上述流程中的步骤801和步骤802至步骤803之间没有绝对的先后顺序,步骤801也可以在步骤803之后执行。
以上对本发明实施例三中视频编码运动估计参考数据载入的方法进行了详细描述,下面再对本发明实施例三中视频编码运动估计参考数据载入的装置进行详细描述。
本实施例中的视频编码运动估计参考数据载入装置与图5所示装置的组成及连接关系一致,功能也类似,不同之处在于,本实施例中的装置是图5所示装置的一个实例化。即,本实施例装置中的编码运动估计数据载入单元所处理的图像区域单元为当前图像的每个条带组,并且首次载入时,可整行载入条带组中第1、第2个宏块行对应参考图像区域的数据。
并且该装置中,条带组的划分可按现有技术中的各种划分方式进行划分,若条带组的划分按照本实施例中方法流程中步骤803所描述的另外一种方式划分的话,则如图11所示,图11为本发明实施例三中一种参考数据载入的装置结构示意图。即本实施例中的装置还可进一步包括:条带组划分单元,用于根据预先得到的待编码图像的格式及待编码图像运动估计垂直搜索范围SY,计算得到条带组对应参考图像区域的最大水平宽度RSGWmax,按照每个条带组对应参考图像的宽度RSGW小于等于RSGWmax的原则,将图像划分成一个或多个条带组,并将所划分的条带组信息提供给编码运动估计数据载入单元中的控制模块;控制模块根据条带组划分单元提供的条带组划分信息,执行上述控制操作。其中,条带组划分信息包括各宏块所属的条带组信息。
此外,为了使编码达到高清实时,可采用多个编码处理器并行编码。如图12所示,图12为本发明实施例三中视频编码运动估计装置的结构示意图。此时,该装置可包括:片外存储器、条带组划分单元、条带组指配单元和一个以上的编码运动估计器;每个编码运动估计器只有在完成一个条带组的编码运动估计后才进行另一个条带组的编码运动估计,每个编码运动估计器包括:片内存储器和编码运动估计数据载入单元。
其中,片外存储器,用于存储参考图像数据。
条带组划分单元,用于将图像划分为1个或1个以上的条带组,将所划分的条带组信息输出;
条带组指配单元,用于获取划分的条带组信息,将所划分的条带组指配给相应编码运动估计器,并将条带组指配信息提供给各编码运动估计器中的编码运动估计数据载入单元;
片内存储器,用于缓存整行载入的参考图像数据;
编码运动估计数据载入单元,用于根据条带组指配单元提供的条带组指配信息,从片外存储器中读取所处理条带组预先确定的初始整行载入的前n个宏块行对应参考图像区域的数据写入片内存储器中,对前n一1个宏块行进行编码运动估计处理;在对所处理条带组第n个宏块行进行编码运动估计处理时,若第n个宏块行不是当前条带组的最后一个宏块行,则放弃片内存储器中所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,从片外存储器中读取第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行写入片内存储器中,而后,n取值为n+1,并返回执行对第n个宏块行进行编码运动估计处理的操作。
具体实现时,编码运动估计数据载入单元可以有多种实现方式,其中一种编码运动估计数据载入单元可如图12中的虚线部分所示,包括:编码运动估计处理模块、控制模块和参考数据载入执行模块。
其中,编码运动估计处理模块,用于从片内存储器中读取当前宏块行对应的参考数据,对当前宏块行进行块匹配等运动估计处理;
控制模块,用于根据条带组指配单元提供的条带组指配信息,控制编码运动估计处理模块对所处理条带组第1个宏块行进行编码运动估计处理前,向参考数据载入执行模块发送整行载入当前条带组中第1至第n个宏块行对应参考图像区域的数据的控制指示;控制编码运动估计处理模块对所处理条带组中第k,n≤k<Num,个宏块行进行编码运动估计处理时,向参考数据载入执行模块发送整行载入当前条带组中第k+1个宏块行对应参考图像区域中下方的新增参考图像行数据的控制指示,其中,Num为条带组中的宏块行总数;
参考数据载入执行模块,用于根据控制模块载入当前条带组中第1至第n个宏块行对应参考图像区域的数据的控制指示,从片外存储器中读取当前条带组中第1至第n个宏块行对应参考图像区域的数据写入片内存储器中;根据控制模块载入当前条带组中第k+1个宏块行对应参考图像区域中下方的新增参考图像行数据的控制指示,从片外存储器中读取当前条带组中第k+1个宏块行对应参考图像区域中下方的新增参考图像行数据写入片内存储器中,并相应覆盖片内存储器中存储的参考图像区域中最上方的不用于第k个宏块行的参考图像数据。
此外,编码运动估计器中可进一步包括:本地片外缓存器,用于缓存预先从片外存储器中或其它编码运动估计器中的片外缓存器中读取的编码运动估计器所处理条带组的参考图像区域数据。
此时,控制模块进一步根据条带组指配单元提供的条带组指配信息,向参考数据载入执行模块发送读取自身所在运动估计处理器所处理的条带组对应的参考图像数据载入本地片外缓存器中的控制指示。参考数据载入执行模块进一步根据控制模块的控制指示,将自身所在运动估计处理器所处理的条带组对应的参考图像数据载入本地片外缓存器中。
当控制模块控制参考数据载入执行单元载入条带组中宏块行对应的参考图像数据时,相应地,数据从本地片外存储器中读取。
进一步地,该装置中还可以进一步包括:子条带划分单元。
则条带组划分单元,用于将图像划分为1个或1个以上的条带组,将所划分的条带组信息提供给子条带划分单元。
子条带划分单元,用于根据条带组划分单元提供的条带组信息,将条带组划分为1个或1个以上的子条带组,将所划分的子条带组信息提供给条带组指配单元。
条带组指配单元,用于根据子条带组划分单元提供的子条带组信息,将所划分的子条带组指配给相应编码运动估计器,并将子条带组指配信息提供给各编码运动估计器中的编码运动估计数据载入单元。
相应地,编码运动估计数据载入单元,用于根据条带组指配单元提供的子条带组指配信息,执行前述控制操作。
其次,对视频解码运动补偿参考数据载入的方法及装置结合实施例及附图进行详细描述。
由于解码侧的运动补偿是被动的,因此解码侧只能根据编码侧采用的条带组划分模式对图像进行解码,由于编码侧有按光栅扫描划分条带组,也有灵活划分条带组,因此解码侧也包括这两种情况。
另外,解码侧运动补偿时,由于搜索范围是被动预测的,不能保证一个宏块行运动补偿所需的参考数据都处于该宏块行对应参考图像区域内,因此参考数据载入分为整行载入和零星载入。整行载入,即每次载入至少若干整行参考图像区域的图像行;零星载入,即每次载入一个或多个宏块/块对应的参考图像数据。其中,整行载入的图像区域为解码预测的宏块行所对应的参考图像区域,零星载入的是运动补偿所需的、并且未包括在整行载入的图像数据。
实施例四:
本实施例中,对视频解码运动补偿参考数据载入的方法及装置进行综合描述。
参见图13,图13为本发明实施例四中视频解码运动补偿参考数据载入的方法流程图。如图13所示,该流程包括如下步骤:
步骤1301,对于待解码图像区域单元,确定主参考图像。
根据上层(系统层次)输入给解码器的信息,以及对图像头熵解码的结果,可以知道待解码图像的视频编码标准,以及条带组划分情形。这里分两类情形进行不同处理,情形1为按照光栅扫描划分条带组或不划分条带组,情形2为灵活划分条带组。
对于采用按照光栅扫描划分条带组或不划分条带组的情况,图像区域单元为整个图像,宏块行的水平宽度为整个待编码P图像的水平宽度,宏块行对应的参考图像区域的水平宽度为整个参考图像的图像行宽度。
对于采用灵活划分条带组的情况,图像区域单元为一个条带组,宏块行指条带组内部的同一水平行的所有所属宏块,且宏块行的水平宽度为该宏块行所在条带组的水平宽度,宏块行对应的参考图像区域的水平宽度为条带组对应参考图像区域的水平宽度。
根据所采用的视频编码标准,可知道是否为多参考图像预测,对于有多个参考图像的多参考图像预测,可预先估计确定其中一个参考图像作为主参考图像;对于只有一个参考图像的情况,则该参考图像即为主参考图像,则此时无需执行步骤1301,按现有技术中确定参考图像即可。
例如:对于MPEG2、H.263、MPEG4-Part2标准中,预测参考图像只有一个,即重建的前一帧图像,则该图像即为主参考图像。
对于新一代标准H.264/AVC(MPEG4-Part10)、VC-1、AVS1.0-P2而言,预测参考图像可有多个,此时,可取使用宏块最多的参考图像作为主参考图像。
确定主参考图像的方法可以为:a)先验确定,一般使用宏块应用最多的参考图像为已重建的前一帧图像,因此一般情况下,可直接默认取已重建的前一帧图像为主参考图像。b)根据前一个紧邻图像对应图像区域单元和/或本待解码图像区域单元前一个紧邻图像区域单元所使用的主参考图像预测当前图像的主参考图像。c)对当前待解码图像区域单元预先熵解码,解析出各宏块及子宏块的预测帧标记,进行统计,将标记最多的帧作为主参考帧。为降低运算量,可以预先熵解析出部分宏块的预测帧标记进行统计。
在多条带组情况下,各条带组(区域单元)可以用同一个主参考图像,也可以用不同的主参考图像。
步骤1302,估计欲存储的图像区域单元对应参考图像区域最大垂直行数RLmax及其对应的参考数据最大存储容量RMmax。
本步骤中,对于采用按照光栅扫描划分条带组或不划分条带组的情况,图像区域单元为待解码P图像,因此需要预先估计待解码P图像中相对于参考图像所有宏块的垂直运动矢量MVy值的区间范围,根据MVy值的区间范围,估计RLmax和RMmax。
对于采用灵活划分条带组的情况,图像区域单元为条带组,因此需要先确定当前条带组所对应参考数据区的水平边界,并预先估计待解码条带组中相对于参考图像的所有宏块垂直运动矢量MVy值的区间范围,根据MVy值的区间范围,估计RLmax和RMmax。
其中,条带组对应参考图像区域的左边界=条带组左边界-SGL,条带组对应参考图像区域的右边界=条带组右边界+SGR。其中,SGL为条带组的左侧水平搜索区域、SGR为条带组的右侧水平搜索区域,SGL、SGR根据待编码P图像条带组中相对于参考图像的所有宏块水平运动矢量(MVx)值的分布范围而定。其中,MVx的最大值取决于编码侧运动估计的水平搜索范围。因此,MVx的分布范围可由以下方法确定:a)先验确定,编码器运动估计水平方位习惯上取[-32,+32)或[-16,+16),相应地,MVx最大值范围为[-32,+32)或[-16,+16)。b)根据前一个紧邻P帧或前一个条带组各宏块的MVx最大值范围预测当前条带组MVx最大值范围;c)对当前待解码条带组预先熵解码,解析出各宏块及子宏块MVx,统计出MVx的最大范围。为了降低运算量,可以取部分宏块(如左右边界宏块)的MVx进行统计。
其中,垂直运动矢量MVy的最大值取决于编码侧运动估计的垂直搜索范围。该范围可由以下方法确定:a)先验确定,常见应用中,编码器运动估计垂直方位典型值取[-32,+32)或[-16,+16),相应地,垂直运动矢量最大值范围为[-32,+32)或[-16,+16)。b)根据前一个紧邻P帧对应位置条带组或当前P帧中相邻条带组各宏块的垂直运动矢量最大值范围预测当前P帧或条带组垂直运动矢量最大值范围。c)对当前待解码P帧或条带组预先熵解码,解析出各宏块及子宏块垂直运动矢量,统计得到MVy的区间范围。为降低运算量,可以预先熵解析出部分宏块的垂直运动矢量进行统计。
根据上述垂直运动矢量MVy值的最大值,即MVy的区间范围,以及关系式RLmax=MVy的区间范围+两倍的宏块高度+两倍的亚像素滤波越界量,计算出欲存储的参考图像最大垂直行数RLmax的估计值。
之后,根据关系式参考数据最大存储容量RMmax=PW(或RSGW)*RLmax*每像素存储量,计算出RMmax。其中,PW为图像水平宽度,RSGW为条带组对应参考图像区域的水平宽度。
步骤1303,根据所计算的RMmax和片内存储区可供分配给参考数据的缓存最大容量RBmax,确定能够整行载入的图像区域单元中宏块行对应的参考图像区域最大垂直行数RLmax。
本实施例中,因为解码为被动预测解码,因此数据载入可包括整行载入和零星载入。为此,需要根据片内存储区可供分配给参考数据的缓存最大容量RBmax和步骤1302中所计算的参考数据最大存储容量RMmax的关系,为零星载入预留出一定空间,并确定整行载入时,能够载入的宏块行对应的参考图像区域最大垂直行数RLmax,进而确定可依据的运动估计垂直搜索范围SY。
若RBmax大于RMmax,并且只有一个参考图像,则确定参考数据载入方式主要为整行载入,即每次载入至少若干整行参考图像区域的图像行。在实际进行运动补偿时若某个宏块所需的部分参考数据未被载入,则采用零星载入的方式,将这部分数据载入。
若RBmax小于等于RMmax,或者除主参考图像外还有其它参考图像,则确定参考数据载入方式为:整行载入和零星载入相结合。
为了实现整行载入和零星载入,可将片内存储区中可供分配的参考数据缓存区按一定规则划分为两部分,即:行缓存区(RBL,Reference Buffer forLine),用于整行载入,该容量对应于垂直运动估计搜索范围SY(SearchRange of Y Axis),当某MVy在[-SY,+SY)内时,该宏块对应的参考数据在RBL中;块缓存区(RBB,Reference Buffer for Block),用于零星载入,补充载入整行时未载入的部分子宏块的参考数据。划分的原则为:RBB至少能存下两个宏块运动补偿所需要的参考数据。
根据RBL计算出实际能载入的参考图像区域最大垂直行数RLmax,进而计算出该区域覆盖的MVy范围,确定可依据的运动估计垂直搜索范围SY。
根据所确定的SY、宏块高度以及亚像素滤波越界量,确定单个宏块行对应参考图像区域的最大垂直行数R1,R1和W构成单个宏块行对应参考图像区域大小RA。其中,对于采用按照光栅扫描划分条带组或不划分条带组的情况,W为PW;对于采用灵活划分条带组的情况,W为RSGW。
步骤1304,确定初始整行载入的宏块行个数n。
本步骤中,可直接确定n=1,或n=2;或者也可以根据R1和宏块高度,即可载入的宏块行对应参考图像区域的最大垂直行数RLmax=R1+宏块高度,之后根据RLmax,确定初始可整行载入的宏块行的个数N,取n≤N作为初始整行载入的宏块行个数,其中,n=1,2,...,N。
通常情况下,初始整行载入的宏块行个数为1,即n取值为1。
此外,由于对第1个宏块行按照MVy的最大值区间范围计算得到的参考图像区域即参考图像区域=2*(SY+宏块高度+亚像素滤波越界量),超出了图像的上边界,因此实际可载入的参考图像区域为:SY+2*宏块高度+亚像素滤波越界量。对于片内存储区来说,可同时存储的最大垂直行数RLmax为:2*(SY+宏块高度+亚像素滤波越界量)。因此,只载入第1个宏块行对应的参考图像数据后,还有剩余空间,若同时载入第2个宏块行对应的参考图像数据,则所增加的图像区域垂直行数为宏块高度,仍然没有超过能够载入的最大垂直行数RLmax,因此可同时载入第1、第2个宏块行对应的参考数据,此时n取值为2。
实际应用中,若空间允许,也可以载入更多宏块行对应的参考数据,n相应的,可取大于2的数。
步骤1305,预先以整行载入形式载入当前图像区域单元中第1至第n个宏块行对应的参考图像区域。
本实施例中,可将整行载入的第1至第n个宏块行对应的参考图像区域载入RBL中。
为了提高载入速度,本实施例中,可采用DMA方式载入数据。
步骤1306,对前n-1个宏块行进行解码运动补偿处理。
本实施例中,若步骤1304中的n取值为1,则本步骤中,不进行宏块行运动补偿处理。若步骤1304中的n取值为2,则本步骤中,先对第1个宏块行进行解码运动补偿处理。若步骤1304中的n取值为3,则本步骤中,先对第1个宏块行进行解码运动补偿处理,再对第2个宏块行进行解码运动补偿处理。依次类推。
其中,对宏块行进行运动补偿处理时,如果该宏块行中的某个宏块所需的参考数据未在整行载入的参考图像区域中,本实施例中若设置了RBL,则如果该宏块所需的参考数据不在RBL中,则另外以零星方式载入这部分参考数据,本实施例中,若设置了RBB,则可将该部分数据载入RBB中。如图14所示,图14为本实施例中参考数据载入的示意图。
对宏块行进行运动补偿处理的具体过程为:熵解码解析出第一个宏块各子宏块的运动矢量残差(MVD)数据,由MVD预测解码出运动矢量MV(MVx,MVy),根据MVy与SY的关系,判断该宏块各子块运动补偿所需要的参考数据是否全部已包含在RBL中,如果已全部包含,则可以进行该宏块各子宏块的运动补偿处理;如果未全部包含,则预先用零星载入方式载入未包含部分,缓存在RBB中,然后进行运动补偿处理。
多参考图像预测情况下,非主参考图像部分均需要零星载入。
为避免零星载入造成运动补偿等处理等待,可以按多宏块/子宏块流水方式,预先零星载入一个或多个宏块各子宏块对应的不在RBL部分的参考数据,运动补偿处理则落后一个或多个宏块,如RBB中已零星载入k-1、k、k+1三个宏块的参考数据,正在进行的运动补偿处理的宏块为k-1。
进一步地,每个宏块/子宏块参考数据时,考虑相邻宏块/子宏块间参考数据的重叠性,对参考数据载入进行合并,对重叠部分仅载入一次,并尽量使用SDRAM的突发(burst)读取。
步骤1307,对第n个宏块行进行解码运动补偿处理,若第n个宏块行不是当前图像区域单元的最后一个宏块行,则放弃片内存储区中存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,即不用于第n个宏块行的参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行,即第n+1个宏块行对应参考图像区域中下方的新增参考图像行。若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程。
其中,对第n个宏块行进行解码运动补偿处理时,如果该宏块行中的某个宏块所需的参考数据不在RBL中,包括不在主参考帧中或者虽然在主参考帧中但不在按整行已载入图像区域中,则另外以零星方式载入这部分参考数据,并可将这部分数据载入所设置的RBB中。具体实现过程可与步骤1306中的描述一致。
本步骤中,为了使编码运动估计处理连续,在对第n+1个宏块行进行解码运动补偿处理之前,若n+1小于等于宏块行总数,则事先整行载入第n+1个宏块行对应参考图像区域中下方的新增参考图像行。同时为了使得存储区域占用量最少,在对第n个宏块行进行解码运动补偿处理的同时,载入第n+1个宏块行对应参考图像区域中下方的新增参考图像行,并相应地放弃片内存储区中存储的参考图像区域中上方不用于第n个宏块行的参考图像行,使得存储区中保存的参考数据为当前处理的宏块行和欲处理的宏块行对应的参考数据。其中,放弃过程可以是删除过程,也可以是覆盖过程等。
一般情况下,第n+1个宏块行对应参考图像区域中下方的新增参考图像行的高度为宏块高度,并且所放弃的片内存储区中存储的参考图像区域中上方不用于第n个宏块行的参考图像行的高度也为宏块高度。但当第n+1个宏块行比较接近或等于宏块行总数时,按照MVy的最大值区间范围计算的参考图像区域(即2*(SY+宏块高度+亚像素滤波越界量))会超出图像或条带组下边界,则此时新增参考图像行高度小于宏块高度,甚至为0。因此,当新增参考图像行高度为0时,片内存储区中可不再放弃已存储的参考数据。另外,对于第1至第2等前几个宏块行,由于按照MVy的最大值区间范围计算的参考图像区域会超出图像或条带组上边界,因此实际载入的参考图像数据会小于按照MVy的最大值区间范围计算的参考图像区域数据,因此所放弃的片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行的高度也会小于宏块高度,甚至为0。
当然,若空间允许,也可以在对第n个宏块行进行编码运动估计处理的同时,载入更多宏块行对应的参考数据,此时本步骤中的n+1相应变为n+m,m>1。
对当前图像区域单元(待解码P图像或条带组)的最后一个宏块行进行解码运动补偿处理完后,该图像区域单元(待编码P图像或条带组)的参考数据载入流程结束,否则执行步骤1307。
步骤1308,对第n个宏块行解码运动补偿处理完后,n取值为n+1,并返回执行步骤1307。
上述流程中,步骤1301和步骤1302至步骤1303没有绝对的先后顺序。即步骤1301也可以在步骤1303之后执行。
此外,上述流程中的步骤1302和步骤1303可合并为:根据片内存储区可供分配给参考数据的缓存最大容量RBmax,确定能够整行载入的宏块行对应的参考图像区域最大垂直行数RLmax。
具体实现时,可以为:预先根据RBmax,预留出至少能存储两个宏块运动补偿所需要参考数据的容量,将剩余容量记为RB1。
利用关系式RMmax=PW(或RSGWmax)*RLmax*每像素存储量,令RB1=PW(或RSGWmax)*RLmax*每像素存储量,计算得到RLmax的值;之后根据实际需要取RLmax的值。其中,PW为图像水平宽度(PictureWidth),RSGWmax为条带组对应参考图像区域的水平最大宽度。
进一步地,还可以根据关系式RLmax=MVy的区间范围+两倍的宏块高度+两倍的亚像素滤波越界量,计算出MVy的区间范围;根据所计算的MVy的区间范围=2*SY,计算出数据载入时所依据的SY的取值。
具体实现时,也可将片内存储区中可供分配的参考数据缓存区划分为两部分,如将预留出的至少能存储两个宏块运动补偿所需要参考数据的容量区域划分为RBB,而将存储RB1的容量区域划分为RBL。
前述对整行载入中遗漏的宏块对应参考数据进行零星载入可以为:将整行载入中遗漏的宏块对应参考数据先载入到片上存储器,供宏块运动补偿处理时直接从片上存储器读入;或者也可以为:宏块运动补偿处理时直接将整行载入中遗漏的宏块对应参考数据从片外存储器中读入寄存器使用。
以上对本发明实施例四中视频解码运动补偿参考数据载入的方法进行了详细描述,下面再对本发明实施例四中视频解码运动补偿参考数据载入的装置进行详细描述。
参见图15,图15为本发明实施例四中视频解码运动补偿参考数据载入的装置结构示意图。如图15中的实线部分所示,该装置包括:片外存储器、片内存储器和解码运动补偿数据载入单元。
其中,片外存储器,用于存储参考图像数据。
片内存储器,用于缓存整行载入的参考图像数据和零星载入的参考图像数据。其中,整行缓存区缓存的数据至少大于一个宏块行对应的参考数据。
解码运动补偿数据载入单元,用于从片外存储器中读取预先确定的初始整行载入的前n个宏块行对应参考图像区域的数据写入片内存储器中,对前n-1个宏块行进行解码运动补偿处理;在对第n个宏块行进行解码运动补偿处理时,若第n个宏块行不是当前图像区域单元的最后一个宏块行,则放弃片内存储器所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,从片外存储器中读取第n个宏块行对应参考图像区域与第n+1个宏块行对应参考图像区域不重合的参考图像行写入片内存储器中,而后,n取值为n+1,并返回执行对第n个宏块行进行解码运动补偿处理的操作。
具体实现时,数据载入执行单元可有多种实现形式,其中一种实现形式可如图15中的虚线部分所示,包括:解码运动补偿处理模块、控制模块和参考数据载入执行模块。
解码运动补偿处理模块,用于从片内存储器中读取当前宏块行对应的参考数据,对当前宏块行进行解码运动补偿处理。
控制模块,用于控制解码运动补偿处理模块对第1个宏块行进行解码运动补偿处理前,向参考数据载入执行模块发送整行载入第1至第n个宏块行对应参考图像区域的数据的控制指示;控制解码运动补偿处理模块对第k,n≤k<Num,个宏块行进行解码运动补偿处理时,向参考数据载入执行模块发送整行载入第k+1个宏块行对应参考图像区域中下方的新增参考图像行数据的控制指示。其中,Num为当前图像区域单元的宏块行总数。
参考数据载入执行模块,用于根据控制模块载入第1至第n个宏块行对应参考图像区域的数据的控制指示,从片外存储器读取第1至第n个宏块行对应参考图像区域的数据写入片内存储器中;根据控制模块载入第k+1个宏块行对应参考图像区域中下方的新增参考图像行数据的控制指示,从片外存储器读取第k+1个宏块行对应参考图像区域中下方的新增参考图像行数据写入片内存储器中,并相应覆盖片内存储器中存储的参考图像区域中上方不用于第k个宏块行的参考图像行数据。
此外,在片内存储器中不存在宏块行中某宏块所需的参考数据时,解码运动补偿处理模块可进一步地,向控制模块发送该宏块参考数据遗漏的指示。
控制模块可进一步地,根据来自解码运动补偿处理模块的宏块参考数据遗漏指示,向参考数据载入执行模块发送零星载入该宏块参考数据的指示。
参考数据载入执行模块可进一步地,根据来自控制模块的零星载入宏块参考数据的指示,从片外存储器读取该宏块对应参考图像区域的数据写入片内存储器中,或写入到执行运动补偿处理的相关寄存器中。
其中,k、n均为大于0的整数。较佳地,n为1,或为2。
以上,对视频解码运动补偿参考数据载入的方法及装置进行了综合描述,下面再分别以按光栅扫描划分条带组或不划分条带组和灵活划分条带组的情况为例,结合具体实施例及附图对上述实施例中的方案进行详细描述。
实施例五:
本实施例中,以按光栅扫描划分条带组或不划分条带组的情况为例,并且编码标准以MPEG4为例,对视频解码运动补偿参考数据载入的方法及装置进行详细描述。
参见图16,图16为本发明实施例五中视频解码运动补偿参考数据载入的方法流程图。
假设本实施例中的解码器平台与图6所示实施例二中描述的编码器平台一致,且图像大小及参考图像的存储方式等均与图6所示实施例二中的描述一致。
如图16所示,该流程包括如下步骤:
步骤1601,对于待解码P图像,确定主参考图像。
本步骤中的具体实现过程可以与图13所示步骤1301中的描述一致。
对于MPEG4编码标准,由于帧间预测时,只有一帧参考图像,因此该帧参考图像(即前一帧图像的重建图像)即为主参考图像,也即现有技术中所确定的参考图像。
步骤1602,估计欲存储的参考图像区域最大垂直行数RLmax及其对应的参考数据最大存储容量RMmax。
本步骤中,首先估计待解码P图像中相对于参考图像所有宏块的垂直运动矢量MVy值的区间范围,考虑到手持芯片编码器运动估计垂直方向搜索范围大多取[-16,+15.5],因此本实施例中拟定MVy值的区间范围为[-16,+15.5],并据此根据关系式RLmax=MVy的区间范围+两倍的宏块高度+两倍的亚像素滤波越界量,计算欲存储的参考图像最大垂直行数RLmax的估计值,即当MVy为[-16,+16)时,RLmax=16+16+16+16=64。
之后,根据关系式RMmax=PW*RLmax*每像素存储量,计算得到RMmax=PW*RLmax*每像素存储量=320*64*1.5=30720字节。
步骤1603,根据所计算的RMmax和片内存储区可供分配给参考数据的缓存最大容量RBmax,确定能够整行载入的宏块行对应的参考图像区域最大垂直行数RLmax。
假设本实施例中,片内存储区可供分配给参考数据缓存最大容量RBmax为48k字节,该容量大于RMmax(30720byte),在当前帧MVy满足[-16,+15.5]的情况下,可仅采用整行载入,如果部分宏块MVy实际超出[-16,+15.5],则超出部分可采用零星载入。因此将所估计的[-16,+15.5]作为运动补偿时,MVy的区间范围,此时,SY=16,并且能够整行载入的宏块行对应的参考图像区域最大垂直行数RLmax即为步骤1602中计算得到的RLmax值。
具体实现时,可将片内存储区中可供分配的参考数据缓存区按一定规则划分为两部分,如可划分RBL=30720字节(对应于64个参考图像行,SY=16),并将剩余部分作为RBB。
其中,可载入的宏块行对应参考图像区域大小RA由RLmax和PW构成。
本实施例中,若将图像按照光栅扫描划分成1个或1个以上的多个条带组,则按照从上到下、从左到右的顺序,逐个条带组、逐个条带进行如下解码运动补偿处理。
步骤1604,预先以整行载入形式载入第1、第2个宏块行对应的参考图像区域。
本实施例中,将整行载入的第1、第2个宏块行对应的参考图像区域载入RBL中。其中,宏块行的水平宽度为整个图像的水平宽度,即为240,宏块行对应的参考图像区域的水平宽度也为整个图像的水平宽度,即也为240。又由于宏块大小为16*16,因此宏块行总数为15。
本实施例中的参考图像数据载入也如图7所示。对于第1个320*16的宏块行,由于宏块行上方的SY与亚像素滤波越界量超出了图像的上边界,因此对第一个宏块行需要载入的参考图像区域为:参考图像最上方的320*(16+SY+2),即320*32的图像区域的数据。由于本实施例中,RLmax的值为64,因此还可以同时将第2个宏块行对应参考图像区域中下方的新增参考图像行载入,即再载入320*16的图像区域的数据。当然,也可一次载入64个图像行。
步骤1605,对第1个宏块行进行解码运动补偿处理,处理完后,k取值为2。
其中,对宏块行进行运动补偿处理时,如果该宏块行中的某个宏块所需的参考数据不在RBL中,则另外以零星方式将这部分参考数据载入RBB中。对宏块行进行运动补偿处理的具体过程可以与图13所示步骤1306中的描述一致。
步骤1606,启动对第k个宏块行进行解码运动补偿处理,同时判断第k个宏块行是否为P图像的最后一个宏块行,如果不是,则执行步骤1607;否则,解码运动补偿处理完后,结束当前解码图像的数据载入流程。
本步骤中,当k<15时,在对第k个宏块行进行解码运动补偿处理的同时,执行步骤1607;当k=15时,由于已达到图像的最后一个宏块行,因此无需继续载入和放弃,当然此时也可以释放不用于第15个宏块行的参考数据对应存储区用作其它用途。在对最后一个宏块行解码运动补偿处理完后,结束本流程。
其中,对第k个宏块行进行解码运动补偿处理时,如果该宏块行中的某个宏块所需的参考数据不在RBL中,则另外以零星方式将这部分参考数据,载入RBB中。具体实现过程可与步骤1605中的描述一致。
步骤1607,放弃片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行,整行载入第k+1个宏块行对应参考图像区域中下方的新增参考图像行。
其中,片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行为片内存储区中存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行;第k+1个宏块行对应参考图像区域中下方的新增参考图像行为第n个宏块行对应参考图像区域与第n+1个宏块行对应参考图像区域不重合的新增参考图像行。
本步骤在时间上和步骤1606中的运动补偿处理过程基本上是同时进行的。
如图7所示,当k=2时,对第2个宏块行进行运动补偿时,载入第3个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的320*16的图像区域数据。此时片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行的行数为0,因此实际放弃的参考数据为0。
当k=3时,对第3个宏块行进行运动补偿时,载入第4个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的320*16的图像区域数据。此时片内存储区中存储的参考图像区域中上方不用于第4个宏块行的参考图像行的行数为16,因此实际放弃的参考数据为320*16的图像区域数据。同理,对于中间的宏块行,情况与k=3时类似。
当k比较靠近最后一个宏块行时,需载入的第k+1个宏块行对应参考图像区域中下方的新增参考图像行有可能小于宏块高度,甚至为0。如图18所示,当k=14时,对第14个宏块行进行运动估计时,载入第15个宏块行对应参考图像区域中下方的新增参考图像行,此时,由于对第15个宏块行按照最大垂直搜索范围计算得到的参考图像区域已超出图像的下边界16行,因此需载入的新增参考图像行数为0,由于无需新增数据,增大存储容量,因此,内存储区中存储的参考图像区域中上方不用于第14个宏块行的16个参考图像行可以放弃,也可以不放弃。
步骤1608,对第k个宏块行解码运动补偿处理完后,k取值为k+1,并返回执行步骤1606。
本实施例中,为避免零星载入造成运动补偿等处理等待,可以按多宏块/子宏块流水方式,预先零星载入一个或多个宏块各子宏块对应的不在RBL部分的参考数据,运动补偿处理则落后一个或多个宏块,如RBB中已零星载入k-1、k、k+1三个宏块的参考数据,正在进行的运动补偿处理的宏块为k-1。
进一步地,每个宏块/子宏块参考数据时,考虑相邻宏块/子宏块间参考数据的重叠性,对参考数据载入进行合并,对重叠部分仅载入一次,并尽量使用SDRAM的突发读取。
上述流程中,步骤1601和步骤1602至步骤1603没有绝对的先后顺序。即步骤1601也可以在步骤1603之后执行。
以上对本发明实施例五中视频解码运动补偿参考数据载入的方法进行了详细描述。
本实施例中的视频解码运动补偿参考数据载入装置与图15所示装置的组成及连接关系一致,功能也类似,不同之处在于,本实施例中的装置是图15所示装置的一个实例化。即,本实施例中装置中的解码运动补偿数据载入单元所处理的图像区域单元为当前整帧图像,并且首次载入时,可整行载入条带组中第1、第2个宏块行对应参考图像区域的数据。
实施例六:
本实施例中,以灵活划分条带组的情况为例,并且编码标准以H.264/AVC(MPEG4-Part10)的基本档次(Baseline Profile)和扩展档次为例,对视频解码运动补偿参考数据载入的方法及装置进行详细描述。因为该标准支持灵活的宏块顺序(FMO),FMO中包括7种可能的条带组划分模式,其中除了一种模式是按光栅扫描划分条带组外,还允许使用其它6种模式划分条带组。
参见图17,图17为本发明实施例六中视频解码运动补偿参考数据载入的方法流程图。
本实施例中,假设解码器平台与图8所示实施例三中描述的编码器平台一致,且图像大小及参考图像的存储方式等均与图8所示实施例三中的描述一致。
在熵解析阶段可以获得待解码图像的条带组划分信息。假定待解码P图像划分条带组的方案为图18所示的矩形划分,图18为本实施例中一种条带组的划分示意图。
1280*720图像共有3600个16*16宏块,分为45个宏块行,表中最右边一列是宏块行的编号,MBR1~45,每个宏块行有80个宏块,每个小格中的数字是宏块编号,按光栅扫描(从左向右,从上到下)递增。H.264基本档次或扩展档次支持FMO的情形下,可按“显式”划分,将一帧划分成5个条带组,即图18中5个不同的阴影区,条带组按从左到右、从上到下的顺序编号为条带组1~5,如最右上角的条带组为2号,每个条带组均包括720个宏块,条带组1~4为40宏块列、18个宏块行,即640*288像素,条带组5位于包括图像下方9个整宏块行,包括80宏块列、9个宏块行,即1280*144像素。
进行解码运动补偿处理时,可按从上到下、从左到右的顺序,逐个条带组、逐个条带进行解码运动补偿处理,每个条带组解码运动补偿处理如图17所示,包括如下步骤:
步骤1701,对于待解码P图像的当前条带组,确定主参考图像。
本步骤中的具体实现过程可以与图13所示步骤1301中的描述一致。
对于H.264/AVC编码标准,由于帧间预测时,可有多帧参考图像,因此解码时,可预先估计确定其中一个参考图像作为主参考图像。确定主参考图像的方法可以与图13所示步骤1301中的描述一致。
步骤1702,估计欲存储的参考图像区域最大垂直行数RLmax及其对应的参考数据最大存储容量RMmax。
本实施例中,需要先确定当前条带组所对应参考数据区的水平边界,并预先估计待解码条带组中相对于参考图像的所有宏块垂直运动矢量MVy值的区间范围,根据MVy值的区间范围,估计RLmax和RMmax。
其中,垂直运动矢量MVy的最大值取决于编码侧运动估计的垂直搜索范围,且该范围可按照图13所示步骤1302中描述的方法获取。
考虑到编码器运动估计水平、垂直方向搜索范围大多取[-32,+31.75],可以确定条带组1的参考数据左右边界,SGL=0,SGR=34(水平最大运动矢量+亚像素内插所需的扩边2),故参考数据的水平宽度为640+34=674。(同理条带组3的水平宽度也为674;条带组2和条带组4的参考数据左右边界,SGL=34,SGR=0,故参考数据的水平宽度为640+34=674。条带组5的参考数据左右边界,SGL=0,SGR=0,故参考数据的水平宽度为1280。)
由于垂直方向搜索范围取[-32,+31.75],因此MVy的区间范围为64。
根据上述垂直运动矢量MVy值的最大值,即MVy的区间范围,以及关系式RLmax=MVy的区间范围+两倍的宏块高度+两倍的亚像素滤波越界量,计算欲存储的参考图像最大垂直行数RLmax=64+16+16+4=100。
之后,根据关系式参考数据最大存储容量RMmax=RSGW*RLmax*每像素存储量,其中RSGW为条带组对应参考图像区域的水平宽度,对于条带组1为674,因此计算出RMmax=674*100*1.5=101k字节。
其中,可载入的宏块行对应参考图像区域大小RA由RLmax和RSGW构成。
步骤1703,根据所计算的RMmax和片内存储区可供分配给参考数据的缓存最大容量RBmax,确定能够整行存储的宏块行对应的参考图像区域最大垂直行数RLmax。
本实施例中,L2 Cache总共256K字节,考虑程序存储区占据128K字节,其它数据存储占用32K字节,所能提供的用于参考数据存储的存储空间为96K字节,该容量小于RMmax,并且考虑到多参考图像因素,确定参考数据载入采用整行载入和零星载入两种形式组合。考虑到有10%左右的宏块可能采用主参考帧以外的其它参考帧预测,有必要为零星载入预留稍多的空间,以便零星载入能够构成多宏块流水线,片上参考数据存储区划分方案如下:
RBL=674*(28+28+16+16+4)*1.5=93012字节,即对应92个参考图像行,SY=28。
RBB=96Kbyte-93012Byte=5292字节,即约可存下8个以上宏块对应参考图像。
步骤1704,预先以整行载入形式载入条带组第1个宏块行对应的参考图像区域,k取值为1。
本实施例中,将整行载入的第1个宏块行对应的参考图像区域载入RBL中。其中,宏块行的水平宽度为条带组1的水平宽度,即为640,宏块行对应的参考图像区域的水平宽度为条带组1对应的参考图像区域的水平宽度,即为674。并且条带组1的宏块行总数为18。
本实施例中的参考图像数据载入如图19所示。对于第1个640*16的宏块行,由于宏块行上方的SY与亚像素滤波越界量超出了图像的上边界,因此对第一个宏块行需要载入的参考图像区域为:参考图像最上方的674*(16+SY+2),即674*50的图像区域的数据。
步骤1705,启动对第k个宏块行进行解码运动补偿处理,同时判断第k个宏块行是否为当前条带组的最后一个宏块行,如果是,则解码运动补偿处理完后,执行步骤1706;否则,执行步骤1707。
本实施例中,当k<18时,在对第k个宏块行进行解码运动补偿处理的同时,执行步骤1707;当k=18时,由于已达到条带组的最后一个宏块行,因此无需载入和放弃,或者也可以选择放弃不用于第18个宏块行的参考数据。在对最后一个宏块行解码运动补偿处理完后,执行步骤1706。
其中,对第k个宏块行进行运动补偿处理时,如果该宏块行中的某个宏块所需的参考数据不在RBL中,则另外以零星方式将这部分参考数据载入RBB中。其中,非主参考图像部分均需要零星载入。
其中,对宏块行进行运动补偿处理的具体过程可以与图13所示步骤1306中的描述一致。
步骤1706,判断当前条带组是否为最后一个条带组,如果是,则结束本流程;否则,开始下一个条带组,并返回执行步骤1701。
步骤1707,放弃片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行,整行载入第k+1个宏块行对应参考图像区域中下方的新增参考图像行。
其中,片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行,即片内存储区中存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行;第k+1个宏块行对应参考图像区域中下方的新增参考图像行,即第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行。
本步骤在时间上和步骤1706中的运动补偿处理过程基本上是同时进行的。
如图19所示,当k=1时,对第1个宏块行进行运动补偿时,载入第2个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的674*16的图像区域数据。由于此时片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行的行数为0,因此实际放弃的参考数据为0。当k=2时,对第2个宏块行进行运动补偿时,载入第3个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的674*16的图像区域数据。由于此时片内存储区中存储的参考图像区域中上方不用于第k个宏块行的参考图像行的行数为0,因此实际放弃的参考数据为0。
当k=3时,对第3个宏块行进行运动补偿时,载入第4个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的674*16的图像区域数据。此时片内存储区中存储的参考图像区域中上方不用于第4个宏块行的参考图像行的行数为16,因此实际放弃的参考数据为674*16的图像区域数据。同理,对于中间的宏块行,情况与k=3时类似。
本实施例中,因为条带组1对应的参考图像区域下方离整个图像的下边界还很远,因此当k比较靠近最后一个宏块行时,该宏块行所对应参考图像区域不会超出图像的下边界,因此载入和放弃过程同上述。如图19所示,当k=17时,对第17个宏块行进行运动估计时,载入第18个宏块行对应参考图像区域中下方的新增参考图像行为16,并相应放弃片内存储区中存储的参考图像区域中上方不用于第17个宏块行的16个参考图像行。
步骤1708,对第k个宏块行解码运动补偿处理完后,k取值为k+1,并返回执行步骤1705。
本实施例中,整行载入同样可采用DMA方式。
此外,如果两个条带组上下相邻,则上一个条带组最后一个宏块行运动补偿完成后,片内存储区存留的参考图像数据可作为当前待运动补偿条带组参考数据的载入数据的一部分或全部。本实施例中,为了相邻条带组垂直方向的参考数据重用,条带组的解码顺序最好按从上到下的顺序进行,即按条带组1、3、5、2、4的顺序进行。当完成所述条带组1的解码运动补偿处理后,接着开始下方条带组3(而不是右方条带组2)的解码运动补偿处理,由于条带组3的宽度、水平运动矢量范围与条带组1相同,那么片上存储区中已载入的一部分参考数据可成为条带组3预先载入的参考数据。
为避免零星载入造成运动补偿等处理等待,可以按多宏块/子宏块流水方式,预先零星载入一个或多个宏块各子宏块对应的不在RBL部分的参考数据,运动补偿处理则落后一个或多个宏块,如RBB中已零星载入k-1、k、k+1三个宏块的参考数据,正在进行的运动补偿处理的宏块为k-1。
进一步地,每个宏块/子宏块参考数据时,考虑相邻宏块/子宏块间参考数据的重叠性,对参考数据载入进行合并,对重叠部分仅载入一次,并尽量使用SDRAM的突发读取。
上述流程中,步骤1701和步骤1702至步骤1703没有绝对的先后顺序。即步骤1701也可以在步骤1703之后执行。
以上对本发明实施例六中视频解码运动补偿参考数据载入的方法进行了详细描述。
本实施例中的视频解码运动补偿参考数据载入装置与图15所示装置的组成及连接关系一致,功能也类似,不同之处在于,本实施例中的装置是图15所示装置的一个实例化。即本实施例装置中的解码运动补偿数据载入单元所处理的图像区域单元为当前图像的每个条带组,并且首次载入时,可只整行载入条带组中第1个宏块行对应参考图像区域的数据。
上述各实施例中的载入方式可采用DAM载入方式,并且整行载入采用DMA方式时,可为编、解码器配置另外的DMA控制器,由DMA控制器自行完成参考数据载入,即编、解码器不会因为参考数据载入操作停止编码处理。此处的DMA控制器可以是编、解码处理器之外的另一处理器;上述各实施例中,参考数据载入装置中的片外存储器可以为动态存储器,如SDRAM,DDR SDRAM等,参考数据载入执行单元一般包括片外存储控制器、总线、片内存储器写入控制器和直接存储访问(DMA)控制器。
以上各实施例中,所述视频编码运动估计或解码运动补偿均以对帧间编码(P)图像中为例进行的描述,对于双向预测(B)图像上述各实施例中的描述同样适用,本领域技术人员可根据实际情况采用类似方式实施即可。
以上各实施例中,所述视频编码运动估计或解码运动补偿均以对逐行扫描图像中为例进行的描述,对于隔行扫描图像上述各实施例中的描述同样适用,本领域技术人员可根据实际情况采用类似方式实施即可。比如,对于整个图像区域单元(整个图像或单个条带组)均为帧模式编码或场模式编码的情形,可以仍以宏块行对应参考图像区为载入范围RA,上述各实施例中的“图像”或“帧”指隔行扫描图像帧或场;对于宏块级帧场自适应编码模式的情形,则以宏块对行(即顶场宏块行加对应底场宏块行)对应参考图像区为载入范围RA。
从上述各实施例中可以看出,将编解码运动估计或运动补偿时片上缓存的参考数据从一个或几个宏块对应的参考图像区域提高到一个宏块行对应的参考图像区域,每次载入的参考数据至少为几个至几十个图像行。并且在对当前宏块行进行运动估计或运动补偿时,采用垂直滑动的方法,载入下一个宏块行对应参考图像区域中下方的新增参考图像行,并相应放弃对于当前宏块行和下一个宏块行来说一般无需使用的已存储图像区域中最上方的m个(m一般取宏块高度)参考图像行。这样做可以达到如下效果:
(1)在保证运动估计或运动补偿连续进行的情况下,使载入参考数据的重用度最大化。不仅实现水平宏块间参考数据的重用,也实现垂直宏块间的参考数据重用,最佳情况下,参考数据重用度达到100%,即解码一个图像,需要载入的参考数据量等于一个图像数据量。
(2)外存读取效率最佳化。因为对于动态存储器来说,由于器件本身特性的限制,每次随机的突发访问通常需要行激活(Active Row)以及预充电(precharge)等开销。其中,预充电也可以理解为行关闭,只有遇到下一个要存放数据的行恰好是一个已经打开的行时,才可以免去这种开销。当每次从DRAM中读取的参考数据较少时,Active和Precharge开销将占很大比例,导致外存的带宽利用率很低。本发明实施例中由于每次读入数据长度很大,即至少为多个图像行,因此可以充分利用动态存储器的特性,最大限度地减少动态存储器读取时的Active Row和Precharge等额外开销。
(3)由于实现了参考数据最大程度的重用,因此使参考数据总的载入量大大降低,并且由于单次载入的数据量较大,因此使外存读取效率最佳化。最终降低了对外存接口带宽、总线带宽的占用。
(4)由于大块的参考数据载入可使用直接存储访问DMA方式读入,载入过程不需要CPU或运动补偿插值单元的参与,从而消除了运动补偿插值计算、重建的等待,提升了解码性能。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (27)

1、一种视频编码运动估计参考数据载入的方法,其特征在于,预先确定图像区域单元中单个宏块行对应的参考图像区域大小RA及初始整行载入的宏块行的个数n,该方法包括:
A、整行载入当前图像区域单元的前n个宏块行对应参考图像区域的数据,对前n-1个宏块行进行编码运动估计处理;
B、对第n个宏块行进行编码运动估计处理,若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则放弃所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行;
C、n取值为n+1,返回执行步骤B。
2、如权利要求1所述的方法,其特征在于,所述确定初始整行载入的宏块行个数n为:确定n=1,或2;或者根据RA及宏块高度确定初始可整行载入的最大宏块行个数N,取n≤N作为初始整行载入的宏块行个数,其中,n=1,或2,...,或N。
3、如权利要求1所述的方法,其特征在于,对于多参考帧预测,步骤A之前,进一步包括:确定主参考图像;则步骤A至步骤C中的所述参考图像为所述确定的主参考图像。
4、如权利要求1所述的方法,其特征在于,所述预先确定可载入的图像区域单元中宏块行对应参考图像区域的大小RA包括:
根据可分配给运动估计参考数据缓存的片上存储容量RBmax、以及每像素存储量、图像区域单元对应参考图像区域的水平宽度W,计算得到可存储的图像区域单元中宏块行对应的参考图像最大垂直行数RLmax,根据所述计算的RLmax确定编码运动估计垂直搜索范围SY,根据所确定的SY、宏块高度以及亚像素滤波越界量,确定单个宏块行对应参考图像区域的最大垂直行数R1,R1和W构成RA。
5、如权利要求1至3中任一项的方法,其特征在于,确定RA之前,进一步包括:将待编码图像划分成一个以上的条带组;则所述图像区域单元为一个条带组,所述宏块行为所述条带组所属的同一水平行的所有宏块。
6、如权利要求5所述的方法,其特征在于,对当前条带组的数据载入结束后,进一步包括:选取下一个待编码条带组作为当前图像区域单元,并确定图像区域单元中单个宏块行对应的参考图像区域大小RA及初始整行载入的宏块行的个数n,返回执行步骤A。
7、如权利要求6所述的方法,其特征在于,所述将待编码图像划分成多个条带组包括:
设定待编码图像运动估计垂直搜索范围SY;
根据宏块高度、亚像素滤波越界量以及所述设定的SY,确定可载入的宏块行对应的参考图像最大垂直行数RLmax;
根据片上数据存储区可供分配给参考数据缓存最大容量RBmax、每像素存储量及所述确定的RLmax,确定条带组对应参考图像区域的最大水平宽度RSGWmax;
根据水平运动矢量的左右边界扩大量及所述确定的RSGWmax,确定需划分条带组的最大水平宽度SGWmax;
根据所述得到的SGWmax,按照每个条带组对应参考图像的宽度RSGW小于等于RSGWmax的原则,将图像划分成一个以上条带组。
8、如权利要求7所述的方法,其特征在于,所述根据所述得到的SGWmax,按照每个条带组对应参考图像的宽度RSGW小于等于RSGWmax的原则,将图像划分成一个以上条带组包括:
根据所述得到的SGWmax,及关系式M=(图像宽度PW/条带组最大宽度SGWmax)取整,计算得到M;
根据所得到的M,及关系式Msg=1+M,计算得到Msg;
按照每个条带组的宽度为整数倍宏块宽度,以及每个条带组对应参考图像的宽度RSGW小于等于RSGWmax的原则,将图像划分成Msg个条带组。
9、一种视频解码运动补偿参考数据载入的方法,其特征在于,预先确定图像区域单元中单个宏块行对应的参考图像区域大小RA及初始整行载入的宏块行的个数n,该方法包括:
A、整行载入当前图像区域单元前n个宏块行对应参考图像区域的数据,对前n-1个宏块行进行解码运动补偿处理;
B、对第n个宏块行进行解码运动补偿处理,若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则,放弃所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行;
C、n取值为n+1,返回执行步骤B。
10、如权利要求9所述的方法,其特征在于,该方法进一步包括:对所述宏块行进行解码运动补偿时,对整行载入中遗漏的宏块对应参考数据进行零星载入。
11、如权利要求10所述的方法,其特征在于,所述对整行载入中遗漏的宏块对应参考数据进行零星载入为:将整行载入中遗漏的宏块对应参考数据先载入到片上存储器,供宏块运动补偿处理时直接从片上存储器读入;
或者为:宏块运动补偿处理时直接将整行载入中遗漏的宏块对应参考数据从片外存储器中读入寄存器使用。
12、如权利要求9所述的方法,其特征在于,对于多参考帧预测,步骤A之前,进一步包括确定主参考图像;则步骤A至步骤C中的所述参考图像为所述确定的主参考图像。
13、如权利要求12所述的方法,其特征在于,所述确定主参考图像为:
默认已重建的前一帧图像为主参考图像;
或者为:根据前一个紧邻图像对应图像区域单元和/或前一个紧邻图像区域单元所使用的主参考图像预测得到当前图像的主参考帧;
或者为:对当前待解码图像区域单元预先熵解码,解析出部分或全部宏块及子宏块的预测帧标记,进行统计,将标记最多的图像作为主参考图像。
14、如权利要求9所述的方法,其特征在于,所述预先确定图像区域单元中单个宏块行对应参考图像区域大小RA包括:
估计图像区域单元中相对于参考图像所有宏块垂直运动矢量值MVy的分布范围;
根据宏块高度、亚像素滤波越界量及所估计的MVy的区间范围,确定图像区域单元中宏块行对应的参考图像最大垂直行数RLmax;
根据图像区域单元对应参考图像区域的水平宽度W、每像素存储量及所述确定的RLmax,计算得到对应的参考数据最大存储容量RMmax;
根据片内存储区可供分配给参考数据的缓存最大容量及所述计算的RMmax的大小关系,确定片上参考数据存储区能够以整行方式载入的参考图像区域最大垂直行数RLmax;
根据所确定的RLmax,确定单个宏块行对应参考图像区域的最大垂直行数R1,R1和W构成单个宏块行对应参考图像区域大小RA。
15、如权利要求14所述的方法,其特征在于,所述估计图像区域单元中相对于参考图像所有宏块的垂直运动矢量MVy的区间范围包括:
根据编码器运动估计搜索范围的典型值确定MVy的区间范围;
或者,根据前一个紧邻图像区域单元的MVy最大值范围,预测得到当前图像区域单元MVy的区间范围;
或者,对当前待解码图像区域单元预先熵解码,解析出部分或全部宏块及子宏块垂直运动矢量,统计得到MVy的区间范围。
16、如权利要求9至15中任一项所述的方法,其特征在于,若待解码图像按非光栅扫描划分为多个条带组,则所述图像区域单元为一个条带组,所述宏块行为所述条带组所属的同一水平行的所有宏块。
17、如权利要求9至15中任一项所述的方法,其特征在于,所述确定初始整行载入的宏块行个数n为:确定n=1,或2;或者根据RA及宏块高度确定初始可整行载入的最大宏块行个数N,取n≤N作为初始整行载入的宏块行个数,其中,n=1,或2,...,或N。
18、一种视频编码运动估计参考数据载入的装置,其特征在于,该装置包括:
片外存储器,用于存储参考图像数据;
片内存储器,用于缓存整行载入的参考图像数据;
编码运动估计数据载入单元,用于从所述片外存储器中读取预先确定的初始整行载入的前n个宏块行对应参考图像区域的数据写入所述片内存储器中,对前n-1个宏块行进行编码运动估计处理;在对第n个宏块行进行编码运动估计处理时,若第n个宏块行不是当前图像区域单元的最后一个宏块行,则放弃所述片内存储器所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,从所述片外存储器中读取第n个宏块行对应参考图像区域与第n+1个宏块行对应参考图像区域不重合的参考图像行写入所述片内存储器中,而后,n取值为n+1,并返回执行对第n个宏块行进行编码运动估计处理的操作。
19、如权利要求18所述的装置,其特征在于,该装置进一步包括:条带组划分单元,用于根据待编码图像运动估计垂直搜索范围SY,计算得到条带组对应参考图像区域的最大水平宽度RSGWmax,按照每个条带组对应参考图像的宽度RSGW小于等于RSGWmax的原则,将图像划分成一个以上的条带组,并将所划分的条带组信息提供给编码运动估计数据载入单元;
所述编码运动估计数据载入单元根据所述条带组划分单元提供的条带组划分信息,执行所述编码运动估计数据载入操作。
20、如权利要求18或19所述的装置,其特征在于,所述编码运动估计数据载入单元包括:
编码运动估计处理模块,用于从片内存储器中读取当前宏块行对应的参考数据,对当前宏块行进行块匹配等运动估计处理;
控制模块,用于控制所述编码运动估计处理模块对图像区域单元第1个宏块行进行编码运动估计处理前,向参考数据载入执行模块发送整行载入前n个宏块行对应参考图像区域的数据的控制指示;控制所述编码运动估计处理模块对第k,n≤k<Num,个宏块行进行编码运动估计处理,并向参考数据载入执行模块发出整行载入图像区域单元第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据的控制指示,其中,Num为图像区域单元宏块行总行数;
参考数据载入执行模块,根据所述控制模块载入图像区域单元前n个宏块行对应参考图像区域的数据的控制指示,从所述片外存储器读取前n个宏块行对应参考图像区域的数据写入所述片内存储器中;根据所述控制模块载入图像区域单元第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的中下方的新增参考图像行数据的控制指示,从所述片外存储器读取第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据写入所述片内存储器中,相应覆盖所述片内存储器中存储的参考图像区域中内上方与第k个宏块行的对应参考图像区域不重合的参考图像数据。
21、一种并行视频编码运动估计装置,其特征在于,该装置包括:
片外存储器,用于存储参考图像数据;
条带组划分单元,用于将图像数据划分为1个或1个以上的条带组,并输出所划分的条带组信息;
条带组指配单元,用于获取划分的条带组信息,指配所划分的条带组;
一个以上的编码运动估计器,其中,每个编码运动估计器包括:
片内存储器,用于缓存整行载入的参考图像数据;
编码运动估计数据载入单元,用于根据条带组指配单元提供的条带组指配信息,从所述片外存储器中读取所处理条带组预先确定的初始整行载入的前n个宏块行对应参考图像区域的数据写入所述片内存储器中,对前n-1个宏块行进行编码运动估计处理;在对所处理条带组第n个宏块行进行编码运动估计处理时,若第n个宏块行不是当前条带组的最后一个宏块行,则放弃所述片内存储器中所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,从所述片外存储器中读取第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行写入所述片内存储器中,而后,n取值为n+1,并返回执行对第n个宏块行进行编码运动估计处理的操作。
22、如权利要求21所述的装置,其特征在于,所述编码运动估计数据载入单元包括:
编码运动估计处理模块,用于从所述片内存储器中读取当前宏块行对应的参考数据,对当前宏块行进行运动估计处理;
控制模块,用于根据所述条带组指配单元提供的条带组指配信息,控制所述编码运动估计处理模块对所处理条带组第1个宏块行进行编码运动估计处理前,向参考数据载入执行模块发送整行载入当前条带组中前n个宏块行对应参考图像区域的数据的控制指示;控制所述编码运动估计处理模块对所处理条带组中第k,n≤k<Num,个宏块行进行编码运动估计处理时,向所述参考数据载入执行模块发送整行载入当前条带组中第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据的控制指示,其中,Num为条带组中的宏块行总数;
参考数据载入执行模块,用于根据所述控制模块载入当前条带组中第1至第n个宏块行对应参考图像区域的数据的控制指示,从所述片外存储器中读取当前条带组中前n个宏块行对应参考图像区域的数据写入所述片内存储器中;根据所述控制模块载入当前条带组中第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据的控制指示,从所述片外存储器中读取当前条带组中第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据写入所述片内存储器中,相应覆盖所述片内存储器中存储的参考图像区域内最上方与第k个宏块行的对应参考图像区域不重合的参考图像数据。
23、如权利要求22所述的装置,其特征在于,所述编码运动估计器进一步包括:本地片外缓存器,用于缓存预先从所述片外存储器中或其它编码运动估计器中的片外缓存器中读取的编码运动估计器所处理条带组的参考图像区域数据;
所述控制模块进一步地,根据所述条带组指配单元提供的条带组指配信息,向所述参考数据载入执行模块发送将自身所在运动估计处理器所处理的条带组对应参考图像数据载入所述本地片外缓存器中的控制指示;
所述参考数据载入执行模块进一步地,根据所述控制模块的所述控制指示,将自身所在运动估计处理器所处理的条带组对应的参考图像数据载入所述本地片外缓存器中,之后从所述本地片外缓存器中执行所述载入操作。
24、如权利要求21至23中任一项中所述的装置,其特征在于,该装置进一步包括:子条带组划分单元,用于根据所述条带组划分单元提供的条带组信息,将条带组划分为1个或1个以上的子条带组,将所划分的子条带组信息提供出去;
所述条带组指配单元获取的条带组信息为划分的子条带组信息,并对所划分的子条带组执行所述指配及信息提供操作。
25、一种视频解码运动补偿参考数据载入的装置,其特征在于,该装置包括:
片外存储器,用于存储参考图像数据;
片内存储器,用于缓存整行载入的参考图像数据;
解码运动补偿数据载入单元,用于从所述片外存储器中读取预先确定的初始整行载入的前n个宏块行对应参考图像区域的数据写入所述片内存储器中,对前n-1个宏块行进行解码运动补偿处理;在对第n个宏块行进行解码运动补偿处理时,若第n个宏块行不是当前图像区域单元的最后一个宏块行,则放弃所述片内存储器所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,从所述片外存储器中读取第n个宏块行对应参考图像区域与第n+1个宏块行对应参考图像区域不重合的参考图像行写入所述片内存储器中,而后,n取值为n+1,并返回执行对第n个宏块行进行解码运动补偿处理的操作。
26、如权利要求25所述的装置,其特征在于,所述解码运动补偿数据载入单元包括:
解码运动补偿处理模块,用于从所述片内存储器中读取当前宏块行对应的参考数据,对当前宏块行进行解码运动补偿处理;
控制模块,用于控制解码运动补偿处理模块对图像区域单元第1个宏块行进行解码运动补偿处理前,向参考数据载入执行模块发送整行载入图像区域单元前n个宏块行对应参考图像区域的数据的控制指示;控制解码运动补偿处理模块对图像区域单元第k,n≤k<Num,个宏块行进行解码运动补偿处理时,向参考数据载入执行模块发送整行载入图像区域单元第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据的控制指示,其中,Num为当前图像区域单元中的宏块行总数;
参考数据载入执行模块,用于根据所述控制模块载入前n个宏块行对应参考图像区域的数据的控制指示,从所述片外存储器读取前n个宏块行对应参考图像区域的数据写入所述片内存储器中;根据所述控制模块载入第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据的控制指示,从所述片外存储器读取第k+1个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据写入所述片内存储器中,相应覆盖所述片内存储器中存储的参考图像区域内上方与第k个宏块行的对应参考图像区域不重合的参考图像行数据。
27、如权利要求25所述的装置,其特征在于,所述解码运动补偿处理模块进一步地,在所述片内存储器中不存在宏块行中某宏块所需的参考数据时,向所述控制模块发送该宏块参考数据遗漏的指示;
所述控制模块进一步地,根据来自所述解码运动补偿处理单元的宏块参考数据遗漏指示,向所述参考数据载入执行模块发送零星载入该宏块参考数据的指示;
所述参考数据载入执行模块进一步地,根据来自所述控制模块的零星载入宏块参考数据的指示,从所述片外存储器读取该宏块对应参考图像区域的数据写入所述片内存储器中,或写入到执行运动补偿处理的相关寄存器中。
CN 200710102090 2007-05-14 2007-05-14 参考数据载入的方法及装置 Expired - Fee Related CN101309405B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200710102090 CN101309405B (zh) 2007-05-14 2007-05-14 参考数据载入的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200710102090 CN101309405B (zh) 2007-05-14 2007-05-14 参考数据载入的方法及装置

Publications (2)

Publication Number Publication Date
CN101309405A true CN101309405A (zh) 2008-11-19
CN101309405B CN101309405B (zh) 2011-04-20

Family

ID=40125585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200710102090 Expired - Fee Related CN101309405B (zh) 2007-05-14 2007-05-14 参考数据载入的方法及装置

Country Status (1)

Country Link
CN (1) CN101309405B (zh)

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101783958A (zh) * 2010-02-10 2010-07-21 中国科学院计算技术研究所 Avs视频标准中时域直接模式运动矢量的计算方法和装置
CN102077597A (zh) * 2009-07-10 2011-05-25 松下电器产业株式会社 运动图像编码方法、装置、程序、以及集成电路
CN102340617A (zh) * 2010-07-14 2012-02-01 奇景光电股份有限公司 运动估算及运动补偿电路
CN102823251A (zh) * 2010-03-31 2012-12-12 Jvc建伍株式会社 动图像编码装置、动图像编码方法及动图像编码程序、以及动图像解码装置、动图像解码方法及动图像解码程序
CN101800893B (zh) * 2009-02-06 2013-01-16 宏碁股份有限公司 执行运动估计的低功率高性能视频编码方法
CN103260025A (zh) * 2012-02-16 2013-08-21 想象技术有限公司 用于解码视频图像的方法和设备
CN103379331A (zh) * 2012-04-28 2013-10-30 中兴通讯股份有限公司 一种视频码流编解码方法和装置
CN103563388A (zh) * 2011-03-10 2014-02-05 夏普株式会社 用于解码视频的方法
WO2015081888A1 (en) * 2013-12-06 2015-06-11 Mediatek Inc. Method and apparatus for motion boundary processing
CN104768006A (zh) * 2009-10-23 2015-07-08 三星电子株式会社 用于确定运动矢量的设备
CN104811721A (zh) * 2015-05-26 2015-07-29 珠海全志科技股份有限公司 视频解码数据存储方法及运动向量数据的计算方法
CN104935933A (zh) * 2015-06-05 2015-09-23 广东中星电子有限公司 一种视频编解码方法
CN106254878A (zh) * 2015-06-14 2016-12-21 同济大学 一种图像编码及解码方法、图像处理设备
WO2016202189A1 (zh) * 2015-06-14 2016-12-22 同济大学 图像编码及解码方法、图像处理设备、计算机存储介质
CN107018418A (zh) * 2015-12-23 2017-08-04 联发科技股份有限公司 参考数据重用方法、带宽估计方法及相关视频解码器
CN107124608A (zh) * 2016-02-24 2017-09-01 北京数码视讯科技股份有限公司 一种编码方法及装置
CN107633477A (zh) * 2017-10-20 2018-01-26 上海兆芯集成电路有限公司 图像处理方法及其装置
CN108024116A (zh) * 2016-10-28 2018-05-11 腾讯科技(深圳)有限公司 一种数据缓存方法及装置
CN109508234A (zh) * 2018-09-11 2019-03-22 华中科技大学 匹配顺序大i/o负载特征的粗粒度条带化方法及系统
CN109523972A (zh) * 2018-12-24 2019-03-26 惠科股份有限公司 阵列基板及显示面板
CN110720222A (zh) * 2017-07-10 2020-01-21 影图辟开思公司 用于数字数据压缩的方法和设备
CN111131779A (zh) * 2019-12-26 2020-05-08 武汉宏数信息技术有限责任公司 一种工程勘察设计中基于窄带高清视频的专家远程诊断方法
CN111683249A (zh) * 2020-06-24 2020-09-18 湖南国科微电子股份有限公司 数据读取方法、装置、解码器和存储介质
CN113806244A (zh) * 2021-11-18 2021-12-17 深圳比特微电子科技有限公司 用于片上系统的内存管理方法和基于片上系统的设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1328910C (zh) * 2005-03-10 2007-07-25 北京中星微电子有限公司 一种应用硬件实现运动估计时的搜索窗数据读取方法
CN100474929C (zh) * 2005-09-07 2009-04-01 深圳市海思半导体有限公司 一种运动补偿数据载入装置及方法

Cited By (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101800893B (zh) * 2009-02-06 2013-01-16 宏碁股份有限公司 执行运动估计的低功率高性能视频编码方法
CN102077597A (zh) * 2009-07-10 2011-05-25 松下电器产业株式会社 运动图像编码方法、装置、程序、以及集成电路
CN104768006A (zh) * 2009-10-23 2015-07-08 三星电子株式会社 用于确定运动矢量的设备
CN104780373B (zh) * 2009-10-23 2016-11-23 三星电子株式会社 用于确定运动矢量的设备
CN104768006B (zh) * 2009-10-23 2018-12-07 三星电子株式会社 用于确定运动矢量的设备
US9602828B2 (en) 2009-10-23 2017-03-21 Samsung Electronics Co., Ltd. Method and apparatus for decoding video according to individual parsing or decoding in data unit level, and method and apparatus for encoding video for individual parsing or decoding in data unit level
CN101783958B (zh) * 2010-02-10 2011-10-05 中国科学院计算技术研究所 Avs视频标准中时域直接模式运动矢量的计算方法和装置
CN101783958A (zh) * 2010-02-10 2010-07-21 中国科学院计算技术研究所 Avs视频标准中时域直接模式运动矢量的计算方法和装置
CN102823251A (zh) * 2010-03-31 2012-12-12 Jvc建伍株式会社 动图像编码装置、动图像编码方法及动图像编码程序、以及动图像解码装置、动图像解码方法及动图像解码程序
CN102823251B (zh) * 2010-03-31 2015-08-12 Jvc建伍株式会社 动图像编码装置、动图像编码方法及动图像编码程序、以及动图像解码装置、动图像解码方法及动图像解码程序
CN102340617A (zh) * 2010-07-14 2012-02-01 奇景光电股份有限公司 运动估算及运动补偿电路
CN106851290A (zh) * 2011-03-10 2017-06-13 夏普株式会社 解码方法、解码装置、编码方法以及编码装置
CN103563388A (zh) * 2011-03-10 2014-02-05 夏普株式会社 用于解码视频的方法
CN103260025B (zh) * 2012-02-16 2017-07-07 想象技术有限公司 用于解码视频图像的方法和设备
CN103260025A (zh) * 2012-02-16 2013-08-21 想象技术有限公司 用于解码视频图像的方法和设备
US10425655B2 (en) 2012-02-16 2019-09-24 Imagination Technologies Limited Decoding successive motion compensated video sequence images in parallel using data corresponding to maximum extent of a motion vector
CN103379331B (zh) * 2012-04-28 2018-10-23 南京中兴新软件有限责任公司 一种视频码流编解码方法和装置
CN103379331A (zh) * 2012-04-28 2013-10-30 中兴通讯股份有限公司 一种视频码流编解码方法和装置
US11303900B2 (en) 2013-12-06 2022-04-12 Mediatek Inc. Method and apparatus for motion boundary processing
CN105794210B (zh) * 2013-12-06 2019-05-10 联发科技股份有限公司 视频编码系统中用于边界像素的运动补偿预测方法及装置
WO2015081888A1 (en) * 2013-12-06 2015-06-11 Mediatek Inc. Method and apparatus for motion boundary processing
CN105794210A (zh) * 2013-12-06 2016-07-20 联发科技股份有限公司 用于运动边界处理的方法以及装置
CN104811721A (zh) * 2015-05-26 2015-07-29 珠海全志科技股份有限公司 视频解码数据存储方法及运动向量数据的计算方法
CN104811721B (zh) * 2015-05-26 2017-09-22 珠海全志科技股份有限公司 视频解码数据存储方法及运动向量数据的计算方法
CN104935933B (zh) * 2015-06-05 2019-11-26 广东中星微电子有限公司 一种视频编解码方法
CN104935933A (zh) * 2015-06-05 2015-09-23 广东中星电子有限公司 一种视频编解码方法
US11653019B2 (en) 2015-06-14 2023-05-16 Zte Corporation Image coding and decoding methods, image processing device and computer storage medium
US11159818B2 (en) 2015-06-14 2021-10-26 Zte Corporation Image coding and decoding methods, image processing device and computer storage medium
WO2016202189A1 (zh) * 2015-06-14 2016-12-22 同济大学 图像编码及解码方法、图像处理设备、计算机存储介质
CN106254878A (zh) * 2015-06-14 2016-12-21 同济大学 一种图像编码及解码方法、图像处理设备
CN106254878B (zh) * 2015-06-14 2020-06-12 同济大学 一种图像编码及解码方法、图像处理设备
CN107018418A (zh) * 2015-12-23 2017-08-04 联发科技股份有限公司 参考数据重用方法、带宽估计方法及相关视频解码器
CN107124608A (zh) * 2016-02-24 2017-09-01 北京数码视讯科技股份有限公司 一种编码方法及装置
CN108024116A (zh) * 2016-10-28 2018-05-11 腾讯科技(深圳)有限公司 一种数据缓存方法及装置
CN110720222A (zh) * 2017-07-10 2020-01-21 影图辟开思公司 用于数字数据压缩的方法和设备
CN107633477A (zh) * 2017-10-20 2018-01-26 上海兆芯集成电路有限公司 图像处理方法及其装置
CN109508234A (zh) * 2018-09-11 2019-03-22 华中科技大学 匹配顺序大i/o负载特征的粗粒度条带化方法及系统
CN109508234B (zh) * 2018-09-11 2023-03-10 华中科技大学 匹配顺序大i/o负载特征的粗粒度条带化方法及系统
CN109523972A (zh) * 2018-12-24 2019-03-26 惠科股份有限公司 阵列基板及显示面板
CN111131779A (zh) * 2019-12-26 2020-05-08 武汉宏数信息技术有限责任公司 一种工程勘察设计中基于窄带高清视频的专家远程诊断方法
CN111683249A (zh) * 2020-06-24 2020-09-18 湖南国科微电子股份有限公司 数据读取方法、装置、解码器和存储介质
CN113806244A (zh) * 2021-11-18 2021-12-17 深圳比特微电子科技有限公司 用于片上系统的内存管理方法和基于片上系统的设备
CN113806244B (zh) * 2021-11-18 2022-02-08 深圳比特微电子科技有限公司 用于片上系统的内存管理方法和基于片上系统的设备

Also Published As

Publication number Publication date
CN101309405B (zh) 2011-04-20

Similar Documents

Publication Publication Date Title
CN101309405B (zh) 参考数据载入的方法及装置
CN103416058B (zh) 视频编码和解码
KR100695141B1 (ko) 영상처리시스템에 있어서 메모리 억세스장치 및 방법, 데이터 기록장치 및 방법과 데이터 독출장치 및 방법
CN107995494B (zh) 视频图像数据的压缩方法与解压方法、计算机装置、计算机可读存储介质
CN102547296B (zh) 移动估计加速电路、移动估计方法及环路滤波加速电路
CN101490968B (zh) 用于视频压缩的并行处理装置
CN107615765A (zh) 视频编解码系统中在帧内块复制模式和帧间预测模式之间的资源共享的方法和装置
US20050190976A1 (en) Moving image encoding apparatus and moving image processing apparatus
CN101472176A (zh) 基于边界强度因子进行去块效应滤波的解码方法和装置
CN103947211B (zh) 产生已分区比特流的视频编码装置及方法
CN101023673A (zh) 具有利用局部亮度变化的加权预测的视频编解码器
CN102165774A (zh) 适应性滤波器
CN101267562A (zh) 具有编码和解码模式的视频处理系统和装置及其方法
CN103414895A (zh) 一种适用于hevc标准的编码器帧内预测装置及方法
CN101563927A (zh) 用于对视频图像的块进行解码的方法
CN101166277A (zh) 在用于处理运动图像的设备中访问存储器的方法
CN103188496A (zh) 基于运动矢量分布预测的快速运动估计视频编码方法
US20060146939A1 (en) Offset buffer for intra-prediction of digital video
CN104754337B (zh) 视频编码方法
CN115996290B (zh) 对视频信号解码的双向光流方法、计算设备和存储介质
CN102223543B (zh) 参考像素读取存储系统
CN101179729A (zh) 一种基于帧间模式统计分类的h.264宏块模式选择方法
CN101600111A (zh) 一种实现自适应插值滤波二次编码的搜索方法
CN102111615A (zh) 直接存储器存取搬移实现视频滤波的方法及系统
CN108337508A (zh) 帧内预测装置和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110420

Termination date: 20180514