一种在视频解码中滤波前期的数据处理方法及解码器转让专利

申请号 : CN200710125591.5

文献号 : CN101472172B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王晓寄刘志强冷永春胡胜发

申请人 : 安凯(广州)微电子技术有限公司

摘要 :

本发明适用于视频解码领域,提供了一种在视频解码中滤波前期的数据处理方法及解码器。所述方法包括步骤:解码整帧图像信息,处理每个宏块的滤波参数,存储整帧图像所有宏块的滤波参数信息到片外存储部分;对每个宏块计算滤波强度,即逐行将滤波参数读取到片内存储部分并同时并行计算每行宏块的滤波强度,得到滤波强度后随即将滤波强度值存储到片内存储部分中;对每个宏块的滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分并进行滤波,不需滤波的宏块不进行读取。滤波强度的计算过程隐藏在滤波参数的读取过程中,且计算后的滤波参数数据量小,并避免了不需滤波的图像信息读取,节省了片内存储部分,加快了数据读取的速度,提高了滤波性能。

权利要求 :

1.一种在视频解码中滤波前期的数据处理方法,所述方法将一个视频或图像帧分为若干个16×16宏块,每个宏块分为16个4×4的子块,其特征在于,所述方法包括以下步骤:解码整帧图像信息,处理每个宏块的滤波参数,存储整帧图像所有宏块的滤波参数到片外存储部分;

对每个宏块计算滤波强度,即逐行将滤波参数读取到片内存储部分并同时并行计算每行宏块的滤波强度,得到滤波强度后随即将滤波强度值存储到片内存储部分中;及对每个宏块的滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分并进行滤波,不需滤波的宏块不进行读取。

2.如权利要求1所述的方法,其特征在于,所述处理每个宏块的滤波参数的步骤包括创建错误表并计算错误标示。

3.如权利要求2所述的方法,其特征在于,所述创建错误表并计算错误标示的方法为:在每一帧图像解码前,假设所有的宏块都为错误,将所述错误表中所有值置为1;及每完成一个宏块的解码,便将该宏块在错误表中相应的标识置为0,表示该宏块成功解码。

4.如权利要求2所述的方法,其特征在于,所述错误表设于片内存储部分中,用于存储每个宏块的错误标示,并在滤波前被读取用于判断当前宏块是否有错误。

5.如权利要求2所述的方法,其特征在于,所述错误标示用于在当前宏块滤波前,判断当前宏块是否有错误,如有错误则对该宏块先进行纠错,再进行滤波。

6.如权利要求1所述的方法,其特征在于,所述处理每个宏块的滤波参数的步骤包括判断宏块类型是否为I宏块。

7.如权利要求1所述的方法,其特征在于,所述处理每个宏块的滤波参数的步骤包括化简滤波参数,所述滤波参数包括参考图像编号。

8.如权利要求1所述的方法,其特征在于,所述对每个宏块计算滤波强度需要在下一行宏块滤波参数读取到片内存储部分之前完成。

9.如权利要求1所述的方法,其特征在于,所述得到滤波强度后,可以随即将滤波强度值存储到片内存储部分中存储该行滤波参数的位置。

10.一种解码器,其特征在于,所述解码器包括:

码流解析系统,用于逐宏块解码整帧图像信息;

片外存储部分,用于存储整帧图像数据,包括滤波参数和未滤波的图像数据;

滤波处理系统,用于处理每个宏块的滤波参数,逐宏块存储整帧图像的滤波参数到片外存储部分,并对每个宏块计算滤波强度,即逐行将滤波参数读取到片内存储部分并同时并行计算每行宏块的滤波强度,得到滤波强度后随即将滤波强度值存储到片内存储部分中;

去块滤波系统,用于对每个宏块的滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分并进行滤波,不需要滤波的宏块不读取;及数据总线,用于实现芯片外和芯片内数据的交换。

11.如权利要求10所述的解码器,其特征在于,所述处理每个宏块的滤波参数的处理包括创建错误表并计算错误标示。

12.如权利要求11所述的解码器,其特征在于,所述错误表设于片内存储部分中,用于存储每个宏块的错误标示。

