一种视频处理设备和方法转让专利

申请号 : CN201010236665.4

文献号 : CN102340662B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蔡建华

申请人 : 炬才微电子(深圳)有限公司

摘要 :

本发明涉及视频处理领域,特别涉及一种视频解码技术,提供一种用于对基于块的预测编码技术获得的编码数据进行解码的视频处理设备和方法,用以实现根据外部存储器带宽的节省需求,灵活设定数据缓存器的类型及存储块,来达到节省外部存储器带宽和加快解码速度的目的。

权利要求 :

1.一种视频处理设备,包括视频解码器和外部存储器,所述视频解码器用于对原始视频码流进行解码,所述解码以宏块为单位进行,以块为基本操作对象;所述视频解码器包括解析器、地址生成器、参考数据读取单元、运动补偿单元,其特征在于:所述视频解码器还包括数据缓存器、标签缓存器;

所述参考数据读取单元包括缓存控制器;

所述解析器,用于从原始视频码流中解码获得当前块的位置信息和运动矢量,提供给所述地址生成器和参考数据读取单元;

所述地址生成器,用于根据获得的当前块的位置信息和运动矢量,生成当前块的参考数据在外部存储器中的地址提供给参考数据读取单元;

所述数据缓存器用于保存参考数据;

所述标签缓存器用于保存参考数据的标签信息;

所述缓存控制器,用于根据当前块的位置信息和运动矢量,确定当前块的参考数据在标签缓存器中的地址,读取标签信息,根据标签信息判断当前块的参考数据是否在数据缓存器中,是则指示参考数据读取单元从所述数据缓存器中读取参考数据并提供给运动补偿单元;否则指示参考块数据读取单元从外部存储器中读取参考数据保存到数据缓存器,并为参考数据在标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元。

2.根据权利要求1所述的视频处理设备,其特征在于,所述数据缓存器具体包括:第一数据缓存子单元,用于保存当前帧的参考帧0中的数据;第二数据缓存子单元,用于保存当前帧的参考帧1中的数据;以及所述标签缓存器具体包括:第一标签缓存子单元,用于存储为第一数据缓存子单元各个缓存地址对应保存的标签信息;第二标签缓存子单元,用于存储为第二数据缓存子单元的各个缓存地址对应保存的标签信息。

3.一种视频处理方法,应用于一种视频处理设备中,所述视频处理设备包括视频解码器和外部存储器,所述视频解码器用于对原始视频码流进行解码,所述解码以宏块为单位进行,以块为基本操作对象;所述视频解码器包括解析器、地址生成器、参考数据读取单元、运动补偿单元;所述视频解码器还包括数据缓存器、标签缓存器;所述参考数据读取单元包括缓存控制器;该视频处理方法包括:A.所述解析器从原始视频码流中解码获得当前块的位置信息和运动矢量,提供给所述地址生成器和参考数据读取单元;

B.所述参考数据读取单元判断当前块的参考数据是否读取完毕;

C.是则结束参考数据读取;否则所述缓存控制器根据当前块的位置信息、运动矢量确定当前块的参考数据在标签缓存器中的地址,读取标签信息,并根据标签信息判断当前块的参考数据是否在数据缓存器中,是则指示参考数据读取单元从所述数据缓存器中读取参考数据并提供给运动补偿单元;否则执行地址生成器根据获得的当前块的位置信息和运动矢量生成参考数据在外部存储器中的地址,提供给参考块数据读取单元;并指示参考数据读取单元从外部存储器中读取参考数据保存到数据缓存器,并为参考数据在标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元;返回执行步骤B。

4.一种视频处理设备,包括视频解码器和外部存储器,所述视频解码器用于对原始视频码流进行解码,所述解码以宏块为单位进行,以块为基本操作对象;所述视频解码器包括解析器、地址生成器、参考数据读取单元、运动补偿单元,其特征在于:所述视频解码器还包括一级数据缓存器、一级标签缓存器、二级数据缓存器、二级标签缓存器;所述一级数据缓存器、二级数据缓存器用于保存参考数据;

所述一级标签缓存器、二级标签缓存器用于保存参考数据的标签信息;

所述解析器,用于从原始视频码流中解码获得当前块的位置信息和运动矢量,提供给所述地址生成器和参考数据读取单元;

所述地址生成器,用于根据获得的当前块的位置信息和运动矢量,生成当前块的参考数据在外部存储器中的地址,并提供给参考数据读取单元;

所述参考数据读取单元包括缓存控制器;

