CN103780914A - 环路滤波加速电路及环路滤波方法 - Google Patents
环路滤波加速电路及环路滤波方法 Download PDFInfo
- Publication number
- CN103780914A CN103780914A CN201410012310.5A CN201410012310A CN103780914A CN 103780914 A CN103780914 A CN 103780914A CN 201410012310 A CN201410012310 A CN 201410012310A CN 103780914 A CN103780914 A CN 103780914A
- Authority
- CN
- China
- Prior art keywords
- filtering
- macro block
- filter
- accelerating circuit
- pixel
- 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.)
- Granted
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供一种环路滤波加速电路及环路滤波方法。该环路滤波加速电路包括:多个一维滤波器,用以执行一滤波处理;以及一滤波器选择单元,用以依据所述边缘强度以选择所述一维滤波器的一个,对该重建宏块进行该滤波处理;其中该环路滤波加速电路将该重建宏块分为多个第一尺寸宏块及多个第二尺寸宏块,对于该重建宏块中位于同一行的所述第一尺寸宏块的一水平边缘由下而上进行该滤波处理,再对位于同一行的所述第二尺寸宏块的一水平边缘由上而下进行该滤波处理;接着,该环路滤波加速电路对于该重建宏块中位于同一列的所述第一尺寸宏块的一垂直边缘由右至左进行该滤波处理,再对位于同一列的所述第二尺寸宏块的一垂直边缘由左而右进行该滤波处理。
Description
本申请是申请号为201210046566.9、申请日为2012.02.27、发明名称为“移动估计加速电路、移动估计方法及环路滤波加速电路”的发明专利申请的分案申请。
技术领域
本发明涉及视频处理,特别是涉及在视频系统中可重复利用宏块数据以减少存储器频宽消耗的环路滤波加速电路。
背景技术
现今市面上的视频编解码系统已广泛使用各种视频压缩标准,例如是MPEG2、H.264、VC-1等视频编码标准。而在视频编解码系统中,运算量最大的部分为移动估计(motion estimation)及去块滤波处理(de-blockingfiltering),若完全使用软件以进行计算,会造成处理单元相当大的负担。然而,一般硬件电路在进行移动估计及去块滤波处理往往会由外部存储器重复读取先前使用过的宏块数据,而造成存储器频宽的浪费。
因此,需要的是一种能够合理利用硬件资源,同时结合软件算法,有效地进行环路滤波加速的装置和方法,同时,这种装置和方法可以很好的利用重复的数据资源,以减少数据的搬移。
发明内容
有鉴于此,本发明提供一种环路滤波加速电路,用于支持H.264标准及VC-1标准的一视频编解码系统,该视频编解码系统包括一处理单元,用以进行一视频处理以产生至少一重建宏块及其各边缘所对应的一边缘强度(boundary strength)。该环路滤波加速电路包括:多个一维滤波器,用以执行一滤波处理;以及一滤波器选择单元,用以依据边缘强度以选择一维滤波器的一个,对重建宏块进行该滤波处理;其中环路滤波加速电路将重建宏块分为多个8x8宏块及多个4x4宏块,对于重建宏块中位于同一行(row)的8x8宏块的水平边缘由下而上进行滤波处理,再对位于同一行的所述4x4宏块的水平边缘由上而下进行滤波处理;接着,环路滤波加速电路对于重建宏块中位于同一列(column)的8x8宏块的垂直边缘由右至左进行滤波处理,再对位于同一列的所述4x4宏块的垂直边缘由左而右进行滤波处理。
本发明还提供一种环路滤波方法,用于支持H.264标准及VC-1标准的一视频编解码系统中的一环路滤波加速电路,该视频编解码系统包括一处理单元,用以进行一视频处理以产生至少一重建宏块及其各边缘所对应的一边缘强度(boundary strength)。该方法包括下列步骤:将该重建宏块分为多个8x8宏块及多个4x4宏块;依据边缘强度以由多个一维滤波器中选择一个,以对重建宏块进行一滤波处理;对于重建宏块中位于同一行(row)的8x8宏块的水平边缘由下而上进行滤波处理,再对位于同一行的4x4宏块的水平边缘由上而下进行滤波处理;以及对于该重建宏块中位于同一列(column)的8x8宏块的垂直边缘由右至左进行滤波处理,再对位于同一列的4x4宏块的垂直边缘由左而右进行滤波处理。
附图说明
图1是显示依据本发明一实施例的视频编码系统的方块图。
图2是显示依据本发明一实施例的移动估计演算法的搜索起始点预测的示意图。
图3是显示依据本发明一实施例的移动估计演算法的示意图。
图4是显示依据本发明一实施例的水平方向相邻宏块的重迭搜索窗的示意图。
图5A~5D是显示依据本发明一实施例中的搜索窗缓冲器的结构的示意图。
图6是显示依据本发明一实施例的移动估计加速电路的功能方块图。
图7是显示依据本发明一实施例的整数像素估计单元151的硬件结构的方块图。
图8是显示依据本发明一实施例的整数像素估计单元中的处理元件的结构示意图。
图9A~9B是显示依据本发明一实施例的小数像素估计单元中的硬件结构的示意图。
图10是显示依据本发明一实施例的H.264标准的环路滤波顺序的示意图。
图11是显示依据本发明一实施例的VC-1标准的环路滤波顺序的示意图。
图12是显示依据本发明一实施例的去块效应滤波缓冲器的结构的示意图。
图13A~13D是显示依据本发明一实施例的去块效应滤波缓冲器的数据存取循环的示意图。
图14A~14B是显示依据本发明一实施例的环路滤波加速电路的硬件结构的示意图。
图15A~15B是显示依据本发明一实施例的滤波器选择单元的工作原理的示意图。
图16A~16F是显示依据本发明一实施例的H.264一维滤波器的结构的示意图。
图17A~17B是显示依据本发明一实施例的环路滤波加速电路124中的VC-1滤波器的结构的示意图。
图18是显示依据本发明一实施例的视频编解码系统的方块图。
图19A~19B是显示依据本发明一实施例的移动估计方法的流程图。
具体实施方式
A.系统架构
图1是显示依据本发明一实施例的视频编码系统的方块图。视频编码系统100包括一处理单元110、一编码模块120、一外部储存单元130及一DMA控制器160。在进行视频编码(例如MPEG2、H.263、MPEG4等视频压缩标准)时,处理单元110为一控制器,用以执行一硬件加速器控制任务(hardwareaccelerator control program),并执行熵编码任务(entropy encoding program)、比特率控制任务(bit rate control program)及边缘扩展任务等解码后处理(post-processing)任务。举例来说,处理单元110可为一中央处理器(CPU)、数字信号处理器(DSP)或其他可实现相同功能的等效电路。
编码模块120包括硬件加速器控制器121、移动估计加速电路(motionestimation accelerating circuit)122、量化与变换加速器(DCT and quantizationaccelerator)123、环路滤波加速电路(loop filter accelerating circuit)124以及内部储存单元140。在一实施例中,编码模块120可分成硬件编码单元或软件编码单元两部分(未绘示),意即编码模块中的各元件可为硬件或数字信号处理器,用以处理视频编码流程中的移动估计(motion estimation)、移动补偿(motion compensation)、离散余弦变换/反变换(DCT/iDCT)、量化/反量化(quantization/inverse quantization)、帧内/帧间预测(intra-frame/inter-frameprediction)、曲折扫描(zig-zag scan)、环路滤波(in-loop filter)等步骤,而在本发明中移动估计加速电路122及环路滤波加速电路124为一专用的数字电路或硬件以实现H.264标准或VC-1标准的视频编码流程中的移动估计及环路滤波处理。
为便于说明,图1中的编码模块120内的硬件加速器控制器121、移动估计加速电路122、量化与变换加速器123及环路滤波加速电路124是以硬件实现的方式描述,且其余未绘示的视频编码流程可由处理单元110或一硬件加速电路实现。本发明的处理单元110及编码模块120的硬件元件采用帧级流水线控制(frame level flow control),其表示当编码模块120的硬件元件对当前帧(current frame)进行编码时,CPU则对下一帧(next frame)进行编码。而本发明的编码模块120之间的各元件(可全为硬件,或是软硬件结合)的数据处理采用宏块级流水线控制(macroblock level flow control)。外部储存单元130用以储存参考帧(reference frame)、重建帧(reconstructed frame)、及持续长度限制码(run-length limited code,RLL code)。外部储存单元130可为易失性存储器元件(例如随机存取存储器元件(RAM,例如DRAM、SRAM等等))以及非易失性存储器元件(例如ROM、CDROM等等)中任一个或是两者的组合。DMA控制器160用以由外部储存单元130中读取编码流程相关的宏块数据、编码参数。处理单元110或编码模块120中的元件(例如硬件加速器控制器121)可通过DMA控制器160由外部储存单元130读取所需的宏块数据(例如当前宏块、参考宏块等等)至内部储存单元140中。
在一实施例中,处理单元110可控制编码模块120中的各元件。处理单元110先设定与硬件加速器控制器121相关的寄存器(Register),并检查其设定是否正确,接着启动编码模块120开始对当前帧进行编码。处理单元110需要先申请及注册DMA通道,并检查DMA通道的状态,设定与DMA控制器160相关的寄存器以启动DMA控制器。当处理单元110启动编码模块120及DMA控制器160后,编码模块120开始进行编码。需注意的是,编码模块120与处理单元110之间为帧级流水线控制,在硬件加速器结束每一当前帧的编码之前,处理单元110已预先执行一编码任务(例如一程序码)以处理上一帧的熵编码(entropy encoding)及比特率控制(rate control)的计算。上述编码程序可检测硬件编码单元是否已完成当前帧的编码,当编码模块120尚未完成当前帧的编码,则处理单元110的控制权会先交给其他优先顺序较高的就绪任务。更详细地说,当编码模块120完成当前帧的编码后,会产生一中断信号(interrupt signal),处理单元110所执行的一中断服务程序会指派给编码任务一个编码完成的事件,此时编码任务会重新取得处理单元110的控制权并继续处理下一帧。
在另一实施例中,处理单元110还可执行不同的任务以进行编码后处理,例如是熵编码任务、比特率控制任务及边缘扩展任务等。熵编码任务是由外部储存单元130读取编码参数及RLL码以进行熵编码,并输出一图像的视频位流。比特率控制任务是依据当前帧的编码结果、总比特率及帧率(frame rate)以计算出下一帧的量化系数。最后,边缘扩展任务对硬件编码单元所输出的重建帧进行边缘扩展,用于下一帧的移动估计。
在一实施例中,内部储存单元140包括残差宏块缓冲器141、先进先出缓冲器142、当前宏块缓冲器143、搜索窗缓冲器144以及去块效应滤波缓冲器145。残差宏块缓冲器141储存用于移动补偿的宏块的残差值。先进先出缓冲器142储存编码参数及RLL码,其中编码参数来自处理单元110,RLL码来自量化与变换加速器123。当前宏块缓冲器143用以储存当前宏块。搜索窗缓冲器144储存用于移动估计的搜索窗的宏块数据。去块效应滤波缓冲器145储存经由移动补偿所产生的重建宏块以及环路滤波加速电路124所产生的滤波宏块,且环路滤波加速电路124是由去块效应滤波缓冲器145读取量化及变换加速电路122所产生的重建宏块,并对重建宏块进行环路滤波以产生滤波宏块,再将滤波宏块写入去块效应滤波缓冲器145。
硬件加速器控制器121设定并管理编码模块120中的各元件。举例来说,当编码模块120中的移动估计加速电路121完成一宏块的编码,其会发出一第一中断信号至硬件加速器控制器121。此时,硬件加速器控制器121会设定及启动后续相关的加速器/加速电路。当编码模块120的硬件(例如环路滤波加速电路124)完成一帧图像的编码,硬件加速器控制器121会发出一第二中断信号至处理单元110。接着,处理单元110将编码参数写入先进先出缓冲器142,硬件加速器控制器121再读取储存于先进先出缓冲器142中的编码参数,用以设定编码模块120中的各硬件元件。
B.移动估计方法
B-1.搜索起始点的预测
本发明的移动估计加速电路122采用基于预测(prediction based)的12点直线搜索演算法以完成整数像素的移动估计(其细节将详述于后),且还可进行半像素移动估计。移动估计加速电路122在进行半像素移动估计是搜索8个点,且半像素的插值运算可与半像素移动估计的运算平行执行。本发明的移动估计方法于进行整数像素的运算流程包括4个步骤:(1)搜索起始点的预测;(2)基于8x8宏块的12点直线搜索;(3)16x16宏块的移动搜索;(4)决定移动估计的宏块模式。此处8x8,16x16等为宏块尺寸,单位为bit,本领域的技术人员可以理解到,宏块尺寸可以为复核本发明原则的其他尺寸。
图2是显示依据本发明一实施例的移动估计演算法的搜索起始点预测的示意图。请同时参考图2及图19A、19B,对于每个宏块来说,在进行移动搜索之前,移动估计加速电路122是先确定搜索起始点。估计加速电路122使用相邻宏块的移动向量以预测移动搜索的起始点。如图2所示,搜索起始点参考当前宏块E的左方相邻宏块A、上方相邻宏块B、右上相邻宏块C及左上相邻宏块D的移动向量MVa、MVb、MVc及MVd。首先,检查当前宏块E的四个相邻宏块的移动向量MVA、MVb、MVc及MVd所指向的点,并计算4个点所对应的绝对误差总和(Sum of absolute difference、SAD),其中绝对误差总和最小的点用以做为移动估计的搜索起始点。值得注意的是,若当前宏块位于图像的边界,某些相邻宏块可能不存在,此时使用零移动向量以替换这些宏块的移动向量,且预测参考点位于零点。
B-2.整数像素的12点线段搜索
图3是显示依据本发明一实施例的移动估计方法的示意图。移动估计加速电路122所使用的移动估计演算法基于整数像素的12点线段搜索。图19A、19B是显示依据本发明一实施例的移动估计方法的流程图。
步骤1:如图3所示,将当前宏块分为4个8x8宏块。对于每个8x8宏块,移动估计加速电路122以起始点S1所在的像素字组(pixel-word)为中心,并搜索三条12点直线p-1、p及p+1,总共有36个候选点(candidate pixel),意即图3中的白色点。接着,将对应于同一个候选点的4个SAD8x8加总以得到SAD16x16(共有36个SAD16x16)。若SAD16x16中的最小值所对应的参考点(最佳参考点,例如图3中的灰色点)位于直线p+1,则执行步骤2;若最佳参考点位于直线p-1,则执行步骤3,否则,执行步骤4。
步骤2:移动估计加速电路122使p=p+1,并搜索直线p上的12个候选点。直线p+1上12个候选点的位置需依据直线p的最佳参考点的位置在水平方向进行调整,以确保中间4个点所在的像素字组与直线p的最佳参考点所在的像素字组位于同一行。接着,搜索直线p上的12个点,并将对应于同一个候选点的4个SAD8x8加总以得到SAD16x16。若SAD16x16中的最小值所对应的参考点(最佳参考点)位于直线p,则执行步骤4;否则,重复步骤2,直到最小SAD16x16所对应的参考点位于直线p,或是搜索至48x48的搜索窗(searching window)边界。
步骤3:移动估计加速电路122使p=p-1,并搜索直线p上的12个候选点。直线p+1上12个候选点的位置需依据直线p的最佳参考点的位置在水平方向进行调整,以确保中间4个点所在的像素字组与直线p的最佳参考点所在的像素字组位于同一行。接着,搜索直线p上的12个点,并将对应于同一个候选点的4个SAD8x8加总以得到SAD16x16。若SAD16x16中的最小值所对应的参考点(最佳参考点)位于直线p,则执行步骤4;否则,重复步骤3,直到最小SAD16x16所对应的参考点位于直线p,或是搜索至48x48的搜索窗(searching window)边界。
步骤4:移动估计加速电路122将最小SAD16x16所对应的移动向量设定为16x16宏块的移动向量MV16x16,并分别将最小SAD8x8所对应的的4个移动向量设定为4个8x8宏块的移动向量MV8x8。
请参考图19A、19B,上述步骤1~步骤4的详细内容可由图19A、19B的各步骤来说明:
(a)在步骤S1901,将当前宏块分为至少一8x8宏块,对于各8x8宏块,以该搜索起始点所在的包含4个像素的一像素字组为中心,对该像素字组及其左右各4个像素所构成的该第一线段、以及分别于该第一线段上方及下方相邻的该第二线段及该第三线段,以取得共36个初始候选点(initial candidatepoint);
(b)在步骤S1902,计算各8x8宏块对应于各初始候选点的一第一子宏块绝对差和(sum of absolute differences),据以得到各初始候选点所对应的一初始当前宏块绝对差和,并且依据的该初始当前宏块绝对差和,以得到一第一最小当前宏块绝对差和;
(c)在步骤S1903,判断该第一最小当前宏块绝对差和所对应的一最佳候选点是否位于该第二线段,若是,则执行步骤(d)(步骤S1905),若否,则再判断该第一最小当前宏块绝对差和所对应的该候选点是否位于该第三线段(步骤S1904),若是,则执行步骤(g)(步骤S1909),若否,则执行步骤(j)(步骤S1912);
(d)在步骤S1905,判断该第二线段是否位于该当前宏块所对应的一搜索窗(searching window)的边界,若是,则执行步骤(j)(步骤S1912),若否,则将该第二线段往下移动1个像素,并依据最佳候选点所在的一像素字组,于一水平方向对该第二线段进行调整,以产生12个第一更新候选点(firstrefined candidate points)(步骤S1906),并执行步骤(e);
(e)在步骤S1907,计算各8x8宏块对应于各第一更新候选点的一第二子宏块绝对差和,据以得到各第一更新候选点所对应的一第二当前宏块绝对差和,并且依据各第一更新候选点所对应的该第二当前宏块绝对差和,以得到一第二最小当前宏块绝对差和;
(f)在步骤S1908,判断该第二最小当前宏块绝对差和是否大于该第一最小当前宏块绝对差和,若是,则执行步骤(j)(步骤S1912),若否,则令该第一最小当宏块绝对差和为该第二最小当前宏块绝对差和,并执行步骤(d)(步骤S1905);
(g)在步骤S1909,判断该第三线段是否位于该当前宏块所对应的该搜索窗(searching window)的边界,若是,则执行步骤(j)(步骤S1912),若否,则将该第三线段往上移动1个像素,并依据最佳候选点所在的一像素字组,于一水平方向对该第三线段进行调整,以产生12个第二更新候选点(secondrefined candidate points)(步骤S1913),并执行步骤(h)(步骤S1910);
(h)在步骤S1910,计算各8x8宏块对应于各第二更新候选点的一第三子宏块绝对差和,据以得到各第二更新候选点所对应的一第三当前宏块绝对差和,并且依据各第二更新候选点所对应的该第三当前宏块绝对差和,以得到一第三最小当前宏块绝对差和;
(i)在步骤S1911,判断该第三最小当前宏块绝对差和是否大于该第一最小当前宏块绝对差和,若是,则执行步骤(j)(步骤S1912),若否,则令该第一最小当宏块绝对差和为该第三最小当前宏块绝对差和,则执行步骤(g)(步骤1909);以及
(j)在步骤S1912,将该第一最小当前宏块绝对差和所对应的一第一移动向量设定为该当前宏块整数像素移动向量,并将指向所述第二子宏块绝对差和或所述第三子宏块绝对差和的多个移动向量设定为该当前宏块之中所述8x8宏块所对应的多个子宏块移动向量。
B-3.基于半像素的8点搜索
移动估计加速电路122是以最小SAD16x16所对应的参考点为中心,搜索其周围8个半像素点。若半像素点所对应的SAD8x8或SAD16x16小于整数像素的SAD值,则移动估计加速电路122更新8x8宏块或16x16宏块所对应的移动向量。
B-4.移动估计宏块模式决策
对于MPEG4标准来说,移动估计加速电路122依据一比特率-失真优化原则(Rate Distortion Optimization,RDO)以决定当前宏块应采用INTER(用于16x16宏块)或INTER4V(用于8x8宏块)模式来进行编码。比特率-失真代价较小的模式会被优先选取,以做为当前宏块的编码模式。
C.当前宏块缓冲器及搜索窗缓冲器的存储格式
在一实施例中,本发明用于移动估计的当前帧及移动估计参考帧储存于外部储存单元130中,而当前宏块及搜索窗分别存放于内部储存单元140中。当开始进行编码,硬件加速器控制器121藉由DMA控制器160由外部储存单元130读取当前宏块及搜索窗,并写入至内部储存单元140,其中当前宏块储存于当前宏块缓冲器143,搜索窗的像素储存于搜索窗缓冲器144。对于当前宏块及搜索窗,每个像素采用8位的精确度,且水平方向相邻的4个像素被放置在同一个像素字组(pixel word)中。
图4显示依据本发明一实施例的水平方向相邻宏块的重迭搜索窗的示意图。在一实施例中,移动估计加速电路122的移动估计搜索范围为(-16,15.5),对应的搜索窗大小为48x48像素。如图4所示,水平方向相邻的两个宏块的搜索窗有32x48像素的重迭部分。
为了有效利用重迭部分以减少存取外部储存单元所消耗的频宽,本发明的搜索窗缓冲器144设计为4存储体(bank)的结构。每个存储体可储存16x48像素大小的区域。移动估计加速电路122存取由3个存储体所组成的48x48搜索窗,而剩下的1个存储体由DMA控制器所存取,意即通过DMA控制器将下一个宏块的移动估计所需的16x48像素区域由外部储存单元130读取至搜索窗缓冲器144。因本发明的搜索窗缓冲器144具有4个存储体,故可确保移动估计的运算及下一宏块的搜索窗的存取可平行执行。
图5A~5D是显示依据本发明一实施例中的搜索窗缓冲器的结构的示意图。若相邻的4个宏块分别为MB1、MB2、MB3及MB4,在移动估计加速电路122分别将宏块MB1、MB2、MB3及MB4做为当前宏块以进行移动估计时,其搜索窗交替地由搜索窗缓冲器144中的三个不同的存储体所组成。此时,DMA控制器将用于下一当前宏块的16x48像素区域依序地写入存储体4、存储体1、存储体2及存储体3,分别如图5A~5D所示。故移动估计加速电路122除了在计算每一列起始的第一个宏块的移动估计时,需要从外部储存单元130读取48x48的搜索窗外,计算其余每个宏块的移动估计仅需从外部储存单元130读取16x48的像素区域即可,因此本发明有效地降低存取外部储存单元所消耗的频宽。
D.移动估计加速电路的结构
图6是显示依据本发明一实施例的移动估计加速电路122的功能方块图。移动估计加速电路122包括一搜索起始点预测单元150、一整数像素估计单元151、一小数像素估计单元152及一预测差值计算单元153。移动估计加速电路122中的各元件执行与其名称相应的计算流程。举例来说,搜索起始点预测单元150搜索及预测移动估计的起始点,如B-1节及图2所示。当移动估计加速电路122启动后,搜索起始点预测单元150依据相邻宏块的移动向量,由搜索窗缓冲器144及当前宏块缓冲器143分别读取搜索窗像素及当前宏块像素。搜索起始点预测单元150再计算候选点的绝对差和(SAD),并比较其绝对差和以选择一搜索起始点预测值,其中搜索起始点预测单元150将搜索起始点预测值传送至整数像素估计单元151,以便进行12点直线搜索。
整数像素估计单元151由搜索窗缓冲器144及当前宏块缓冲器143分别读取搜索窗像素及当前宏块像素,计算候选点的SAD值并加以比较,以决定整数像素移动向量。整数像素估计单元151将产生的整数像素移动向量传送至小数像素估计单元152。
小数像素估计单元152执行半像素插值及半像素移动估计的计算。小数像素估计单元152由搜索窗缓冲器144及当前宏块缓冲器143分别读取搜索窗像素及当前宏块像素,插值产生半像素参考宏块,并计算候选点的SAD值并加以比较,以决定半像素移动向量。
预测差值计算单元153依据由小数像素估计单元152所产生的半像素移动向量,由搜索窗缓冲器144读取最佳参考宏块像素,并与当前宏块像素相减,以得到残差值,并将残差值写入残差宏块缓冲器141。
E.整数像素搜索的硬件结构
图7是显示依据本发明一实施例的整数像素估计单元151的硬件结构的方块图。在一实施例中,本发明的整数像素估计单元151采由12个平行的处理元件(Processing Elements,PE)所构成的心缩式阵列(systolic array)以实现12点直线搜索演算法。如图7所示,整数像素估计单元151中的12个处理元件被分成4组子阵列,其中第一组子阵列由处理元件PE1、PE5、及PE9所组成,第二组子阵列由处理元件PE2、PE6及PE10所组成,第三组子阵列由处理元件PE3、PE7及PE11所组成,第四组子阵列由处理元件PE4、PE8及PE12所组成。每个处理元件有两个输入端,而搜索窗缓冲器144中的像素藉由广播(broadcast)的方式发送到全部12个处理元件。当前宏块的像素则被重新排序(reorder)成4组输入数据,并分别发送至4组子阵列中,并依序传递(例如由处理元件PE1→PE5→PE9)。当前宏块的像素的4条传递路径使用8个32位的触发器(flip flop)做为延迟单元。
因当前宏块及搜索窗分别储存于当前宏块缓冲器143及搜索窗缓冲器144,故整数像素估计单元151可通过两个不同的物理通道(例如存储器通道)以同时存取这两个缓冲器。再者,在当前宏块缓冲器143及搜索窗缓冲器144中,像素采用像素字组方式进行储存,因此每个时钟周期可由当前宏块缓冲器143及搜索窗缓冲器144同时读取一个当前宏块的像素字组一个搜索窗的像素字组,每个像素字组被拆为4个像素以写入寄存器组(例如RA0、RA1、RA2及RA3)中。
在第1时钟周期,整数像素估计单元151将搜索窗像素b0~b3写入寄存器组RB中,当前宏块像素a0~a3被写入寄存器组RA0中,且像素a0~a3被重新排序并分别写入寄存器组RA1、RA2及RA3,如图7所示。
在第2时钟周期,整数像素估计单元151将寄存器组RB中的搜索窗像素b0~b3藉由广播方式以传送至全部12个处理元件,并将寄存器组RA0~RA3中的当前宏块像素通过4条传递路径以发送至4组子阵列。处理元件PE1~PE4接收到当前宏块像素及搜索窗像素以进行计算,此时PE5~PE12因尚未接收到当前宏块像素而处于闲置状态。同时,整数像素估计单元151可继续读取当前宏块缓冲器143及搜索窗缓冲器144,将搜索窗像素b4~b7储存于寄存器组RB,并将当前宏块像素a4~a7储存于寄存器组RA0,而整数像素估计单元151还将当前宏块像素a4~a7重新排列并替换寄存器组RA1~RA3中的部分像素,如图7所示。
在第3时钟周期,整数像素估计单元151将搜索窗像素b4~b7藉由广播方式传送至全部12个处理元件。寄存器组RA0~RA3中的当前宏块像素分别通过4条传递路径在4个子阵列中依序传递。处理元件PE1~PE8接收到当前宏块像素及搜索窗像素以进行计算,然而PE9~PE12尚未接收到当前宏块像素而处于闲置状态。此时,整数像素估计单元151继续读取搜索窗缓冲器144,并将搜索窗像素b8~b11储存于寄存器组RB中。整数像素估计单元151还将寄存器组RA0中的当前宏块像素a4~a7替换寄存器组RA1~RA3中的部分像素,如图7所示。
在第4时钟周期,整数像素估计单元151将搜索窗像素b8~b11藉由广播方式传送至全部12个处理元件,且将寄存器组RA0~RA3中的当前宏块像素分别通过4条传递路径在4个子阵列中依序传递。此时,整数像素估计单元151继续读取搜索窗缓冲器144,并将搜索窗像素b12~b15储存于寄存器组RB中。此时,4条传递路径上的所有处理元件均接收到数据,可进行计算。
在第5时钟周期,整数像素估计单元151将搜索窗像素b12~b15藉由广播方式传送至全部12个处理元件。处理元件PE1~PE4不再接收到新的当前宏块像素而处于闲置状态,处理元件PE5~PE12接收到搜索窗像素及延迟单元(FF0~FF7)所传送的当前宏块像素以进行计算。此时,整数像素估计单元151继续读取搜索窗缓冲器144,并将搜索窗像素b16~b19写入寄存器组RB。
在第6时钟周期,整数像素估计单元151将搜索窗像素b16~b19藉由广播方式传送至全部12个处理元件。处理元件PE1~PE8不再接收到新的当前宏块像素而处于闲置状态。处理元件PE9~PE12接收到搜索窗像素及延迟单元所传送的当前宏块像素以进行计算。
经过6个时钟周期,整数像素估计单元151完成一列像素(12个整数像素)的差值计算。每个处理元件具有一个累加器(accumulator),故整数像素估计单元151将12个候选点所对应的差值分别累加并储存,重复8次即可完成12个候选点的SAD8x8的计算。接着,通过比较器以选择出最小的SAD8x8值,并得到对应的移动向量MV8x8。整数像素估计单元151并继续计算其他3个8x8宏块所对应的12个候选点的SAD8x8,以得到12个SAD16x16。整数像素估计单元151再使用比较器以选择出最小的SAD16x16,以得到对应的移动向量MV16x16。
图8是显示依据本发明一实施例的整数像素估计单元中的处理元件的结构示意图。如图8所示,处理元件包括4个绝对差和计算单元(SADcalculating unit)及一累加器。在每个时钟周期内,处理元件接收4个当前宏块像素及4个搜索窗像素,同时计算4对像素的差值及绝对值。处理元件再依据控制信号,选择性地将4个像素绝对差和累加。对于每个处理元件来说,在确定用来计算移动估计的时钟周期,其控制信号为固定的4位值。同一组相邻的处理元件的控制信号相差1个时钟周期。因此整数像素估计单元151采用8个4位的触发器(ff1~ff8)做为延迟单元以分配每个处理元件的控制信号。
F.半像素插值及搜索的硬件结构
在MPEG-4及H.263视频编码标准中,半像素搜索通常以整数像素的移动向量点为中心,搜索其周围8个候选半像素点。而8个半像素点所对应的参考宏块由整数像素进行线性插值所产生。半像素的插值有3种模式,即水平插值、垂直插值及对角线插值。若h、v、d分别表示水平方向半像素、垂直方向半像素及对角线方向半像素,A1、A2与水平方向半像素h水平相邻的整数像素,A1、A3与垂直方向半像素v垂直相邻的整数像素,且A1~A4与对角线方向半像素d相邻的整数像素。半像素插值可用下列公式表示:
h=(A1+A2+1)>>1
v=(A1+A3+1)>>1
d=(A1+A2+A3+A4+2)>>2
图9A、9B是显示依据本发明一实施例的小数像素估计单元中的硬件结构的示意图。本发明的小数像素估计单元152采用4组10位加法器及3组取整移位器(rounding and shifting unit)以实现小数像素的插值,并采用8个平行处理元件(processing element,PE)以实现小数像素的搜索,如图9A、9B所示。同样地,在当前宏块缓冲器143及搜索窗缓冲器144中,像素按照像素字组(pixel word)的方式进行储存。小数像素估计单元152在每个时钟周期可由当前宏块缓冲器143及搜索窗缓冲器144同时读取一个当前宏块像素字组及一个搜索窗像素字组。每个像素字组被拆解(unpack)分为4个像素并分别写入寄存器组(例如RA10及RA11)。在一实施例中,当前宏块像素寄存器由2个乒乓寄存器组RA10及RA11所组成,每个寄存器组RA10及RA11各包括8个8位的寄存器。搜索窗像素寄存器由2个乒乓寄存器组RB10及RB11所组成,且每个寄存器组RB10及RB11各包括10个8位的寄存器。
当小数像素估计单元152开始进行半像素插值,小数像素估计单元152由当前宏块缓冲器143读取第一行8个当前宏块像素并写入寄存器组RA10,并将第二行8个当前宏块像素写入寄存器组RA11。小数像素估计单元152再由搜索窗缓冲器144读取第一行10个搜索窗像素并写入寄存器组RB10,并将第二行10个搜索窗像素写入寄存器组RB11。当小数像素估计单元152每完成一行的半像素插值及搜索计算,小数像素估计单元152会再由当前宏块缓冲器143读取新的一行当前宏块像素,以替换寄存器组RA10或RA11之中较早的一行。小数像素估计单元152再由搜索窗缓冲器144读取新的一行搜索窗像素,以替换寄存器组RB10或RB11之中较早的一行。小数像素估计单元152每次计算半像素插值可同步产生一行9个水平方向半像素、一行8个垂直方向半像素及一行9个对角线方向半像素,以满足同时搜索8个候选半像素点的要求。因为小数像素估计单元152产生这些半像素需要2行整数像素,每行包括10个整数像素,且小数像素估计单元152由搜索窗缓冲器144读取这些整数像素,并写入寄存器组RB10及RB11。因为搜索窗缓冲器144以像素字组(1个像素字组包括4个整数像素)的方式储存像素,因此要读取一行10个整数像素,小数像素估计单元152需要从搜索窗缓冲器144连续读取3个像素字组。小数像素估计单元152再将所读取的3个像素字组拆解成12个整数像素,并依据整数像素移动向量点在像素字组中的位置进行对齐(align)的动作,并丢弃(truncate)2个无效的整数像素。
小数像素估计单元152具有8个平行的处理元件PE21~PE28,这些处理元件被分成3组。第1组由处理元件PE21~PE24所组成,用以计算4个对角方向半像素候选点的SAD值。第2组由处理元件PE25及PE26所组成,用以计算2个垂直方向半像素候选点的SAD值。第3组由处理元件PE27及PE28所组成,用以计算2个水平方向半像素候选点的SAD值。当小数像素估计单元152对第1行进行半像素插值计算时,寄存器组RA10中的当前宏块像素通过一广播路径以发送至处理元件PE23、PE24及PE26,且寄存器组RA11中的当前宏块像素通过另一广播路径以发送至处理元件PE21、PE22、PE25、PE27及PE28。接着,小数像素估计单元152每计算一行的半像素插值,寄存器组RA10及RA11的广播路径会切换一次。由小数像素估计单元152所产生的9个对角线方向半像素d0~d8被分为2组,对角线方向半像素d0~d7被传送至处理元件PE21及PE23,对角线方向半像素d1~d8被传送至处理元件PE22及PE24。同样地,由小数像素估计单元152所产生的9个水平半像素h0~h8被分为2组,水平半像素h0~h7被传送至处理元件PE27,水平半像素h1~h8被传送至处理元件PE28。由小数像素估计单元152所产生的8个垂直半像素v0~v7同时被传送至处理元件PE25及PE26。
在一实施例中,小数像素估计单元152的每个处理元件包含4个绝对差和计算单元及1个累加器(如图7所示),并需要2个时钟周期以完成一行半像素的绝对差和的计算。小数像素估计单元152进行插值计算8行半像素的绝对差和并累加,以得到8个SAD8x8。移动估计加速电路122还藉由比较器以选择出最小的SAD8x8,再与整数像素的最小SAD8x8进行比较,即可得到最终的移动向量MV8x8。
小数像素估计单元152再将对应点的4个SAD8x8相加,以得到8个SAD16x16,再藉由比较器以选择出最小的SAD16x16,并与整数像素的最小SAD16x16进行比较,即可得到最终的移动向量MV16x16。
G.环路滤波顺序的定义
各个视频编码标准(例如H.264标准或VC-1标准)是以帧层(frame level)为单位,且对环路滤波(in-loop filtering)处理的边缘顺序均有相应的规范。且编码模块120中的硬件加速单元对编码处理是以宏块(macroblock)为单位。本发明是在符合编码标准定义的基础上,进一步详细地定义16x16宏块内的4x4宏块边缘的滤波顺序,藉以有效地利用相邻候选宏块之间的重迭部分,进而降低存取外部储存单元所消耗的频宽。
值得注意的是,对于H.264标准及VC-1标准来说,环路滤波器(in-loopfilter)是在视频编码系统及视频解码系统中所规定的必要元件,因环路滤波器可降低各宏块之间因转换/反转换及量化/反量化(DCT/iDCT及quantization/inverse quantization)所产生的不连续性(discontinuity),进而让移动补偿的影像品质更佳,并可增进编码效率(意即)。
请参考图1及图18,本发明的环路滤波加速电路124,除了用于视频编码系统100之外,还可用于视频编解码系统1800。视频编解码系统1800包括一处理单元1810、一编解码模块1820及一外部储存单元1830。处理单元1810为一控制器,用以执行一硬件加速器控制任务(hardware acceleratorcontrol program),并执行熵编解码任务(entropy decoding program)及解码参数计算任务(decoding parameters calculating program)等编解码预处理(pre-processing)任务及解码后处理(post-processing)任务。举例来说,处理单元1810可为一中央处理器(CPU)、数字信号处理器(DSP)或其他可实现相同功能的等效电路。
解码模块1820包括一硬件加速器控制器1821、一编解码处理单元1822、环路滤波加速电路1823及一内部储存单元1840。解码处理单元1822可由硬件电路(硬件)或DSP处理器(软件)所构成,用以执行解码流程中的移动补偿、帧内预测(intra-frame prediction))、反变换及反量化(inversetransform/inverse quantization)。环路滤波加速电路1823的功能与环路滤波加速电路124相同,于此不在赘述,在后面的章节中,仅以环路滤波加速电路124进行介绍。
外部储存单元1830用以储存参考帧(reference frame)、重建帧(reconstructed frame)、解码参数及持续长度限制码(run-length limited code,RLL code)。外部储存单元1830可为易失性存储器元件(例如随机存取存储器元件(RAM,例如DRAM、SRAM等等))以及非易失性存储器元件(例如ROM、硬驱动器、CDROM等等)中任一个或是两者的组合。
内部储存单元1840包括一搜索窗缓冲器1841、一第一先进先出缓冲器1842、一去块效应滤波缓冲器1843及一第二先进先出缓冲器1844。搜索窗缓冲器1841储存用于移动补偿的参考宏块。第一先进先出缓冲器1842储存持续长度限制码(RLL码)。去块效应滤波缓冲器1843储存经由解码处理单元1822进行移动补偿所产生的重建宏块以及环路滤波加速器1823所产生的滤波宏块,且环路滤波加速器1823由去块效应滤波缓冲器1843中读取解码处理单元1822所产生的重建宏块,并进行环路滤波,再将滤波宏块写回去块效应滤波缓冲器1843。第二先进先出缓冲器储存由处理单元1810所产生的解码参数。
G-1.H.264标准的环路滤波顺序
图10是显示依据本发明一实施例的H.264标准的环路滤波顺序的示意图,其中Y表示亮度宏块,U、V表示色度宏块。H.264标准对环路滤波的滤波顺序(filtering sequence)规定如下:对于每一帧图像,首先对所有4x4宏块的垂直边缘(vertical edge)进行滤波,垂直边缘的滤波顺序必须遵循先上后下、先左后右的原则,接着再对所有4x4宏块的水平边缘(horizontal edge)进行滤波,水平边缘的滤波顺序同样必须遵循先上后下、先左后右的原则。
本发明的环路滤波加速电路124是以宏块为单位进行图像的编解码,则每个宏块需要处理的边缘如图10所示的黑色粗体线。图10中的斜线方块为当前宏块的亮度及色度宏块,白色方块为相邻的亮度及色度宏块。
在符合H.264标准对环路滤波的顺序规定的前提下,本发明的环路滤波加速电路124将16x16宏块内部的4x4宏块边缘的滤波顺序重新定义为图10的边缘的标号顺序。首先,环路滤波加速电路124对所有4x4宏块的垂直边缘依序由左而右、由上而下进行滤波,接着对所有4x4宏块的水平边缘依序由上而下、由左而右进行滤波。本发明所定义的滤波顺序,可让环路滤波加速电路124有效地利用相邻边缘之间重迭的宏块,以降低存取外部储存单元130所消耗的频宽。举例来说,在对每条垂直边缘进行滤波时,环路滤波加速电路124是由去块效应滤波缓冲器145读取垂直边缘两侧的2个4x4宏块,并写入转置寄存器阵列TA、TB(如图14A所示,详述于后)。每当环路滤波加速电路124完成一条垂直边缘的滤波处理后,垂直边缘右侧的4x4宏块并不需要写回去块效应滤波缓冲器145,意即这个4x4宏块可以保留在去块效应滤波缓冲器145,直接做为下一条垂直边缘的左侧4x4宏块。因此,环路滤波加速电路124每对一条垂直边缘进行滤波,都可以节省一次4x4宏块的读写动作。同样地,当环路滤波加速电路124对一条水平边缘进行滤波,亦可节省一次4x4宏块的读写动作。
G-2.V-1标准的环路滤波顺序
图11是显示依据本发明一实施例的VC-1标准的环路滤波顺序的示意图,其中Y表示亮度宏块,U、V表示色度宏块。对于每一帧图像,VC-1标准对环路滤波所规定的滤波顺序依序为:
(a)对所有8x8宏块水平边缘进行滤波,滤波顺序需遵循由左而右、由上而下的原则;
(b)对所有4x4宏块水平边缘进行滤波,滤波顺序需遵循由左而右、由上而下的原则;
(c)对所有8x8宏块垂直边缘进行滤波,滤波顺序需遵循由上而下、由左而右的原则;
(d)对所有4x4宏块垂直边缘进行滤波,滤波顺序需遵循由上而下、由左而右的原则。
当环路滤波加速电路124以宏块为单元进行图像的编解码,因受到VC-1标准所规定的滤波顺序的限制,在处理每个宏块时,因宏块的右边界及下边界并无法进行滤波,会导致当前宏块内部有某些边缘无法进行滤波,需要等到环路滤波加速电路124对下一个宏块或下一行宏块进行处理时,环路滤波加速电路124才能对这些边缘进行滤波。因此环路滤波加速电路124对每个宏块进行滤波处理时,其可以处理的边缘包括一部分当前宏块的内部边缘,也有一部分上方、左方及左上方相邻宏块的边缘,如图11所示的黑色粗体线。图11中的斜线方块为当前宏块的亮度及色度宏块,白色方块为相邻的亮度及色度宏块。
在符合VC-1标准对环路滤波的顺序规定的前提下,本发明的环路滤波加速电路124将16x16宏块内部的4x4宏块边缘的滤波顺序重新定义为图11的边缘的标号顺序。首先,环路滤波加速电路124对水平边缘进行滤波,意即对于同一行的水平边缘,环路滤波加速电路124先对8x8宏块的水平边缘由下而上进行滤波,再对4x4宏块的水平边缘从上而下进行滤波。接着,环路滤波加速电路124对垂直边缘进行滤波,意即对于同一行的垂直边缘,环路滤波加速电路124先对8x8宏块的垂直边缘由右而左进行滤波,再对4x4宏块的垂直边缘由左而右进行滤波。本发明针对VC-1标准所定义的滤波顺序可让环路滤波加速电路124利用部分相邻候选宏块之间的重迭部分(例如标示1及2的水平边缘中间的宏块),以降低存取外部储存单元130所消耗的频宽。
H.环路滤波的像素储存格式
由环路滤波加速电路124所产生的重建宏块可组成重建帧,并储存于外部储存单元130。环路滤波之前的重建宏块像素及环路滤波后的宏块像素以像素字组(word32)的格式存储在内部储存单元140中的去块效应滤波缓冲器145。简单来说,每个像素为8位精确度,且水平方向相邻的4个像素被放置在同一个像素字组中。在开始进行环路滤波之前,硬件加速器控制器121或DSP处理器将移动补偿或空间补偿所得到的重建宏块写入去块效应滤波缓冲器145,并由硬件加速器控制器121由外部储存单元130读取环路滤波所需的相邻宏块,并写入去块效应滤波缓冲器145。当环路滤波结束后,硬件加速器控制器121利用DMA控制器160将滤波后的重建宏块及相邻宏块复制至外部储存单元130。
请参考图10及图11,对每个宏块进行环路滤波处理均需要使用到左方相邻宏块、上方相邻宏块及左上方相邻宏块。图12是显示依据本发明一实施例的去块效应滤波缓冲器的结构的示意图。为了便于读取相邻宏块,以让宏块的读取、写入及滤波操作能够平行执行以提高处理效率,本发明的去块效应滤波缓冲器145为4个存储体(bank)的结构,且每个存储体可储存当前宏块及当前宏块上方相邻的若干行亮度及色度像素。举例来说,对于H.264标准,去块效应滤波缓冲器145需要储存当前宏块上方相邻的4行亮度及色度像素;对于VC-1标准,去块效应滤波缓冲器145需要储存当前宏块上方相邻的8行亮度及色度像素。去块效应滤波缓冲器145中的两个相邻的存储体(例如存储体1及存储体2)用以储存用于滤波的当前宏块及其左方相邻宏块,以及2个上方相邻的亮度及色度宏块,且环路滤波加速电路124同时读取这两个相邻的存储体以进行环路滤波处理。编码模块120中的其他硬件加速单元或DSP处理器(例如量化与变换加速器123)可将重建宏块写入去块效应滤波缓冲器145中一存储体(例如存储体3)。且硬件加速器控制器121还由外部储存单元130读取重建宏块的上方相邻宏块,并写入去块效应滤波缓冲器145的一存储体(例如存储体3)。又,硬件加速器控制器121还藉由DMA控制器160将储存于一存储体(例如存储体0)中的已完成环路滤波的重建宏块及上方相邻宏块复制至外部储存单元130。
图13是显示依据本发明一实施例的去块效应滤波缓冲器的数据存取循环的示意图。为了可以同时执行宏块读取、写入及环路滤波处理,编码模块120中的不同的硬件加速单元或DSP处理器与DMA控制器160需要循环地存取去块效应滤波缓冲器145中的不同的存储体,如图13所示。为了同步宏块的写入/读取动作及环路滤波处理,并避免不同硬件加速单元及DMA控制器160存取去块效应滤波缓冲器145中的同一个存储体,本发明在去块效应滤波缓冲器145中使用3个不同的索引标记:读取索引rd_index、滤波索引filter_index及写入索引wr_index以分别控制不同硬件加速单元及DMA控制器160存取去块效应滤波缓冲器145中的不同存储体。其控制机制的步骤可表示如下:
(a)当读取索引rd_index指向DMA控制器所存取的存储体时,将读取索引rd_index设定为0。当(rd_index+1)<filter_index时,DMA控制器160可读取读取索引rd_index所指向的存储体。每当DMA控制器160完成一个宏块及其上方相邻宏块的读取时,DMA控制器160将读取索引rd_index加1。
(b)当滤波索引filter_index指向环路滤波加速电路124所存取的存储体时,将滤波索引filter_index设定为0。当filter_index<wr_index时,环路滤波加速电路124可存取filter_index及filter_index-1所指向的两个存储体。每当环路滤波加速电路124完成一个宏块的环路滤波动作时,环路滤波加速电路124将写入索引filter_index加1。
(c)当写入索引wr_index指向其他硬件加速单元/DSP处理器及硬件加速器控制器121所读取的存储体时,将写入索引wr_index设定为0。当wr_index>(rd_index+2)时,则其他硬件加速单元或DSP处理器及硬件加速器控制器121可写入数据至写入索引wr_index所指向的存储体。每当硬件加速单元或DSP处理器及硬件加速器控制器121完成一个宏块及其上方相邻宏块的写入动作时,这些元件将写入索引wr_index加1。
I.环路滤波加速电路的硬件结构
图1414A~14B是显示依据本发明一实施例的环路滤波加速电路124的硬件结构的示意图。在本发明中,H.264标准所需要的边缘强度(boundarystrength,BS)等参数是由处理单元110所计算,且处理单元110藉由硬件加速器控制器121来控制环路滤波加速电路124。在VC-1标准中,处理单元110决定每条边缘是否需要进行滤波。在H.264标准中为图像边缘定义了5级边缘强度,例如BS=0~4。然而,VC-1标准并未定义边缘强度,对于VC-1标准来说,每条边缘仅有滤波及不滤波两种状态。为便于选择滤波器的类型,本发明对VC-1标准定义两种边缘强度,意即若处理单元110判断此边缘需要滤波,则设定边缘强度BS为0,若处理单元110判断此边缘不需要滤波,则设定边缘强度BS为5。因此环路滤波加速电路124仅需从去块效应滤波缓冲器145读取宏块数据,并依据边缘强度等滤波参数(filtering parameters)以选择一维滤波器以执行滤波操作。
如图1414A~14B所示,环路滤波加速电路124包括2个转置寄存器阵列TA及TB、一滤波器选择单元1410及多个一维滤波器(例如G_FILTER0~G_FILTER1、S_FILTER0~S_FILTER3及V_FILTER)。因欲进行滤波的重建宏块是以像素字组的方式储存于去块效应滤波缓冲器145中,环路滤波加速电路124在每个时钟周期均可由去块效应滤波缓冲器145读取一个像素字组,并将其拆解为4个像素并写入转置寄存器阵列TA及TB。因此,环路滤波加速电路124只需要4个时钟周期就可将一个4x4宏块的像素由去块效应滤波缓冲器145读取至转置寄存器阵列TA及TB。因为水平边缘及垂直边缘的滤波处理分别需要依行或依列以读取像素,而去块效应滤波缓冲器145只有水平方向4个像素合并在一起后依行读取或写入方有较高的效率。环路滤波加速电路124采用转置寄存器阵列TA及TB以实现依行或依列任意读取4x4宏块的像素,以保证水平边缘及垂直边缘可采用同样的硬件电路(例如一维滤波器)进行滤波处理。当两个4x4宏块均写入转置寄存器阵列TA及TB后,环路滤波加速电路124开始进行滤波,其滤波步骤如下:
(1)依据当前滤波方向(水平方向或垂直方向)依行或依列分别由转置寄存器阵列TA读取4个像素p0、p1、p2及p3,并由转置寄存器阵列TB读取4个像素q0、q1、q2及q3。处理单元110会先判断当前边缘的边缘强度BS,若BS=0,则当前边缘无须进行滤波,并重复步骤(1)。
(2)若处理单元110判断当前边缘的边缘强度BS为5,则此滤波处理为VC-1标准的边缘滤波,直接执行步骤(4),并选择VC-1标准的一维滤波器。否则,执行步骤(3)。
(3)环路滤波加速电路124计算滤波器选择参数d0=|p0-q0|、d1=|p1-p0|及d2=|q0-q1|,并将d0~d2与阈值α及β进行比较。若环路滤波加速电路124判断条件(d0<α&&d1<α&&d2<β)不成立,则当前边缘无需进行滤波,并返回步骤(1)。若该条件成立,则环路滤波加速电路124更进一步判断当前宏块是否属于H.264标准的亮度宏块。若是,环路滤波加速电路124计算滤波器选择参数d3=|p2-p0|及d4=|q2-q0|,并执行步骤(4),选择一维滤波器。若否,则直接执行步骤(4)。
(4)环路滤波加速电路124依据边缘强度BS值以选择一维滤波器对输入像素p0~p3及q0~q3进行滤波处理。当边缘强度BS=4,环路滤波加速电路124选择H.264强滤波器(S-filter);当边缘强度BS=1~3,环路滤波加速电路124选择H.264普通滤波器(G-filter);当边缘强度BS=5时,环路滤波加速电路124选择VC-1滤波器(V-filter)。若边缘滤波处理尚未结束,则返回步骤(1)。当边缘滤波处理结束后,环路滤波加速电路124将输出像素p0’~p3’写回转置寄存器阵列TA,并将输出像素q0’~q3’写回转置寄存器阵列TB。
(5)当边缘滤波处理结束,环路滤波加速电路124将水平边缘上方或垂直边缘左侧的4x4宏块写入去块效应滤波缓冲器145。若是水平边缘,环路滤波加速电路124依列读取像素,每列4个像素合并(pack)为一个像素字组以写入去块效应滤波缓冲器145。若是垂直边缘,环路滤波加速电路124依行读取像素,每行4个像素合并成一个像素字组以写入去块效应滤波缓冲器145。
在一实施例中,环路滤波加速电路124中的滤波器选择单元1410的主要功能是依据输入像素以计算滤波器选择参数,并依据滤波器选择参数以选择对应的一维滤波器。环路滤波加速电路124中的一维滤波器被分为三类:H.264强滤波器、H.264普通滤波器及VC-1滤波器,其中H.264强滤波器有S-FILTER0、S-FILTER1、S-FILTER2及S-FILTER3共4个;H.264普通滤波器有G-FILTER0及G-FILTER1共2个;VC-1滤波器仅有V-FILTER共1个。滤波器选择单元1410所接收的参数包括边缘强度BS、亮度参数chroma、限幅参数c0、位流参数alpha、量化参数PQuant及滤波器选择参数d0、d3、d4。其中边缘强度BS由处理单元110所决定。亮度参数chroma用以表示当前宏块是亮度宏块或色度宏块,若亮度参数chroma为1,则当前宏块为一色度宏块,反之则为一亮度宏块。限幅参数c0为用于H.264普通滤波器的限幅参数,其依据边缘强度BS以进行查表所得到。位流参数alpha为处理单元1810对位流进行解码时所产生的位流参数。量化参数PQuant由处理单元110所产生。如同前述实施例,滤波器选择参数d0、d3、d4由环路滤波加速电路124依据输入像素计算所得到。
滤波器选择单元1410的工作原理如图15A~15B所示。首先,滤波器选择单元1410依据边缘强度BS以选择滤波器的类型。滤波器选择单元1410再依据其他参数以决定使用哪些一维滤波器。
图16A~16F是显示依据本发明一实施例的H.264一维滤波器的结构的示意图。在另一实施例中,当滤波器选择单元1410决定使用那些一维滤波器后,环路滤波加速电路124即可开始进行滤波处理。值得注意的是,滤波过程通常藉由若干个一维滤波器共同完成。每个一维滤波器由输入像素p0~p3及q0~q3中选择部分像素作为输入,并计算以得到1或2个结果以产生滤波后的像素,并据以替换输入像素中的1或2个像素以产生输出像素,再将输出像素写回至转置寄存器阵列TA或TB。
图16A~16F所示分别为H.264强滤波器的4种一维滤波器(S-FILTER0、S-FILTER1、S-FILTER2及S-FILTER3)及H.264普通滤波器的2种一维滤波器(G-FILTER0及G-FILTER1)均由若干个加法器、移位器及限幅单元所组成。其中pin0~pin4表示在不同一维滤波器中的输入脚位,pout、pout1、pout2表示上述不同一维滤波器的输出像素。
图17A~17B是显示依据本发明一实施例的环路滤波加速电路124中的VC-1滤波器的结构的示意图。如图17A~17B所示,VC-1滤波器V-FILTER是由两部分所组成,第一部分利用8个输入像素以计算产生4个内部参数a0、|a0|、a3及delta,第二部分利用4个内部参数及量化参数PQuant以计算产生两个滤波后的输出像素p0’及q0’以替换输入像素中的p0及q0,并将输出像素写回至转置寄存器阵列TA及TB。当环路滤波加速电路124对水平边缘进行滤波时,第3行4x4宏块的水平边缘需要先进行滤波。同样地,环路滤波加速电路124对垂直边缘进行滤波时,第3列4x4宏块的垂直边缘需要先进行滤波。若输入像素p0~p3及q0~q3位于第3行4x4宏块的水平边缘,或是第3列4x4宏块的垂直边缘,即标志3rd_pel_pair=1,则VC-1滤波器需要进一步判断另一标志filter_other_3_pixels。若标志filter_other_3_pixels为1,则其余3列或者3行像素需要进一步进行滤波,否则,可跳过(skip)其余3列或者3行的滤波。
本领域的技术人员应了解,本发明对当前宏块进行水平边缘、垂直边缘及对角线的滤波处理均是使用环路滤波加速电路124。另外,本发明的环路滤波加速电路124可同时符合H.264标准(Baseline Profile)及VC-1标准(Simple Profile,Main Profile),且当环路滤波加速电路124中的一维滤波器经过适当的升级后,可同样应用其他的视频编码标准。
以上所述仅为本发明的较佳实施例而已,不能以此限定本发明实施的范围,即凡依本发明的权利要求及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。另外本发明的任一实施例或权利要求不须达成本发明所揭示的全部目的或优点或特点。此外,摘要部分和标题仅是用以辅助专利文件搜寻之用,并非用以限制本发明的权利范围。
Claims (9)
1.一种环路滤波加速电路,用于支持H.264标准及VC-1标准的一视频编解码系统,该视频编解码系统包括一处理单元,用以进行一视频处理以产生至少一重建宏块及其各边缘所对应的一边缘强度,该环路滤波加速电路包括:
多个一维滤波器,用以执行一滤波处理;以及
一滤波器选择单元,用以依据所述边缘强度以选择所述一维滤波器的一个,对该重建宏块进行该滤波处理;其中该环路滤波加速电路将该重建宏块分为多个第一尺寸宏块及多个第二尺寸宏块,对于该重建宏块中位于同一行的所述第一尺寸宏块的一水平边缘由下而上进行该滤波处理,再对位于同一行的所述第二尺寸宏块的一水平边缘由上而下进行该滤波处理;接着,该环路滤波加速电路对于该重建宏块中位于同一列的所述第一尺寸宏块的一垂直边缘由右至左进行该滤波处理,再对位于同一列的所述第二尺寸宏块的一垂直边缘由左而右进行该滤波处理。
2.如权利要求1所述的环路滤波加速电路,其中所述一维滤波器包括多个H.264强滤波器、多个H.264通用滤波器及一VC-1滤波器,且所述一维滤波器可对所述第一尺寸宏块的一个中的水平边缘或垂直边缘时进行该滤波处理。
3.如权利要求2所述的环路滤波加速电路,其中依据所述边缘强度以选择所述一维滤波器的一个是指当该边缘强度为0时,该环路滤波加速电路不进行该滤波处理;当该边缘强度为1~3时,该滤波器选择单元选择所述H.264普通滤波器以进行该滤波处理;当该边缘强度为4时,该滤波器选择单元选择所述H.264强滤波器以进行该滤波处理;以及当该边缘强度为5时,该滤波器选择单元选择该VC-1滤波器以进行该滤波处理。
4.如权利要求1所述的环路滤波加速电路,还包括多个转置寄存器阵列,用以储存一部分该重建宏块,并将该重建宏块的像素进行转置,以使所述一维滤波器可依列或依行取该重建宏块的像素。
5.如权利要求2所述的环路滤波加速电路,其中该滤波器选择单元还依据该重建宏块的像素以计算多个滤波器选择参数,并依据该边缘强度、一亮度参数、一限幅参数、一位流参数及所述滤波器选择参数以由所述H.264强滤波器、所述H.264普通滤波器及该VC-1滤波器中选择一个以进行该滤波处理。
6.一种环路滤波方法,用于支持H.264标准及VC-1标准的一视频编解码系统中的一环路滤波加速电路,该视频编解码系统包括一处理单元,用以进行一视频处理以产生至少一重建宏块及其各边缘所对应的一边缘强度,包括:
将该重建宏块分为多个第一尺寸宏块及多个第二尺寸宏块;
依据所述边缘强度以由多个一维滤波器中选择一个,以对该重建宏块进行一滤波处理;
对于该重建宏块中位于同一行的所述第一尺寸宏块的一水平边缘由下而上进行该滤波处理,再对位于同一列的所述第二尺寸宏块的一水平边缘由上而下进行该滤波处理;以及
对于该重建宏块中位于同一列的所述第一尺寸宏块的一垂直边缘由右至左进行该滤波处理,再对位于同一列的所述第二尺寸宏块的一垂直边缘由左而右进行该滤波处理。
7.如权利要求6所述的环路滤波方法,其中所述一维滤波器包括多个H.264强滤波器、多个H.264通用滤波器及一VC-1滤波器。
8.如权利要求6所述的环路滤波方法,其中依据所述边缘强度以选择所述一维滤波器的一个的步骤包括下列步骤:
当该边缘强度为0时,不进行该滤波处理;
当该边缘强度为1~3时,选择所述H.264普通滤波器以进行该滤波处理;
当该边缘强度为4时,选择所述H.264强滤波器以进行该滤波处理;以及
以及当该边缘强度为5时,选择该VC-1滤波器以进行该滤波处理。
9.如权利要求6所述的环路滤波方法,其中还包括:
依据该重建宏块的像素以计算多个滤波器选择参数;以及
依据该边缘强度、一亮度参数、一限幅参数、一位流参数及所述滤波器选择参数以由所述H.264强滤波器、所述H.264普通滤波器及该VC-1滤波器中选择一个以进行该滤波处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410012310.5A CN103780914B (zh) | 2012-02-27 | 2012-02-27 | 环路滤波加速电路及环路滤波方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410012310.5A CN103780914B (zh) | 2012-02-27 | 2012-02-27 | 环路滤波加速电路及环路滤波方法 |
CN201210046566.9A CN102547296B (zh) | 2012-02-27 | 2012-02-27 | 移动估计加速电路、移动估计方法及环路滤波加速电路 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210046566.9A Division CN102547296B (zh) | 2012-02-27 | 2012-02-27 | 移动估计加速电路、移动估计方法及环路滤波加速电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103780914A true CN103780914A (zh) | 2014-05-07 |
CN103780914B CN103780914B (zh) | 2017-04-12 |
Family
ID=50572683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410012310.5A Active CN103780914B (zh) | 2012-02-27 | 2012-02-27 | 环路滤波加速电路及环路滤波方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103780914B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108141613A (zh) * | 2015-10-20 | 2018-06-08 | 英特尔公司 | 利用后处理指示的视频译码的方法和系统 |
WO2018145424A1 (zh) * | 2017-02-09 | 2018-08-16 | 深圳市中兴微电子技术有限公司 | 一种图像处理方法、装置及存储介质 |
CN111147849A (zh) * | 2018-11-01 | 2020-05-12 | 联发科技股份有限公司 | 后处理装置和后处理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060262990A1 (en) * | 2005-05-20 | 2006-11-23 | National Chiao-Tung University | Dual-mode high throughput de-blocking filter |
US20080084932A1 (en) * | 2006-10-06 | 2008-04-10 | Microsoft Corporation | Controlling loop filtering for interlaced video frames |
CN101715127A (zh) * | 2009-11-19 | 2010-05-26 | 北京中星微电子有限公司 | 一种环路滤波方法和环路滤波系统 |
CN101742292A (zh) * | 2008-11-14 | 2010-06-16 | 北京中星微电子有限公司 | 基于图像内容信息的环路滤波方法和滤波器 |
-
2012
- 2012-02-27 CN CN201410012310.5A patent/CN103780914B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060262990A1 (en) * | 2005-05-20 | 2006-11-23 | National Chiao-Tung University | Dual-mode high throughput de-blocking filter |
US20080084932A1 (en) * | 2006-10-06 | 2008-04-10 | Microsoft Corporation | Controlling loop filtering for interlaced video frames |
CN101742292A (zh) * | 2008-11-14 | 2010-06-16 | 北京中星微电子有限公司 | 基于图像内容信息的环路滤波方法和滤波器 |
CN101715127A (zh) * | 2009-11-19 | 2010-05-26 | 北京中星微电子有限公司 | 一种环路滤波方法和环路滤波系统 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108141613A (zh) * | 2015-10-20 | 2018-06-08 | 英特尔公司 | 利用后处理指示的视频译码的方法和系统 |
US10798422B2 (en) | 2015-10-20 | 2020-10-06 | Intel Corporation | Method and system of video coding with post-processing indication |
WO2018145424A1 (zh) * | 2017-02-09 | 2018-08-16 | 深圳市中兴微电子技术有限公司 | 一种图像处理方法、装置及存储介质 |
CN108416730A (zh) * | 2017-02-09 | 2018-08-17 | 深圳市中兴微电子技术有限公司 | 一种图像处理方法及装置 |
CN108416730B (zh) * | 2017-02-09 | 2020-11-10 | 深圳市中兴微电子技术有限公司 | 一种图像处理方法及装置 |
CN111147849A (zh) * | 2018-11-01 | 2020-05-12 | 联发科技股份有限公司 | 后处理装置和后处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103780914B (zh) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102547296B (zh) | 移动估计加速电路、移动估计方法及环路滤波加速电路 | |
KR100727989B1 (ko) | 동영상 부호화시의 인터 모드 결정 방법 및 장치 | |
JP4182442B2 (ja) | 画像データの処理装置、画像データの処理方法、画像データの処理方法のプログラム及び画像データの処理方法のプログラムを記録した記録媒体 | |
CN104967857B (zh) | 对图像进行编码/解码的方法和设备 | |
CN105491377B (zh) | 一种计算复杂度感知的视频解码宏块级并行调度方法 | |
CN103414895A (zh) | 一种适用于hevc标准的编码器帧内预测装置及方法 | |
CN110024394A (zh) | 对图像编码/解码的方法和设备及存储比特流的记录介质 | |
US20210203978A1 (en) | Merge mode-based inter-prediction method and apparatus | |
KR20190117708A (ko) | 부호화유닛 심도 확정 방법 및 장치 | |
CN103188496A (zh) | 基于运动矢量分布预测的快速运动估计视频编码方法 | |
CN102065298A (zh) | 高性能宏块编码实现方法 | |
CN101540911A (zh) | 产生图像数据流的方法和设备及重建图像的方法和设备 | |
CN105516728A (zh) | 一种H.265/HEVC中8x8子宏块的并行帧内预测方法 | |
CN102291581A (zh) | 支持帧场自适应运动估计的实现方法 | |
CN105025298B (zh) | 对图像进行编码/解码的方法和设备 | |
CN102769753B (zh) | H264编码器及编码方法 | |
CN103780914A (zh) | 环路滤波加速电路及环路滤波方法 | |
JP2023528609A (ja) | 符号化・復号方法、装置及びそのデバイス | |
US9077996B2 (en) | Predicted motion vectors | |
CN102595137B (zh) | 基于图像像素块行/列流水线的快速模式判决装置和方法 | |
WO2021031225A1 (zh) | 一种运动矢量导出方法、装置及电子设备 | |
Li et al. | Implementation of H. 264 encoder on general-purpose processors with hyper-threading technology | |
CN103327340A (zh) | 一种整数搜索方法及装置 | |
CN102420989A (zh) | 帧内预测方法和装置 | |
KR100708183B1 (ko) | 움직임 추정을 위한 영상 데이터 저장 장치 및 그 데이터저장 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160628 Address after: American California Applicant after: Intel Corporation Address before: The Cayman Islands, British West Indies Applicant before: Ky Wire Electric Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |