+

CN101715127B - 一种环路滤波方法和环路滤波系统 - Google Patents

一种环路滤波方法和环路滤波系统 Download PDF

Info

Publication number
CN101715127B
CN101715127B CN 200910237789 CN200910237789A CN101715127B CN 101715127 B CN101715127 B CN 101715127B CN 200910237789 CN200910237789 CN 200910237789 CN 200910237789 A CN200910237789 A CN 200910237789A CN 101715127 B CN101715127 B CN 101715127B
Authority
CN
China
Prior art keywords
piece
sub
filtering
data
buffer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN 200910237789
Other languages
English (en)
Other versions
CN101715127A (zh
Inventor
戴春泉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Vimicro Corp
Original Assignee
Wuxi Vimicro Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuxi Vimicro Corp filed Critical Wuxi Vimicro Corp
Priority to CN 200910237789 priority Critical patent/CN101715127B/zh
Publication of CN101715127A publication Critical patent/CN101715127A/zh
Application granted granted Critical
Publication of CN101715127B publication Critical patent/CN101715127B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明提供了一种环路滤波方法和环路滤波系统,所述方法包括:逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波。本发明还提供一种环路滤波系统。根据本发明的环路滤波方法,减少了宏块数据的保存数量,节省了内存空间。并且,本发明减少了子块的读取次数和数据的存取时间,提高了读取的速率,此外,采用规则的滤波顺序,降低了硬件设计的复杂度,硬件开销少。

Description

一种环路滤波方法和环路滤波系统
技术领域
本发明涉及数字视频解码技术领域,特别是涉及一种环路滤波方法和环路滤波系统。 
背景技术
硬件解码器通常以宏块为单位以流水线的方式解码,解码顺序为从左到右,从上到下。以一个64×64像素大小的图像为例,其包括4×4的宏块数,每个宏块包含4×4个子块,根据RV9的解码顺序规定,其硬件滤波顺序如图1所示。图中左边的编号是宏块的编号,U指宏块的上3行子块,L指该宏块的下边一行子块,括号内的数字为硬件的滤波顺序。 
上级流水线对一个宏块解码后送给滤波器(filter)做滤波,filter要把这个宏块的数据保存在自己的内存中。比如上级流水线完成了宏块6的解码,则需要保存当前宏块6到内存中,此时可以对前宏块6上边的一行子块2L和其左边宏块的上边三行子块5U进行滤波,而5U的滤波又需要5U相邻的左边一列子块,通常会把与5U相邻的左边的宏块都保存下来,即filter读入当前宏块时,需要保存当前宏块、其上边的一行块、其左边的宏块和其左边宏块的左边宏块,共四部分宏块以及相应宏块的控制信息,以判断滤波强度进行滤波。需要指出的是,整个0L,1L,2L,3L都保存在内存中,因为它们都是宏块0、1、2、3没有完成滤波的最下一行块。此外,图像的边缘不滤波。 
一般来说,RV9的环路滤波是基于子块的环路滤波,它按照子块的顺序,把每一个子块的下边、左边、上边分别作滤波。对于每一个子块,边的滤波顺序与边的强度有关。如图2所示,为一个子块的边的滤波顺序示意图,当下边201为普通或弱滤波强度,上边203为强滤波强度时,如果左边202为普通或弱滤波强度,则滤波顺序为:下边201、左边202、上边203;如果左边202为强滤波强度,则滤波顺序为:下边201、上边203、左边202。此外,如果下边201为强滤波强度,那么就不做该边的滤波,下边201作为下面一 个子块的上边做滤波;如果上边203为普通或弱滤波强度,那么也不做上边的滤波,上边203作为上面一个子块的下边做滤波。 
参照图3,为RV9环路滤波系统的示意图。对于宏块内部的单个的子块,其滤波计算方式如下:首先读取当前子块到缓存器0(buf0),然后根据滤波顺序,选择相应的滤波模式,读入当前子块滤波需要的上边(up)或左边(left)或下边(bottom)子块到缓存器1(buf1)中,进行滤波计算。然后把当前子块和滤波需要的子块分别保存在buf0和buf1中,之后判断当前子块的滤波是否完成。如果当前子块的滤波没有完成,则把buf1中的子块写回原来的位置,再根据滤波顺序读入下次需要的子块到buf1中;如果滤波完成,则把buf0和buf1中的子块都写回原来的位置。 
由于滤波的顺序由滤波强度等决定,所以滤波顺序不固定,但是一条边如果在这个子块被滤波了那么就不在相邻块滤波了,所以每个宏块的读写次数可能不一样,但是平均看读写次数是固定的。以一个帧内编码的宏块为例,第一行4个子块,每个子块都要对下、上、左三条边滤波,需要读入当前子块和其下边的子块、上边的子块、左边的子块,共4个子块,并将结果写回,需要4×4=16次读写;第二行和第三行的上边是弱滤波强度,因此要对下边和左边两条边滤波,需要读入当前子块和其下边的子块、左边的子块,共3个子块,并将结果写回,需要2×(4×3)=24次读写;第四行上边是弱滤波强度,下边是强滤波强度,只需要对左边一条边滤波,需要读入当前子块和其左边的子块,共2个子块,并将结果写回,需要4×2=8次读写;16+24+8=48,则平均滤波一个宏块需要读写48次子块。 
由以上的分析可知,根据RV9的滤波顺序,要想硬件实现滤波,需要保存比较多的子块数据,并且由于数据的读取次数比较多,耗费的计算时间也比较长,同时这种不规则的计算顺序会使硬件设计的复杂度提高。 
总之,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够改进滤波方法,从而减少数据的存储量以及数据的读取次数。 
发明内容
本发明所要解决的技术问题是提供一种环路滤波的方法和环路滤波系统,以减少数据的保存量和数据的读取次数。 
为了解决上述问题,本发明公开了一种环路滤波方法,包括: 
逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波; 
其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波; 
所述每一列子块的各个子块的水平边滤波或每一行子块的各个子块的垂直边滤波具体包括: 
C1,对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子块的数据到第一缓存器和第二缓存器中;其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定义为左边子块; 
C2,当右边子块为所在列或行的奇数块时,将所述两个缓存器中子块的数据输入到滤波器中,对右边子块的一条边进行滤波计算;然后保存右边子块的数据到第二缓存器中,写回左边子块的数据;然后读取新的右边子块的数据,交换输入到第一缓存器中,继续C3; 
C3,当右边子块为所在列或行的偶数块时,将所述两个缓存器中子块的数据交换输入到滤波器中,对右边子块的一条边进行滤波计算;然后保存右 边子块的数据到第一缓存器中,写回左边子块的数据;然后读取新的右边子块的数据保存到第二缓存器中,返回C2; 
循环执行C2和C3,直到该列或该行子块的最后一个子块的一条边滤波完成,然后写回左边子块和右边子块的数据; 
其中,进行水平边的滤波时,所述一条边为水平边,进行垂直边的滤波时,所述一条边为垂直边。 
进一步,所述水平边为滤波子块的上边一条边;所述垂直边为滤波子块的左边一条边。 
进一步,所述选取宏块的顺序为从左到右、从上到下。 
本发明还提供了一种环路滤波系统,包括: 
滤波器,用于逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波; 
第一缓存器和第二缓存器,用于对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子块的数据进行保存,之后将子块的数据输入到滤波器中,并在每一个右边子块的一条边通过滤波器滤波后,读入右边子块的缓存器保存右边子块的数据,另一个缓存器写回左边子块的数据并读取新的右边子块的数据进行保存,并对新的右边子块进行滤波,循环执行依次对子块滤波,直到每一列或每一行子块的最后一个子块的一条边滤波完成,写回左边子块和右边子块的数据; 
其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定义为左边子块; 
第一交换器,用于当第二缓存器中保存滤波后的右边子块的数据时,将读取的新的右边子块的数据交换输入到第一缓存器中; 
第二交换器,用于当第一缓存器中保存滤波的右边子块的数据时,将所述两个缓存器中子块的数据交换输入到滤波器中; 
其中,进行水平边的滤波时,所述一条边为水平边,进行垂直边的滤波时,所述一条边为垂直边。 
进一步,所述滤波器选取宏块的顺序为从左到右、从上到下。 
与现有技术相比,本发明具有以下优点: 
本发明对现有的RV环路滤波方法进行了改进,将原来的按照子块的顺序进行滤波计算的方法,改为按照边的顺序进行滤波:按照从上到下、从左到右的顺序,先做水平边的滤波,再按照从左到右、从上到下的顺序,做垂直边的滤波;或者先做垂直边的滤波再做水平边的滤波。根据本发明滤波的顺序,宏块选取的顺序为从左到右、从上到下。该顺序只需要保存当前宏块,其上边一行块和其左边的宏块,以及相应宏块的控制信息用于进行滤波,相对于现有技术中需要保存四个宏块以及相应宏块的控制信息来说,减少了数据的保存量,节省了内存空间。 
同时,对于宏块内部4×4的子块,根据本发明的滤波顺序,每一列子块水平边的滤波需要读写该列上边的1个块和该列的4个子块,共5个子块,水平边滤波完需要读写20次子块;每一行块垂直边的滤波需要读写该行左边的1个块和该行的4个子块,共5个子块,垂直边滤波完需要读写20次子块;则平均滤波一个宏块需要读写40次子块,而现有技术中以子块为单位的滤波顺序,平均滤波一个宏块需要读写48次子块。该方法与现有技术相比,减少了子块的读取次数,减少了数据的存取时间。同时,该方法采用规则的滤波顺序,降低了硬件设计的复杂度,硬件开销少,易于实现。 
附图说明
图1是现有技术RV9对于4×4宏块的的滤波顺序示意图; 
图2是一个子块的边的滤波顺序示意图; 
图3是现有技术RV9环路滤波系统的示意图; 
图4是本发明实施例的一个宏块的4×4个子块的滤波顺序示意图; 
图5是本发明实施例每一列子块的各个子块的水平边滤波流程图; 
图6是本发明实施例每一行子块的各个子块的垂直边滤波流程图; 
图7是本发明的一种水平边滤波或垂直边滤波优选实施例的流程图; 
图8是本发明一种环路滤波系统实施例的示意图。 
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。 
本发明将RV9原有的按照块的顺序进行滤波的方法,改为按照边的顺序进行滤波,本发明所述的一种环路滤波方法,包括:逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波。 
如图4所示,为本发明实施例的一个宏块的4×4个子块的滤波顺序示意图。本发明实施例逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波。图中的编号代表了子块边的滤波顺序,假设子块按照从上到下、从左到右的顺序定义为子块1、子块2......,其标号与水平边的滤波顺序相对应。对于一个宏块,从1到32,共 需要对32条边进行滤波,其中,1至16为水平边的滤波顺序,17至32为垂直边的滤波顺序。子块按照从上到下、从左到右的顺序定义为子块1、子块2......,其标号与水平边的滤波顺序相对应。 
首先,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波,即按照水平边1、2、3、4,水平边5、6、7、8......的顺序进行滤波,直到水平边16滤波完成,则该宏块的水平边滤波完成。 
其次,按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波,即按照垂直边17、18、19、20,垂直边21、22、23、24......的顺序进行滤波,直到垂直边32滤波完成,则该宏块的垂直边滤波完成。 
根据宏块的解码顺序,选取相应的宏块进行滤波,由于宏块的下边一条边和右边一条边的滤波需要其相邻的下边宏块和右边宏块,而下边宏块和右边宏块的解码还未完成,因此,本发明实施例选取滤波的水平边为当前子块的上边一条边;选取的滤波的垂直边为当前子块的左边一条边。 
具体的,参照图5,为本发明实施例每一列子块的各个子块的水平边滤波流程图,包括: 
步骤501,对于每一列子块的第一个子块,读取滤波子块和滤波子块上边的子块的数据; 
根据本发明实施例,例如对于宏块最左边的一列子块的水平边滤波,首先读取第一个需要滤波的子块和其上边的子块的数据,将子块1上边的子块记为子块0,则本步骤读取子块1和子块0的数据。 
步骤502,利用所述滤波子块和滤波子块上边的子块的数据对滤波子块的水平边进行滤波计算; 
利用读取到的子块1和子块0的数据,对子块1的水平边1进行滤波计算。 
步骤503,保存滤波子块的数据,写回滤波子块上边的子块的数据; 
由于上一步中对子块1的水平边1滤波完成,因此按照从上到下的顺序开始对下一个子块,子块2进行滤波,而子块2的滤波需要用到子块1的数据,子块0的数据不再需要,因此本步骤保存子块1的数据,写回子块0的 数据。 
步骤504,读取滤波子块下边的子块的数据,所述滤波子块下边的子块作为新的滤波子块,上述保存的滤波子块作为所述新的滤波子块上边的子块; 
读取子块1下边的子块2的数据,则子块2作为新的滤波子块,保存的子块1作为子块2上边的子块,以用来对子块2进行滤波。 
步骤505,返回502循环执行502到504,直到该列子块的最后一个子块的水平边滤波完成,写回滤波子块和滤波子块上边的子块的数据。 
利用子块2和子块1的数据,对子块2的水平边2进行滤波计算。 
之后如前所述,保存子块2的数据,写回子块1的数据,读取子块2下边的子块3的数据,子块3作为新的滤波子块,利用子块3和子块2的数据,对子块3的水平边3进行滤波计算。 
之后保存子块3的数据,写回子块2的数据,读取子块3下边的子块4的数据,子块4作为新的滤波子块,利用子块4和子块3的数据,对子块4的水平边4进行滤波计算。子块4作为该列的最后一个子块,其水平边滤波完后,按照从左到右的顺序,要对下一列子块的水平边滤波,因此子块4的数据不再需要,此时写回子块4和子块3的数据。 
其他列子块的各个子块的水平边滤波与上述最左边一列的水平边滤波的方法相似。 
参照图6,为本发明实施例每一行子块的各个子块的垂直边滤波流程图,包括: 
步骤601,对于每一行子块的第一个子块,读取滤波子块和滤波子块左边的子块的数据; 
根据本发明实施例,例如对于宏块最上边的一行子块的垂直边滤波,首先读取第一个需要滤波的子块和其左边的子块的数据,将子块1左边的子块记为子块0’,则本步骤读取子块1和子块0’的数据。 
步骤602,利用所述滤波子块和滤波子块左边的子块的数据对滤波子块的垂直边进行滤波计算; 
利用读取到的子块1和子块0’的数据,对子块1的垂直边17进行滤波计算。 
步骤603,保存滤波子块的数据,写回滤波子块左边的子块的数据; 
由于上一步中对子块1的垂直边17滤波完成,因此按照从左到右的顺序开始对下一个子块,子块5进行滤波,而子块5的滤波需要用到子块1的数据,子块0’的数据不再需要,因此本步骤保存子块1的数据,写回子块0’的数据。 
步骤604,读取滤波子块右边的子块的数据,所述滤波子块右面的子块作为新的滤波子块,上述保存的滤波子块作为所述新的滤波子块上边的子块; 
读取子块右边的子块5的数据,则子块5作为新的滤波子块,保存的子块1作为子块5左边的子块,以用来对子块5进行滤波。 
步骤605,返回602循环执行602到604,直到该行子块的最后一个子块的垂直边滤波完成,写回滤波子块和滤波子块左边的子块的数据。 
利用子块5和子块1的数据,对子块5的垂直边18进行滤波计算。 
之后如前所述,保存子块5的数据,写回子块1的数据,读取子块5右边的子块9的数据,子块9作为新的滤波子块,利用子块9和子块5的数据,对子块9的垂直边19进行滤波计算。 
之后保存子块9的数据,写回子块5的数据,读取子块9右边的子块13的数据,子块13作为新的滤波子块,利用子块13和子块9的数据,对子块13的垂直边20进行滤波计算。子块13作为该行的最后一个子块,其垂直边滤波完后,按照从上到下的顺序,要对下一行子块的垂直边滤波,因此子块13的数据不再需要,此时写回子块13和子块9的数据。 
其他行子块的各个子块的垂直边滤波与上述最上边一行的垂直边滤波的方法相似。 
对于宏块内部4×4的块,根据本发明的滤波顺序,每一列块水平边的滤波,以图中最左边一子块列为例,子块1的滤波需要读入子块1和其上边的子块0,滤波完成后写回子块0;子块2的滤波需要读入当前滤波的子块2, 滤波完成后写回子块1;子块3的滤波同子块2的滤波,需要读入当前滤波的子块3,滤波完成后写回当前滤波的子块上边的子块2;子块4的滤波需要读入当前滤波的子块4,滤波完成后写回当前滤波的子块4和其上边的子块3。完成该列子块的滤波需要读写5个子块,即完成子块0、子块1、子块2、子块3、子块4的读写,所以每一列子块的滤波需要读写5个子块,其他列子块的滤波与此类似,则一个宏块完成水平边的滤波需要读写5×4=20个块。每一行子块垂直边的滤波与水平边的滤波类似,需要读写该行左边的1个子块和该行的4个子块,共5个子块,其他行子块的滤波与此类似,则一个宏块完成垂直边的滤波需要读写20个子块。则平均滤波一个宏块需要读写40次子块。 
本发明按照边的顺序进行滤波,与现有技术中按照块的顺序进行滤波相比,平均滤波一个宏块由原来的读写48次子块减少为读写40次子块,减少了子块的读取次数,减少了数据的存取时间,提高了读取的速率。同时,该方法采用规则的滤波顺序,并不改变边的滤波强度与滤波器的计算方法,总的滤波计算时间少,硬件设计的复杂度较低,硬件开销少。 
如图7所示,为本发明的一种水平边滤波或垂直边滤波优选实施例的流程图,具体包括: 
步骤701,对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子块的数据到第一缓存器和第二缓存中;其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定义为左边子块; 
根据本发明实施例,参照图4,例如选取最左边的第二列子块进行水平边的滤波,则该列的子块5为第一个滤波的子块,定义为右边子块,子块5上边的子块5’,定义为左边子块,则将读取子块5’读取到第一缓存器buf1中,将子块5读取到第二缓存器buf2中。 
步骤702,当右边子块为所在列或行的奇数块时,将所述两个缓存器中 子块的数据输入到滤波器中,对右边子块的一条边进行滤波计算; 
作为右边子块的子块5为所在列的第一块,即奇数块,由于滤波器的一端接收从buf1中输入的左边字块,另一端接收从buf2中输入的右边子块,则将buf1中作为左边字块的子块5’和buf2中作为右边子块的子块5的数据分别输入到滤波器中进行滤波计算,对子块5的水平边5进行滤波。 
步骤703,保存右边子块的数据到第二缓存器中,写回左边子块的数据;然后读取新的右边子块的数据,交换输入到第一缓存器中,转至步骤704; 
由于要对下一个子块6进行滤波,子块6水平边的滤波需要用到与其相邻的子块5,子块5’的数据不再需要,因此,buf2保存滤波后子块5的数据,此时子块5转换为左边子块,buf1写回子块5’的数据,buf1为空。之后buf1需要读取子块6的数据,由于buf1读取的是左边子块的数据,buf2读取的是右边子块的数据,滤波的子块6此时作为新的右边子块,因此,需要交换输入到buf中的子块的数据,将子块6的数据输入到空的buf1中。 
步骤704,当右边子块为所在列或行的偶数块时,将所述两个缓存器中子块的数据交换输入到滤波器中,对右边子块的一条边进行滤波计算; 
作为右边子块的子块6为所在列的第二块,即偶数块,由于滤波器的一端接收从buf1中输入的左边字块,另一端接收从buf2中输入的右边子块,而此时buf1中存储的是作为右边子块的子块6,buf2中存储的是作为左边子块的子块5,因此将buf1和buf2中子块的数据交换输入到滤波器中进行滤波计算,对子块6的水平边6进行滤波。 
步骤705,保存右边子块的数据到第一缓存器中,写回左边子块的数据;然后读取新的右边子块的数据保存到第二缓存器中,转至步骤702; 
由于要对下一个子块7进行滤波,子块7水平边的滤波需要用到与其相邻的子块6,子块5的数据不再需要,因此,buf1保存滤波后子块6的数据,此时子块6转换为左边子块,buf2写回子块5的数据,buf2为空。之后读取子块7的数据,滤波的子块7此时作为新的右边子块保存在buf2中。 
步骤706,循环执行步骤702至705,直到该列或该行子块的最后一个子块的一条边滤波完成,写回左边子块和右边子块的数据。 
此时,作为右边子块的子块7为所在列的第三块,即奇数快,则将buf1中作为左边字块的子块6和buf2中作为右边子块的子块7的数据分别输入到滤波器中进行滤波计算,对子块7的水平边7进行滤波。 
之后要对下一个子块8进行滤波,同上所述,子块8水平边的滤波需要用到与其相邻的子块7,子块6的数据不再需要,因此,buf2保存滤波后子块7的数据,此时子块7转换为左边子块,buf1写回子块6的数据,buf1为空。之后buf1需要读取子块8的数据,由于buf1读取的是左边子块的数据,buf2读取的是右边子块的数据,因此,需要交换输入到buf中的子块的数据,将作为新的右边子块子块8的数据输入到空的buf1中。 
作为右边子块的子块8为所在列的第四块,即偶数块,由于此时buf1中存储的是作为右边子块的子块8,buf2中存储的是作为左边子块的子块7,因此同上所述将buf1和buf2中子块的数据交换输入到滤波器中进行滤波计算,对子块8的水平边8进行滤波。 
至此,该列最后一个子块的水平边滤波完,需要对下一列子块的水平边进行滤波,子块8的数据不再需要,因此写回作为左边子块的子块7和作为右边子块的子块8的数据。 
其他各列和各行子块边的滤波方法与上述是类似。 
进一步,本发明实施例逐个选取宏块进行滤波,选取宏块的顺序为从左到右、从上到下。根据本发明宏块的读取顺序,上级流水线完成一个宏块解码后,即可以对该宏块进行滤波,此除当前滤波的宏块外,还需要用到其上边的一行子块、其左边宏块的最右边一列块,一般会把左边的宏块都保存下来,因此,需要保存当前宏块、当前宏块上边的一行块、当前宏块左边的宏块,一共三部分宏块的数据以及相应宏块的控制信息用于进行滤波。现有技术中上级流水线完成了当前宏块的解码后,需要保存当前宏块、其上边的一行块、其左边的宏块和其左边宏块的左边宏块,共四部分宏块的数据以及相应宏块的控制信息以进行滤波。本发明与现有技术相比,减少了宏块数据的保存数量,节省了内存空间。 
参照图8,示出了本发明一种环路滤波系统实施例的示意图,包括: 
滤波器801,用于逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波。 
进一步,所述环路滤波系统还包括: 
第一缓存器802和第二缓存器803,用于对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子块的数据进行保存,之后将子块的数据输入到滤波器中,并在每一个右边子块的一条边通过滤波器滤波后,读入右边子块的缓存器保存右边子块的数据,另一个缓存器写回左边子块的数据并读取新的右边子块的数据进行保存,并对新的右边子块进行滤波,循环执行依次对子块滤波,直到每一列或每一行子块的最后一个子块的一条边滤波完成,写回左边子块和右边子块的数据; 
其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定义为左边子块; 
第一交换器804,用于当第二缓存器中保存滤波后的右边子块的数据时,将读取的新的右边子块的数据交换输入到第一缓存器中; 
第二交换器805,用于当第一缓存器中保存滤波的右边子块的数据时,将所述两个缓存器中子块的数据交换输入到滤波器中。 
对每一列或者每一行子块,例如上边第二行子块垂直边的滤波,第一缓存器802读取作为左边子块的子块2’,第二缓存器803读取作为右边子块的子块2,然后所述两个缓存器将子块2’和子块2的数据输入到滤波器801中,对子块2的垂直边21进行滤波计算; 
之后第二缓存器803保存子块2的数据,第一缓存器写回子块2’的数据,由于第一缓存器读取左边子块的数据,第二缓存器读取右边子块的数据,因此第一交换器804,将读取的新的右边子块的数据交换输入到第一缓存器中, 此时第一缓存器保存有作为右边子块的子块6。由于滤波器801的一端接收从buf1中输入的左边字块,另一端接收从buf2中输入的右边子块,因此第二交换器805将所述两个缓存器中子块的数据交换输入到滤波器中,对子块6的垂直边22进行滤波计算。 
之后第一缓存器802保存子块6的数据,第二缓存器803写回子2块的数据,并读取下一个需要滤波的子块10的数据,然后第一缓存器和第二缓存器分别将作为左边子块的子块6和作为右边子块的子块10的数据输入到滤波器801中,对子块10的垂直边23进行滤波计算; 
之后第二缓存器803保存子块10的数据,第一缓存器写回子块6的数据,如上所述第一交换器804将读取的新的右边子块的数据交换输入到第一缓存器中,此时第一缓存器保存有作为右边子块的子块14。然后第二交换器805将所述两个缓存器中子块的数据交换输入到滤波器中,对子块14的垂直边24进行滤波计算。至此,该列最后一个子块的水平边滤波完,需要对下一列子块的水平边进行滤波,因此写回作为左边子块的子块10和作为右边子块的子块14的数据。 
所述滤波系统对其他列和其他行的各个子块的滤波与上述过程相似。 
进一步,所述滤波器801选取宏块的顺序为从左到右、从上到下。 
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。 
以上对本发明所提供的一种环路滤波方法和环路滤波系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。 

Claims (5)

1.一种环路滤波方法,其特征在于,包括:
逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;
其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波;
所述每一列子块的各个子块的水平边滤波或每一行子块的各个子块的垂直边滤波具体包括:
C1,对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子块的数据到第一缓存器和第二缓存器中;其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定义为左边子块;
C2,当右边子块为所在列或行的奇数块时,将所述两个缓存器中子块的数据输入到滤波器中,对右边子块的一条边进行滤波计算;然后保存右边子块的数据到第二缓存器中,写回左边子块的数据;然后读取新的右边子块的数据,交换输入到第一缓存器中,继续C3;
C3,当右边子块为所在列或行的偶数块时,将所述两个缓存器中子块的数据交换输入到滤波器中,对右边子块的一条边进行滤波计算;然后保存右边子块的数据到第一缓存器中,写回左边子块的数据;然后读取新的右边子块的数据保存到第二缓存器中,返回C2;
循环执行C2和C3,直到该列或该行子块的最后一个子块的一条边滤波完成,然后写回左边子块和右边子块的数据;
其中,进行水平边的滤波时,所述一条边为水平边,进行垂直边的滤波时,所述一条边为垂直边。
2.根据权利要求1所述的方法,其特征在于:
所述水平边为滤波子块的上边一条边;所述垂直边为滤波子块的左边一条边。
3.根据权利要求1所述的方法,其特征在于,所述选取宏块的顺序为从左到右、从上到下。
4.一种环路滤波系统,其特征在于,包括:
滤波器,用于逐个选取宏块进行滤波,对于宏块内部的各个子块,先对子块的水平边滤波,再对子块的垂直边滤波;或者先对子块的垂直边滤波,再对子块的水平边滤波;其中,按照从上到下、从左到右的顺序,依次对每一列子块的各个子块的水平边滤波;按照从左到右、从上到下的顺序,依次对每一行子块的各个子块的垂直边滤波;
第一缓存器和第二缓存器,用于对每一列或者每一行子块的第一个子块,分别读取左边子块和右边子块的数据进行保存,之后将子块的数据输入到滤波器中,并在每一个右边子块的一条边通过滤波器滤波后,读入右边子块的缓存器保存右边子块的数据,另一个缓存器写回左边子块的数据并读取新的右边子块的数据进行保存,并对新的右边子块进行滤波,循环执行依次对子块滤波,直到每一列或每一行子块的最后一个子块的一条边滤波完成,写回左边子块和右边子块的数据;
其中,进行水平边的滤波时,滤波子块定义为右边子块,滤波子块上边的子块定义为左边子块;或者进行垂直边的滤波时,滤波子块定义为右边子块,滤波子块左边的子块定义为左边子块;
第一交换器,用于当第二缓存器中保存滤波后的右边子块的数据时,将读取的新的右边子块的数据交换输入到第一缓存器中;
第二交换器,用于当第一缓存器中保存滤波的右边子块的数据时,将所述两个缓存器中子块的数据交换输入到滤波器中;
其中,进行水平边的滤波时,所述一条边为水平边,进行垂直边的滤波时,所述一条边为垂直边。
5.根据权利要求4所述的系统,其特征在于,所述滤波器选取宏块的顺序为从左到右、从上到下。
CN 200910237789 2009-11-19 2009-11-19 一种环路滤波方法和环路滤波系统 Expired - Fee Related CN101715127B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200910237789 CN101715127B (zh) 2009-11-19 2009-11-19 一种环路滤波方法和环路滤波系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200910237789 CN101715127B (zh) 2009-11-19 2009-11-19 一种环路滤波方法和环路滤波系统

Publications (2)

Publication Number Publication Date
CN101715127A CN101715127A (zh) 2010-05-26
CN101715127B true CN101715127B (zh) 2013-07-24

Family

ID=42418320

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200910237789 Expired - Fee Related CN101715127B (zh) 2009-11-19 2009-11-19 一种环路滤波方法和环路滤波系统

Country Status (1)

Country Link
CN (1) CN101715127B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102572416B (zh) * 2010-12-22 2014-11-05 中兴通讯股份有限公司 视频滤波方法及装置
CN102547296B (zh) 2012-02-27 2015-04-01 开曼群岛威睿电通股份有限公司 移动估计加速电路、移动估计方法及环路滤波加速电路
CN103780914B (zh) * 2012-02-27 2017-04-12 英特尔公司 环路滤波加速电路及环路滤波方法

Also Published As

Publication number Publication date
CN101715127A (zh) 2010-05-26

Similar Documents

Publication Publication Date Title
CN101472173B (zh) 一种去块滤波方法、系统及去块滤波器
CN105681807B (zh) 一种基于h264协议的分像素运动矢量计算方法和装置
US9769474B2 (en) Encoding and decoding methods and apparatuses
US9961354B2 (en) Video codec and motion estimation method
CN101557523A (zh) 活动图像的编码方法
CN104811721A (zh) 视频解码数据存储方法及运动向量数据的计算方法
CN102176750B (zh) 高性能自适应二进制算术编码器
US7515761B2 (en) Encoding device and method
CN101715127B (zh) 一种环路滤波方法和环路滤波系统
CN101996142B (zh) 一种访问存储器的方法及装置
CN101557518B (zh) 运动补偿方法及装置、高速缓存替换方法及装置
US20070092008A1 (en) Context-aware frame memory scheme for motion compensation in video decoding
CN1925616B (zh) 一种宏块对级帧场自适应编解码方法
Wang et al. Motion compensation architecture for 8K UHDTV HEVC decoder
CN101472172B (zh) 一种在视频解码中滤波前期的数据处理方法及解码器
KR102476207B1 (ko) 반도체 장치의 동작 방법 및 반도체 시스템
CN117440168B (zh) 一种实现并行螺旋搜索算法的硬件架构
CN114520916B (zh) 视频编码方法、装置、终端设备以及存储介质
CN104219529A (zh) 图像缩放方法、系统及装置
Ta et al. Low-power high-throughput deblocking filter architecture for H. 264/AVC
US7197076B2 (en) Method for locating partitions of a video image
EP2073553A1 (en) Method and apparatus for performing de-blocking filtering of a video picture
CN105163123B (zh) 一种hevc帧间预测子块mv信息的存取方法和装置
CN103108175A (zh) 多模视频解码器中运动补偿结构
CN118118684A (zh) 分段标识读写装置及方法、解码系统、存储介质及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: WUXI VIMICRO CO., LTD.

Free format text: FORMER OWNER: BEIJING ZHONGXING MICROELECTRONICS CO., LTD.

Effective date: 20110331

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 100083 16/F, SHINING BUILDING, NO. 35, XUEYUAN ROAD, HAIDIAN DISTRICT, BEIJING TO: 214028 610, NATIONAL INTEGRATED CIRCUIT DESIGN PARK (CHUANGYUAN BUILDING), NO. 21-1, CHANGJIANG ROAD, WUXI NEW DISTRICT, JIANGSU PROVINCE

TA01 Transfer of patent application right

Effective date of registration: 20110331

Address after: 214028 national integrated circuit design (21-1), Changjiang Road, New District, Jiangsu, Wuxi, China, China (610)

Applicant after: Wuxi Vimicro Co., Ltd.

Address before: 100083 Haidian District, Xueyuan Road, No. 35, the world building, the second floor of the building on the ground floor, No. 16

Applicant before: Beijing Vimicro Corporation

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130724

Termination date: 20181119

CF01 Termination of patent right due to non-payment of annual fee
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载