发明内容
为了克服上述缺陷,本发明的目的在于提供一种能够在小于一帧的缓存空间内对MPEG4图像进行缓存控制的对实时数码视频影流进行缓存控制的方法和装置。
为达到上述目的,本发明采用以下技术方案:一种对实时数码视频影流进行缓存控制的方法,用于MPEG4视频编解码过程中,包括如下步骤:
步骤A,发送实时数码视频影流的视频影流帧中由一个或多个局部相关性区域构成的部分图像区域,至处于接收状态的预定大小的数据存储区;同时,记录该部分图像区域在视频影流帧中的位置;
步骤B,处于接收状态的预定大小的数据存储区与处于输出状态的预定大小的数据存储区执行乒乓操作;
步骤C,处于输出状态的数据存储区中存储的部分图像区域,按照该部分图像区域在视频影流帧中的位置输出。
优选的:在所述的对实时数码视频影流进行缓存控制的方法中,在MPEG4视频编码过程中,所述视频影流帧为视频影流输入帧;在MPEG4视频解码过程中,所述视频影流帧为解压缩输出帧。
优选的:在所述的对实时数码视频影流进行缓存控制的方法中,所述局部相关性区域的划分方法为:将视频影流帧划分为若干个区域,并且每个区域内部的更新顺序可以有更新顺序的反复,而任意两个区域之间没有更新顺序的反复,从而确定这样的区域即为局部相关性区域。
优选的:在所述的对实时数码视频影流进行缓存控制的方法中,在无去块效应作用时,所述局部相关性区域的划分具体为:每帧内每16个像素行划分为一个局部相关性的区域。
优选的:在所述的对实时数码视频影流进行缓存控制的方法中,在视频解码过程中去块效应功能尘效的工作模式下,如去块效应作用区域为块边界两侧正负N个像素行,则该局部相关性的区域划分具体为,对于帧头部分,从每帧帧头开始向下平移N个像素行,作为一个局部相关性区域,从N+1行向下,每16个像素行作为一个局部相关性区域,至帧尾部分,从帧尾向上取32-N个像素行作为一个局部相关性区域,其中N取自然数,且其最大值为8。
优选的:在所述的对实时数码视频影流进行缓存控制的方法中,所述预定大小的数据存储区的物理尺寸至少与一个最大局部相关性区域的大小相等。
优选的:在所述的对实时数码视频影流进行缓存控制的方法中,所述预定大小的数据存储区的物理尺寸与视频影流帧的部分图像区域的大小相等。
一种对实时数码视频影流进行缓存控制的装置,用于MPEG4视频编解码过程中,包括:
两个互为乒乓操作的预定大小的数据存储区,处于接收状态的数据存储区接收完视频影流帧中由一个或多个局部相关性区域构成的部分图像区域后,才可以转为输出状态,处于输出状态的数据存储区发送完视频影流帧中由一个或多个局部相关性区域构成的部分图像区域后,才可以转为输入状态;
一缓存控制模块;
其中,缓存控制模块发送视频影流帧中由一个或多个局部相关性区域构成的部分图像区域至处于接收状态的预定大小数据存储区,并记录该部分图像区域在视频影流帧中的位置;而将处于输出状态的预定大小数据存储区中存储的部分图像区域,按照该部分图像区域在视频影流帧中的位置输出。
优选的:在所述的对实时数码视频影流进行缓存控制的装置中,所述的缓存控制模块包括:地址映射单元、传输控制单元以及输出映射单元,
其中,传输控制单元将视频影流帧中由一个或多个局部相关性区域构成的部分图像区域发送至处于接收状态的数据存储区,控制两个预定大小的数据存储区进行乒乓操作,使处于输出状态的数据存储区将所述部分图像区域输出;
地址映射单元用于记录部分图像区域在视频影流帧中的绝对地址,并通过传输控制单元将该绝对地址发送给输出映射单元;使得处于输出状态的数据存储区输出部分图像区域时,按照该部分图像区域在视频影流帧中的绝对地址输出。
优选的:在所述的对实时数码视频影流进行缓存控制的装置中,所述预定大小的数掘存储区的物理尺寸与视频影流帧的部分图像区域的大小相等。
本发明在通用的MPEG4压缩和解压缩模块***增加“部分图像区域”缓存控制机制,代替现有的帧缓存控制机制,利用缓存控制模块以视频影流帧的部分图像区域为单位向数据存储区数据发送,数据存储区以部分图像区域为单位进行乒乓操作,然后输出;这样只需要两个“部分图像区域”尺寸的缓存空间用于存储传输数码视频影流数据,极大降低了硬件代价,利于将MPEG4压缩、解压缩技术应用于支持较大图像尺寸的移动通信设备。
具体实施方式
本发明的发明构思为:以实时数码视频影流的视频影流帧的部分图像区域为单位,在两个预定大小的数据存储区内进行乒乓操作。所述部分图像区域包括至少一个局部相关性区域。
下面以MPEG4视频解压缩模块输出的输出帧为例解释局部相关性区域划分的方法:MPEG4视频解压缩模块输出的解压缩输出帧在更新顺序上可以分为若干个具有局部相关性的区域,即在每个区域内部,更新顺序可能是前后反复跳跃的,但是在任意两个局部相关性区域之间没有更新顺序的反复。
参照输出帧结构表,在MPEG4中,其帧结构如下表所示:
宏块(1,1) |
宏块(1,2) |
宏块(1,3) |
…… |
宏块(1,N) |
宏块(2,1) |
宏块(2,2) |
宏块(2,3) |
…… |
宏块(2,N) |
宏块(3,1) |
宏块(3,2) |
宏块(3,3) |
…… |
宏块(3,N) |
…… |
宏块(M,1) |
宏块(M,2) |
宏块(M,3) |
…… |
宏块(M,N) |
即,MPEG4在进行图像的编、解码时,通常以16×16像素的宏块(macro block)为单位进行数据处理,解压缩输出帧的图像数据分为若干个宏块(X,Y)。MPEG4视频解压缩是以宏块为单位输出的,其输出顺序为:(1,1),(1,2),(1,3)…(1,N),(2,1)…(M,1)…(M,N),从宏块(1,1)至宏块(1,N)称之为一个宏块行,在每个宏块行内部,输出数据的更新顺序可能是前后反复跳跃的;而在任意两个宏块行之间则不存在这样的跳跃反复,即第一宏块行与第二宏块行之间或与其它宏块行之间没有跳跃的反复。因此,可以称上述的宏块行为具有局部相关性的区域。
在MPEG4视频编码过程中,本发明所述的视频影流帧为视频影流输入帧;在MPEG4视频解码过程中,本发明所述的视频影流帧为解压缩输出帧。
实施例1
本实施例为本发明应用于在MPEG4视频编码过程中的方法和装置。
参照附图5,在MPEG4视频编码过程中,对实时数码视频影流进行缓存控制的方法,具体包括如下步骤:
步骤1,发送视频影流输入帧中由一个或多个局部相关性区域构成的部分图像区域至处于接收状态的预定大小的数据存储区;同时,记录该部分图像区域在视频影流输入帧中的位置;本实施例中,所述一个局部相关性区域可以包括一个或多个宏块行。所述预定大小的数据存储区的物理尺寸可以与一个部分图像区域的大小相等。
步骤2,处于接收状态的数掘存储区存储部分图像区域完毕后,转为输出状态;同时,另一预定大小的数据存储区转为接收状态,继续接收下一部分图像区域;
步骤3,处于输出状态的数据存储区中存储的部分图像区域,按照该部分图像区域在视频影流输入帧中的位置输出。
参照附图6,对实时数码视频影流进行缓存控制的装置包括:视频影流输入模块、缓存控制模块、***AHB总线、两个预定大小互为乒乓操作的数据存储区A和数据存储区B,以及MPEG4视频压缩模块;其中,缓存控制模块包括:地址映射单元、传输控制单元以及输出映射单元,传输控制单元将视频影流输入帧中由一个或多个局部相关性区域构成的的的部分图像区域发送至处于接收状态的数据存储区,控制两个预定大小的数据存储区进行乒乓操作,使处于输出状态的数据存储区将所述部分图像区域输出;地址映射单元用于记录视频影流输入帧的部分图像区域在视频影流输入帧中的绝对地址,并通过传输控制单元将该绝对地址发送给输出映射单元;使得处于输出状态的数据存储区输出所述输出帧的部分图像区域时,按照该部分图像区域在视频影流输入帧中的绝对地址输出。
本发明对实时数码视频影流进行缓存控制的装置是这样工作的:
1、视频影流输入模块第一次输出部分图像区域
视频影流输入模块准备输出视频影流输入帧时,***默认数据存储区A为动态更新存储区,为可以接收状态;地址映射单元记录准备输出的部分图像区域(以部分图像区域为一个宏块行为例,第一次输出应当是第一帧的第一个宏块行)在视频影流输入帧中的绝对地址,然后将视频影流输入模块输出的第一宏块行经由***AHB总线,存储在数据存储区A中,同时将记录的第一个宏块行在视频影流输入帧中的绝对地址,通过传输控制单元传输给输出映射单元。
当数据存储区A数据更新完毕后,停止数据传输。此时,传输控制单元使数据存储区A置为可以输出状态,由于此时数据存储区B中没有数据,将其置为可以接收状态。
2、视频影流输入模块第二次输出部分图像区域
当传输控制单元发现数掘存储区A为可以输出状态且数据存储区B为可以接收状态后,视频影流输入模块准备输出第二个部分图像区域(第一帧的第二个宏块行)。
地址映射单元记录准备输出的第二个宏块行在视频影流输入帧中的绝对地址,然后将视频影流输入模块输出的第二个宏块行经由***AHB总线存储在数据存储区B中,同时将第二个宏块行在视频影流输入帧中的绝对地址,通过传输控制单元传输给输出映射单元。当数据存储区B数据更新完毕后,停止数据传输,并置数据存储区B为可以输出状态。
在数据存储区B接收数据的同时,数据存储区A按照输出映射单元中存储的第一个部分图像区域在视频影流输入帧中的绝对地址向显示模块输出,输出完毕后,数掘存储区A被置为可以接收状态。
3、周而复始,直至1到N个输出帧输出完毕。
实施例2
本实施例为本发明应用于在MPEG4视频解码过程中的方法和装置。
本领域内的普通技术人员公知的,MPEG4视频解码存在普通工作模式和“去块效应”工作模式。
在普通工作模式下,本实施例可以采用前述的方法划分局部相关性区域,即一个局部相关性区域包含一个或多个宏块行。
而在MPEG4视频解压缩模块“去块效应”功能生效的工作模式下(实时数码视频影流在解压缩时存在去块效应,在压缩时不存在去块效应),参照附图7,解压缩输出帧的数据更新仍然具有类似于宏块行的局部相关性。此时,如去块效应作用区域为块边界两侧正负N个像素行,则该局部相关性的区域划分具体为,对于帧头部分,从每帧帧头开始向下平移N个像素行,作为一个局部相关性区域,在该帧中这是最小的局部相关性区域;从N+1行向下,每16个像素行作为一个局部相关性区域,至帧尾部分,从帧尾向上取32-N个像素行作为一个局部相关性区域,其中N取自然数,且其最大值为8。在该帧中这是最大的局部相关性区域,此时,所述预定大小的数据存储区的物理尺寸至少与一个最大局部相关性区域的大小相等。
例如:假设“去块效应”作用的区域为16×16宏块上下边界两侧的8个像素行,该局部相关性的区域划分应从每帧帧头开始向下平移8个像素行,这样,该帧第一个局部相关性的区域为8个像素行,中间为若干个16个像素行,相应的最后一个局部相关性的区域为24个像素行,此时,所述预定大小的数据存储区的物理尺寸至少与一个最大局部相关性区域(24个像素行)的大小相等。
参照附图8,在MPEG4视频解码过程中,对实时数码视频影流进行缓存控制的方法具体包括如下步骤:
第一步,由缓存控制模块将视频解压缩模块输出的解压缩输出帧的部分图像区域,输出至处于接收状态的预定大小的数据存储区;同时,缓存控制模块记录该部分图像区域在解压缩输出帧中的映射位置;
第二步,处于接收状态的数据存储区存储部分图像区域完毕后,转为输出状态,向显示模块输出其存储的部分图像区域;同时,在缓存控制模块的控制下另一预定大小的数据存储区转为接收状态,继续接收MPEG4视频解压缩模块发送的下一部分图像区域;
第三步,显示模块在缓存控制模块记录的映射位置,显示处于输出状态的数据存储区发送的部分图像区域。
参照附图9,在MPEG4视频解码过程,对实时数码视频影流进行缓存控制的装置包括:MPEG4视频解压缩模块、缓存控制模块、***AHB总线、两个预定大小互为乒乓操作的数据存储区A和数据存储区B,以及显示模块;其中,缓存控制模块包括:地址映射单元、传输控制单元以及输出映射单元,传输控制单元将解压缩输出帧的部分图像区域发送至处于接收状态的数据存储区,控制两个预定大小的数据存储区进行乒乓操作,使处于输出状态的数据存储区将所述部分图像区域输出;地址映射单元用于记录输出帧的部分图像区域在输出帧中的绝对地址,并通过传输控制单元将该绝对地址发送给输出映射单元;使得处于输出状态的数据存储区输出所述解压缩输出帧的部分图像区域时,按照该部分图像区域在解压缩输出帧中的绝对地址输出。
本发明对实时数码视频影流进行缓存控制的装置是这样工作的:
1、MPEG4视频解压缩模块第一次输出部分图像区域
MPEG4视频解压缩模块准备输出解压缩输出帧时,***默认数据存储区A为动态更新存储区,为可以接收状态;地址映射单元记录准备输出的部分图像区域(以部分图像区域为一个宏块行为例,第一次输出应当是第一帧的第一个宏块行)在解压缩输出帧中的绝对地址,然后将MPEG4视频解压缩模块解压缩输出的第一宏块行经由***AHB总线,存储在数据存储A中,同时将记录的第一个宏块行在解压缩输出帧中的绝对地址,通过传输控制单元传输给输出映射单元。
当数据存储区A数据更新完毕后,停止数据传输。此时,传输控制单元使数据存储区A置为可以输出状态,由于此时数据存储区B中没有数据,将其置为可以接收状态。
2、MPEG4视频解压缩模块第二次输出部分图像区域
当传输控制单元发现数据存储区A为可以输出状态且数据存储区B为可以接收状态后,MPEG4视频解压缩模块准备输出第二个部分图像区域(第一帧的第二个宏块行)。
地址映射单元记录准备输出的第二个宏块行在解压缩输出帧中的绝对地址,然后将MPEG4视频解压缩模块解压缩输出的第二个宏块行经由***AHB总线存储在数据存储区B中,同时将第二个宏块行在解压缩输出帧中的绝对地址,通过传输控制单元传输给输出映射单元。当数据存储区B数据更新完毕后,停止数据传输,并置数据存储区B为可以输出状态。
在数据存储区B接收数据的同时,数据存储区A按照输出映射单元中存储的第一个部分图像区域在解压缩输出帧中的绝对地址向显示模块输出,输出完毕后,数据存储区A被置为可以接收状态。
3、周而复始,直至1到N个输出帧输出完毕。(如图10所示)。