所述缓存控制器,用于根据当前块的位置信息和运动矢量,确定当前块的参考数据在一级标签缓存器中的地址和二级标签缓存器中的地址,读取标签信息,根据标签信息判断当前块的参考数据是否在一级数据缓存器或二级数据缓存器中,是则指示参考数据读取单元从所述一级数据缓存器或所述二级数据缓存器读取参考数据,并提供给运动补偿单元;

否则进一步判断在一级数据缓存器中的参考数据是否有效且该参考数据位于二级数据缓存器的覆盖范围内,是则把该参考数据更新到二级数据缓存器地址中,然后从外部存储器中读取参考数据保存到一级数据缓存器地址中,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元;否则,从外部存储器中读取参考数据保存到一级数据缓存器,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元。

5.根据权利要求4所述的视频处理设备,其特征在于,所述缓存控制器,还用于在当前宏块的所有块的参考数据读取完毕后,将二级数据缓存器中将来参考可能性最低的参考数据的标签清零。

6.如权利要求4或5所述的视频处理设备,其特征在于:

所述一级数据缓存器具体包括:第一一级数据缓存子单元,用于保存当前帧的参考帧

0中的数据;第二一级数据缓存子单元,用于保存当前帧的参考帧1中的数据;

所述二级数据缓存器具体包括:第一二级数据缓存子单元,用于保存当前帧的参考帧

0中的数据;第二二级数据缓存子单元,用于保存当前帧的参考帧1中的数据。

7.一种视频处理方法,应用于一种视频处理设备中,所述视频处理设备包括视频解码器和外部存储器,所述视频解码器用于对原始视频码流进行解码,所述解码以宏块为单位进行,以块为基本操作对象;所述视频解码器包括解析器、地址生成器、参考数据读取单元、运动补偿单元;所述视频解码器还包括一级数据缓存器、一级标签缓存器、二级数据缓存器、二级标签缓存器;所述参考数据读取单元包括缓存控制器;该视频处理方法包括:A.所述解析器从原始视频码流中解码获得当前块的位置信息和运动矢量,提供给所述地址生成器和参考数据读取单元;

B.所述参考数据读取单元判断参考数据是否读取完毕;

C.是则执行步骤E;

D.否则所述缓存控制器根据当前块的位置信息、运动矢量确定参考数据在一级标签缓存器中的地址和二级标签缓存器中的地址,读取标签信息;并根据标签信息判断当前块的参考数据是否在一级数据缓存器或二级数据缓存器中,是则确定参考数据在一级数据缓存器和二级数据缓存器中的地址,指示参考数据读取单元从所述一级数据缓存器或二级数据缓存器中读取参考数据并提供给运动补偿单元,返回执行步骤B;否则进一步判断在一级数据缓存器中的参考数据是否有效且该参考数据位于二级数据缓存器地址覆盖范围内,是则把该参考数据更新到二级数据缓存器的缓存地址中;地址生成器根据获得的当前块的位置信息和运动矢量生成参考数据在外部存储器中的地址,提供给参考块数据读取单元;然后从外部存储器中读取参考数据保存到一级数据缓存器,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元,执行步骤B;否则,从外部存储器中读取参考数据保存到一级数据缓存器,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元;执行步骤B;E.所述缓存控制器判断当前宏块的所有块的参考数据是否读取完毕,是则把二级数据缓存器中将来参考可能性最低的参考数据的标签清零,执行步骤F;否则执行步骤F;

F.参考数据读取结束。

说明书 :

一种视频处理设备和方法

技术领域

[0001] 本发明涉及视频处理领域,特别涉及一种视频处理设备和方法。

背景技术

[0002] 近年来视频编解码方面的应用得到了飞速发展,且视频的分辨率、码率都得到很大提高,利用DSP(Digital Signal Processor,数字信号处理器)或者RISC(Retrenched Injunction System Computer,精简指令系统计算机)进行视频编解码已经不能满足高性能视频编解码的需求,所以业内逐渐转向专用的视频编解码设备。
[0003] 现有一种专用视频处理设备的基本结构如图1所示,包括外部存储器10、解析器11、反量化/反变换单元12、地址生成器13、参考数据读取单元14、运动补偿单元15和重建单元16,其中:
[0004] 外部存储器10,用于存储参考帧数据;
[0005] 解析器11,用于解析视频编码数据的原始码流,从中获得如当前块类型、位置信息、运动矢量和量化后系数等信息,将位置信息和运动矢量输出给地址生成器13,将运动矢量输出给运动补偿单元15,以及将量化后系数输出给反量化/反变换单元12;
[0006] 反量化/反变换单元12,用于将解析器11输出的量化后系数转换为重建单元16所使用的残差数据;
[0007] 地址生成器13,用于根据当前块的位置信息以及运动矢量等生成当前块的参考数据在外部存储器10中的存储地址并输出给参考数据读取单元14;
[0008] 参考数据读取单元14,用于根据接收到的存储地址从外部存储器10中读取当前块的参考数据并输出给运动补偿单元15;
[0009] 运动补偿单元15,根据运动矢量对参考数据进行补偿后输出给重建单元16;
[0010] 重建单元16,用于根据运动补偿单元15输出的当前块的参考数据和残差数据获得当前块。
[0011] 其中解析器11、反量化/反变换单元12、地址生成器13、参考数据读取单元14、运动补偿单元15和重建单元16一般集成在一个数据处理装置中。
[0012] 但是上述由于所有的参考数据都需要从外部存储器10中读取,所以对外部存储器10的带宽需求比较高,而外部存储器有比较大的访问延时(一般有10~15个Clk),因此对外部存储器有很高的带宽需求并且限制了解码速度的提高。

