参考数据载入的方法及装置的制作方法

文档序号:7652845阅读:135来源:国知局
专利名称:参考数据载入的方法及装置的制作方法
技术领域
本发明涉及视频编解码技术,尤其涉及视频编码运动估计参考数据载入 的方法及装置和视频解码运动补偿参考数据载入的方法及装置。
背景技术
视频编码技术是将数字视频信息压缩,以便实现更有效地被传送和存
储;视频解码技术则是对已编码视频信息进行解析重建,得到视频图像。
目前,视频压缩编码标准主要由活动图像专家组(MPEG)、 ITU-TSG16 Q6视频编码专家组(VCEG)及VCEG与MPEG联合专家组(JVT )制定, 这些标准包括H.263 、 MPEG2 、 MPEG4-Part2及最新的H.264/AVC (MPEG4-Part10 )。其它的视频编码标准还有VC - 1和中国音视频标准组 (AVS )制定的视频编码标准AVS1.0-P2等。上述视频编码标准均采用基于 块的运动补偿和变换编码的混合编码架构,包括帧内预测、帧间预测、变换、 量化和熵编码等。相应地,在解码时,包括熵解码、反量化、反变换以及预 测补偿等一 系列解码重建过程。
以H.264标准为例,视频编解码时,按时间、空间由高到低分成序列、 图像组、图像(也称帧)、条带组、条带、宏块、子宏块等不同层次。其中, 编解码的基本处理单元是宏块, 一个宏块通常包括一个16x16的亮度样值块 和对应的色度样值块,宏块又进一步可分为子宏块,在H.264标准中,子宏 块的大小有16*8、 8*16、 8*8、 8*4、 4*8、 4*4等。帧内、帧间预测和变换 常常对子宏块进行。
参见图1,图1为H.264/AVC (MPEG4-Part10)标准的视频编码流程框 架图。如图l所示,对当前帧^;编码过程中,可选择采用帧内预测,也可选 择采用帧间预测。若采用帧内预测,则在对一给定块编码时,可以使用空间 预测模式,根据周围的块对该给定块进行帧内预测,得到预测值P,用实际 值减去预测值得到残差值D。;若采用帧间预测,则在对一给定块编码时,首先在参考图像《,中进行运动估计,得到运动矢量,然后对参考图像按照运
动矢量进行运动补偿(MC),得到预测值P,用实际值减去预测值得到残
差值化。其中,为了提高预测精度,从而提高压缩比,实际的参考图像可在 过去或未来(指显示次序上)已编码解码重建和滤波的帧中进行选择。之后,
对残差值Z)。经变换、量化后产生一组量化后的变换系数x,再经熵编码,与
解码所需的一些边信息(如预测模式量化参数、运动矢量等)一起组成一个 压缩后的码流。
其中,编码过程中的参考图像为已编码图像的重建图像,对残差图像进 行反量化、反变换后得到D:,将得到的D:与预测值p相加,得到"《(未经 滤波的帧)。为了去除编解码环路中产生的噪声,提高参考帧的图像质量, 从而提高压缩图像性能,设置了一个环路滤波器,滤波后的输出即为重建图 像《,可用作参考图像。其中,若为帧内预测,则预测值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宏块,去块滤波器去块滤波器仅是解 码器中可选的一个后处理环节。
帧间预测处理主要包括运动估计和运动补偿,在解码时只有运动补偿, 在编码时既有运动估计又有运动补偿。
所谓运动估计,是指对于当前帧中的每一块(亮度宏块及其子宏块)到 前一帧或后一帧某给定搜索范围内根据一定的匹配准则找出与当前块最相 似的块,即匹配块,由匹配块与当前块的相对位移计算出运动矢量(Motion Vector),运动矢量的单位可以为亮度采样值。搜索匹配块时常用的准则为绝对误差和(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、 DDRSDRAM,少数情况为静态存储器(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、 整行载入当前图像区域单元的前"个宏块行对应参考图像区域的数据, 对前《-1个宏块行进行编码运动估计处理;
B、 对第"个宏块行进行编码运动估计处理,若第"个宏块行是当前图像区 域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则放弃 所存储的参考图像区域内上方与第"个宏块行对应参考图像区域不重合的参考 图像行,整行载入第n +1个宏块行对应参考图像区域与第"个宏块行对应参考 图像区域不重合的参考图像行;
C、 "取值为"+ l,返回执行步骤B。
本发明实施例中所提供的视频解码运动补偿参考数据载入的方法,预先 确定图像区域单元中单个宏块行对应的参考图像区域大小RA及初始整行载 入的宏块行的个数",该方法包括
A、 整行载入当前图像区域单元前"个宏块行对应参考图像区域的数据,对 前"-个宏块行进行解码运动补偿处理;
B、 对第w个宏块行进行解码运动补偿处理,若第"个宏块行是当前图像区 域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则,放 弃所存储的参考图像区域内上方与第"个宏块行对应参考图像区域不重合的参 考图像行,整行载入第"+1个宏块行对应参考图像区域与第"个宏块行对应参 考图像区域不重合的参考图像行;
C、 "取值为"+ l,返回执行步骤B。
本发明实施例中所提供的视频编码运动估计参考数据载入的装置,包

片外存储器,用于存储参考图像数据; 片内存储器,用于緩存整行载入的参考图像数据; 编码运动估计数据载入单元,用于从所述片外存储器中读取预先确定的 初始整行载入的前"个宏块行对应参考图像区域的数据写入所述片内存储器中,对前"-l个宏块行进行编码运动估计处理;在对第"个宏块行进行编 码运动估计处理时,若第"个宏块行不是当前图像区域单元的最后一个宏块 行,则放弃所述片内存储器所存储的参考图像区域内上方与第"个宏块行对 应参考图像区域不重合的参考图像行,从所述片外存储器中读取第"个宏块 行对应参考图像区域与第"+ 1个宏块行对应参考图像区域不重合的参考图 像行写入所述片内存储器中,而后,W取值为"+ l,并返回执行对第n个宏 块行进行编码运动估计处理的操作。
本发明实施例中所提供的视频编码运动估计装置,包括 片外存储器,用于存储参考图像数据;
条带组划分单元,用于将图像数据划分为1个或1个以上的条带组,并 输出所划分的条带组信息;
条带组指配单元,用于获取划分的条带组信息,指配所划分的条带组;
一个以上的编码运动估计器,其中,每个编码运动估计器包括
片内存储器,用于緩存整行载入的参考图像数据;
编码运动估计数据载入单元,用于根据条带组指配单元提供的条带组指 配信息,从所述片外存储器中读取所处理条带组预先确定的初始整行载入的 前M个宏块行对应参考图像区域的数据写入所述片内存储器中,对前"-l个 宏块行进行编码运动估计处理;在对所处理条带组第"个宏块行进行编码运 动估计处理时,若第"个宏块行不是当前条带组的最后一个宏块行,则放弃 所述片内存储器中所存储的参考图像区域内上方与第"个宏块行对应参考 图像区域不重合的参考图像行,从所述片外存储器中读取第"+1个宏块行对 应参考图像区域与第"个宏块行对应参考图像区域不重合的参考图像行写 入所述片内存储器中,而后,"取值为"+ l,并返回执行对第"个宏块行进 行编码运动估计处理的搡作。
本发明实施例中所提供的视频解码运动补偿参考数据载入的装置,包

片外存储器,用于存储参考图像数据; 片内存储器,用于缓存整行载入的参考图像数据; 解码运动补偿数据载入单元,用于从所述片外存储器中读取预先确定的 初始整行载入的前w个宏块行对应参考图像区域的数据写入所述片内存储器中,对前"-l个宏块行进行解码运动补偿处理;在对第w个宏块行进行解
码运动补偿处理时,若第"个宏块行不是当前图像区域单元的最后一个宏块 行,则放弃所述片内存储器所存储的参考图像区域内上方与第"个宏块行对 应参考图像区域不重合的参考图像行,从所述片外存储器中读取第w个宏块 行对应参考图像区域与第《 + 1个宏块行对应参考图像区域不重合的参考图 像行写入所述片内存储器中,而后,《取值为"+ 1,并返回执行对第"个宏 块行进行解码运动补偿处理的操作。
从上述方案可以看出,本发明实施例中对第"个宏块行进行编、解码运 动估计及运动补偿处理时,若第"个宏块行是当前图像区域单元的最后一个
宏块行,则结束该图像区域单元的数据载入流程;否则放弃所存储的参考图 像区域内上方与第w个宏块行对应参考图像区域不重合的参考图像行,整行
载入第n + l个宏块行对应参考图像区域与第"个宏块行对应参考图像区域 不重合的参考图像行,从而将编解码运动估计或运动补偿时片上缓存的参考 数据从一个或几个宏块对应的参考图像区域提高到一个宏块行对应的参考 图像区域,在保证运动估计或运动补偿连续进行的情况下,使载入参考数据 的重用度最大化。


图1为H.264/AVC (MPEG4-Part10)标准的视频编码流程框架图。 图2为H.264/AVC ( MPEG4-Part10 )标准的视频解码流程框架图。 图3为现有技术中参考数据载入的示意图。
图4为本发明实施例一中视频编码运动估计参考数据载入的方法流程图。
图5为本发明实施例一中视频编码运动估计参考数据载入的装置结构 示意图。
图6为本发明实施例二中视频编码运动估计参考数据载入的方法流程图。
图7为图6所示流程中的参考图像数据载入流程的示意图。
图8为本发明实施例三中视频编码运动估计参考数据载入的方法流程图。图9为图8所示流程中一种条带组的划分示意图。
图IO为图8所示流程中的参考图像数据载入流程的示意图。
图11为本发明实施例三中视频编码运动估计参考数据载入的装置结构 示意图。
图12为本发明实施例三中视频编码运动估计装置的结构示意图。
图13为本发明实施例四中视频编码运动估计参考数据载入的方法流程图。
图14为图13所示流程中参考数据载入的示意图。
图15为本发明实施例四中视频解码运动补偿参考数据载入的装置结构 示意图。
图16为本发明实施例五中视频解码运动补偿参考数据载入的方法流程图。
图17为本发明实施例六中视频解码运动补偿参考数据载入的方法流程图。
图18为图17所示流程中一种条带组的划分示意图。
图19为图18所示流程中的参考图像数据载入流程的示意图。
具体实施例方式
本发明实施例中,以宏块行为单位,垂直滑动载入每个宏块行对应的参 考图像数据,即在对第t个宏块行进行运动估计/运动补偿处理时,若A + 1小 于等于宏块行总数,则整行载入第A +1个宏块行对应参考图像区域中下方的 新增参考图像行,即第A + l个宏块行对应参考图像区域与第A个宏块行对应
参考图像区域不重合的参考图像行;并相应放弃所存储的参考图像区域内上 方与第n个宏块行对应参考图像区域不重合的参考图像行,即第&个宏块行 对应参考图像区域外上方的参考数据。其中,A为大于0的整数。
其中,宏块行对应参考图像区域的大小与运动估计的垂直搜索范围SY 有关,而运动估计的垂直搜索范围的大小,根据编码器的性能需求及处理能 力而定,习惯上[-SY,+SY)取[-32,+32)或[-16,+16)。相应地,垂直运动矢 量(MVy)最大值范围为[-32,+32 )或[-16,+16)。则一个宏块行对应参考图 像区域的最大垂直行数应该为MVy的最大值区间范围(2*SY) +宏块高度,但为了使编码过程连续,如上述所述,本发明实施例中可在对当前宏块行, 如第A个宏块行进行运动估计/运动补偿处理时,若第A个宏块行不是最后一 个宏块行,则载入第A + l个宏块行对应参考图像区域的数据,由于第A个宏 块行对应参考图像区域与第A + l个宏块行对应参考图像区域相交,且相交的
区域的最大垂直行数为MVy的区间范围,因此对于第A + l个宏块行来说,
所需载入的参考图像数据仅为该宏块行对应参考图像区域中下方的新增参
考图像行。
一般情况下新增参考图像行的高度为宏块高度,但当第A + l个宏块行按 照MVy的最大值区间范围计算得到的参考图像区域超出了图像下边界时, 则该宏块行对应参考图像区域中下方的新增参考图像行的高度小于宏块高 度,甚至为0。
同时,为了不至于使片内存储区的空间填满,可相应放弃片内存储区中 存储的参考图像区域中上方不用于第A个宏块行的参考图像行,如仅用于第 A-l个宏块行,而不用于第A个宏块行的参考数据,即删除或覆盖第A个宏 块行对应参考图像区域外上方的参考数据。但当A-1时,由于按照MVy的 最大值区间范围计算得到的参考图像区域超出了图像的上边界,因此实际载 入的参考图像区域为MVy的最大值区间范围的二分之一加宏块高度,因此 载入第二个宏块行对应参考图像区域的数据时,没有可放弃的参考数据,即 放弃的数据为0。同样,对第二个宏块行进行编码,并载入第三个宏块行对 参考图像区域的数据时,同样存在这个情况,此时,所放弃的数据小于宏块 高度,甚至为0。
此外,当需载入的第々+1个宏块行按照MVy的最大值区间范围计算得 到的参考图像区域超出了图像下边界时,且该宏块行对应参考图像区域中下 方的新增参考图像行的高度为0时,此时可不再对参考数据进行放弃。
因此,对于片内存储区来说,同时存储的最大垂直行数RLmax为MVy 的最大值区间范围加宏块高度,再加上宏块高度。即MVy的最大值区间范 围加两倍的宏块高度。
此外,若考虑亚像素滤波越界量,则对于不同的标准或档次,片内存储 区同时存储的最大垂直行数还需要再加上两倍的亚像素滤波越界量。因此, 片内存储区同时存储的最大垂直行数RLmax为MVy的最大值区间范围加两倍的宏块高度,再加上两倍的亚像素滤波越界量。其中,亚像素滤波越界
量对于H.264为2,对于AVSI.0-P2为1,对于MPEG4 SP/H.263为0。本
发明实施例中所指的亚像素滤波越界量是对于编码运动估计搜索区、解码宏 块行对应参考数据区而言。
当然,若片内存储区的空间允许,可在对第々个宏块行进行运动估计/ 运动补偿处理时,载入下几个宏块行对应参考图像区域的数据,如载入第 A + l、第t + 2 ( A + 2小于等于宏块行总数)个宏块行对应参考图像区域的 数据,由于当前宏块行为第A个,而第々个与第A + 2个宏块行对应参考图像 区域之和已经包括了第A + l个宏块行对应的参考图像区域,因此,此时相当 于在对第A个宏块行进行运动估计/运动补偿处理,载入第A + 2个宏块行对 应参考图像区域中下方的新增参考图像行,但此时要求第A + 2个宏块行对 应参考图像区域与片内存储区中已存储的参考数据对应图像区域之间无空 隙,即两个图像区域正好相邻,或有交集。或者,若之前已经载入了第& + 1 个宏块行对应的参考图像区域的数据,则在对第A:个宏块行进行运动估计/ 运动补偿处理,也可直接载入第A + 2个宏块行对应参考图像区域中下方的 新增参考图像行。同理,为了不至于使片内存储区的空间填满,可相应放弃 片内存储区中存储的仅用于第A-l个宏块行而不用于第^个宏块行的参考 数据。或者,在对第A个宏块行进行运动估计/运动补偿处理,载入了第^ + 2 个宏块行对应参考图像区域中下方的新增参考图像行,则在对第A: + l个宏块 行进行运动估计/运动补偿处理,可不进行数据的载入,而在对第A + 2个宏 块行进行运动估计/运动补偿处理,载入第^ + 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/( \¥*每像素存储量),根据所计算的RLmax 确定编码运动估计垂直搜索范围(SY, Search Range of Y Axis),根据所确 定的SY、宏块高度以及亚像素滤波越界量,确定单个宏块行对应参考图像 区域的最大垂直行数R1,则R1和W构成RA。
因为考虑到参考数据存储容量RM ( Reference Data Memory )与存储的 参考图像垂直行数(RL, Reference Picture Lines)之间满足关系式RM = W沐RI^每像素存储量,因此有参考数据最大存储容量(RMmax, Maximum of Reference Data Memory )与能够存储的参考图像最大垂直行数(RLmax , Maximum of Reference Picture Lines )满足关系式RMmax = W承RLmax举每 像素存储量。其中,对于不同的图像格式,每像素存储量是不同的,如对于8bitYCbCr 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象素; YCbCr4: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*3丫,计算出SY 的最大取值,进而确定出SY的实际取值。
根据所确定的SY,计算得到单个宏块行对应的参考图像区域的最大垂 直行数R1为2*8¥+宏块高度+2*亚像素滤波越界量。并进一步得到可载入 的宏块行对应的参考图像区域最大垂直行数RLmax的实际取值为.'Rl+宏块高度。
其中,对于采用按照光栅扫描划分条带组或不划分条带组的情况,W为 图像水平宽度(PW, Picture Width );对于采用灵活划分条带组的情况,W 为条带组对应参考图像区域的水平宽度(RSGW, Width of Reference picture for Slice Group )。
或者,确定需载入的图像区域单元中单个宏块行对应参考图像区域的大 小RA的方法还可以为首先按现有技术确定待编码图像运动估计垂直搜索 范围SY,之后,根据所确定的SY,计算得到图像区域单元中单个宏块行对 应的参考图像区域的最大垂直行数Rl为2*8丫+宏块高度+2*亚像素滤波越 界量。则Rl和W构成RA。
现有技术中,运动估计的垂直搜索范围SY的确定有很多种方法。 一般 情况下,SY的取值根据编码器的性能需求及处理能力而定,习惯上取SY 为32或16。相应地,垂直运动矢量(MVy)最大值范围为[-32,+32)或[-16,+ 1"。此外,对于采用按照光栅扫描划分条带组或不划分条带组的情况,w
为图像水平宽度(PW, Picture Width );对于采用灵活划分条带组的情况, W为条带组对应参考图像区域的水平宽度(RSGW, Width of Reference picture for Slice Group )。
步骤403,确定初始整行载入的宏块行个数"。
本步骤中,可直接确定n二l,或!1=2;或者也可以根据所述R1和宏块高 度,即可载入的宏块行对应参考图像区域的最大垂直行数RLmax二Rl+宏块 高度,之后根据RLmax,确定初始可整行栽入的宏块行的个数N,取"《AM乍 为初始整行载入的宏块行个数,其中,"=1, 2,…,N。
通常情况下,初始整行载入的宏块行个数为1,即"取值为l。
此外,由于对第1个宏块行按照MVy的最大值区间范围计算得到的参 考图像区域即参考图像区域=2* (SY+宏块高度+亚像素滤波越界量),超出 了图像的上边界,因此实际可载入的参考图像区域为SY+2f宏块高度+亚 像素滤波越界量。对于片内存储区来说,可同时存储的最大垂直行数RLmax 为2* (SY+宏块高度+亚像素滤波越界量)。因此,只载入第1个宏块行 对应的参考图像数据后,还有剩余空间,若同时载入第2个宏块行对应的参 考图像数据,则所增加的图像区域垂直行数为宏块高度,仍然没有超过能够 载入的最大垂直行数RLmax,因此可同时载入第1、第2个宏块行对应的参 考数据,此时"取值为2。
实际应用中,若空间允许,也可以载入更多宏块行对应的参考数据," 相应的,可取大于2的数。
步骤404,预先整行载入当前图像区域单元的前"个宏块行对应的参考 图1象区;或。
对于采用按照光栅扫描划分条带组或不划分条带组的情况,图像区域单 元为整个图像,宏块行的水平宽度为整个待编码P图像的水平宽度,宏块行 对应的参考图像区域的水平宽度为整个参考图像的图像行宽度。
对于采用灵活划分条带组的情况,图像区域单元为一个条带组,宏块行 指条带组内部的同一水平行的所有所属宏块,且宏块行的水平宽度为该宏块 行所在条带组的水平宽度,宏块行对应的参考图像区域的水平宽度为条带组 对应参考图像区域的水平宽度。其中,条带组对应参考图像区域的左边界=条带组左边界-SGL,条带组对应参考图像区域的右边界=条带组右边界+ SGR。其中,SGL为条带组的左侧水平搜索区域(Search Area of Slice Group Left) 、 SGR为条带组的右侧水平搜索区域(Search Area of Slice Group Right) , SGL、 SGR根据待编码P图像条带组中相对于参考图像的运动估 计水平搜索范围确定。
通常情况下,"取值为1,即本步骤中,预先整行载入待编码P图像第 1个宏块行对应的参考图像区域。
为了提高载入速度,本实施例中,可采用DMA方式载入数据。 步骤405,对前w-l个宏块行进行编码运动估计处理。 本实施例中,若步骤403中的w取值为1,则本步骤中,不进行宏块行 运动估计处理。若步骤403中的"取值为2,则本步骤中,对第1个宏块行 进行编码运动估计处理。若步骤403中的"取值为3,则本步骤中,先对第 1个宏块行进行编码运动估计处理,再对第2个宏块行进行编码运动估计处 理。依次类推。
其中,对宏块行进行编码运动估计处理的过程中,可按照从左到右逐个 宏块(每个宏块中每个子宏块)的顺序进行。并且运动估计时, 一般可采用 全搜索或快速搜索等算法,求出差分绝对值累积和(SAD),并将SAD最 小的位置作为匹配点,计算出运动矢量。
步骤406,对第^个宏块行进行编码运动估计处理,若第"个宏块行不 是当前图像区域单元的最后一个宏块行,则放弃片内存储区中存储的参考图 像区域内上方与第"个宏块行对应参考图像区域不重合的参考图像行,即不 用于第"个宏块行的参考图像行,整行载入第"+ 1个宏块行对应参考图像区 域与第《个宏块行对应参考图像区域不重合的参考图像行,即第"+ 1个宏块 行对应参考图像区域中下方的新增参考图像行。若第"个宏块行是当前图像
区域单元的最后 一个宏块行,则结束该图像区域单元的数据载入流程。
本步骤中,为了使编码运动估计处理连续,在对第"+ I个宏块行进行编 码运动估计处理之前,若"+ l小于等于宏块行总数,则事先整行载入第"+ l 个宏块行对应参考图像区域中下方的新增参考图像行。同时为了使得存储区 域占用量最少,在对第"个宏块行进行编码运动估计处理的同时,载入第 "+ 1个宏块行对应参考图像区域中下方的新增参考图像行,并相应地放弃片内存储区中存储的参考图像区域中上方不用于第"个宏块行的参考图像行, 使得存储区中保存的参考数据为当前处理的宏块行和欲处理的宏块行对应 的参考数据。其中,放弃过程可以是删除过程,也可以是覆盖过程等。
一般情况下,第"+ l个宏块行对应参考图像区域中下方的新增参考图像 行的高度为宏块高度,并且所放弃的片内存储区中存储的参考图像区域中上 方不用于第W个宏块行的参考图像行的高度也为宏块高度。但当第"+ l个宏
块行比较接近或等于宏块行总数时,按照MVy的最大值区间范围计算的参 考图像区域(即2* ( SY+宏块高度+亚像素滤波越界量))会超出图像或条带 组下边界,则此时新增参考图像行高度小于宏块高度,甚至为0。因此,当 新增参考图像行高度为0时,片内存储区中可不再放弃已存储的参考数据。 另外,对于第1至第2等前几个宏块行,由于按照MVy的最大值区间范围 计算的参考图像区域会超出图像或条带组上边界,因此实际载入的参考图像 数据会小于按照MVy的最大值区间范围计算的参考图像区域数据,因此所 放弃的片内存储区中存储的参考图像区域中上方不用于第"个宏块行的参 考图像行的高度也会小于宏块高度,甚至为0。
当然,若空间允许,也可以在对第"个宏块行进行编码运动估计处理的 同时,载入更多宏块行对应的参考数据,此时本步骤中的"+ l相应变为 w + m , 柳> 1 。
对当前图像区域单元(待编码P图像或条带组)的最后一个宏块行进行 编码运动估计处理完后,该图像区域单元(待编码P图像或条带组)的参考 数据载入流程结束,否则执行步骤407。
步骤407,对第"个宏块行编码运动估计处理完后,"取值为"+ l,并 返回执行步骤406。
上述流程中,步骤401、步骤402以及步骤403之间没有绝对的先后顺 序。而且,对于有多帧参考图像的帧间预测编码,也可以对多帧参考图像都 进行上述编码过程,或当片内存储区空间足够时,可以同时将几帧参考图像 的数据都进行整行载入,则此时无需执行步骤401。此外,步骤402至步骤 403在执行一次之后,对其它情况相同的图像区域单元进行编码时,可无需 每次执行步骤402至步骤403,而直接执行步骤404至步骤407即可。
以上对本发明实施例 一 中视频编码运动估计参考数据载入的方法进行了详细描述,下面再对本发明实施例一中视频编码运动估计参考数据载入的 装置进行详细描述。
参见图5,图5为本发明实施例一中视频编码运动估计参考数据载入的 装置结构示意图。如图5中的实线部分所示,该装置包括片外存储器、片 内存储器和编码运动估计数据载入单元。
其中,片外存储器,用于存储参考图像数据。
片内存储器,用于緩存整行载入的参考图像数据。整行緩存区緩存的数 据至少大于一个宏块行对应的参考数据。
编码运动估计数据载入单元,用于从片外存储器中读取预先确定的初始 整行载入的前n个宏块行对应参考图像区域的数据写入片内存储器中,对前 n-l个宏块行进行编码运动估计处理;在对第n个宏块行进行编码运动估计 处理时,若第"个宏块行不是当前图像区域单元的最后一个宏块行,则放弃 片内存储器所存储的参考图像区域内上方与第"个宏块行对应参考图像区 域不重合的参考图像行,从片外存储器中读取第"个宏块行对应参考图像区 域与第m +1个宏块行对应参考图像区域不重合的参考图像行写入片内存储
器中,而后,"取值为n + l,并返回执行对第/7个宏块行进行编码运动估计
处理的操作。
具体实现时,数据载入执行单元可有多种实现形式,其中一种实现形式 可如图5中的虚线部分所示,包括编码运动估计处理模块、控制模块和参 考数据载入执行模块。
其中,编码运动估计处理模块,用于从片内存储器中读取当前宏块行对 应的参考数据,对当前宏块行进行编码运动估计处理。
控制模块,用于控制编码运动估计处理模块对图像区域单元第1个宏块 行进行编码运动估计处理前,向参考数据载入执行模块发送整行载入前"个 宏块行对应参考图像区域的数据的控制指示;控制编码运动估计处理模块对 第A, 《^A<A^m,个宏块行进行编码运动估计处理,并向参考数据载入执 行模块发送整行载入图像区域单元第& +1个宏块行对应参考图像区域中下 方的新增参考图像行(即第A: +1个宏块行对应参考图像区域与第k个宏块行 对应参考图像区域不重合的参考图像行)数据的控制指示。其中,Num为 当前图像区域单元的宏块行总数。参考数据载入执行模块,根据控制模块载入图像区域单元前"个宏块行 对应参考图像区域的数据的控制指示,从片外存储器读取前"个宏块行对应 参考图像区域的数据写入片内存储器中;根据控制模块载入图像区域单元第 A + l个宏块行对应参考图像区域中下方的新增参考图像行(即第A + l个宏 块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图 像行)数据的控制指示,从片外存储器读取第A + 1个宏块行对应参考图像区 域与第k个宏块行对应参考图像区域不重合的参考图像行数据写入片内存 储器中,并相应覆盖片内存储器中存储的参考图像区域内上方与第^个宏块 行的参考图像区域不重合的参考图像行数据。
其中,h "均为大于0的整数。较佳地,"为1,或为2。 以上,对视频编码运动估计参考数据载入的方法及装置进行了综合描 述,下面再分别以按光栅扫描划分条带组或不划分条带组和灵活划分条带组 的情况为例,结合具体实施例及附图对上述实施例中的方案进行详细描述。 实施例二
本实施例中,以按光栅扫描划分条带组或不划分条带组的情况为例,并 且编码标准以MPEG4为例,对视频编码运动估计参考数据载入的方法及装 置进4亍详细4苗述。
参见图6,图6为本发明实施例二中视频编码运动估计参考数据载入的 方法流程图。
假设本实施例中的芯片采用片上系统(SoC)芯片,片内存储区可供分 配给参考数据緩存最大容量RBmax为32768字节,另外,假设芯片上编码 处理器平台使用ZSP500 DSP (或者也可以为超大规模集成电路(VLSI)模 块),片内指令存储器128k字节,数据存储器96k字节,片外存储器SDRAM 16M字节,且参考图像以展平(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为2ASY+宏块高度+2-亚像素滤波越界量。
其中,可载入的宏块行对应参考图像区域的最大垂直行数RLmax为 Rl+宏块高度。
本实施例中,若将图像按照光栅扫描划分成1个或1个以上的多个条带 组,则按照从上到下、从左到右的顺序,逐个条带组、逐个条带进行如下编 码运动估计处理。
步骤603,预先整行载入待编码P图像第1个宏块行对应的参考图像区 域,A取值为1。
本实施例中,宏块行的水平宽度为整个待编码P图像的水平宽度,即 320,宏块行对应的参考图像区域的水平宽度为整个参考图像的图像行宽度, 即也为320。又由于图像大小高度为240,宏块大小为16*16,因此宏块行 总数为15。参见图7,图7为本实施例中的参考图像数据载入示意图。如图7所示, 对于第1个320*16的宏块行,由于宏块行上方的SY超出了图像的上边界, 因此需要载入的参考图像区域为参考图像最上方的320* ( 16+SY),即 320*32的图像区域的数据。
步骤604,启动对第/t个宏块行进行编码运动估计处理,同时判断第A个 宏块行是否为P图像的最后一个宏块行,如果不是,则执行步骤605;否则, 编码运动估计处理完后,结束当前编码图像的数据载入流程。
其中,对宏块行进行编码运动估计处理的过程中,可按照从左到右逐个 宏块(每个宏块中每个子宏块)的顺序进行。并且运动估计时, 一般可采用 全搜索或快速搜索等算法,求出差分绝对值累积和(SAD),并将SAD最 小的位置作为匹配点,计算出运动矢量。
本步骤中,当^<15时,在对第A:个宏块行进行编码运动估计处理的同 时,执行步骤605;当& = 15时,由于已达到图像的最后一个宏块行,因此 无需载入和放弃,或者也可以选择放弃不用于第15个宏块行的参考数据。 在对最后一个宏块行编码运动估计处理完后,结束本流程。
步骤605,放弃片内存储区中存储的参考图像区域中上方不用于第A个 宏块行的参考图像行,整行载入第A +1个宏块行对应参考图像区域中下方的 新增参考图像行。
其中,片内存储区中存储的参考图像区域中上方不用于第A个宏块行的 参考图像行为片内存储区中存储的参考图像区域内上方与第"个宏块行对 应参考图像区域不重合的参考图像行;第A + l个宏块行对应参考图像区域中 下方的新增参考图像行为第"个宏块行对应参考图像区域与第"+l个宏块 行对应参考图像区域不重合的新增参考图像行。
本步骤在时间上和步骤604中的运动估计处理过程基本上是同时进行的。
如图7所示,当^: = 1时,对第1个宏块行进行运动估计时,载入第2 个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区 域下方的320*16的图像区域数据。由于此时片内存储区中存储的参考图像 区域中上方不用于第A个宏块行的参考图像行的行数为0,因此实际放弃的 参考数据为0。当/: = 2时,对第2个宏块行进行运动估计时,载入第3个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下
方的320*16的图像区域数据。此时片内存储区中存储的参考图像区域中上 方不用于第A个宏块行的参考图像行的行数仍然为0,因此实际放弃的参考 数据为0。
当& = 3时,对第3个宏块行进行运动估计时,载入第4个宏块行对应 参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的 320*16的图像区域数据。此时片内存储区中存储的参考图像区域中上方不 用于第4个宏块行的参考图像行的行数为16,因此实际放弃的参考数据为 320*16的图像区域数据。同理,对于中间的宏块行,情况与/: = 3时类似。
当A比较靠近最后一个宏块行时,需载入的第& + 1个宏块行对应参考图 像区域中下方的新增参考图像行有可能小于宏块高度,甚至为0。如图7所 示,当^: = 14时,对第14个宏块行进行运动估计时,载入第15个宏块行对 应参考图像区域中下方的新增参考图像行,此时,由于对第15个宏块行按 照最大垂直搜索范围计算得到的参考图像区域已超出图像的下边界16行, 因此需载入的新增参考图像行数为0,由于无需新增数据,增大存储容量, 因此,内存储区中存储的参考图像区域中上方不用于第14个宏块行的参考 图像行的16个参考图像行可以放弃,也可以不放弃。
步骤606,对第A个宏块行编码运动估计处理完后,A取值为A + 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,片内存储器为Ll 级高速緩存(Ll Cache)和Ll级高速緩存(L2 Cache),其中,指令Ll Cachel6K字节,数据Ll 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)的基本档次(Baseline Profile)和扩展档次中允许的7种条带组划分模式,可根据具体情况进行选 择,如基于是否有利于网络传送的健壮性、是否有利于并行编码处理、以及 是否进行按区域编码等多种因素进行选择。
并且按不同模式进行划分时,所划分的组数及样式也可以根据具体情况进行选择。即现有技术中,可以有很多种方法进行条带组的划分。
此外,本实施例中,还可以采用如下方法确定条带组的宽度并进行划分
(1) 根据关系式RLmax=MVy的区间范围+两倍的宏块高度+两倍的亚像 素滤波越界量,即RLmax二(SY+宏块高度+亚像素滤波越界量)*2,可确定 RLmax的耳又值。
(2) 再根据关系式RBmax = RSGWmax+RLmaxf每像素存储量,可得到 RSGWmax的取值。其中,RSGWmax ( Width of Reference picture for Slice Group)为条带组对应参考图像区域的最大水平宽度。
(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,且图像格式采用8bit YCbCr4:2:0,则每像素存储量为1.5字节。此外,假设宏块大小为16*16。 另外对于H.264编码标准,亚像素滤波越界量为2。
则划分条带组时,可以为
(1)确定可载入的宏块行对应的参考图像区域最大垂直行数RLmax = 32 + 32 + 16 + 16 + 4 = 100。
其中,单个宏块行对应的参考图像区域最大垂直行数尺1=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,贝'J 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个宏块,每个小格中的数字是宏块 编号,按光栅扫描(从左向右,从上到下)递增。条带组l、 3为27个宏块 列、45个宏块行,即432*720像素块,条带组2位于图像中间,包括26个 宏块列、45个宏块行,即416*720图像块。
其中,需载入的单个宏块行对应参考图像区域的大小RA由Rl和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个宏块行进行编码运动估计处理,处理完后,A取值为2。
其中,对宏块行进行编码运动估计处理的过程中,可按照从左到右逐个 宏块(每个宏块中每个子宏块)的顺序进行。并且运动估计时, 一般可采用 全搜索或快速搜索等算法,求出差分绝对值累积和(SAD),并将SAD最 小的位置作为匹配点,计算出运动矢量。
步骤806,启动对第A个宏块行进行编码运动估计处理,同时判断第&个 宏块行是否为当前条带组的最后一个宏块行,如果是,则编码运动估计处理 完后,执行步骤807;否则,执行步骤808。
本实施例中,当^:<45时,在对第A个宏块行进行编码运动估计处理的 同时,执行步骤808;当& = 45时,由于已达到条带组的最后一个宏块行, 因此无需载入和放弃,或者也可以选择放弃不用于第45个宏块行的参考数 据。在对最后一个宏块行编码运动估计处理完后,执行步骤807。
步骤807,判断当前条带组是否为最后一个条带组,如果是,则编码运 动估计完成后,结束本流程;否则,开始下一个条带组,并返回执行步骤 804。
步骤808,放弃片内存储区中存储的参考图像区域中上方不用于第A:个宏块行的参考图像行,整行载入第A + 1个宏块行对应参考图像区域中下方的 新增参考图像行。
其中,片内存储区中存储的参考图像区域中上方不用于第/t个宏块行的 参考图像行,即片内存储区中存储的参考图像区域内上方与第"个宏块行对
应参考图像区域不重合的参考图像行;第A + l个宏块行对应参考图像区域中 下方的新增参考图像行,即第"+ l个宏块行对应参考图像区域与第n个宏块 行对应参考图像区域不重合的参考图像行。
本步骤在时间上和步骤806中的运动估计处理过程基本上是同时进行的。
如图10所示,当^ = 2时,对第2个宏块行进行运动估计时,载入第3 个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区 域下方的500*16的图像区域数据。由于此时片内存储区中存储的参考图像 区域中上方不用于第A个宏块行的参考图像行的行数为0,因此实际放弃的 参考数据为0。
当& = 3时,对第3个宏块行进行运动估计时,载入第4个宏块行对应 参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的 500*16的图像区域数据。此时片内存储区中存储的参考图像区域中上方不 用于第4个宏块行的参考图像行的行数为16,因此实际放弃的参考数据为 500*16的图像区域数据。同理,对于中间的宏块行,情况与& = 3时类似。
当yt比较靠近最后一个宏块行时,需载入的第A + l个宏块行对应参考图 像区域中下方的新增参考图像行有可能小于宏块高度,甚至为0。如图10 所示,当& = 42时,对第42个宏块行进行运动估计时,载入第43个宏块行 对应参考图像区域中下方的新增参考图像行,此时,由于对第"个宏块行
按照最大垂直搜索范围计算得到的参考图像区域已超出条带组的下边界12 行,因此需载入的新增参考图像行数为14,此时片内存储区中存储的参考 图像区域中上方不用于第4个宏块行的参考图像行的行数为l6,因此实际 放弃的参考数据为500*16的图像区域数据。当^: = 43时,对第43个宏块行 进行运动估计时,载入第44个宏块行对应参考图像区域中下方的新增参考 图像行,此时,由于对第44个宏块行按照最大垂直搜索范围计算得到的参 考图像区域已超出条带组的下边界18行,因此需载入的新增参考图像行数为0,由于无需新增数据,增大存储容量,因此,内存储区中存储的参考图
像区域中上方不用于第43个宏块行的参考图像行的16个参考图像行可以放 弃,也可以不放弃。同理,当^ = 44时,需载入的新增图像行也为0,因此 可不再放弃。
步骤809,对第A个宏块行编码运动估计处理完后,t取值为A + l,并 返回执行步骤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个以上的条带组,将所划 分的条带组信息输出;
条带组指配单元,用于获取划分的条带组信息,将所划分的条带组指配 给相应编码运动估计器,并将条带组指配信息提供给各编码运动估计器中的 编码运动估计数据载入单元;
片内存储器,用于緩存整行载入的参考图像数据;
编码运动估计数据载入单元,用于根据条带组指配单元提供的条带组指 配信息,从片外存储器中读取所处理条带组预先确定的初始整行载入的前" 个宏块行对应参考图像区域的数据写入片内存储器中,对前"-l个宏块行进 行编码运动估计处理;在对所处理条带组第"个宏块行进行编码运动估计处 理时,若第"个宏块行不是当前条带组的最后一个宏块行,则放弃片内存储 器中所存储的参考图像区域内上方与第"个宏块行对应参考图像区域不重 合的参考图像行,从片外存储器中读取第"+ l个宏块行对应参考图像区域与 第n个宏块行对应参考图像区域不重合的参考图像行写入片内存储器中,而 后,《取值为"+ 1,并返回执行对第"个宏块行进行编码运动估计处理的操 作。具体实现时,编码运动估计数据栽入单元可以有多种实现方式,其中一
种编码运动估计数据载入单元可如图12中的虛线部分所示,包括编码运 动估计处理模块、控制模块和参考数据载入执行模块。
其中,编码运动估计处理模块,用于从片内存储器中读取当前宏块行对 应的参考数据,对当前宏块行进行块匹配等运动估计处理;
控制模块,用于根据条带组指配单元提供的条带组指配信息,控制编码 运动估计处理模块对所处理条带组第1个宏块行进行编码运动估计处理前, 向参考数据载入执行模块发送整行载入当前条带组中第1至第"个宏块行对 应参考图像区域的数据的控制指示;控制编码运动估计处理模块对所处理条 带组中第&, "2A<A^m,个宏块行进行编码运动估计处理时,向参考数据 载入执行模块发送整行载入当前条带组中第& +1个宏块行对应参考图像区 域中下方的新增参考图像行数据的控制指示,其中,Num为条带组中的宏 块行总数;
参考数据载入执行模块,用于根据控制模块载入当前条带组中第1至第 ^个宏块行对应参考图像区域的数据的控制指示,从片外存储器中读取当前 条带组中第1至第"个宏块行对应参考图像区域的数据写入片内存储器中; 根据控制模块载入当前条带组中第A + l个宏块行对应参考图像区域中下方 的新增参考图像行数据的控制指示,从片外存储器中读取当前条带组中第 A + l个宏块行对应参考图像区域中下方的新增参考图像行数据写入片内存 储器中,并相应覆盖片内存储器中存储的参考图像区域中最上方的不用于第 个宏块行的参考图像数据。
此外,编码运动估计器中可进一步包括本地片外緩存器,用于缓存预 先从片外存储器中或其它编码运动估计器中的片外緩存器中读取的编码运 动估计器所处理条带组的参考图像区域数据。
此时,控制模块进一步根据条带组指配单元提供的条带组指配信息,向 参考数据载入执行模块发送读取自身所在运动估计处理器所处理的条带组 对应的参考图像数据载入本地片外緩存器中的控制指示。参考数据载入执行 模块进一步根据控制模块的控制指示,将自身所在运动估计处理器所处理的 条带组对应的参考图像数据载入本地片外緩存器中。考图像数据时,相应地,数据从本地片外存储器中读取。
进一步地,该装置中还可以进一步包括子条带划分单元。
则条带组划分单元,用于将图像划分为1个或1个以上的条带组,将所 划分的条带组信息提供给子条带划分单元。
子条带划分单元,用于根据条带组划分单元提供的条带组信息,将条带 组划分为1个或1个以上的子条带组,将所划分的子条带组信息提供给条带 组指配单元。
条带组指配单元,用于根据子条带组划分单元提供的子条带组信息,将 所划分的子条带组指配给相应编码运动估计器,并将子条带组指配信息提供 给各编码运动估计器中的编码运动估计数据载入单元。
相应地,编码运动估计数据载入单元,用于根据条带组指配单元提供的 子条带组指配信息,执行前述控制操作。
其次,对视频解码运动补偿参考数据载入的方法及装置结合实施例及附 图进行详细描述。
由于解码侧的运动补偿是被动的,因此解码侧只能根据编码侧采用的条 带组划分模式对图像进行解码,由于编码侧有按光栅扫描划分条带組,也有 灵活划分条带组,因此解码侧也包括这两种情况。
另外,解码侧运动补偿时,由于搜索范围是被动预测的,不能保证一个 宏块行运动补偿所需的参考数据都处于该宏块行对应参考图像区域内,因此 参考数据载入分为整行载入和零星载入。整行载入,即每次载入至少若干整
行参考图像区域的图像行;零星载入,即每次载入一个或多个宏块/块对应 的参考图像数据。其中,整行载入的图像区域为解码预测的宏块行所对应的 参考图像区域,零星载入的是运动补偿所需的、并且未包括在整行载入的图 像数据。
实施例四
本实施例中,对视频解码运动补偿参考数据载入的方法及装置进行综合 描述。
参见图13,图13为本发明实施例四中视频解码运动补偿参考数据载入 的方法流程图。如图13所示,该流程包括如下步骤
步骤13(H,对于待解码图像区域单元,确定主参考图像。根据上层(系统层次)输入给解码器的信息,以及对图像头熵解码的结 果,可以知道待解码图像的视频编码标准,以及条带组划分情形。这里分两 类情形进行不同处理,情形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 for Line),用于整行载入,该容量对应于垂直运动估计搜索范围SY (Search RangeofY Axis),当某MVy在[-SY,+SY )内时,该宏块对应的参考数据 在RBL中;块緩存区(RBB, Reference Buffer for Block ),用于零星载入, 补充载入整行时未载入的部分子宏块的参考数据。划分的原则为RBB至 少能存下两个宏块运动补偿所需要的参考数据。
根据RBL计算出实际能载入的参考图像区域最大垂直行数RLmax,进
而计算出该区域覆盖的MVy范围,确定可依据的运动估计垂直搜索范围 SY。根据所确定的SY、宏块高度以及亚像素滤波越界量,确定单个宏块行
对应参考图像区域的最大垂直行数Rl, Rl和W构成单个宏块行对应参考图 像区域大小RA。其中,对于采用按照光栅扫描划分条带组或不划分条带组 的情况,W为PW;对于采用灵活划分条带组的情况,W为RSGW。 步骤1304,确定初始整行载入的宏块行个数w。
本步骤中,可直接确定n-l,或11=2;或者也可以根据R1和宏块高度, 即可载入的宏块行对应参考图像区域的最大垂直行数RLmax二Rl+宏块高度, 之后根据RLmax,确定初始可整行载入的宏块行的个数N,取n^AM乍为初 始整行载入的宏块行个数,其中,"=1, 2,…,N。
通常情况下,初始整行载入的宏块行个数为1,即"取值为1。
此外,由于对第1个宏块行按照MVy的最大值区间范围计算得到的参 考图像区域即参考图像区域=2* (SY+宏块高度+亚像素滤波越界量),超出 了图像的上边界,因此实际可载入的参考图像区域为8丫+2*宏块高度+亚 像素滤波越界量。对于片内存储区来说,可同时存储的最大垂直行数RLmax 为2* (SY+宏块高度+亚像素滤波越界量)。因此,只载入第1个宏块行 对应的参考图像数据后,还有剩余空间,若同时载入第2个宏块行对应的参 考图像数据,则所增加的图像区域垂直行数为宏块高度,仍然没有超过能够 载入的最大垂直行数RLmax,因此可同时载入第1、第2个宏块行对应的参 考数据,此时w取值为2。
实际应用中,若空间允许,也可以载入更多宏块行对应的参考数据," 相应的,可取大于2的数。
步骤1305,预先以整行载入形式载入当前图像区域单元中第1至第"个 宏块行对应的参考图像区域。
本实施例中,可将整行载入的第1至第"个宏块行对应的参考图像区域 载入RBL中。
为了提高载入速度,本实施例中,可采用DMA方式载入数据。 步骤1306,对前n-l个宏块行进行解码运动补偿处理。 本实施例中,若步骤1304中的n取值为1,则本步骤中,不进行宏块行 运动补偿处理。若步骤1304中的"取值为2,则本步骤中,先对第1个宏块 行进行解码运动补偿处理。若步骤1304中的"取值为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,对第"个宏块行进行解码运动补偿处理,若第〃个宏块行不 是当前图像区域单元的最后一个宏块行,则放弃片内存储区中存储的参考图 像区域内上方与第"个宏块行对应参考图像区域不重合的参考图像行,即不 用于第"个宏块行的参考图像行,整行载入第"+ 1个宏块行对应参考图像区 域与第"个宏块行对应参考图像区域不重合的参考图像行,即第"+ 1个宏块 行对应参考图像区域中下方的新增参考图像行。若第"个宏块行是当前图像 区域单元的最后 一 个宏块行,则结束该图像区域单元的数据载入流程。
其中,对第"个宏块行进行解码运动补偿处理时,如果该宏块行中的某 个宏块所需的参考数据不在RBL中,包括不在主参考帧中或者虽然在主参考帧中但不在按整行已载入图像区域中,则另外以零星方式载入这部分参考
数据,并可将这部分数据载入所设置的RBB中。具体实现过程可与步骤1306 中的描述一致。
本步骤中,为了使编码运动估计处理连续,在对第"+ l个宏块行进行解 码运动补偿处理之前,若"+ l小于等于宏块行总数,则事先整行栽入第"+ l 个宏块行对应参考图像区域中下方的新增参考图像行。同时为了使得存储区 域占用量最少,在对第"个宏块行进行解码运动补偿处理的同时,载入第 w +1个宏块行对应参考图像区域中下方的新增参考图像行,并相应地放弃片 内存储区中存储的参考图像区域中上方不用于第"个宏块行的参考图像行, 使得存储区中保存的参考数据为当前处理的宏块行和欲处理的宏块行对应 的参考数据。其中,放弃过程可以是删除过程,也可以是覆盖过程等。
一般情况下,第"+ 1个宏块行对应参考图像区域中下方的新增参考图像 行的高度为宏块高度,并且所放弃的片内存储区中存储的参考图像区域中上 方不用于第"个宏块行的参考图像行的高度也为宏块高度。但当第"+ l个宏 块行比较接近或等于宏块行总数时,按照MVy的最大值区间范围计算的参 考图像区域(即2* ( SY+宏块高度+亚像素滤波越界量))会超出图像或条带 组下边界,则此时新增参考图像行高度小于宏块高度,甚至为0。因此,当 新增参考图像行高度为0时,片内存储区中可不再放弃已存储的参考数据。 另外,对于第1至第2等前几个宏块行,由于按照MVy的最大值区间范围 计算的参考图像区域会超出图像或条带组上边界,因此实际载入的参考图像
数据会小于按照MVy的最大值区间范围计算的参考图像区域数据,因此所 放弃的片内存储区中存储的参考图像区域中上方不用于第^个宏块行的参 考图像行的高度也会小于宏块高度,甚至为0。
当然,若空间允许,也可以在对第"个宏块行进行编码运动估计处理的 同时,载入更多宏块行对应的参考数据,此时本步骤中的"+ l相应变为 w + m , m > 1 。
对当前图像区域单元(待解码P图像或条带组)的最后 一个宏块行进行 解码运动补偿处理完后,该图像区域单元(待编码P图像或条带组)的参考 数据载入流程结束,否则执行步骤1307。
步骤1308,对第"个宏块行解码运动补偿处理完后,"取值为"+ l,并返回执行步骤1307。
上述流程中,步骤1301和步骤1302至步骤1303没有绝对的先后顺序。 即步骤1301也可以在步骤1303之后执行。
此外,上述流程中的步骤1302和步骤1303可合并为根据片内存储区 可供分配给参考数据的緩存最大容量RBmax,确定能够整行载入的宏块行 对应的参考图像区域最大垂直行数RLmax。
具体实现时,可以为预先根据RBmax,预留出至少能存储两个宏块 运动补偿所需要参考数据的容量,将剩余容量记为RB1。
利用关系式RMmax = PW (或RSGWmax ) ARLmax承每像素存储量,令 RB1 = PW (或RSGWmax )木RLmax申每像素存储量,计算得到RLmax的值; 之后根据实际需要取RLmax的值。其中,PW为图像水平宽度(Picture Width) , RSGWmax为条带组对应参考图像区域的水平最大宽度。
进一步地,还可以根据关系式RLmax=MVy的区间范围+两倍的宏块高 度+两倍的亚像素滤波越界量,计算出MVy的区间范围;根据所计算的MVy 的区间范围-2+SY,计算出数据载入时所依据的SY的取值。
具体实现时,也可将片内存储区中可供分配的参考数据緩存区划分为两 部分,如将预留出的至少能存储两个宏块运动补偿所需要参考数据的容量区 域划分为RBB,而将存储RB1的容量区域划分为RBL。
前述对整行载入中遗漏的宏块对应参考数据进行零星载入可以为将整 行载入中遗漏的宏块对应参考数据先载入到片上存储器,供宏块运动补偿处 理时直接从片上存储器读入;或者也可以为宏块运动补偿处理时直接将整 行载入中遗漏的宏块对应参考数据从片外存储器中读入寄存器使用。
以上对本发明实施例四中视频解码运动补偿参考数据载入的方法进行 了详细描述,下面再对本发明实施例四中视频解码运动补偿参考数据载入的 装置进4亍if细4苗述。
参见图15,图15为本发明实施例四中视频解码运动补偿参考数据载入 的装置结构示意图。如图15中的实线部分所示,该装置包括片外存储器、 片内存储器和解码运动补偿数据载入单元。
其中,片外存储器,用于存储参考图像数据。
片内存储器,用于緩存整行载入的参考图像数据和零星载入的参考图像数据。其中,整行緩存区緩存的数据至少大于一个宏块行对应的参考数据。 解码运动补偿数据载入单元,用于从片外存储器中读取预先确定的初始 整行载入的前"个宏块行对应参考图像区域的数据写入片内存储器中,对前 l个宏块行进行解码运动补偿处理;在对第"个宏块行进行解码运动补偿 处理时,若第"个宏块行不是当前图像区域单元的最后一个宏块行,则放弃 片内存储器所存储的参考图像区域内上方与第"个宏块行对应参考图像区 域不重合的参考图像行,从片外存储器中读取第"个宏块行对应参考图像区 域与第"+ 1个宏块行对应参考图像区域不重合的参考图像行写入片内存储 器中,而后,W取值为"+ l,并返回执行对第"个宏块行进行解码运动补偿 处理的操作。
具体实现时,数据载入执行单元可有多种实现形式,其中一种实现形式
可如图15中的虚线部分所示,包括解码运动补偿处理模块、控制模块和 参考数据载入执行模块。
解码运动补偿处理模块,用于从片内存储器中读取当前宏块行对应的参 考数据,对当前宏块行进行解码运动补偿处理。
控制模块,用于控制解码运动补偿处理模块对第1个宏块行进行解码运 动补偿处理前,向参考数据载入执行模块发送整行载入第l至第〃个宏块行
对应参考图像区域的数据的控制指示;控制解码运动补偿处理模块对第A , nSA:<M^m,个宏块行进行解码运动补偿处理时,向参考数据载入执行模块 发送整行载入第& + 1个宏块行对应参考图像区域中下方的新增参考图像行 数据的控制指示。其中,Num为当前图像区域单元的宏块行总数。
参考数据载入执行模块,用于根据控制模块载入第l至第"个宏块行对 应参考图像区域的数据的控制指示,从片外存储器读取第l至第"个宏块行 对应参考图像区域的数据写入片内存储器中;根据控制模块载入第A +1个宏 块行对应参考图像区域中下方的新增参考图像行数据的控制指示,从片外存 储器读取第A +1个宏块行对应参考图像区域中下方的新增参考图像行数据 写入片内存储器中,并相应覆盖片内存储器中存储的参考图像区域中上方不 用于第个宏块行的参考图像行数据。
此外,在片内存储器中不存在宏块行中某宏块所需的参考数据时,解码 运动补偿处理模块可进一步地,向控制模块发送该宏块参考数据遗漏的指示。
控制模块可进一步地,根据来自解码运动补偿处理模块的宏块参考数据 遗漏指示,向参考数据载入执行模块发送零星载入该宏块参考数据的指示。
参考数据载入执行模块可进一 步地,根据来自控制模块的零星载入宏块 参考数据的指示,从片外存储器读取该宏块对应参考图像区域的数据写入片 内存储器中,或写入到执行运动补偿处理的相关寄存器中。
其中,A、 w均为大于O的整数。较佳地,"为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为[-6,+16)时,RLmax=16+16+16+16=64。
之后,根据关系式RMmax = *尺乙0^乂*每像素存储量,计算得到 RMmax = PW^RLmax氺每像素存储量=320*64* 1.5=30720字节。
步骤1603,根据所计算的RMmax和片内存储区可供分配给参考数据的 緩存最大容量RBmax,确定能够整行载入的宏块行对应的参考图像区域最 大垂直行数RLmax。
假设本实施例中,片内存储区可供分配给参考数据缓存最大容量 RBmax为48k字节,该容量大于RMmax ( 30720 byte ),在当前帧MVy满 足[-16, +15.5]的情况下,可仅采用整行载入,如果部分宏块MVy实际超出 [-16,+15.5],则超出部分可采用零星载入。因此将所估计的[-16,+15.5]作为 运动补偿时,MVy的区间范围,此时,SY=16,并且能够整行栽入的宏块行 对应的参考图像区域最大垂直行数RLmax即为步骤1602中计算得到的 RJLmax值。
具体实现时,可将片内存储区中可供分配的参考数据緩存区按一定规则 划分为两部分,如可划分RBL- 30720字节(对应于64个参考图像行,SY =16),并将剩余部分作为RBB。
其中,可载入的宏块行对应参考图像区域大小RA由RLmax和PW构成。
本实施例中,若将图像按照光栅扫描划分成1个或1个以上的多个条带 組,则按照从上到下、从左到右的顺序,逐个条带组、逐个条带进行如下解 码运动补偿处理。
步骤1604,预先以整行载入形式载入第1、第2个宏块行对应的参考图 像区域。
本实施例中,将整行载入的第1、第2个宏块行对应的参考图像区域载 入RBL中。其中,宏块行的水平宽度为整个图像的水平宽度,即为240,宏 块行对应的参考图像区域的水平宽度也为整个图像的水平宽度,即也为240。 又由于宏块大小为16*16,因此宏块行总数为15。
本实施例中的参考图像数据载入也如图7所示。对于第l个320*16的宏块行,由于宏块行上方的SY与亚像素滤波越界量超出了图像的上边界,
因此对第一个宏块行需要载入的参考图像区域为参考图像最上方的320* (16+SY+2),即320*32的图像区域的数据。由于本实施例中,RLmax的 值为64,因此还可以同时将第2个宏块行对应参考图像区域中下方的新增 参考图像行载入,即再载入320*16的图像区域的数据。当然,也可一次载 入64个图像4亍。
步骤1605,对第1个宏块行进行解码运动补偿处理,处理完后,A取值为2。
其中,对宏块行进行运动补偿处理时,如果该宏块行中的某个宏块所需 的参考数据不在RBL中,则另外以零星方式将这部分参考数据载入RBB中。 对宏块行进行运动补偿处理的具体过程可以与图13所示步骤1306中的描述 一致。
步骤1606,启动对第A个宏块行进行解码运动补偿处理,同时判断第々 个宏块行是否为P图像的最后一个宏块行,如果不是,则执行步骤1607; 否则,解码运动补偿处理完后,结束当前解码图像的数据载入流程。
本步骤中,当A:〈15时,在对第A个宏块行进行解码运动补偿处理的同 时,执行步骤1607;当^ = 15时,由于已达到图像的最后一个宏块行,因此 无需继续载入和放弃,当然此时也可以释放不用于第15个宏块行的参考数 据对应存储区用作其它用途。在对最后一个宏块行解码运动补偿处理完后, 结束本流程。
其中,对第A个宏块行进行解码运动补偿处理时,如果该宏块行中的某 个宏块所需的参考数据不在RBL中,则另外以零星方式将这部分参考数据, 载入RBB中。具体实现过程可与步骤1605中的描述一致。
步骤1607,放弃片内存储区中存储的参考图像区域中上方不用于第A个 宏块行的参考图像行,整行载入第々+1个宏块行对应参考图像区域中下方的 新增参考图像行。
其中,片内存储区中存储的参考图像区域中上方不用于第^个宏块行的 参考图像行为片内存储区中存储的参考图像区域内上方与第w个宏块行对 应参考图像区域不重合的参考图像行;第A + l个宏块行对应参考图像区域中 下方的新增参考图像行为第"个宏块行对应参考图像区域与第"+ 1个宏块行对应参考图像区域不重合的新增参考图像行。
本步骤在时间上和步骤1606中的运动补偿处理过程基本上是同时进行的。
如图7所示,当A:^2时,对第2个宏块行进行运动补偿时,载入第3 个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区 域下方的320*16的图像区域数据。此时片内存储区中存储的参考图像区域 中上方不用于第A个宏块行的参考图像行的行数为0,因此实际放弃的参考 数据为0。
当& = 3时,对第3个宏块行进行运动补偿时,载入第4个宏块行对应 参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的 320*16的图像区域数据。此时片内存储区中存储的参考图像区域中上方不 用于第4个宏块行的参考图像行的行数为16,因此实际放弃的参考数据为 320*16的图像区域数据。同理,对于中间的宏块行,情况与/: = 3时类似。
当比较靠近最后一个宏块行时,需载入的第A + l个宏块行对应参考图 像区域中下方的新增参考图像行有可能小于宏块高度,甚至为0。如图18 所示,当^ = 14时,对第14个宏块行进行运动估计时,载入第15个宏块行 对应参考图像区域中下方的新增参考图像行,此时,由于对第15个宏块行 按照最大垂直搜索范围计算得到的参考图像区域已超出图像的下边界16 行,因此需载入的新增参考图像行数为0,由于无需新增数据,增大存储容 量,因此,内存储区中存储的参考图像区域中上方不用于第14个宏块行的 16个参考图像行可以放弃,也可以不放弃。
步骤1608,对第A个宏块行解码运动补偿处理完后,A取值为A + 1,并 返回执行步骤1606。
本实施例中,为避免零星载入造成运动补偿等处理等待,可以按多宏块 /子宏块流水方式,预先零星载入一个或多个宏块各子宏块对应的不在RBL 部分的参考数据,运动补偿处理则落后一个或多个宏块,如RBB中已零星 载入k-1、 k、 1(+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号,每个条带组均包括 "0个宏块,条带组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-O, SGR-34(水平最大运 动矢量+亚像素内插所需的扩边2),故参考数据的水平宽度为640 + 34 = 674。(同理条带组3的水平宽度也为674;条带组2和条带组4的参考数 据左右边界,SGL-34, SGR-O,故参考数据的水平宽度为640 + 34 = 674。 条带组5的参考数据左右边界,SGL = 0, SGR-O,故参考数据的水平宽度 为1280。)
由于垂直方向搜索范围取[-3 2, +31.75 ],因此MVy的区间范围为64 。 根据上述垂直运动矢量MVy值的最大值,即MVy的区间范围,以及 关系式RLmax=MVy的区间范围+两倍的宏块高度+两倍的亚像素滤波越界 量,计算欲存储的参考图像最大垂直行数111^1&乂=64+16+ 16+4=100。之后,根据关系式参考数据最大存储容量RMmax = RSGW+RLmax丰每 像素存储量,其中RSGW为条带组对应参考图像区域的水平宽度,对于条 带组1为674,因此计算出RMmax-674"00n.5-101k字节。
其中,可载入的宏块行对应参考图像区域大小RA由RLmax和RSGW构成。
步骤1703,根据所计算的RMmax和片内存储区可供分配给参考数据的 緩存最大容量RBmax,确定能够整行存储的宏块行对应的参考图像区域最 大垂直4亍婆t 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个宏块行对应的参考 图像区域,6取值为1。
本实施例中,将整行载入的第1个宏块行对应的参考图像区域载入RBL 中。其中,宏块行的水平宽度为条带组1的水平宽度,即为640,宏块行对 应的参考图像区域的水平宽度为条带组1对应的参考图像区域的水平宽度, 即为674。并且条带组1的宏块行总数为18。
本实施例中的参考图像数据载入如图19所示。对于第l个640*16的宏 块行,由于宏块行上方的SY与亚像素滤波越界量超出了图像的上边界,因 此对第一个宏块行需要载入的参考图像区域为参考图像最上方的674* (16+SY+2 ),即674*50的图4象区域的数据。
步骤1705,启动对第/t个宏块行进行解码运动补偿处理,同时判断第A个宏块行是否为当前条带组的最后一个宏块行,如果是,则解码运动补偿处
理完后,执行步骤1706;否则,执行步骤1707。
本实施例中,当/^<18时,在对第/t个宏块4亍进^"解码运动补偿处理的 同时,执行步骤1707;当& = 18时,由于已达到条带组的最后一个宏块行, 因此无需载入和放弃,或者也可以选择放弃不用于第18个宏块行的参考数 据。在对最后一个宏块行解码运动补偿处理完后,执行步骤1706。
其中,对第々个宏块行进行运动补偿处理时,如果该宏块行中的某个宏 块所需的参考数据不在RBL中,则另外以零星方式将这部分参考数据载入 RBB中。其中,非主参考图像部分均需要零星载入。
其中,对宏块行进行运动补偿处理的具体过程可以与图13所示步骤 1306中的描述一致。
步骤1706,判断当前条带组是否为最后一个条带组,如果是,则结束 本流程;否则,开始下一个条带组,并返回执行步骤1701。
步骤1707,放弃片内存储区中存储的参考图像区域中上方不用于第A个 宏块行的参考图像行,整行载入第& +1个宏块行对应参考图像区域中下方的 新增参考图像行。
其中,片内存储区中存储的参考图像区域中上方不用于第&个宏块行的 参考图像行,即片内存储区中存储的参考图像区域内上方与第"个宏块行对 应参考图像区域不重合的参考图像行;第^ + l个宏块行对应参考图像区域中 下方的新增参考图像行,即第"+ l个宏块行对应参考图像区域与第"个宏块
行对应参考图像区域不重合的参考图像行。
本步骤在时间上和步骤1706中的运动补偿处理过程基本上是同时进行的。
如图19所示,当^ = 1时,对第1个宏块行进行运动补偿时,载入第2 个宏块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区 域下方的674*16的图像区域数据。由于此时片内存储区中存储的参考图像 区域中上方不用于第A个宏块行的参考图像行的行数为0,因此实际放弃的 参考数据为0。当^ = 2时,对第2个宏块行进行运动补偿时,载入第3个宏 块行对应参考图像区域中下方的新增参考图像行,即已载入参考图像区域下 方的674*16的图像区域数据。由于此时片内存储区中存储的参考图像区域中上方不用于第A个宏块行的参考图像行的行数为0,因此实际放弃的参考
数据为0。
当& = 3时,对第3个宏块行进行运动补偿时,载入第4个宏块行对应 参考图像区域中下方的新增参考图像行,即已载入参考图像区域下方的 674*16的图像区域数据。此时片内存储区中存储的参考图像区域中上方不 用于第4个宏块行的参考图像行的行数为16,因此实际放弃的参考数据为 674*16的图像区域数据。同理,对于中间的宏块行,情况与& = 3时类似。
本实施例中,因为条带组1对应的参考图像区域下方离整个图像的下边 界还很远,因此当A比较靠近最后一个宏块行时,该宏块行所对应参考图像 区域不会超出图像的下边界,因此载入和放弃过程同上述。如图19所示, 当& = 17时,对第17个宏块行进行运动估计时,载入第18个宏块行对应参 考图像区域中下方的新增参考图像行为16,并相应放弃片内存储区中存储 的参考图像区域中上方不用于第17个宏块行的16个参考图像行。
步骤1708,对第A个宏块行解码运动补偿处理完后,A取值为/t + I,并 返回执行步骤1705。
本实施例中,整行载入同样可采用DMA方式。
此外,如果两个条带组上下相邻,则上一个条带组最后一个宏块行运动 补偿完成后,片内存储区存留的参考图像数据可作为当前待运动补偿条带组 参考数据的载入数据的一部分或全部。本实施例中,为了相邻条带组垂直方 向的参考数据重用,条带组的解码顺序最好按从上到下的顺序进行,即按条 带组l、 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或运动补偿插值单元的参与,从而消除了运动补偿插值 计算、重建的等待,提升了解码性能。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了 进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已, 并非用于限定本发明的保护范围,凡在本发明的精神和原则之内,所作的任 何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1、一种视频编码运动估计参考数据载入的方法,其特征在于,预先确定图像区域单元中单个宏块行对应的参考图像区域大小RA及初始整行载入的宏块行的个数n,该方法包括A、整行载入当前图像区域单元的前n个宏块行对应参考图像区域的数据,对前n-1个宏块行进行编码运动估计处理;B、对第n个宏块行进行编码运动估计处理,若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则放弃所存储的参考图像区域内上方与第n个宏块行对应参考图像区域不重合的参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行;C、n取值为n+1,返回执行步骤B。
2、 如权利要求l所述的方法,其特征在于,所述确定初始整行载入的宏块 行个数"为确定"=1,或2;或者根据RA及宏块高度确定初始可整行载入的 最大宏块行个数N,取"^AM乍为初始整行载入的宏块行个数,其中,"=1,或 2,…,或N。
3、 如权利要求1所述的方法,其特征在于,对于多参考帧预测,步骤A 之前,进一步包括确定主参考图像;则步骤A至步骤C中的所述参考图像为 所述确定的主参考图像。
4、 如权利要求l所述的方法,其特征在于,所述预先确定可载入的图像区 域单元中宏块行对应参考图像区域的大小RA包括根据可分配给运动估计参考数据緩存的片上存储容量RBmax、以及每像素 存储量、图像区域单元对应参考图像区域的水平宽度W,计算得到可存储的图 像区域单元中宏块行对应的参考图像最大垂直行数RLmax,根据所述计算的 RLmax确定编码运动估计垂直搜索范围SY,根据所确定的SY、宏块高度以及 亚像素滤波越界量,确定单个宏块行对应参考图像区域的最大垂直行数R1, Rl 和W构成RA。
5、 如权利要求1至3中任一项的方法,其特征在于,确定RA之前,进一步包括将待编码图像划分成一个以上的条带组;则所述图像区域单元为一个 条带组,所述宏块行为所述条带组所属的同一水平行的所有宏块。
6、 如权利要求5所述的方法,其特征在于,对当前条带组的数据载入结束 后,进一步包括选取下一个待编码条带组作为当前图像区域单元,并确定图 像区域单元中单个宏块行对应的参考图像区域大小RA及初始整行载入的宏块 行的个数w,返回执行步骤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:l+M,计算得到Msg;按照每个条带组的宽度为整数倍宏块宽度,以及每个条带组对应参考图像 的宽度RSGW小于等于RSGWmax的原则,将图像划分成Msg个条带组。
9、 一种视频解码运动补偿参考数据载入的方法,其特征在于,预先确定图 像区域单元中单个宏块行对应的参考图像区域大小RA及初始整行载入的宏块行的个数w,该方法包括A、 整行载入当前图像区域单元前《个宏块行对应参考图像区域的数据,对 前"-1个宏块行进行解码运动补偿处理;B、 对第"个宏块行进行解码运动补偿处理,若第"个宏块行是当前图像区 域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则,放 弃所存储的参考图像区域内上方与第"个宏块行对应参考图像区域不重合的参 考图像行,整行载入第"+ 1个宏块行对应参考图像区域与第"个宏块行对应参 考图像区域不重合的参考图像行;C、 "取值为n + l,返回执行步骤B。
10、 如权利要求9所述的方法,其特征在于,该方法进一步包括对所述 宏块行进行解码运动补偿时,对整行载入中遗漏的宏块对应参考数据进行零星 载入。
11、 如权利要求IO所述的方法,其特征在于,所述对整行载入中遗漏的宏 块对应参考数据进行零星载入为将整行载入中遗漏的宏块对应参考数据先载 入到片上存储器,供宏块运动补偿处理时直接从片上存储器读入;或者为宏块运动补偿处理时直接将整行载入中遗漏的宏块对应参考数据 从片外存储器中读入寄存器使用。
12、 如权利要求9所述的方法,其特征在于,对于多参考帧预测,步骤A 之前,进一步包括确定主参考图像;则步骤A至步骤C中的所述参考图像为所 述确定的主参考图像。
13、 如权利要求12所述的方法,其特征在于,所述确定主参考图像为 默认已重建的前一帧图像为主参考图像;或者为根据前一个紧邻图像对应图像区域单元和/或前一个紧邻图像区域 单元所使用的主参考图像预测得到当前图像的主参考帧;或者为对当前待解码图像区域单元预先熵解码,解析出部分或全部宏块 及子宏块的预测帧标记,进行统计,将标记最多的图像作为主参考图像。
14、 如权利要求9所述的方法,其特征在于,所述预先确定图像区域单元 中单个宏块行对应参考图像区域大小RA包括估计图像区域单元中相对于参考图像所有宏块垂直运动矢量值MVy的分 布范围;根据宏块高度、亚像素滤波越界量及所估计的MVy的区间范围,确定图像 区域单元中宏块行对应的参考图像最大垂直行数RLmax;根据图像区域单元对应参考图像区域的水平宽度W、每像素存储量及所述 确定的RLmax,计算得到对应的参考数据最大存储容量RMmax;根据片内存储区可供分配给参考数据的緩存最大容量及所述计算的 RMmax的大小关系,确定片上参考数据存储区能够以整行方式载入的参考图像 区域最大垂直行数RLmax;根据所确定的RLmax,确定单个宏块行对应参考图像区域的最大垂直行数 Rl, Rl和W构成单个宏块行对应参考图像区域大小RA。
15、 如权利要求14所述的方法,其特征在于,所述估计图像区域单元中相 对于参考图像所有宏块的垂直运动矢量MVy的区间范围包括根据编码器运动估计搜索范围的典型值确定MVy的区间范围;或者,根据前一个紧邻图像区域单元的MVy最大值范围,预测得到当前图像区域单元MVy的区间范围;或者,对当前待解码图像区域单元预先熵解码,解析出部分或全部宏块及子宏块垂直运动矢量,统计得到MVy的区间范围。
16、 如权利要求9至15中任一项所述的方法,其特征在于,若待解码图像 按非光栅扫描划分为多个条带组,则所述图像区域单元为一个条带组,所述宏 块行为所述条带组所属的同一水平行的所有宏块。
17、 如权利要求9至15中任一项所述的方法,其特征在于,所述确定初始 整行载入的宏块行个数"为确定"=1,或2;或者根据RA及宏块高度确定初 始可整行载入的最大宏块行个数N,取"^AM乍为初始整行载入的宏块行个数, 其中,w=l,或2,…,或N。
18、 一种视频编码运动估计参考数据载入的装置,其特征在于,该装置包括片外存储器,用于存储参考图像数据;片内存储器,用于緩存整行载入的参考图像数据;编码运动估计数据载入单元,用于从所述片外存储器中读取预先确定的 初始整行载入的前〃个宏块行对应参考图像区域的数据写入所述片内存储器中,对前"-l个宏块行进行编码运动估计处理;在对第"个宏块行进行编 码运动估计处理时,若第"个宏块行不是当前图像区域单元的最后一个宏块 行,则放弃所述片内存储器所存储的参考图像区域内上方与第"个宏块行对 应参考图像区域不重合的参考图像行,从所述片外存储器中读取第"个宏块 行对应参考图像区域与第n + 1个宏块行对应参考图像区域不重合的参考图 像行写入所述片内存储器中,而后,"取值为"+ l,并返回执行对第w个宏 块行进行编码运动估计处理的操作。
19、 如权利要求18所述的装置,其特征在于,该装置进一步包括条 带组划分单元,用于根据待编码图像运动估计垂直搜索范围SY,计算得到条 带组对应参考图像区域的最大水平宽度RSGWmax,按照每个条带组对应参考 图像的宽度RSGW小于等于RSGWmax的原则,将图像划分成一个以上的条带 組,并将所划分的条带组信息提供给编码运动估计数据载入单元;组划分信息,执行所述编码运动估计数据载入操作。
20、 如权利要求18或19所述的装置,其特征在于,所述编码运动估计 数据载入单元包括编码运动估计处理模块,用于从片内存储器中读取当前宏块行对应的参 考数据,对当前宏块行进行块匹配等运动估计处理;控制模块,用于控制所述编码运动估计处理模块对图像区域单元第1个 宏块行进行编码运动估计处理前,向参考数据载入执行模块发送整行载入前 "个宏块行对应参考图像区域的数据的控制指示;控制所述编码运动估计处 理才莫块对第"M《A<A^m,个宏块行进行编码运动估计处理,并向参考数 据载入执行模块发出整行载入图像区域单元第A +1个宏块行对应参考图像 区域与第k个宏块行对应参考图像区域不重合的参考图像行数据的控制指 示,其中,Num为图像区域单元宏块行总行数;参考数据载入执行模块,根据所述控制模块载入图像区域单元前"个宏 块行对应参考图像区域的数据的控制指示,从所述片外存储器读取前W个宏块行对应参考图像区域的数据写入所述片内存储器中;根据所述控制模块载入图像区域单元第A + l个宏块行对应参考图像区域与第k个宏块行对应参 考图像区域不重合的中下方的新增参考图像行数据的控制指示,从所述片外 存储器读取第A + l个宏块行对应参考图像区域与第k个宏块行对应参考图 像区域不重合的参考图像行数据写入所述片内存储器中,相应覆盖所述片内存储器中存储的参考图像区域中内上方与第A个宏块行的对应参考图像区 域不重合的参考图像数据。
21、 一种并行视频编码运动估计装置,其特征在于,该装置包括 片外存储器,用于存储参考图像数据;条带组划分单元,用于将图像数据划分为1个或1个以上的条带组,并 输出所划分的条带组信息;条带组指配单元,用于获取划分的条带组信息,指配所划分的条带组; 一个以上的编码运动估计器,其中,每个编码运动估计器包括 片内存储器,用于緩存整行载入的参考图像数据; 编码运动估计数据载入单元,用于根据条带组指配单元提供的条带组指前w个宏块行对应参考图像区域的数据写入所述片内存储器中,对前"-l个 宏块行进行编码运动估计处理;在对所处理条带组第"个宏块行进行编码运 动估计处理时,若第"个宏块行不是当前条带组的最后一个宏块行,则放弃 所述片内存储器中所存储的参考图像区域内上方与第"个宏块行对应参考 图像区域不重合的参考图像行,从所述片外存储器中读取第"+ l个宏块行对 应参考图像区域与第"个宏块行对应参考图像区域不重合的参考图像行写 入所述片内存储器中,而后,"取值为"+ 1,并返回执行对第"个宏块行进 行编码运动估计处理的操作。
22、 如权利要求21所述的装置,其特征在于,所述编码运动估计数据 载入单元包括的参考数据,对当前宏块行进行运动估计处理;控制模块,用于根据所述条带组指配单元提供的条带组指配信息,控制 所述编码运动估计处理模块对所处理条带组第1个宏块行进行编码运动估 计处理前,向参考数据载入执行模块发送整行载入当前条带组中前w个宏块 行对应参考图像区域的数据的控制指示;控制所述编码运动估计处理模块对 所处理条带组中第A, "SA<M^,个宏块行进行编码运动估计处理时,向 所述参考数据载入执行模块发送整行载入当前条带组中第A + l个宏块行对 应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数 据的控制指示,其中,Num为条带组中的宏块行总数;参考数据载入执行模块,用于根据所述控制模块载入当前条带组中第1 至第"个宏块行对应参考图像区域的数据的控制指示,从所述片外存储器中 读取当前条带组中前"个宏块行对应参考图像区域的数据写入所述片内存 储器中;根据所述控制模块载入当前条带组中第A +1个宏块行对应参考图像 区域与第k个宏块行对应参考图像区域不重合的参考图像行数据的控制指 示,从所述片外存储器中读取当前条带组中第A +1个宏块行对应参考图像区 域与第k个宏块行对应参考图像区域不重合的参考图像行数据写入所述片 内存储器中,相应覆盖所述片内存储器中存储的参考图像区域内最上方与第 A个宏块行的对应参考图像区域不重合的参考图像数据。
23、如权利要求22所述的装置,其特征在于,所述编码运动估计器进 一步包括本地片外緩存器,用于緩存预先从所述片外存储器中或其它编码 运动估计器中的片外緩存器中读取的编码运动估计器所处理条带组的参考 图像区域数据;所述控制模块进一步地,根据所述条带组指配单元提供的条带组指配信 息,向所述参考数据载入执行模块发送将自身所在运动估计处理器所处理的 条带组对应参考图像数据载入所述本地片外緩存器中的控制指示;所述参考数据栽入执行模块进一步地,根据所述控制模块的所述控制指 示,将自身所在运动估计处理器所处理的条带组对应的参考图像数据载入所述本地片外緩存器中,之后从所述本地片外緩存器中执行所述载入操作。
24、 如权利要求21至23中任一项中所述的装置,其特征在于,该装置 进一步包括子条带组划分单元,用于根据所述条带组划分单元提供的条带 组信息,将条带组划分为1个或1个以上的子条带组,将所划分的子条带组 信息提供出去;所述条带组指配单元获取的条带组信息为划分的子条带组信息,并对所 划分的子条带组执行所述指配及信息提供操作。
25、 一种视频解码运动补偿参考数据载入的装置,其特征在于,该装置包括片外存储器,用于存储参考图像数据;片内存储器,用于緩存整行载入的参考图像数据;解码运动补偿数据载入单元,用于从所述片外存储器中读取预先确定的 初始整行载入的前"个宏块行对应参考图像区域的数据写入所述片内存储 器中,对前"-l个宏块行进行解码运动补偿处理;在对第"个宏块行进行解 码运动补偿处理时,若第"个宏块行不是当前图像区域单元的最后一个宏块 行,则放弃所述片内存储器所存储的参考图像区域内上方与第"个宏块行对 应参考图像区域不重合的参考图像行,从所述片外存储器中读取第"个宏块行对应参考图像区域与第"+ l个宏块行对应参考图像区域不重合的参考图 像行写入所述片内存储器中,而后,"取值为"+ l,并返回执行对第"个宏 块行进行解码运动补偿处理的操作。
26、 如权利要求25所述的装置,其特征在于,所述解码运动补偿数据 载入单元包括解码运动补偿处理模块,用于从所述片内存储器中读取当前宏块行对应 的参考数据,对当前宏块行进行解码运动补偿处理;控制模块,用于控制解码运动补偿处理模块对图像区域单元第1个宏块 行进行解码运动补偿处理前,向参考数据载入执行模块发送整行载入图像区域单元前"个宏块行对应参考图像区域的数据的控制指示;控制解码运动补偿处理模块对图像区域单元第A: , "S/t<A^n,个宏块行进行解码运动补偿处理时,向参考数据载入执行模块发送整行载入图像区域单元第A + l个宏块 行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据的控制指示,其中,Num为当前图像区域单元中的宏块行总数;参考数据载入执行模块,用于根据所述控制模块载入前"个宏块行对应 参考图像区域的数据的控制指示,从所述片外存储器读取前"个宏块行对应 参考图像区域的数据写入所述片内存储器中;根据所述控制模块载入第A + l 个宏块行对应参考图像区域与第k个宏块行对应参考图像区域不重合的参 考图像行数据的控制指示,从所述片外存储器读取第A + l个宏块行对应参考 图像区域与第k个宏块行对应参考图像区域不重合的参考图像行数据写入 所述片内存储器中,相应覆盖所述片内存储器中存储的参考图像区域内上方 与第A个宏块行的对应参考图像区域不重合的参考图像行数据。
27、如权利要求25所述的装置,其特征在于,所述解码运动补偿处理 模块进一步地,在所述片内存储器中不存在宏块行中某宏块所需的参考数据 时,向所述控制模块发送该宏块参考数据遗漏的指示;所述控制模块进一步地,根据来自所述解码运动补偿处理单元的宏块参 考数据遗漏指示,向所述参考数据载入执行模块发送零星载入该宏块参考数 据的指示;所述参考数据载入执行模块进一步地,根据来自所述控制模块的零星载 入宏块参考数据的指示,从所述片外存储器读取该宏块对应参考图像区域的 数据写入所述片内存储器中,或写入到执行运动补偿处理的相关寄存器中。
全文摘要
本发明公开了一种视频解码运动补偿参考数据载入的方法,包括A.整行载入前n个宏块行对应参考图像区域的数据,对前n-1个宏块行进行解码运动补偿处理;B.对第n个宏块行进行解码运动补偿处理,若第n个宏块行是当前图像区域单元的最后一个宏块行,则结束该图像区域单元的数据载入流程;否则放弃片内存储区中存储的参考图像区域内上方与第n个宏块行的对应参考图像区域不重合参考图像行,整行载入第n+1个宏块行对应参考图像区域与第n个宏块行对应参考图像区域不重合的参考图像行;n取值n+1,返回执行步骤B。本发明还公开了一种视频编码运动估计参考数据载入方法及视频编解码参考数据载入装置。能够充分实现相邻宏块间的参考数据重用。
文档编号H04N7/26GK101309405SQ200710102090
公开日2008年11月19日 申请日期2007年5月14日 优先权日2007年5月14日
发明者孟新建 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1