一种视频编解码过程中宏块预取的方法

文档序号:7849987阅读:119来源:国知局
专利名称:一种视频编解码过程中宏块预取的方法
技术领域
本发明涉及一种视频数据编解码的方法,特别是一种视频编解码过程中宏块预取的方法。
背景技术
目前所采用的视频编解码的算法,如H.264编解码将图像数据划分为若干宏块(macro block)。并且图像的细节部分中的每个宏块将进一步细分为若干个块(block)。H.264编解码流程包括运动估计(motion estimation,ME)、运动补偿(motion compensation,MC)、帧内预测、变换、量化、反变换、反量化、熵编码等处理过程,而在进行这些处理时,会以宏块为单元,按宏块内部的各个块顺序处理。一般系统内存缓冲大小为32WORDS,即64个字,相当于一个8×8的块的大小。因而在对宏块操作时,系统内存不足以将宏块所有数据地址进行预取。另外,在宏块内部,数据是以行列方式顺序存储,因此对于一个块而言,其地址是不连续的。目前进行宏块预取的方法主要是,按宏块的行列方式顺序读写其中一个块的数据,结束后,再按同样的方法读写其它块的数据,直至完成该宏块内所有的块。由于块地址的不连续,且受到系统缓冲区大小的限制,缓冲区内不能存储一个块的所有数据,因此这种方法不可避免的存在读写的缓冲命中失误(cache miss)的问题。而这种缓冲命中失误的存在一方面将大大降低视频数据编解码的速度,另一方面也将增加因内存访问而造成的系统性能不可知的缺陷。