13.如权利要求11所述的解码器,其特征在于,所述错误标示用于在当前宏块滤波前,判断当前宏块是否有错误,如有错误则对该宏块先进行纠错,再进行滤波。

14.如权利要求11所述的解码器,其特征在于,所述创建错误表并计算错误标示的方法为:在每一帧图像解码前,假设所有的宏块都为错误,将所述错误表中所有值置为1;及每完成一个宏块的解码,便将该宏块在错误表中相应的标识置为0,表示该宏块成功解码。

15.如权利要求10所述的解码器,其特征在于,所述处理每个宏块的滤波参数的处理包括判断宏块类型是否为I宏块。

16.如权利要求15所述的解码器,其特征在于,所述宏块类型分配1比特带宽。

17.如权利要求10所述的解码器,其特征在于,所述处理每个宏块的滤波参数的处理包括化简滤波参数,所述滤波参数包括参考图像编号。

18.如权利要求17所述的解码器,其特征在于,每个所述参考图像编号采用27位表示,分配108比特带宽。

19.如权利要求10所述的解码器,其特征在于,所述需要存储的整帧图像所有宏块的滤波参数信息包括宏块类型、参考图像编号,但不包括错误标示。

20.如权利要求10所述的解码器,其特征在于,所述对每个宏块计算滤波强度需要在下一行宏块滤波参数读取到片内存储部分之前完成。

21.如权利要求10所述的解码器,其特征在于,得到所述滤波强度后,可以随即将滤波强度值存储到片内存储部分中存储该行滤波参数的位置。

22.如权利要求10所述的解码器,其特征在于,所述片内存储部分提供存放两行的数据的空间。

23.如权利要求10所述的解码器,其特征在于,所述数据总线为DMA。

24.一种采用如权利要求10所述的解码器的移动多媒体处理器。

说明书 :

一种在视频解码中滤波前期的数据处理方法及解码器

技术领域

[0001] 本发明属于视频解码领域,尤其涉及一种在视频解码中滤波前期的数据处理方法及解码器。

背景技术

[0002] 近年来一种自适应性强度的去块滤波系统,简称“滤波”系统,被引入现代视频编码中。所述滤波系统滤波前需要预先计算滤波强度,然后根据滤波强度的不同选择不同的滤波算法进行滤波。计算滤波强度则需要参考解码出来的多项滤波参数,所述滤波参数包括运动矢量、子块残差编码数组、宏块类型、量化参数、参考图像编号等。图1示出了现有技术提供的计算宏块滤波强度的顺序,以宏块为单位进行滤波,将含有16个子块的16×16宏块按照先纵后横的顺序逐个对每个子块的上边界和左边界计算滤波强度,每个宏块共需要计算32条边的滤波强度。对于一帧图像,计算滤波强度所需要的滤波参数非常多,以720×576大小的图像为例,共有1620个16×16宏块,一个宏块所需的滤波参数通常需要
567比特,整个帧图像需要567×1620/8≈114817字节,数据量多达110KB。
[0003] 另一方面,码流在传输过程中信息可能会丢失,通常采取将一帧图像分成若干片,对每个片内的宏块进行解码不需要其它片的信息。然而计算滤波强度需要用到邻近宏块的滤波参数信息,单纯得到当前片的信息无法进行滤波强度的计算,一个宏块在解码完成后,邻近块有可能还没有解码,也就没有办法在每个宏块解码结束后立即进行滤波强度的计算。为了协调以上矛盾,所有必需的滤波参数不得不存放到片外存储器中,计算滤波强度必须在整帧图像全部解码完成后进行,即整帧图像完成解码后再将参数读入并进行滤波强度的计算。
[0004] 基于以上两个原因,在设计视频解码芯片时,通常将这些滤波参数存储到片外存储部分中,直到整帧图像解码完成后,再将这些参数从片外存储部分读取到片内存储部分,计算滤波强度,而后逐个宏块进行滤波。简单的传递并计算的方法需要占用大量的片内存储部分,总的数据量很大,影响了滤波性能,不适合越来越庞大的图像数据处理需求。
[0005] 现有技术为了解决这一问题提出了多种解决方案,以达到提高芯片性能的目的。图2中示出了现有技术提供的一种去块滤波方法的流程,详述如下:
[0006] 在步骤201中,对码流进行解析;
[0007] 在步骤202中,每解码完一个宏块的图像信息后将相关的滤波参数存储到片外存储部分;
[0008] 在步骤203中,判断整帧图像是否全部解码完成,是则执行S204,否则返回S201;
[0009] 在步骤204中,从片外存储部分读取一行宏块的滤波参数到片内存储部分,对于图像大小为720×576的图像,一行共包含45个宏块,即读取45个宏块的滤波参数;
[0010] 在步骤205中,计算一个宏块的滤波强度;
[0011] 在步骤206中,对该宏块进行去块滤波;
[0012] 在步骤207中,每完成一个宏块的去块滤波,就判断是否完成一行,是则执行S208,否则返回S205,继续计算下一个宏块的滤波强度;
[0013] 在步骤208中,该行宏块全部完成去块滤波后,判断整帧图像是否完成去块滤波,即检查当前行是否整帧图像的最后一行,是则结束,否则返回S204,读取下一行的滤波参数。
[0014] 现有技术的去块滤波方法存在两个缺陷:
[0015] 1.片内存储部分面积大。
[0016] 计算滤波强度时需要用到当前宏块左侧和上方宏块的滤波参数信息。现有技术的滤波流程中,解码芯片内部存储部分至少需要保留两行滤波参数,才可以完成一行滤波强度的计算。假设解码图像为4行,片内存储部分可存储两行,分别标记为参数存储部分A和B。图3示出了现有技术提供的片内存储部分中滤波参数读写操作流程,详述如下:
[0017] 在步骤S301中,第一行参数数据从片外读取到参数存储部分A中;
[0018] 在步骤S302中,完成第一行滤波,第一行滤波强度计算只用到当前行数据,因此只需一行参数即可;
[0019] 在步骤S303中,第二行参数数据从片外读取到参数存储部分B中;
[0020] 在步骤S304中,完成第二行滤波,第二行滤波强度计算用到参数存储部分A和B两行数据;
[0021] 在步骤S305中,第三行参数数据从片外读取到参数存储部分A中;
[0022] 在步骤S306中,完成第三行滤波,第三行滤波强度计算用到参数存储部分A和B两行数据;
[0023] 在步骤S307中,第四行参数数据从片外读取到参数存储部分B中;
[0024] 在步骤S308中,完成第四行滤波,第四行滤波强度计算用到参数存储部分A和B两行数据;
[0025] 对于720×576大小的图像,每个宏块需要的滤波参数约567比特,两行滤波参数共需要约6.4KB大小的片内存储部分。
[0026] 2.去块滤波性能低。
[0027] 一个宏块一共需要计算32条边的滤波强度,如图1所示。若采用芯片面积最小的设计方案,即一次计算一条边的滤波强度,完成计算至少需要32个时钟周期。然后根据滤波强度结果判断是否需要读取当前宏块的图像信息进行滤波。现有技术的滤波方法,只有计算完滤波强度才可知当前宏块是否需要滤波。在整个计算滤波强度的过程中芯片不读取数据,滤波过程与码流解析、滤波强度计算过程完全串行,芯片整体性能不高。
[0028] 另外,现有技术还提供了另一种滤波前期的数据处理方法,先读取滤波参数,然后计算滤波强度,计算滤波强度的同时从片内存储部分读取当前宏块的图像信息,这样当滤波强度计算完成后,如果当前宏块不需要滤波,则在完成本次数据总线(Direct Memory Access,DMA)请求后,放弃继续从片外存储部分读取图像信息,如果需要滤波,则当前宏块图像信息已读取到片内存储部分,不需要再从片外存储部分读取。因为当前宏块共包含16×16=256个图像点,假设采用32比特数据总线,则读取一个宏块至少需要64个时钟周期,大于计算滤波强度的最长时间。如果当前宏块不需要滤波,反而比前述方法多需要
64-32=32个时钟周期时间来完成去块滤波,而事实上相当多的宏块不需要滤波。因为I、P、B帧图像的滤波强度是不同的,现在视频编码中,多数码流为P、B帧,I帧占的比例很低。
对于I帧,绝大多数的子块边界都需要滤波;而对于P、B帧,实际上相当多的宏块滤波强度为零,不需要滤波。
[0029] 综上所述,两种数据处理方法所用芯片面积大,占用数据总线带宽率高,从而降低了滤波性能。