发明内容

[0013] 本发明实施例提供一种视频处理设备以及应用于视频处理设备中的视频处理方法,用以实现根据外部存储器带宽的节省需求,灵活设定数据缓存器的类型及存储块,来达到节省外部存储器带宽和加快解码速度的目的。
[0014] 一种视频处理设备,包括视频解码器和外部存储器,所述视频解码器用于对原始视频码流进行解码,所述解码以宏块为单位进行,以块为基本操作对象;所述视频解码器包括解析器、地址生成器、参考数据读取单元、运动补偿单元,
[0015] 所述视频解码器还包括数据缓存器、标签缓存器;
[0016] 所述参考数据读取单元包括缓存控制器;
[0017] 所述解析器,用于从原始视频码流中解码获得当前块的位置信息和运动矢量,提供给所述地址生成器和参考数据读取单元;
[0018] 所述地址生成器,用于根据获得的当前块的位置信息和运动矢量,生成当前块的参考数据在外部存储器中的地址提供给参考数据读取单元;
[0019] 所述数据缓存器用于保存参考数据;
[0020] 所述标签缓存器用于保存参考数据的标签信息;
[0021] 所述缓存控制器,用于判断当前块的参考数据是否在数据缓存器中,是则指示参考数据读取单元从所述数据缓存器中读取参考数据并提供给运动补偿单元;否则指示参考块数据读取单元从外部存储器中读取参考数据保存到数据缓存器,并为参考数据在标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元。
[0022] 其中,所述缓存控制器用于判断当前块的参考数据是否在数据缓存器中,是根据当前块的位置信息和运动矢量,确定当前块的参考数据在标签缓存器中的地址,读取标签信息,根据标签信息判断当前块的参考数据是否在数据缓存器中。
[0023] 其中,所述数据缓存器具体包括:第一数据缓存子单元,用于保存当前帧的参考帧0中的数据;第二数据缓存子单元,用于保存当前帧的参考帧1中的数据;以及[0024] 所述标签缓存器具体包括:第一标签缓存子单元,用于存储为第一数据缓存子单元各个缓存地址对应保存的标签信息;第二标签缓存子单元,用于存储为第二数据缓存子单元的各个缓存地址对应保存的标签信息。
[0025] 一种视频处理方法,应用于一种视频处理设备中,所述视频处理设备包括视频解码器和外部存储器,所述视频解码器用于对原始视频码流进行解码,所述解码以宏块为单位进行,以块为基本操作对象;所述视频解码器包括解析器、地址生成器、参考数据读取单元、运动补偿单元;所述视频解码器还包括数据缓存器、标签缓存器;所述参考数据读取单元包括缓存控制器;该视频处理方法包括:
[0026] A.所述解析器从原始视频码流中解码获得当前块的位置信息和运动矢量,提供给所述地址生成器和参考数据读取单元;
[0027] B.所述参考数据读取单元判断当前块的参考数据是否读取完毕;
[0028] C.是则结束参考数据读取;否则所述缓存控制器根据当前块的位置信息、运动矢量确定当前块的参考数据在标签缓存器中的地址,读取标签信息,并根据标签信息判断当前块的参考数据是否在数据缓存器中,是则指示参考数据读取单元从所述数据缓存器中读取参考数据并提供给运动补偿单元;否则执行地址生成器根据获得的当前块的位置信息和运动矢量生成参考数据在外部存储器中的地址,提供给参考块数据读取单元;并指示参考数据读取单元从外部存储器中读取参考数据保存到数据缓存器,并为参考数据在标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元;返回执行步骤B。
[0029] 一种视频处理设备,包括视频解码器和外部存储器,所述视频解码器用于对原始视频码流进行解码,所述解码以宏块为单位进行,以块为基本操作对象;所述视频解码器包括解析器、地址生成器、参考数据读取单元、运动补偿单元,
[0030] 所述视频解码器还包括一级数据缓存器、一级标签缓存器、二级数据缓存器、二级标签缓存器;
[0031] 所述一级数据缓存器、二级级数据缓存器用于保存参考数据;
[0032] 所述一级标签缓存器、二级标签缓存器用于保存参考数据的标签信息;
[0033] 所述解析器,用于从原始视频码流中解码获得当前块的位置信息和运动矢量,提供给所述地址生成器和参考数据读取单元;
[0034] 所述地址生成器,用于根据获得的当前块的位置信息和运动矢量,生成当前块的参考数据在外部存储器中的地址,并提供给参考数据读取单元;
[0035] 所述参考数据读取单元包括缓存控制器;
[0036] 所述缓存控制器,用于判断当前块的参考数据是否在一级数据缓存器或二级数据缓存器中,是则指示参考数据读取单元从所述一级数据缓存器或所述二级数据缓存器读取参考数据,并提供给运动补偿单元;否则进一步判断在一级数据缓存器中的参考数据是否有效且该参考数据位于二级数据缓存器的覆盖范围内,是则把该参考数据更新到二级数据缓存器地址中,然后从外部存储器中读取参考数据保存到一级数据缓存器地址中,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元;否则,从外部存储器中读取参考数据保存到一级数据缓存器,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元。
[0037] 其中,所述缓存控制器用于判断当前块的参考数据是否在数据缓存器中,是根据当前块的位置信息和运动矢量,确定当前块的参考数据在一级标签缓存器中的地址和二级标签缓存器中的地址,读取标签信息,根据标签信息判断当前块的参考数据是否在一级数据缓存器中或二级数据缓存器中。
[0038] 其中,所述缓存控制器,还用于在当前宏块的所有块的参考数据读取完毕后,将二级数据缓存器中将来参考可能性最低的参考数据的标签清零。
[0039] 其中,所述一级数据缓存器具体包括:第一一级数据缓存子单元,用于保存当前帧的参考帧0中的数据;第二一级数据缓存子单元,用于保存当前帧的参考帧1中的数据;
[0040] 所述二级数据缓存器具体包括:第一二级数据缓存子单元,用于保存当前帧的参考帧0中的数据;第二二级数据缓存子单元,用于保存当前帧的参考帧1中的数据。
[0041] 一种视频处理方法,应用于一种视频处理设备中,所述视频处理设备包括视频解码器和外部存储器,所述视频解码器用于对原始视频码流进行解码,所述解码以宏块为单位进行,以块为基本操作对象;所述视频解码器包括解析器、地址生成器、参考数据读取单元、运动补偿单元;所述视频解码器还包括一级数据缓存器、一级标签缓存器、二级数据缓存器、二级标签缓存器;所述参考数据读取单元包括缓存控制器;该视频处理方法包括:
[0042] A.所述解析器从原始视频码流中解码获得当前块的位置信息和运动矢量,提供给所述地址生成器和参考数据读取单元;
[0043] B.所述参考数据读取单元判断参考数据是否读取完毕;
[0044] C.是则执行步骤E;
[0045] D.否则所述缓存控制器根据当前块的位置信息、运动矢量确定参考数据在一级标签缓存器中的地址和二级标签缓存器中的地址,读取标签信息;并根据标签信息判断当前块的参考数据是否在一级数据缓存器或二级数据缓存器中,是则确定参考数据在一级数据缓存器和二级数据缓存器中的地址,指示参考数据读取单元从所述一级数据缓存器或二级数据缓存器中读取参考数据并提供给运动补偿单元,返回执行步骤B;否则进一步判断在一级数据缓存器中的参考数据是否有效且该参考数据位于二级数据缓存器地址覆盖范围内,是则把该参考数据更新到二级数据缓存器的缓存地址中;地址生成器根据获得的当前块的位置信息和运动矢量生成参考数据在外部存储器中的地址,提供给参考块数据读取单元;然后从外部存储器中读取参考数据保存到一级数据缓存器,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元,执行步骤B;否则,从外部存储器中读取参考数据保存到一级数据缓存器,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元;执行步骤B;
[0046] E.所述缓存控制器判断当前宏块的所有块的参考数据是否读取完毕,是则把二级数据缓存器中将来参考可能性最低的参考数据的标签清零,执行步骤F;否则执行步骤F;
[0047] F.参考数据读取结束。
[0048] 本发明实施例只需要较小的缓存器容量即可有效节省带宽并加快解码速度;而且本发明实施例对于运动矢量较大的画面,一级数据缓存可以弥补参考数据不在二级数据缓存覆盖区域内的不足,也可以达到一定的节省带宽的效果。当然,也可以只保留一级数据缓存省掉二级数据缓存以节省电路面积。