发明内容
本发明的目的是针对现有技术的不足,提供一种视频数据编解码速度快、缓存命中率高的视频编解码过程中宏块预取的方法。
为了解决上述技术问题,本发明所采取的技术方案是一种视频编解码过程中宏块预取的方法,包括如下步骤
步骤1、获得一个宏块;步骤2、按块的行列顺序,预取该宏块内的一个块,进行缓存;步骤3、将所缓存的块用于视频编解码处理;步骤4、按照步骤2和步骤3依次处理完该宏块内的所有块;步骤5、按照步骤1~步骤4,依次处理完所有需处理的宏块。
所述步骤1具体可以为获得一个宏块的基地址及该宏块内块的类型。
所述步骤2具体可以为按照宏块的基地址、块的类型以及该块在宏块内的位置,从而确定该块的实际地址,并缓存块数据。
可以采用查表法确定块的实际地址。
所述步骤1具体可以为确定一个宏块的地址范围及该宏块内块的类型。
所述步骤2具体可以为按照块的类型以及该块在宏块内的位置,确定该块的实际地址,从而缓存块数据。
所述宏块可以为16×16像素,所述块可以为8×8,8×4,4×8或4×4像素。
在上述技术方案中,本发明由于按照宏块内的块的行列方式获得块地址,以缓存块数据,从而在进行视频数据编解码处理过程中,可以按照直接在缓冲区内获得块数据,不存在额外的缓冲命中失效的问题,从而使系统的内存访问时间可以有效预计,减少了因内存访问而造成的系统性能不可知的缺陷。另外,在预知块的类型的情况下,只要得到了宏块的基地址,就可以通过查表或计算的方式,确定宏块内每个块的地址范围,即可保证读写数据的缓存地址的有效性。其处理过程简单、但可大大提高视频数据编解码的速度。
具体实施例方式
下面将结合具体实施例对本发明作进一步详细说明。
本发明提供一种视频编解码过程中宏块预取的方法,其步骤如下步骤1、获得一个宏块;步骤2、按块的行列顺序,预取该宏块内的一个块,进行缓存;步骤3、将所缓存的块用于视频编解码处理;
步骤4、按照步骤2和步骤3依次处理完该宏块内的所有块;步骤5、按照步骤1~步骤4,依次处理完所有需处理的宏块。
由于目前系统缓冲区的大小一般为64个字节,正好是一个8×8的块。这就使系统缓冲区每次缓存一个小于或等于8×8像素的块成为可能。因此,从上述步骤可以看出,本发明的实质是改变现有技术中对按宏块行列顺序预取的办法,而采用按宏块内部的块的行列顺序预取的方法,使缓冲地址为有效地址,以此避免了现有技术中存在的缓冲命中失误的问题,提高了编解码的速度,同时也保证了系统性能的稳定性和可知性。
下面将给出本发明的两种具体实施例。本发明包括但不限于这两种实施例。
实施例1一种视频编解码过程中宏块预取的方法,其步骤如下步骤1),获得一个宏块。具体为获得一个宏块的基地址及该宏块内块的类型。
视频数据编解码过程中,块的划分包括4×4,4×8,8×4到16×16几种,例如在H.264算法的运动估计时,一般要将所有的块划分的模式同时用于计算,在比较运动估计的最后的残差结果来决定使用哪一种block划分。因此采用本发明所提供的方法,可以有效提高宏块内部的访问命中率。
在YUV420模式下,一个宏块(macro block)大小为16×16像素,包括4个亮度(Y)分量的块,和各1个UV分量的块。其中每个块是8×8像素。
步骤2),按块的行列顺序,预取该宏块内的一个块,进行缓存。具体可以为按照宏块的基地址、块的类型以及该块在宏块内的位置,从而确定该块的实际地址,以将对应的块数据缓存入系统的缓冲区内。
这里我们可以采用查表法确定块的实际地址。
如预先获知块的类型为8×8像素,则首先建立地址数据表,用于存储各个块的偏移地址。
然后在缓存块时,只需以宏块基地址以及从地址数据表内查找得到的偏移地址之和作为块的实际地址,并按此实际地址,将块数据缓存入系统缓冲区。
步骤3、将所缓存的块用于视频编解码处理。所述的视频编解码处理过程包括H.264算法中,进行运动估计、运动补偿、变换、量化等处理过程。
步骤4、按照步骤二和步骤三依次处理完该宏块内的所有块。
步骤5、按照步骤1~步骤4,依次处理完所有需处理的宏块。
实施例2本实施例提供的一种视频编解码过程中宏块预取的方法,包括如下步骤步骤1、获得一个宏块;具体为确定一个宏块的地址范围及该宏块内块的类型。
步骤2、按块的行列顺序,预取该宏块内的一个块,进行缓存;具体为按照块的类型以及该块在宏块内的位置,确定该块的实际地址,从而缓存块数据。这里可以根据块的类型以及该块在宏块内的位置,利用软件建立对块的数据地址索引,从而对指定地址的块数据进行预取缓存。
步骤3、将所缓存的块用于视频编解码处理;步骤4、按照步骤2和步骤3依次处理完该宏块内的所有块;步骤5、按照步骤1~步骤4,依次处理完所有需处理的宏块。
本发明不仅适用于8×8的块,同样也使用于小于8×8像素的块,如8×4,4×8或4×4像素的块。
权利要求
1.一种视频编解码过程中宏块预取的方法,包括如下步骤步骤1、获得一个宏块;步骤2、按块的行列顺序,预取该宏块内的一个块,进行缓存;步骤3、将所缓存的块用于视频编解码处理;步骤4、按照步骤2和步骤3依次处理完该宏块内的所有块;步骤5、按照步骤1~步骤4,依次处理完所有需处理的宏块。
2.如权利要求1所述视频编解码过程中宏块预取的方法,其特征在于所述步骤1具体为获得一个宏块的基地址及该宏块内块的类型。
3.如权利要求2所述视频编解码过程中宏块预取的方法,其特征在于所述步骤2具体为按照宏块的基地址、块的类型以及该块在宏块内的位置,从而确定该块的实际地址,并缓存块数据。
4.如权利要求3所述视频编解码过程中宏块预取的方法,其特征在于采用查表法确定块的实际地址。
5.如权利要求1所述视频编解码过程中宏块预取的方法,其特征在于所述步骤1具体为确定一个宏块的地址范围及该宏块内块的类型。
6.如权利要求5所述视频编解码过程中宏块预取的方法,其特征在于所述步骤2具体为按照块的类型以及该块在宏块内的位置,确定该块的实际地址,从而缓存块数据。
7.如权利要求1、2、3、4、5、6中之一所述视频编解码过程中宏块预取的方法,其特征在于所述宏块为16×16像素,所述块为8×8,8×4,4×8或4×4像素。
全文摘要
本发明公开了一种视频编解码过程中宏块预取的方法,包括步骤1、获得一个宏块;步骤2、按块的行列顺序,预取该宏块内的一个块,进行缓存;步骤3、将所缓存的块用于视频编解码处理;步骤4、按照步骤2和步骤3依次处理完该宏块内的所有块;步骤5、按照步骤1~步骤4,依次处理完所有需处理的宏块。本发明由于改变现有技术中对按宏块行列顺序预取的办法,而采用按宏块内部的块的行列顺序预取的方法,使缓冲地址为有效地址,以此避免了现有技术中存在的缓冲命中失误的问题,提高了编解码的速度,同时也保证了系统性能的稳定性和可知性。
文档编号H04N7/32GK1622626SQ20041010146
公开日2005年6月1日 申请日期2004年12月21日 优先权日2004年12月21日
发明者怀千江, 白峰, 王浩 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1