发明内容

[0030] 本发明实施例的目的在于提供一种在视频解码中滤波前期的数据处理方法及解码器,旨在解决现有技术中的数据处理方法所用芯片面积大,占用数据总线带宽时间长,滤波性能较低的问题。
[0031] 本发明实施例是这样实现的,一种在视频解码中滤波前期的数据处理方法,所述方法包括以下步骤:
[0032] 解码整帧图像信息,处理每个宏块的滤波参数,存储整帧图像所有宏块的滤波参数到片外存储部分;
[0033] 对每个宏块计算滤波强度,即逐行将滤波参数读取到片内存储部分并同时并行计算每行宏块的滤波强度,得到滤波强度后随即将滤波强度值存储到片内存储部分中;及[0034] 对每个宏块的滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分并进行滤波,不需滤波的宏块不进行读取。
[0035] 本发明实施例的另一目的在于提供一种解码器,所述解码器包括:
[0036] 码流解析系统,用于逐宏块解码整帧图像信息;
[0037] 片外存储部分,用于存储整帧图像数据,包括滤波参数和未滤波的图像数据;
[0038] 滤波处理系统,用于处理每个宏块的滤波参数,逐宏块存储整帧图像的滤波参数到片外存储部分,并对每个宏块计算滤波强度,即逐行将滤波参数读取到片内存储部分并同时并行计算每行宏块的滤波强度,得到滤波强度后随即将滤波强度值存储到片内存储部分中;
[0039] 去块滤波系统,用于对每个宏块的滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分并进行滤波,不需要滤波的宏块不读取;及[0040] 数据总线,用于实现芯片外和芯片内数据的交换。
[0041] 本发明实施例的另一目的在于提供一种移动多媒体处理器,所述处理器包括上述解码器。
[0042] 本发明实施例中,将整帧图像信息进行解码,而后对每个宏块计算宏块类型、化简滤波参数,然后将必要的滤波参数信息存储到片外存储部分;之后将滤波参数读取到片内存储部分并同时并行计算滤波强度,保证在下一个宏块滤波参数读取到片内存储部分时,可以得到当前宏块的滤波强度,并将当前宏块的滤波强度存储到片内存储部分的相应位置;对滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分并进行滤波。本发明实施例中滤波强度的计算过程隐藏在滤波参数的读取过程中,提高了滤波性能;并且计算后的滤波参数数据量小,节省了片内存储部分;并避免不需要滤波的图像值读取到,提高了去块滤波数据读取部分性能。

附图说明

[0043] 图1是现有技术提供的计算宏块滤波强度的顺序示意图;
[0044] 图2是现有技术提供的一种去块滤波方法的流程图;
[0045] 图3是现有技术提供的片内存储部分中滤波参数读写操作流程图;
[0046] 图4是本发明实施例提供的滤波前期的数据处理方法流程图;
[0047] 图5是本发明实施例提供的对整帧图像滤波的流程图;
[0048] 图6是本发明实施例提供的一个宏块的子块编号示意图;
[0049] 图7是本发明实施例提供的解码器硬件结构图;
[0050] 图8是本发明实施例提供的以一行4个宏块为例的滤波强度计算的流程图。

具体实施方式