附图说明

[0049] 图1为背景技术部分提到的现有专用视频处理设备的基本结构示意图;
[0050] 图2a为本发明实施例一提供的视频处理设备基本结构示意图;
[0051] 图2b为本发明实施例一提供的视频处理方法的流程图;
[0052] 图3a为本发明实施例二提供的具有两级缓存的视频处理设备基本结构示意图;
[0053] 图3b为本发明实施例二中当前块对应位置的周边设定范围示例图;
[0054] 图3c为本发明实施例二中提供的视频处理方法的流程图。

具体实施方式

[0055] 实施例一
[0056] 如图2a所示,为本发明实施例提供的一种视频处理设备,包括:视频解码器和外部存储器,其中:
[0057] 视频解码器用于对原始视频码流进行解码,并且解码以宏块为单位进行,以块为基本操作对象;
[0058] 外部存储器20,用于存储参考帧数据;
[0059] 具体的,视频解码器包括:解析器21、反量化/反变换单元22、地址生成器23、参考数据读取单元24、运动补偿单元25和重建单元26,还包括数据缓存器27,标签缓存器28,其中:
[0060] 解析器21,分别连接反量化/反变换单元22、地址生成器23和参考数据读取单元24,用于在解码当前块时,从原始视频码流中获得当前块的位置信息、运动矢量以及量化后系数,将位置信息和运动矢量输出给地址生成器23和参考数据读取单元24,将运动矢量输出给运动补偿单元25,将量化后系数输出给反量化/反变换单元22;
[0061] 反量化/反变换单元22,连接在解析器21和重建单元26之间,用于将解析器21输出的量化后系数转换为残差数据并输出给重建单元26;
[0062] 运动补偿单元25,用于根据运动矢量将参考数据经补偿后输出给重建单元26;
[0063] 地址生成器23,连接在解析器21和参考数据读取单元24之间,用于根据接收到的位置信息和运动矢量生成当前块的参考数据在外部存储器20中的存储地址并输出给参考数据读取单元24;
[0064] 参考数据读取单元24和数据缓存器27,数据缓存器27连接在参考数据读取单元24和外部存储器20之间,参考数据读取单元24还分别连接外部存储器20、解析器21、地址生成器23和标签缓存器28,参考数据读取单元24包括缓存控制器;
[0065] 数据缓存器27用于保存参考数据,是为降低外部存储器20的带宽需求而设置的,标签缓存器28用于保存参考数据的标签信息。
[0066] 下面详细描述数据缓存的工作原理。
[0067] 参考数据读取单元24在为当前帧的第一个待解码块读取参考数据之前,清空数据缓存器27;
[0068] 在后续解码过程中,将获得的当前帧的部分参考数据缓存到数据缓存器27中,参考数据读取单元24在读取每一个当前块的参考数据时,如果数据缓存器27已经存储了该参考数据,则从数据缓存器27中读取,从而节省了外部存储器20的这部分带宽需求。数据缓存器27被划分为多个存储块,每个存储块的大小例如可以设置为16x2。对数据缓存器27的数据缓存控制具体包括:
[0069] 参考数据读取单元24中的缓存控制器用于判断当前块的参考数据是否在数据缓存器27中,是则指示参考数据读取单元24从数据缓存器27中读取当前块的参考数据并提供给运动补偿单元25;否则指示参考数据读取单元24根据地址生成器23输出的存储地址从外部存储器20中读取当前块的参考数据保存到数据缓存器27中,并为参考数据在标签缓存器28中保存标签信息,同时把读取的参考数据提供给运动补偿单元25;
[0070] 其中,缓存控制器根据解析器21输出的当前块的位置信息和运动矢量,确定当前块的参考数据在标签缓存器28中的标签信息地址,读取标签信息,根据标签信息判断当前块的参考数据是否在数据缓存器27中。
[0071] 数据缓存器27中陆续缓存的是参考帧中的数据,缓存控制原理可以类似于采用CPU技术中的Cache技术,例如:一个参考帧大小为640x480像素,即VGA大小,数据缓存器27的容量设置为256个存储块,而且每个存储块按照在画面上的位置依次编号,色度存储块一般排在亮度块后面,相应的编号即为数据缓存器的缓存地址。
[0072] 参考块位置信息一般为参考块在参考帧中的坐标(x,y),按照如下步骤可以确定参考块数据在数据缓存器27中的缓存地址和标签信息:
[0073] 1、根据参考块在参考帧中的坐标(x,y),以及存储块的大小得到参考块相对于存储块的坐标(x1,y1);
[0074] 示例:存储块是16x2,所以x1等于x/16的整数部分,y1等于y/2的整数部分;
[0075] 2、根据坐标(x1,y1)确定参考块的参考数据在数据缓存器27中的缓存地址和标签信息;
[0076] 示例:由于本例中数据缓存器设置的容量为256个存储块,计算x1×y1/256,余数部分为该参考块的参考数据在数据缓存器27中的缓存地址,商的整数部分为该参考块的参考数据在标签缓存器中所期望的标签,作为该参考块的参考数据的标签信息;
[0077] 标签缓存器保存的标签信息的存储顺序和存储块地址是一一映射的,参考数据读取单元24在清空数据缓存器27时,将每一个存储块对应标签信息置为无效;将一个参考块的参考数据存入缓存地址相应的存储块的同时也要在标签缓存器写入对应的标签信息,后续根据其他参考块位置信息计算出缓存地址以及标签信息后,先确认是否与该缓存地址对应存储的标签信息匹配,如果是,则相应存储块中确实存储了该参考块的参考数据,则直接从数据缓存器27的相应存储块读取参考块数据即可,反之,读取外部存储器20中保存的参考块数据并输出给运动补偿单元25,根据缓存地址将参考块数据保存到数据缓存器27的相应存储块中,并写入计算出的缓存地址对应的标签信息。
[0078] 需要说明的是,一般参考块的大小如16x8、21x13、9x4;所以参考块覆盖了多个16x2存储块,假如参考块为21x13的话就覆盖了14个存储块,也就需要14次重复前面所述步骤,唯一需要更新的参数就是参考块所覆盖的下一个存储块的坐标(x,y)。
[0079] 在上述视频解码设备,由于数据缓存器27中陆续存储了当前帧的参考帧中的部分数据,而且当前帧中位置相邻或相近的各宏块在参考数据上有很大的重合,因此在解码相邻或相近的多个宏块时,可以从数据缓存器27中获得部分参考数据,从而缓解了直接从外部存储器20中读取这部分数据时外部存储器20的带宽需求,也减少了外部存储器的延时对解码器的影响。
[0080] 存储的参考数据的数据缓存器27可以与存储标签信息的标签缓存器28在同一个缓存器中。
[0081] 数据缓存器27的存储容量可以根据需要灵活设定,容量越大,即数据缓存的越多,后续参考数据在数据缓存器中找到的机会也越大,效果也就越好。当然为了得到缓存地址以及标签信息的方便,把数据缓存器的容量设置为2的幂次方个存储块。
[0082] 更进一步,对于参考两个或两个以上帧的预测编码技术,还可以分别缓存当前帧的参考帧0和参考帧1的参考数据,则数据缓存器27可以具体包括:第一数据缓存子单元,用于保存当前帧的参考帧0中的参考数据;第二数据缓存子单元,用于保存当前帧的参考帧1中的参考数据;相应标签缓存器28可以具体包括:第一标签缓存子单元,用于存储为第一数据缓存子单元各个缓存地址对应保存的标签信息;第二标签缓存子单元,用于存储为第二数据缓存子单元的各个缓存地址对应保存的标签信息。
[0083] 本发明实施例提供的一种视频处理方法,应用于实施例一提供的视频处理设备中,如图2b所示,具体包括:
[0084] S201、解析器从视频数据中解码得到当前块的位置信息和运动矢量信息,提供给地址生成器和参考数据读取单元;
[0085] S202:参考数据读取单元判断当前块的参考数据是否读取完毕,判断结果为是时,则参考数据读取结束,判断结果为否时,执行步骤S203;
[0086] S203、缓存控制器根据当前块的位置信息、运动矢量确定参考数据在标签缓存器中的标签信息的地址,读取标签信息;
[0087] S204、缓存控制器根据标签信息判断参考数据是否在数据缓存器中,判断结果为是时,执行步骤S205,判断结果为否时,执行步骤S206;
[0088] S205、缓存控制器指示从数据缓存器中读取参考数据;
[0089] S206、地址生成器根据获得的当前块的位置信息和运动矢量信息生成参考数据在外部存储器中的地址,并提供给参考数据读取单元;
[0090] S207、缓存控制器指示参考数据读取单元从外部存储器中读取参考数据保存到数据缓存器,并为参考数据在标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元,返回步骤S202。
[0091] 实施例二
[0092] 实施例一中,将参考帧中的数据块根据各个宏块需要的参考块逐步缓存到数据缓存器27中,但是当一个宏块行解码完成的时候,数据缓存器27中缓存的参考数据基本上都是这一个宏块行最右边几个宏块的参考数据,而对于紧接着需要解码的下一个宏块行的左边几个宏块的参考数据可能无法在数据缓存器中找到需要的缓存数据。因此为了充分利用解码数据在空间上的相关性,本发明实施例提供的第二种视频解码设备包括两级缓存,第一级缓存的缓存控制和图2a中数据缓存器27的缓存控制原理相同,第二级缓存中缓存的是参考帧中当前块对应位置周边设定范围内的参考块的参考数据,这些数据是逐步从一级缓存中转移到二级缓存中的。下面就结构和工作原理进行详细说明。
[0093] 如图3a所示,本发明实施例提供的具有两级缓存的视频处理设备包括:
[0094] 视频解码器,用于对原始视频流进行解码,并且解码是以宏块为单位进行,以块为基本操作对象;
[0095] 外部存储器30,用于存储参考帧数据;
[0096] 其中,视频解码器包括:解析器31、反量化/反变换单元32、地址生成器33、参考数据读取单元34、运动补偿单元35和重建单元36,还包括:一级数据缓存器371、二级数据缓存器372、一级标签缓存器381、二级标签缓存器382,其中:
[0097] 一级数据缓存器371连接在参考数据读取单元34和外部存储器30之间,二级数据缓存器372连接在一级数据缓存器371和参考数据读取单元34之间,一级标签缓存器381连接参考数据读取单元34,二级标签缓存器382连接在参考数据读取单元34和一级标签缓存器381之间,参考数据读取单元34还分别连接外部存储器30、地址生成器33、一级数据缓存器371和运动补偿单元35,一级数据缓存器371的存储量可以参照实施例一进行设置,二级数据缓存器的存储块的大小可与一级数据缓存器中的存储块一致,以YUV420格式为例,二级数据缓存器的存储量需保存完整的偶数行的视频数据(包括亮度和色度数据),但是一般设置为16~32像素行即可,而偶数行主要是为了考虑到YUV420格式的视频色度数据为亮度数据的一半,故限制为偶数行。假如该视频解码器支持的最大水平分辨率为1920的YUV420的视频,可以把二级数据缓存设置保存24像素行的容量,即共需要(1920x24+1920x12)/(16x2)=2060个存储块的容量)。下面详细描述数据缓存原理。
[0098] 参考数据读取单元34中的缓存控制器,用于判断当前块的参考数据是否在一级数据缓存器或二级数据缓存器中,是则指示参考数据读取单元从一级数据缓存器或二级数据缓存器读取参考数据,并提供给运动补偿单元;否则进一步判断在一级数据缓存器中的参考数据是否有效且该参考数据位于二级数据缓存器的覆盖范围内,是则把该参考数据更新到二级数据缓存器地址中,然后从外部存储器中读取参考数据保存到一级数据缓存器地址中,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元;否则,从外部存储器中读取参考数据保存到一级数据缓存器,并为参考数据在一级标签缓存器中标签信息,同时把读取的参考数据提供给运动补偿单元;
[0099] 其中,缓存控制器根据当前块的位置信息和运动矢量,确定当前块的参考数据在一级标签缓存器中的地址和二级标签缓存器中的地址,读取标签信息,根据标签信息判断当前块的参考数据是否在一级标签缓存器中或二级标签缓存器中。
[0100] 一级数据缓存器中的参考数据有效即是指该当前块的参考数据在一级数据缓存器中的缓存地址相应的存储块非空闲,即相应的缓存地址对应存储了参考数据。
[0101] 当前块对应位置周边设定范围即二级数据缓存器372中存储数据的覆盖范围,可预先设定,优选的可尽量覆盖当前块的上一个宏块行。当解码完成当前块后,即可把二级缓存器中上半部分中最左边的一个宏块大小的所有存储块的有效性标签全部清零。也就是说,二级缓存器覆盖的区域在当前块解码完成后进行更新,即上半部分的左边逐渐退缩,而下半部分的右边逐渐增长。在本实施例中,当前块对应位置的周边设定范围示例如图3b所示,更新前的块被更新后的块替代。
[0102] 其中,缓存控制器,还在当前块解码结束后,进行下一个宏块解码之前,把二级数据缓存器中将来参考可能性最低的参考数据的标签信息清零,以保证数据读取的正确性;所谓将来参考可能性最低的参考数据的标签信息即是未在参考帧中下一个宏块对应位置周边设定范围内的参考数据的二级缓存地址对应的标签信息。
[0103] 如果需要缓存两个参考帧的数据,则:
[0104] 一级数据缓存器371可以具体包括:第一一级数据缓存子单元,用于保存当前帧的参考帧0中的数据;第二一级数据缓存子单元,用于保存当前帧的参考帧1中的数据;当然也可以用单个一级数据缓存器中实现,一半的存储块保存当前帧的参考帧0中的数据,另一半保存当前帧的参考帧1中的数据;
[0105] 二级数据缓存器372可以具体包括:第一二级数据缓存子单元,用于保存当前帧的参考帧0中的数据;第二二级数据缓存子单元,用于保存当前帧的参考帧1中的数据;当然也可以用单个二级数据缓存器中实现,一半的存储块保存当前帧的参考帧0中的数据;另一半保存当前帧的参考帧1中的数据;
[0106] 对应的,一级标签缓存器381可以具体包括:第一一级标签缓存子单元用于存储为第一一级数据缓存子单元各个缓存地址对应保存的标签信息;第二一级标签缓存子单元,用于存储为第二一级数据缓存子单元的各个缓存地址对应保存的标签信息;
[0107] 二级标签缓存器382可以具体包括:第一二级标签缓存子单元用于存储为第一二级数据缓存子单元各个缓存地址对应保存的标签信息;第二二级标签缓存子单元,用于存储为第二二级数据缓存子单元的各个缓存地址对应保存的标签信息。
[0108] 一级数据缓存器和二级数据缓存器均以块为单位,一般而言块可以设置为一个宏块的一部分,如16x2个数据。所述一级数据缓存器的容量为2的幂次方个块,如266个块;所述二级数据缓存器需适于存放最大支持视频的水平分辨率的整数行的数据(包括亮度和色度)。
[0109] 存储参考块的参考数据的一级数据缓存器可以与存储标签信息的一级标签缓存器在同一个缓存器中,二级数据缓存器可以与存储标签信息的二级标签缓存器在同一个缓存器中。
[0110] 本发明实施例中,一级数据缓存器371的每一个标签信息的大小根据支持的最大视频分辨率、存储块大小、一级数据缓存器的容量确定,例如在最大支持1920x1088的YUV420视频,存储块设置为16x2,一级数据缓存器容量为256个存储块时,最大的标签信息数值为383,故可以把标签信息设置为9比特,当然如果一级数据缓存器设置为可能缓存更多参考帧的数据,则需要扩大标签信息的位宽。
[0111] 如图3c所示,本发明实施例还提供一种视频处理方法,应用于实施例二提供的视频处理设备中,具体包括:
[0112] S301、解析器从原始视频码流中解码获得当前块的位置信息和运动矢量信息,提供给地址生成器和参考数据读取单元;
[0113] S302、参考数据读取单元判断参考数据是否读取完毕,判断结果为是时,执行步骤S311,判断结果为否时,执行步骤S303;
[0114] S303、缓存控制器根据当前块的位置信息、运动矢量信息确定参考数据在一级标签缓存器中的地址和二级标签缓存器中的地址,读取标签信息;
[0115] S304、根据标签信息判断当前块的参考数据是否在一级数据缓存器或二级数据缓存器中,判断结果为是时,执行步骤S305,判断结果为否时,执行步骤S307;
[0116] S305、确定参考数据在一级数据缓存器和二级数据缓存器中的地址;
[0117] S306、指示参考数据读取单元从一级数据缓存器或二级数据缓存器中读取参考数据并提供给运动补偿单元,返回步骤S302;
[0118] S307、进一步判断在一级数据缓存器中的参考数据是否有效且该参考数据是否位于二级数据缓存器地址覆盖范围内,判断结果为是则执行步骤S308,判断结果为否,则执行步骤S310;
[0119] S308、将该参考数据更新到二级数据缓存器的缓存地址中,并把标签信息更新到二级标签缓存器地址中;
[0120] S309、地址生成器根据获得的当前块的位置信息和运动矢量生成参考数据在外部存储器中的地址,提供给参考数据读取单元;
[0121] S310、参考数据读取单元从外部存储器中读取参考数据保存到一级数据缓存器,并为参考数据在一级标签缓存器中保存标签信息,同时把读取的参考数据提供给运动补偿单元,执行步骤S302;
[0122] S311、缓存控制器判断当前宏块的所有块的参考数据是否读取完毕,判断结果为是时,执行步骤S312,判断结果为否时,执行步骤S313;
[0123] S312、缓存控制器把二级数据缓存器中将来参考可能性最低的参考数据的标签清零,执行步骤S313;
[0124] S313、参考数据读取结束。
[0125] 本发明实施例与背景技术中相比,本发明实施例只需要较小的缓存器容量即可有效节省带宽并加快解码速度;而且本发明实施例对于运动矢量较大的画面,一级数据缓存可以弥补参考块数据不在二级数据缓存覆盖区域内的不足,也可以达到一定的节省带宽的效果。当然,也可以只保留一级数据缓存省掉二级数据缓存以节省电路面积。
[0126] 显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。