[0051] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0052] 本发明实施例中,将整帧图像信息进行解码,对每个宏块统一标记错误标示、计算宏块类型、化简滤波参数,然后将参数信息存储到片外存储部分,所述参数信息包括计算后的宏块类型、化简后的滤波参数等,但不包括错误标示,再将所有参数都存储到片外存储部分后,将一行滤波参数读取到片内存储部分并同时并行计算该行每个宏块的滤波强度,保证在下一行宏块滤波参数读取到片内存储部分时,可以得到当前宏块的滤波强度,得到滤波强度后随即存储到片内存储部分存储该行参数的位置,最后对滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分并进行滤波,不需要滤波的宏块不必读取。
[0053] 图4示出了本发明实施例提供的滤波前期的数据处理方法的流程,详述如下:
[0054] 在步骤S401中,解码整帧图像信息,处理每个宏块的滤波参数,存储整帧图像所有宏块的滤波参数信息到片外存储部分;
[0055] 在步骤S402中,对每个宏块计算滤波强度,即逐行将滤波参数读取到片内存储部分并同时并行计算每行宏块的滤波强度,得到滤波强度后随即将滤波强度值存储到片内存储部分中;
[0056] 在步骤S403中,对每个宏块的滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分并进行滤波,不需滤波的宏块不进行读取。
[0057] 作为本发明的一个实施例,所述处理每个宏块的滤波参数的步骤包括创建错误表并计算错误标示。
[0058] 作为本发明的一个实施例,所述处理每个宏块的滤波参数的步骤包括判断宏块类型是否为I宏块。
[0059] 作为本发明的一个实施例,所述处理每个宏块的滤波参数的步骤包括化简滤波参数,所述滤波参数包括参考图像编号。
[0060] 作为本发明的一个实施例,所述需要存储的整帧图像所有宏块的滤波参数信息包括宏块类型、参考图像编号,但不包括错误标示。
[0061] 所述错误表设立在片内存储部分用于存储错误标示,无须存储到片外存储部分,每个宏块需要一个错误标示。作为本发明的一个实施例,在每一帧开始解码前,假定在解码前所有的宏块都是错误,将该存储部分所有值置为1,在解码过程中每完成一个宏块,就将该宏块在错误表中相应的比特值置为0,表示该宏块成功解码,而后在对宏块滤波前判断错误标示,从错误表中读出当前要宏块的错误标示,如果值为1,则对该宏块先进行纠错,而后再滤波。
[0062] 作为本发明的一个实施例,所述对每个宏块计算滤波强度需要在下一行宏块滤波参数读取到片内存储部分之前完成。
[0063] 作为本发明的一个实施例,所述得到滤波强度后,可以随即将滤波强度值存储到片内存储部分中存储该行滤波参数的位置。
[0064] 作为本发明的一个实施例,所述对滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分且不需要滤波的宏块不读取,具体判定方法如表一所示。表一为根据滤波强度判定当前宏块需要读取到和写出的图像数据列表,其中1代表滤波强度为零,0代表不为零。
[0065] 表一:根据滤波强度判定当前宏块需要读取到和写出的图像数据列表[0066]
[0067] 在现代视频编码中,计算滤波强度需要的滤波参数包括运动矢量、子块残差编码数组、参考图像编号、宏块类型、滤波阈值等。运动矢量由解码芯片支持的最大图像值决定,解码芯片支持的图像越大,运动矢量也越大,需要更大的空间存储,而其他与图像大小无关。考虑到实际的情况,本发明实施例中,对于其他的滤波参数进行了必要的化简,具体方案如下:
[0068] I、P、B帧图像的滤波强度是不同的,对于I帧,绝大多数的子块边都需滤波;而对于P、B帧,实际上相当多的宏块不需滤波。因此,本发明实施例中通过提高P、B帧的滤波性能可以显著提高整个解码芯片的性能。作为本发明的一个实施例,对于宏块类型只要判定当前宏块的宏块类型是否为I宏块即可,仅需1比特数据描述。只需将1比特的宏块类型数值存储到片外存储部分中,而不需使用大约5、6比特的整个宏块类型数据。
[0069] 每个参考帧编号在计算滤波强度的过程中主要用来判定不同子块参考帧编号差31 31
是否>=4,现有技术中每个参考帧编号定义为32比特,可以表示-2 ~2 -1范围。作为
26 26
本发明的一个实施例,将每个参考帧编号定义为27比特,可以表示-2 ~2 -1范围。实际码流几乎不会超越这一范围,因而该化简可行。
[0070] 假设实际芯片系统采用的数据总线为32比特。如果要支持720×576大小的图像,每个宏块的滤波参数即使经过简化后也需要500多比特,至少需要十几个时钟周期才可能完成读取,设参数读取的时钟周期为T。假设我们连续读取一行宏块的滤波参数,当在完成第一个宏块参数读取到后,继续读取下一个宏块参数,同时计算第一个宏块的滤波参数。设计算一个宏块滤波强度的时钟周期数为S,只要S<T,则可以在读取下一个宏块信息的同时,完成上一行宏块滤波强度的计算。这样在第一行滤波参数读取结束后再需要S个时钟周期可以得到整行宏块的滤波强度,不仅更快的得到了滤波强度,还大大节省了片内存储空间。对于720×576大小的图像,每个宏块在计算前需要保留的滤波参数大约有500多比特,而计算后滤波强度值只有100多比特,约为原来的1/5。
[0071] 假设采用相同的滤波强度计算结构,现有技术的方法计算完一行至少需要(T×n+S×n)个时钟周期,而本发明实施例中,仅需(T×n+S)个时钟周期,节约了S×(n-1)个时钟周期,其中n表示一行图像的宏块个数。对于720宽度的图像,n=45。
[0072] 图5示出了本发明实施例提供的对整帧图像进行滤波的流程,详述如下:
[0073] 在步骤S501中,对整个图像帧的码流进行解析;
[0074] 在步骤S502中,简化部分参数,并写滤波参数到片外存储部分;
[0075] 在步骤S503中,判断整帧图像是否解完,是则执行S504,否则执行S501;
[0076] 在步骤S504中,从片外存储部分读取一行滤波参数,并并行实时计算上一行的滤波强度;
[0077] 在步骤S505中,判断当前行宏块所有参数是否已读取到内部存储部分,是则执行S507,否则执行S506;
[0078] 在步骤S506中,从片外存储部分读取一行滤波参数,并并行实时计算滤波强度;
[0079] 在步骤S507中,对当前行每个宏块进行去块滤波;
[0080] 在步骤S508中,判断是否完成一行的滤波,是则执行S509,否则返回执行S507;
[0081] 在步骤S509中,判断整帧是否完成,是则结束,否则返回执行S505。
[0082] 由于对一行的滤波强度的计算需要上一行的滤波数据,做为本发明的一个实施例,片内存储部分提供存放两行的数据的空间,在结束第一行数据的读取后,继续读取第二行数据,整个读写操作完全与读取第一行类似。与现有技术的滤波流程相同的是片内存储部分也存放两行的数据,但现有技术的流程因未完成滤波强度的计算,存放的为滤波参数,而本发明实施例中片内存储部分存放的是两行滤波强度值。当开始任何一行图像滤波时,都可以得到当前宏块左右和下方宏块的滤波强度信息。
[0083] 这个滤波流程为滤波避免读取不必要的图像值提供了可能。可以分为五种情况来区分是否读取当前宏块图像信息到内部存储部分,以及读取哪些部分。图6示出了本发明实施例提供的一个宏块的子块编号,对于任意一个宏块,标记16个子块编号为0~15。表二列出了16×16宏块图像值读取情况的列表,同样当前宏块写出情况也可以分为五种情况,见表三宏块图像值写出情况分析。例如当前宏块所有边滤波强度为零,如果右边宏块的左侧垂直滤波强度为零,同时下方宏块的上方水平滤波强度为零,则整个当前宏块不需要读取。
[0084] 表二:宏块图像值读取情况分析
[0085]
[0086] 表三:宏块图像值写出情况分析

[0087] 总之,正是由于滤波强度的提前计算可提供出完成的宏块滤波信息,使得可以在整个滤波过程中,完全去除掉不必要的解码图像数据的读写数据总线DMA的操作。
[0088] 本发明另一个实施例中,提供了一种在视频解码中采用本发明的滤波前期的数据处理方法的解码器。图7示出了本发明实施例提供的解码器硬件结构,其中解码器包括:
[0089] 码流解析系统701,用于逐宏块解码整帧图像信息;
[0090] 片外存储部分705,用于存储整帧图像数据,包括滤波参数和未滤波的图像数据;
[0091] 滤波处理系统702,用于处理每个宏块的滤波参数,逐宏块存储整帧图像的滤波参数信息到片外存储部分,并对每个宏块计算滤波强度,即逐行将滤波参数读取到片内存储部分并同时并行计算每行宏块的滤波强度,得到滤波强度后随即将滤波强度值存储到片内存储部分中;
[0092] 去块滤波系统703,用于对每个宏块的滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分并进行滤波,不需要滤波的宏块不读取;以及[0093] 数据总线704,用于实现芯片外和芯片内数据的交换。
[0094] 作为本发明的一个实施例,所述处理每个宏块的滤波参数的步骤包括创建错误表并计算错误标示。
[0095] 作为本发明的一个实施例,所述处理每个宏块的滤波参数的步骤包括判断宏块类型是否为I宏块。
[0096] 作为本发明的一个实施例,所述处理每个宏块的滤波参数的步骤包括化简滤波参数,所述滤波参数包括参考图像编号。
[0097] 作为本发明的一个实施例,所述整帧图像所有宏块的滤波参数信息包括宏块类型、参考图像编号,但不包括错误标示。
[0098] 作为本发明的一个实施例,所述对每个宏块计算滤波强度需要在下一行宏块滤波参数读取到片内存储部分之前完成。
[0099] 作为本发明的一个实施例,所述得到滤波强度后,可以随即将滤波强度值存储到片内存储部分中存储该行滤波参数的位置。
[0100] 作为本发明的一个实施例,所述对滤波强度进行判断后,再将需要滤波的宏块从片外存储部分读取到片内存储部分且不需要滤波的宏块不读取,具体判定方法如表一所示。
[0101] 作为本发明的一个实施例,所述解码器应用于移动多媒体处理器中。
[0102] 作为本发明的一个实施例,所述解码器支持最大图像720×576,现有技术中每个宏块的滤波参数共有567比特,具体参数见表四所示。
[0103] 表四:现有技术中的当前宏块滤波参数数据列表
[0104]
[0105] 本发明实施例中对以下参数进行化简,见表五:
[0106] 1、计算滤波强度时,并不关心具体的宏块类型,只要判断当前宏块是否为I宏块即可。因而在解码时提前根据宏块类型,计算出宏块是否为I宏块,用1比特表示;
[0107] 2、实际应用中,计算滤波强度时,关心的是不同子块用到参考帧编号差值,只需27比特即可;
[0108] 3、考虑到整帧图像错误标示维护的方便,在解码器内部维护该标示,即错误标示存储于内部存储部分,不需从片外存储部分写出内部存储器。
[0109] 表五:简化后计算当前宏块滤波强度的滤波参数数据
[0110]
[0111] 比较表四和表五可得,经过化简的滤波参数减少了25比特。
[0112] 作为本发明的一个实施例,数据总线DMA宽度为32比特,现有技术的滤波参数每个宏块至少需要567/32=18个读/写时钟周期来完成,简化后减少了一个读/写时钟周期。对于大小为720×576的图像,每帧图像相应减少了1620个读/写时钟周期。
[0113] 作为本发明的一个实施例,将并行计算滤波强度的过程描述如下:
[0114] 首先由滤波处理系统读取图像前两行的滤波参数,并计算出滤波强度存储到片内存储部分。而后去块滤波系统开始第一行滤波操作。完成后再由滤波处理系统读取到下一行滤波参数,并完成计算。而后去块滤波进行下一行滤波操作。如此循环,直到完成最后一行操作。
[0115] 如图1所示,对于一个含有16个子块的16×16宏块宏块需要计算32条边的滤波强度,每个数据总线DMA读时钟周期对应一个时钟周期,读取一个宏块的滤波参数则至少需要17个时钟周期。本发明的实施例中,采用一次计算四条边滤波强度的方法,一个宏块需要12个时钟周期完成计算,其中垂直边界和水平边界强度计算各需要6个时钟周期。
[0116] 对于垂直边界滤波强度计算,左侧边界滤波强度计算需要读取左侧宏块的滤波参数,加上读取当前宏块滤波参数,需要两个时钟周期完成,垂直边界共有16条边,计算需要4个时钟周期,共需要6个时钟周期;
[0117] 对于水平边界滤波强度计算,上方边界滤波强度计算需要读取上方宏块的滤波参数,加上读取当前宏块滤波参数,需要两个时钟周期完成,再加上计算需要的4个时钟周期,共需要6个时钟周期。
[0118] 由此可得,计算一个宏块的滤波强度需要12个时钟周期,小于滤波参数读取到时间的最小值。
[0119] 作为本发明的一个实施例,滤波参数在片外存储部分存储的顺序与表五对应,即先存储400比特运动矢量,然后依次存储子块残差编码数组、宏块类型等。片内存储部分设两个400比特运动矢量存储部分,标记为M0,M1;一个142比特其他参数存储部分,标记为E。图8示出了以一行4个宏块为例的滤波强度计算的流程,一次读取一行宏块的滤波参数,然后对该行每一个宏块进行强度计算,假设一行有4个宏块,假设不计入数据总线DMA请求等待时间,具体流程如下:
[0120] 在步骤S801中,读取第一个宏块的滤波参数,运动矢量存储到M0,其他参数存储到E,共需17个时钟周期完成;
[0121] 在步骤S802中,读取第二个宏块的滤波参数,共需17个时钟周期完成,前12个时钟周期中读取运动矢量存储到M1,并同时计算第一个宏块的滤波强度,从第13个时钟周期到17个时钟周期,读取运动矢量剩余比特和其他参数分别存储到M1和E,此时第一个宏块滤波强度计算完成,不再需要用到E中的数据;
[0122] 在步骤S803中,读取第三个宏块的滤波参数,共需17个时钟周期完成,前12个时钟周期中读取运动矢量存储到M0,并同时计算第二个宏块的滤波强度,从第13个时钟周期到17个时钟周期,读取运动矢量剩余比特和其他参数分别存储到M0和E;
[0123] 在步骤S804中,读取第四个宏块的滤波参数,其他操作类似步骤S803;
[0124] 在步骤S805中,计算第四个宏块的滤波参数,共需12个时钟周期。
[0125] 在不计入数据总线请求等待时间的情况下,完成一行4个宏块参数读取和计算,一共需要17×4+12=80个时钟周期。假设采用和本发明实施例中同样的滤波强度计算系统结构,现有技术的方法,一次计算四条边,参数读取后再计算滤波参数,共需要17×4+12×4=116个时钟周期。
[0126] 本发明实施例中当前宏块计算滤波强度后各滤波参数数值变为101比特,具体数值见表六。
[0127] 表六:当前宏块计算滤波强度后各参数数据
[0128]
[0129]
[0130] 表六所述上方宏块量化参数,在本发明实施例中,进行去块滤波时,只能够得到当前宏块左右和下方宏块滤波信息,没有上方宏块信息。然而,在去块滤波时需要用到上方宏块的量化参数,因此在计算中会将每个宏块上方的量化参数存储到到当前宏块的滤波信息中,即表六所述上方宏块量化参数。
[0131] 实践证明,本发明实施例中的解码芯片,在性能和面积上均改进很大,具体的实验数据如表七所列。
[0132] 表七:本发明实施例提供的方法与现有技术的方法性能和面积的对比[0133]
[0134] 从表七中可以看到,对于现有技术的方法处理器中决定滤波部分的芯片面积的为逻辑部分和片内存储部分,假定片内存储部分一个比特占用一个门,则为128K,而本发明实施例的方法芯片的面积为69K,芯片总面积节省了约1-69/128=46%,整个滤波过程的滤波性能提高约77%。由于片内至少需要保存两行宏块滤波参数。现有技术的方法存放的滤波参数,每个宏块需要567比特。对于720×576大小图像,一行共45个宏块。现有技术的方法片内存储容量为567×45=25515比特。作为本发明的一个实施例,仅需101×45=4545比特,约为现有技术方法的18%。在芯片额定的工作频率下,解码速度为30帧/秒,整个码流解析可以实时解码720×576大小图像,实现了流畅的播放720×576大小的视频图像。
[0135] 与现有技术的方案相比,本发明实施例可以节省片内滤波参数存储部分,滤波强度的计算过程隐藏在滤波参数的读取过程中,并且在滤波过程中完全避免了不需要滤波图像数据的读取,提高了去块滤波的性能;并且计算后的滤波参数数据量小,节省了片内存储部分;并避免不需要滤波的图像值读取到,提高了去块滤波数据读取部分性能。
[0136] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。