首页> 中国专利> 去方块效应滤波器和视频解码器与图形处理单元

去方块效应滤波器和视频解码器与图形处理单元

摘要

一种示范性视频解码器包含:熵解码器、空间解码器、组合逻辑电路与回路内去方块效应滤波器。该熵解码器接收输入编码比特流。该空间解码器接收该熵解码器的输出并产生包含多个像素的编码图片。该组合逻辑电路结合目前图片与预测图片以产生结合图片。该回路内去方块效应滤波器接收该结合图片。该回路内去方块效应滤波器包含:设置成对预定像素群滤波的逻辑电路;以及设置成当该预定像素群达到标准时,根据在多组滤波单元中的相应组滤波单元,对该多个像素群中剩下的各像素群滤波的逻辑电路。

著录项

  • 公开/公告号CN101072351A

    专利类型发明专利

  • 公开/公告日2007-11-14

    原文格式PDF

  • 申请/专利权人 威盛电子股份有限公司;

    申请/专利号CN200710110359.4

  • 发明设计人 扎伊尔德·荷圣;

    申请日2007-06-13

  • 分类号H04N7/26;H04N7/32;

  • 代理机构北京市柳沈律师事务所;

  • 代理人黄小临

  • 地址 中国台湾台北县

  • 入库时间 2023-12-17 19:20:12

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-11-21

    授权

    授权

  • 2008-01-09

    实质审查的生效

    实质审查的生效

  • 2007-11-14

    公开

    公开

说明书

技术领域

本发明是关于图像压缩与解压缩,且尤其是关于具有图像压缩与解压缩特征的图形处理单元。

背景技术

个人计算机与消费性电子产品是用于各种娱乐用品。这些娱乐用品可以大致区分为2类:使用计算机制图(computer-generated graphics)的那些,例如计算机游戏;与使用压缩视频数据流(compressed video stream)的那些,例如预录节目到数字式激光视盘(DVD)上,或由有线电视或卫星业者提供数字节目(digital programming)至机顶盒(set-top box)。第2种亦包含编码模拟视频数据流,例如由数字录像机(DVR,digital video recorder)所执行。

计算机制图通常由图形处理单元(GPU,graphic processing unit)产生。图形处理单元是一种建立在计算机游戏平台(computer game consoles)与一些个人计算机上一种特别的微处理器。图形处理单元是被最佳化为快速执行描绘三度空间基本对象(three-dimensional primitive objects),例如三角形、四边形等。这些基本对象是以多个顶点描述,其中每个顶点具有属性(例如颜色),且可施加纹理(texture)至该基本对象上。描绘的结果是二度空间像素阵列(two-dimensional array of pixels),显示在计算机的显示器或监视器上。

视频数据流的编码与解码牵涉到不同种类的运算,例如,离散余弦变换(discrete cosine transform)、移动估测(motion estimation)、移动补偿(motion compensation)、去方块效应滤波器(deblocking filter)。这些计算通常由一般用途中央处理器(CPU)结合特别的硬件逻辑电路,例如专用集成电路(ASIC,application specific integrated circuit),来处理。消费者因而需要多个运算平台以满足他们的娱乐需求。因而需要可以处理计算机制图与视频编码/解码的单一计算平台。

发明内容

在此揭露的实施例提供一种用于视频压缩去方块效应的系统与方法。一种用于视频解码的示范性去方块效应滤波器包含:设置成用来判定多个像素群中的预定像素群的像素是否达到标准的逻辑电路;设置成当达到该标准时,先对该预定像素群的像素滤波的逻辑电路;以及设置成当达到该标准时,根据在多组滤波单元(set of taps)中的相应组滤波单元,循序对该多个像素群中剩下的像素群滤波的逻辑电路。

一种示范性视频解码器包含:熵解码器、空间解码器、组合逻辑电路与回路内去方块效应滤波器。该熵解码器接收输入编码比特流。该空间解码器接收该熵解码器的输出并产生包含多个像素的编码图片。该组合逻辑电路结合目前图片与预测图片以产生结合图片。该回路内去方块效应滤波器接收该结合图片。该回路内去方块效应滤波器包含:设置成对预定像素群滤波的逻辑电路;以及设置成当该预定像素群达到标准时,根据在多组滤波单元中的相应组滤波单元,对该多个像素群中剩下的各像素群滤波的逻辑电路。

一种示范性图形处理单元包含主处理接口与视频加速单元。该主处理接口,接收至少一视频加速指令。该视频加速单元,用于该至少一视频加速指令。该视频加速单元包含回路内去方块效应滤波器。该回路内去方块效应滤波器包含:设置成判定多个像素群的预定像素群的像素是否达到第一标准的逻辑电路;设置成当达到该第一标准时,先对该预定像素群的像素滤波的逻辑电路;以及设置成当达到该第一标准时,根据在多组滤波单元(set of taps)中的相应组滤波单元,循序对该多个像素群中剩下的像素群滤波的逻辑电路。

附图说明

图1是用于图形与视频编码及/或解码的示范性运算平台的方块图。

图2是图1中该视频解码器160的方块图。

图3说明VC-1滤波器的子方块像素设置。

图4是图1VC-1回路内去方块效应滤波器硬件加速逻辑电路400的硬件描述伪码的列表。

图5是图4行加速逻辑电路500的硬件描述语言程序码的列表。

图6A至图6D形成图4、图5的行加速逻辑电路的方块图。

图7是图1的图形处理单元120的数据流程图。

图8是H.264所用的16x16大方块的方块图。

[主要元件标号说明]

100~系统、110~一般用途CPU、120~图形处理器(GPU)、130~存储器、140~总线、150~视频加速单元(VPU)、160~软件解码器、170~视频加速驱动器。

205~输入的比特流、210~熵解码器、215~空间解码器、220~反向量化器、230~反向离散余弦转换、235~图形、245~移动向量、250~移动补偿、255~先前解码图形、265~预测图形、270~空间补偿、280~加法器、290~去方块效应滤波器、295~解码图形。

310-320~两个邻近4x4子方块、330~垂直边界。

400~回路内去方块效应滤波器硬件加速逻辑电路、410~模块定义区段、420~迭代循环区段、430~测试垂直参数区段、440~比较循环参数与3区段、450~示例区段。

500~行加速逻辑电路、510~模块定义区段、520~像素值运算区段、530~比较循环参数与3区段、540~测试DO_FILTER区段、550~更新状态区段。

605-610-615-620~多工器、625-630-679~减法器、635-640-655-680~逻辑电路方块、645-650~加法器、660-665-670~暂存器、671~P4暂存器输出、673~P5暂存器输出。681~减法器、685~加法器。687-689-691-693~多工器、697~OR门。

710~指令流处理器、720~指令、730~指令数据、740~执行单元池、750~纹理滤波单元、760~纹理快取、770~后包装器。

具体实施方式

用于视频编码/解码的运算平台

图1是用于图形与视频编码及/或解码的示范性运算平台的方块图。系统100包含一般用途CPU110(此后称为主处理器)、图形处理器(GPU)120、存储器130与总线140。图形处理单元120包含视频加速单元(VPU)150,其可加速视频编码及/或解码,将于后叙述。图形处理单元120的视频加速功能是可在图形处理单元120上执行的指令。 

软件解码器160与视频加速驱动器170位于存储器130中,而至少一部分的解码器160与视频加速驱动器170在主处理器110上执行。通过一个由视频加速驱动器170提供的主处理器接口180,解码器160亦可发出给图形处理单元120的视频加速指令。如此一来,系统100通过发出视频加速指令给图形处理单元120的主处理器软件(host processor software)执行视频编码及/或解码,图形处理单元120通过加速解码器160的一部分响应这些指令。

在一些实施例中,仅有一小部分的解码器160在主处理器上执行,而大部分的解码器160是由图形处理单元120执行,在驱动器极少超载之下。依此法,经常被执行的密集运算方块(computationally intensive blocks)被卸至图形处理单元120,而更复杂的运算是由主处理器110所执行。在一些实施例中,由图形处理单元120所实现的一个密集运算功能包含回路内去方块效应滤波器硬件加速逻辑器(inloop deblocking filter hardwareacceleration logic)400,亦称为回路内方块效应滤波器400或去方块效应滤波器400,其稍后将结合图4说明。另一密集运算功能的范例是判定各滤波器的边界强度(BS,boundary strength)。

上述的结构因而使下列运作有弹性:在主处理器110上对解码器160执行一些通过对大方块(marcoblock)执行着色程序(shader program)的特殊功能(例如去方块效应或计算边界强度);或在图形处理单元120上执行大部分的解码器160,利用管线流通(pipelining)与平行化(parallelism)。在一些解码器160在图形处理单元120上执行的实施例中,该去方块效应处理是该解码器160各态样间同步的线程(thread)。

图1中省略数个对于解释图形处理单元120的视频加速特征并非必要且本领域技术人员熟知的已知元件。

视频解码器

图2是图1中该视频解码器160的方块图。在图2中说明的特殊实施例,解码器160施用ITU H.264视频压缩规范。然而,本领域技术人员应当了解到图2的解码器160是视频解码器的初步表示,该视频解码器亦说明类似于H.264的其它类型解码器的运作,例如SMPTE VC-1与MPEG-2规范。此外,尽管示为图形处理单元120的一部分,本领域技术人员亦应了解到在此揭露的部分解码器160亦可实现于图形处理单元之外,例如独立存在的逻辑电路,专用集成电路(ASIC)的一部分等。

输入的比特流205首先由熵解码器(entropy decoder)210所处理。熵编码具有统计重复型(statistic redundancy)的优点:一些图样比其它图样更常出现,所以较常出现的就用较短的码代表。熵编码包含霍夫曼编码(Huffmancoding)与运行长度编码(run-length encoding)。在熵编码之后,该数据由空间解码器(spatial decoder)215所处理,其具有下述优点,事实上,图形中邻近的像素通常相同或相关,所以只要对差异编码即可。在此示范性实施例中,空间解码器215包含反向量化器(inverse quantizer)220,与反向离散余弦转换(IDCT)功能230。IDCT功能230的输出可视为图形(235),由数像素组成。

图形235被处理为较小的子区块,称为大方块。H.264视频压缩规范使用16×16像素的大方块尺寸,而其它压缩规范可使用其它尺寸。图形235内的大方块与先前解码图项的信息结合,称为画面间预测(inter prediction)处理,或与图形235的其它大方块的信息结合,称为画面内预测(intraprediction)处理。该输入比特流205,被熵解码器205解码,而依各类型的图形施用画面间或画面内预测。

当施用画面间预测时,熵解码器210产生移动向量(motion vector)245输出。移动向量245被用来暂时的编码,其具有下述优点,事实上,通常在一连串的图形中许多像素会有相同的值。从一图形到另一图形的改变是编码为移动向量245。移动补偿方块250将一个或多个先前解码图形255结合移动向量245以产生预测图形(265)。当施用画面间预测时,空间补偿方块270将得自邻近大方块的信息与图形235内的大方块结合以产生预测图形(275)。

结合器280将图形235与模式选择器(mode selector)285的输出相加。模式选择器285使用熵解码比特流以判定结合器280使用移动补偿方块250产生的预测图形(265)或使用空间补偿方块270所产生的预测图形(275)。

编码程序引起如在沿着大方块边缘的不连续以及沿着大方块内的子方块边缘不连续的产物(artifact)。结果是在解码图框出现了“边缘”(edge),而原本没有。去方块效应滤波器290是施用于由结合器280输出的结合图形,以移去这些边缘产物。储存由去方块效应滤波器产生的该解码图形295用来解码接下来的图形。

结合图1的讨论,部分解码器160在主处理器110上执行,而解码器160亦有由图形处理单元120提供视频加速指令的优点。尤其是,在一些实施例中,去方块效应滤波器290使用由图形处理单元120提供的一个或多个指令用来实现使用相对低运算成本的滤波。

去方块效应滤波器

去方块效应滤波器290是多单元滤波器(multi-tap filter),其基于邻近像素值调整子方块边缘的像素值。可依照解码器160施行的压缩规范使用去方块效应滤波器290的不同实施例。各规范使用不同的滤波器参数,例如子区块的尺寸、由该滤波运作更新的像素数目、该滤波器施用的频率(例如每N列或每M行)。此外,各规范使用不同滤波器长度结构。本领域技术人员应了解多单元滤波器,在此不讨论特定单元的结构。由VC-1规范规定的去方块效应滤波器实施例将结合图4说明。首先,VC-1滤波器的子方块像素安排将结合图3说明。

图3显示两个邻近4x4子方块(310,320),定义为列R1-R4与行C1-C8。这两个子方块间的垂直边界330是沿着行C4与C5。该VC-1滤波器对每个4x4子方块运作。对于最左边的子方块,该VC-1滤波器检验在预定列(3)中的预定群像素(P1、P2、P3)。若该预定群像素达到特定标准,则更新相同预定列中另一像素P4。该标准是由该预定组中像素的计算与比较的特殊集合而定。本领域技术人员应了解到这些计算与比较亦可是为一组滤波单元(a set oftaps),而详细的计算与比较将稍后结合图5讨论。更新值亦基于对预定群组中像素所执行的运算。该VC-1滤波器以模拟方式处理最右边的子方块,判定像素6、7、8是否达到标准,若达到该标准则更新P5。换言之,该VC-1滤波器为一预定列(R3)的一群预定像素-边缘像素P4与P5-根据同一列中其它群预定像素的值计算数值,P4的值根据P1、P2、P3,而P5的值根据P6、P7、P8。

该VC-1有条件的更新其余列的相同群预定像素,是根据为该预定列(R3)的预定群像素(边缘像素P4、P5)所计算的值。如此一来,R1中的P4基于R1中的P1、P2、P3更新了,然而仅有R3中的P4、P5更新了。同样地,R1中的P5基于R1中的P6、P7、P8更新了,然而仅有R3中的P4、P5更新了。第2列与第4列亦以类似方式处理。

从另一方面来看,在预定第三列的像素的一些像素被滤波或更新了,当在第三列的其它像素达到标准时。该滤波器牵涉到对这些其它像素执行比较与计算。若在第三列的其它像素未达到该标准时,在其余列相应的各像素是以模拟方式滤波,如上所述。在此揭露的去方块效应滤波器290的一些实施例使用一开创性技术,先对第三列滤波,接着再对其他列滤波。这些开创性的技术将结合图4、5、6A-6D,更详细的说明。

尽管图3说明一列列的处理垂直边缘,本领域技术人员应可了解同一图旋转90度后亦可说明一行行处理水平边缘。本领域技术人员亦可了解到尽管VC-1使用四列中的第三列作为判定有条件更新其它列的预定列,在此揭露的原则亦可应用至使用其它预定列的实施例(例如第一列、第二列等),亦可应用至形成子方块列数目不同的其它实施例。同样地,本领域技术人员亦可了解到尽管VC-1检验邻近一组像素的值以设定欲更新像素的值,在此揭露的原则亦可应用至其它像素已被检验且其它像素已设定的实施例。就一范例而言,可检验P2与P3以判定P4的更新值。另一范例,P3可根据P2与P4的值设定。

图形处理单元120中的视频加速单元150为回路内去方块滤波器(IDF,inloop deblockging filter),例如由VC-1规范的回路内去方块效应滤波器,实现硬件加速逻辑电路。图形处理单元指令实现此硬件加速逻辑电路,将于后说明。实现VC-1回路内去方块效应滤波器的已知方法是平行处理各列/行,因为相同像素计算是在子方块的各列/行执行。此已知方法每周期对两个邻近的4x4子方块滤波,但需要增进逻辑门(increased gate count)执行。相对的,由VC-1回路内去方块效应滤波器硬件加速逻辑电路400所使用的开创性方法是先处理第三列/行像素,而若这些像素达到该所要求的标准,接着顺序处理剩下的那三列/行。此开创性方法比已知方法使用较少的逻辑门数,其复制各列/行的机能。VC-1回路内去方块效应滤波器加速逻辑电路400循序列处理每个周期对两个邻近的4×4子方块滤波。此较长的滤波时间与图形处理单元120的指令周期一致,其中该已知方法较快速的滤波,事实上比所需求的速度还快,造成逻辑门上的浪费。

图4是VC-1回路内去方块效应滤波器硬件加速逻辑电路400的硬件描述伪码的列表。虽非使用实际硬件描述语言(HDL,hardware descriptionlanguage),例如Verilog与VHDL而使用伪码,本领域技术人员应对这些伪码相当熟悉。这些人应可了解当以实际HDL描述时,这些程序码应可被编译并接着合成为构成部分视频加速单元150的数逻辑门配置。这些人应当可了解到这些逻辑门可以各种技术实现,例如专用集成电路(ASIC)、可编程逻辑门阵列(PGA)或现场编程逻辑门阵列(FPGA)。

此程序码的410段是模块定义(module definition)。VC-1回路内去方块效应滤波器硬件加速逻辑电路400有许多输入参数。要进行滤波的子方块是由该方块参数(Block parameter)所规范。若垂直参数(Vertical parameter)为真(True),则该加速逻辑电路400将方块参数视为4×8方块(参见图3),并执行垂直边缘滤波。若垂直参数为假(False),则该加速逻辑电路400将方块参数视为8×4方块(参见图3),并执行水平边缘滤波。

程序码的区段420开始迭代循环(iteration loop),设定该循环参数变量的值。第一次通过此循环时,循环参数设为3,故先处理第3行。后续的循环迭代设定循环参数为1、2与4。利用这些参数,VC-1回路内去方块效应滤波器硬件加速逻辑电路400重复4次,每次处理8个像素,其中一行可为一水平列或一垂直行,每一列是由行加速逻辑电路500所处理(参见图5)。在一些实施例中,此行加速逻辑电路500是以HDL次模块实现,将结合图5说明。

区段430测试垂直参数以判定执行垂直或水平边缘滤波。根据该结果,行阵列变量的8个元素是自该4×8输入方块的列或8x4输入方块的行初始化。

区段440通过将循环参数与3做比较判定该第3行是否处理。若循环参数为3,另两个控制变量,ProcessingPixel3与FILTER_OTHER_3则设为真。若循环参数不为3,将ProcessingPixel3设为真。

区段450举例说明另一HDL模块,VC1_IDC_Filter_Line,该滤波器施用目前的行。(结合图3所述,该行滤波器基于邻近像素值更新边缘像素值。)提供至该子模块的参数包含该控制变量ProcessingPixel3、FILTER_OTHER_3与循环参数。在一实施例中,VC-1回路内去方块效应滤波器硬件加速逻辑电路400有额外输入参数,量化值,而此量化参数亦提供给该子模块。

在子模块处理该列之后,VC-1回路内去方块效应滤波器硬件加速逻辑电路400在区段420以循环参数更新值继续该迭代循环。依此法,对输入方块的第3行施用该滤波器,接着第1行、第2行、第4行。

图5是行加速逻辑电路500的硬件描述语言程序码的列表,其实现了上述的子模块。程序码的区段510是模块定义。行加速逻辑电路500有许多输入参数。将进行滤波的行是定义为行输入参数。ProcessingPixel3是输入参数,若该行为第3行或第3列则通过较高层逻辑电路将其设为真。参数FILTER_OTHER_3一开始是由较高层逻辑电路设为真,而根据像素值由行加速逻辑电路500调整。

区段520执行如VC-1所定的各种像素值运算。(因为该计算可以参考VC-1的规范理解,将不对这些运算作详细说明。)区段530测试由较高层VC-1回路内去方块效应滤波器硬件加速逻辑电路400所提供的ProcessingPixel3参数。若ProcessingPixel3为真,则区段530将控制变量DO_FILTER初始化为默认值,真。在区段520中间的运算的各种结果是用来判定是否也要处理其它3行。若该像素运算结果表示不处理其它3行,则将DO_FILTER设为假。

若ProcessingPixel3为假,区段540使用输入参数FILTER_OTHER_3(由较高层VC-1回路内去方块效应滤波器硬件加速逻辑电路400所设定)以设定DO_FILTER的值。若DO_FILTER为真,区段550测试该DO_FILTER变量并更新该行变量的该边缘像素P4、P5(参见图3)。

区段560测试该ProcessingPixel3参数,并适当更新FILTER_OTHER_3。该FILTER_OTHER_3变量是用来传达此模块中不同范例的状态信息。若ProcessingPixel3为真,则区段550以DO_FILTER的值更新该FILTER_OTHER_3参数。此技术使得用来说明此模块的较高层模块(即VC1_InloopFilter)提供由此例的VC_1_INLOOPFILTER_LINE低层模块所更新的FILTER_OTHER_3值至另一例的VC_1_INLOOPFILTER_LINE。

本领域技术人员应了解到图5的伪码可以各种方式合成以产生实现行加速逻辑电路500的逻辑门布置。其中一种布置是在图6A中说明,他们一起构成行加速逻辑电路500的方块图。本领域技术人员应当对VC-1回路内去方块效应滤波器算法及逻辑电路结构感到熟悉。因此,图6A的元件将不详述。而将选择详述行加速逻辑电路500的特征。

本领域技术人员应了解到,VC-1回路内去方块效应滤波器所牵涉到的运算包含下列,其中P1-P8是指像素在被处理的列/行中的位置。

A0=(2*(P3-P6)-5*(P4-P5)+4)>>3

A1=(2*(P1-P4)-5*(P2-P3)+4)>>3

A2=(2*(P5-P8)-5*(P6-P7)+4)>>3

clip=(P4-P5)/2

前3个运算中的每一个牵涉到3个减法、2个乘法、1个加法与1个右移。图6A中的行加速逻辑电路500的一部分使用共享逻辑电路循序计算A0、A1、A2,而非为了A0、A1、A2使用特定独立逻辑电路方块。通过避免逻辑电路方块重复,利用多工器循序处理各输入,减少了逻辑门及/或功率消耗。

多工器605、610与620是用来从像素暂存器P-8在不同时序周期选择不同的输入,而这些输入是提供给各共享逻辑电路方块。逻辑电路方块625与630各执行减法。逻辑电路方块635通过执行左移1位实现乘以2。乘以是由左移1位所实行,后面接加法器645。加法器650将左移器635的输出、常数4与645输出的负数加在一起。最后,逻辑电路方块655执行右移3位。

在第1时序周期,输入T=1是提供至各多工器605、610与615,而计算A1的值并存在暂存器660。在第2时序周期,输入T=2是提供至各多工器605、610与615,而计算A2的值并存在暂存器665。在第3时序周期,输入T=3是提供至各多工器605、610与615,而计算A0的值并存在暂存器670。存在暂存器660、665、670的值A1、A2、A3将被图6B的部分行加速逻辑电路500所使用,将于后说明。P4暂存器(671)的输出与P5暂存器(673)的输出将被图6C的部分行加速逻辑电路500所使用,将于后说明。

本领域技术人员亦应了解在VC-1回路内去方块效应滤波器所牵涉到后叙的额外运算:

D=5*((sign(A0)*A3)-A0)/8

if(CLIP>0)

{

  if(D<0)

    D=0

  if(D>CLIP)

    D=CLIP

}

else

{

  if(D>0)

    D=0    

  if(D<CLIP)

    D=CLIP

}

图6B的部分行加速逻辑电路500从图6A的部分行加速逻辑电路500接收输入,并计算D(675)。再次参照图6A,CLIP(677)是如下产生:像素P4与P5由逻辑电路方块679相减,该结果由逻辑电路方块680右移(整数除以2)以产生CLIP 677。回到图6B,A1可在第一周期自暂存器660取得,A2可在第二周期自暂存器665取得,A0可在第三周期自暂存器670取得。因而,在第四周期,第6图的部分行加速逻辑电路500根据上述的方程式计算D(675)。

行加速逻辑电路500利用(675)以更新P4、P5的像素位置。尤其是,P4=P4-D而P5=P5+D。尽管图6A、图6B先前结合单一列/行(例如单一组像素位置P0-P8)说明,一子区块第3列/行的运算会影响该子区块其它3列/行的行为。行加速逻辑电路500利用一开创性方法实现此行为。当独立滤波运算从最前面开始-平行地-完成,结合图6A、图6B的说明,示于图6C、图6D的部分行加速逻辑电路500有条件的选择要更新的位置。换言之,VC-1回路内去方块效应滤波器硬件加速逻辑电路400判定是原本的值被写回或新的值被写回。相对地,已知方法,VC-1回路内去方块效应滤波器使用循环,所以独立滤波运算有条件地执行。

如先前说明的,图4解释行加速逻辑电路500的伪码在循环内如此运作:在重复区段420中出现了示例区段(instantiation section)450。此外行加速逻辑电路500的示例使用2个参数,ProcessingPixel3与FILTER_OTHER_3。用行加速逻辑电路500的这些参数如下执行像素P4、P5有条件的更新。参见图6C,暂存器P4写入减法器681的结果,其中减法器681有输入为P4(671),为0或D(675),依DO_FILTER(683)的值而定。同样地,暂存器P5写入加法器685的结果,其中加法器685有输入为P5(673),为0或D(675),依DO_FILTER(683)的值而定。因而,P4的更新值为原本的P4值(若DO_FILTER为假),或P4-D。同样地,P5的更新值为原本的P5值(若DO_FILTER为假),或P5+D。

本领域技术人员应当了解到,当处理一子方块第3列时,以P4-D更新P4的标准为:

((ABS(A0)<PQUANT)OR(A3<ABS(A0))OR(CLIP!=0)

DO_FILTER 683是由图6D中检验这些条件的部分行加速逻辑电路500所计算。多工器687提供一输入至OR门697,若ABS(A0)<PQUANT则选择真输出,其它则为假。多工器689提供另一输入至OR门697,若A3<ABS(A0)则选择真输出,其它则为假。多工器691提供另一输入至OR门697,若CLIP!=0则选择真输出,其它则为假。

DO_FILTER 683是由多工器693所提供,其利用控制输入Processing_Pixel_3(695)以选择输出OR门697的输出或输入信号FILTER_OTHER_3(699)。输入Processing_Pixel_3(695)与FILTER_OTHER_3(699)先前结合图4与举例说明行加速逻辑电路500的较高层VC-1回路内去方块效应滤波器硬件加速逻辑电路400的伪码已说明过了。回到图4,当处理第3行/列时(第1圈),Processing_Pixel_3(695)设为真,其它则为假。基于关于PQUANT、ABS(A0)、CLIP的条件,记录中间变量DO_FILTER,不论P4/P5是否更新。最后FILTER_OTHER_3(699)的值是设自该中间变数DO_FILTER。图6C、图6的逻辑电路部分的行加速逻辑电路500的结果为,每4个周期,在4邻近列/行的P4、P5的像素位置设为滤波后的值(根据A0-A3、PQUANT、CLIP等变量)或再次写入其原本的值。

该VC-1去方块效应加速单元400开创性地采用平行与循序的结合,如前所述。平行处理提供较快速的执行并减少延迟。尽管平行化增加了逻辑门数,但增加量被前述的循序处理所抵消。没有使用前述循序处理的已知方法徒增逻辑门数。

图形处理单元120的一些实施例包含用于H.264去方块效应的硬件加速单元,而此去方块效应功能是通过图形处理单元指令以供使用。图形处理单元120将结合图8详细说明,并加强说明提供H.264去方块效应加速功能的图形处理单元指令特殊选择。

图形处理器

多重去方块效应指令的原理

图形处理单元120的指令集包含在软件里执行的部分解码器160可用来加速去方块效应滤波器。在此说明一开创性技术提供不只一个的多重图形处理单元指令以加速特定去方块效应滤波器。回路内去方块效应滤波器290原本就是循序的,因而特定滤波器必须以一定次序对像素滤波(例如H.264规定从左到右接着从上到下)。因而,先前滤过的或更新过的像素在滤后面像素时被拿来作为输入。主处理器处理储存在已知存储器的像素值,这使得像素一个接一个读取、写入。然而,这循序的本质当回路内去方块效应滤波器290使用图形处理单元加速部分滤波处理时无法适当配合。已知图形处理单元将像素储存在纹理快取(texture cache),而该图形处理单元管线设计不遵从一个接一个(back-to-back)读取、写入纹理快取。

在此揭露图形处理单元120的一些实施例提供多重图形处理单元指令,其可一起用来加速特定去方块效应滤波器。其中一些指令把纹理快取当像素数据源,而一些指令使用图形处理单元执行单元作为数据源。回路内去方块效应滤波器290适当的结合使用这些不同的图形处理单元指令以达成一个接一个读取、写入像素。接下来概要说明流经图形处理单元120的数据,再接着解释由图形处理单元120提供的去方块效应加速指令,与回路内去方块效应滤波器290运用这些指令。

图形处理单元流

图7是图形处理单元120数据流的图,其中指令流是由图7左边的箭头,而图像或图形流是由右边的箭头表示。图7省略了数个本领域技术人员已知的元件,这些对解释图形处理单元120的回路内去方块效应特征非必要。指令流处理器710从系统总线(未示)接收指令720,并解码该指令,产生指令数据730,例如顶点数据。图形处理单元120支持已知图形处理指令,以及加速视频编码及/或解码的指令。

已知图形处理指令牵涉到如顶点着色(vertex shading)、几何着色(geometry shading)、像素着色(pixel shading)等难题。因此,指令数据730是施用于着色器执行单元(shader execution units)的池(pool)740。着色执行单元必要使用纹理滤波单元(TFU,texture filter unit)750以施加纹理至像素。纹理数据是快取自纹理快取760,其是在主存储器(未示)后面。

一些指令送给视频加速器150,其运作将于后说明。产生的数据接着由后包装器(post-packer 770)处理,其压缩该数据。在后处理(post-processing)之后,由视频加速单元所产生的数据是提供给执行单元池(execution unit pool)740。

视频编码/解码加速指令的执行,例如前述的去方块效应滤波指令,在许多方面与前述的已知图形指令不同。首先,视频加速指令是由视频加速单元150执行,而非着色器执行单元。其次,视频加速指令不使用其纹理数据。

然而,视频加速指令所使用的图像数据与图形指令所使用的纹理数据均为2维阵列。图形处理单元120同样利用此优点,使用纹理滤波单元750下载给视频加速单元150的图像数据,因而使纹理快取760快取一些由视频加速单元150运作的图像数据。因此,示于图7,视频加速单元150是位于纹理滤波单元750与后包装器770之间。

纹理滤波单元750检验从指令720撷取的指令数据730。指令数据730还提供TFU 750纹理快取760内想要的图像数据的坐标。在一实施例中,这些坐标标明为U、V对,本领域技术人员应对此熟悉。当指令720是视频加速指令时,所撷取的指令数据还命令纹理滤波单元750略过纹理滤波单元750内的纹理滤波器(未示)。

依此法,纹理滤波单元750是受操纵为视频加速指令去下载图像数据给视频加速单元150。视频加速单元150从数据路径上的纹理滤波单元750接收图像数据,与命令路径上的命令数据730,并根据命令数据730对该图像数据执行运作。由视频加速单元150所输出图像数据是回馈给执行单元池740,在由后包装器770处理之后。

去方块效应指令

在此叙述的图形处理单元120的实施例,提供VC-1去方块效应滤波器与H.264去方块效应滤波器硬件加速。VC-1去方块效应滤波器是由图形处理单元指令(“IDF_VC-1”)加速,而H.264去方块效应滤波器由三个图形处理单元指令(“IDF_H264_0”、“IDF_H264_1”、“IDF_H264_2”)加速。

如先前说明的,各图形处理单元指令是解码且分析(parsed)为指令数据730,其可视为各指令的特定参数集,示于第1表。IDF_H264_x指令共享一些共享参数,而其它的为各指令独有的。本领域技术人员应了解到这些参数可以使用各种操作码(opcode)与指令格式编码,所以这些议题将不在此讨论。

第1表:IDF_H264指令的参数

  参数  大小  操作数    叙述    FieldFlag    (Input)  1-位    若FieldFlag==1则Field    Picture,其它Frame Picture    TopFieldFlag    (Input)  1-位    若TopFieldFlag==1则    Top-Field-Picture,其它    Bottom-Field-Picture若设定    了FieldFlag.

  PictureWidth  (Input)  16-位例如,用于HDTV的1920  PictureHeight  (Input)  16-位例如,用于30P HDTV的1080  YC Flag  1-位  Control-2Y平面or彩度平面  Field  Direction  1-位  Control-1  CBCR Flag  1-位  Control-1Cb或Cr  BaseAddress  (Input)  32-位  无符  号的用于IDF_H64_0与IDF_H64_0:纹理存储器中的子方块基本地址  BlockAddress  (Input)  13.3  格式,  省略  分数  部分  SRC1[0:1  5]=U  SRC1[31:  16]=V用于IDF_H64_0:整个子方块(关于基本地址)的纹理坐标For IDF_H64_1:剩下的子方块(关于基本地址)的纹理坐标在IDF_H64_2未使用  DataBlock1  4×4×8  -位在IDF_H64_0未使用  SRC2[127  :0]用于IDF_H64_1:子方块的上半或左半部,根据依Control2参数编码的FilterDirection  SRC2[127  :0]用于IDF_H64_2:第一(偶数)暂存器对  DataBlock2  4×4×8  -位在IDF_H64_0 o或IDF_H64_1中未使用  SRC2[255:  128]用于IDF_H64_2:第二(奇数)暂存器对  Sub-block  (Output)  128-位去方块效应的8×4×8-bit子方块(128-位)

结合使用许多输入参数以判定由纹理滤波单元750所撷取的4×4方块地址。BaseAddress参数指出在纹理快取中该纹理数据的起点。将此区域内左上方块坐标给BaseAddress参数。PictureHeight与PictureWidth输入参数是用来判断该方块的范围,即左下方坐标。最后,视频图形可为渐进式扫描(progessive)或隔行扫描(interlace)。若为隔行扫描,其是由两个方向组成(上方与下方)。纹理滤波单元750使用FieldFlag与TopFieldFlag以适当处理隔行扫描图像。

去方块效应8×4×8位输出是提供于目标暂存器,且亦写回执行单元池740。将去方块效应输出写回执行单元池740是“位置修改(modify in place)”运作,在某些解码器的实现中是必要的,例如H.264其中方块中的像素值,右边与下方,是依先前的结果所计算。然而VC-1解码器不像H.264有此限制关系。在VC-1中,对每个8x8边界(先垂直再水平)滤波。所有的垂直边缘可以因而实质上平行地执行,4×4边缘稍后滤波。可以利用平行化因为仅有两个像素(一个边缘一个)被更新,而这些像素不用来计算其它边缘。既然去方块效应数据是写回执行单元池740而非纹理快取760,提供了不同的IDF_H264_x指令,这子方块从不同位置被撷取。这可在第1表中看到,在BlockAddress的叙述中,Data Block1与Data Block2参数。IDF_H264_0指令从纹理快取760撷取整个8×4×8位子方块。IDF_H264_1指令从纹理快取760撷取半个子方块并从执行单元池740撷取半个。

随解码器160而变的IDF_H264_x指令的功用将结合图8详述。接下来叙述在供应像素数据给视频加速单元150前,纹理滤波单元750与执行单元池740转换所撷取的像素数据的处理。

图像数据的转换

上述的指令参数,提供欲从纹理快取760或从执行单元池740解取的子方块地址的坐标给纹理滤波单元750。图像数据包含亮度(Y)与彩度(Cb,Cr)平面。YC旗标输入参数定义要处理Y平面或是CbCr平面。

当处理亮度(Y)数据时,如YC旗标参数所标示的,纹理滤波单元750撷取该子方块并提供该128位作为VC-1回路内去方块效应滤波器硬件加速逻辑电路400的输入(例如图4的VC-1加速器范例的方块输入参数)。所产生的数据是写入目标暂存器作为4组-暂存器(register quad,即,DST、DST+1、DST+2、DST+3)。

当处理彩度数据时,如YC旗标参数所标示的,Cb与Cr方块将由VC-1回路内去方块效应滤波器硬件加速逻辑电路400连续地处理。所产生的数据是写入纹理快取760。在一些实施例中,此写入操作在各周期中发生,每个周期写入256位。

一些视频加速单元实施例使用隔行扫描CbCr平面,各存为一半宽度与一半长度。在这些实施例中,纹理滤波单元750为视频加速单元150将CbCr子方块数据解隔行扫描至用来沟通纹理滤波单元750与视频加速单元150的缓冲器。尤其是,纹理滤波单元750将2个4×4 Cb方块写入该缓冲器,接着将2个4×4 Cr方块写入该缓冲器。8×4 Cb方块首先由VC-1回路内去方块效应滤波器硬件加速逻辑电路400处理,所产生的数据写入纹理快取760。接着,8×4 Cr方块由VC-1回路内去方块效应滤波器硬件加速逻辑电路400处理,所产生的数据写入纹理快取760。视频加速单元150使用CbCr旗标参数以管理此循序处理。

软件解码器使用去方块效应指令

结合先前图1的说明,解码器160在主处理器110上执行但亦利用图形处理单元120所提供的视频加速指令。尤其是H.264回路内去方块效应滤波器290的实施例使用特定IDF_H264_x结合以处理边缘,依H.264所规定的次序,从纹理快取760撷取一些子方块并从执行单元池740撷取另一些。在适当结合之下,这些IDF_H264_x指令达成一个接一个像素读取与写入。

图8是用于H.264的16×16大方块的方块图。这大方块切割成16个4x4子方块,每个均将进行去方块效应。图8中的4个子方块可依列与行定义(例如R1,C2)。H.264定义先处理垂直边缘在处理水平边缘,如图8所示的边缘顺序(a-h)。

因此,该去方块效应滤波器是应用于一对子方块间的边缘,子方块对依此次序滤波:    

edge a=[block to left of R1,C1]|[R1,C1];[block to left of R2,C1]|[R2,C1]

[block to left of R3,C1]|[R3,C1];[block to left of R4,C1]|[R4,C1]

edge b=[R1,C1]|[R2,C2];[R2,C1]|[R2,C2];

        [R3,C1]|[R3,C2];[R4,C1]|[R4,C2];

edge c=[R1,C2]|[R2,C3];[R2,C2]|[R2,C3];

        [R3,C2]|[R3,C3];[R4,C2]|[R4,C3];

edge d=[R1,C3]|[R2,C4];[R2,C3]|[R2,C4];

        [R3,C3]|[R3,C4];[R4,C3]|[R4,C4];

edge e=[block to top of R1,C1]|[R1,C1];[block to topof R1,C2]|[R1,C2];

[block to top of R1,C3]|[R1,C3];[block to top ofR1,C4]|[R1,C4]

edge f=[R1,C1]|[R2,C1];[R1,C2]|[R2,C2];

        [R1,C3]|[R2,C3];[R1,C4]|[R2,C4]

edge g=[R2,C1]|[R3,C1];[R2,C2]|[R3,C2];

        [R2,C3]|[R3,C3];[R2,C4]|[R3,C4]

edge h=[R3,C1]|[R4,C1];[R3,C2]|[R4,C2];

        [R3,C3]|[R4,C3];[R3,C4]|[R4,C4]

对于第1对子方块,均下载自纹理快取760,因为还没有像素因施用滤波器而被改变。尽管第1垂直边缘(a)的滤波器可以改变(R1,C1)的像素值,第2列垂直边缘实际上与第1列垂直边缘共享所有像素。因此,第2对子方块(边缘b)亦下载自纹理快取760。既然两相邻列间的垂直边缘不共享像素,第3对(边缘c)与第4对(边缘d)子方块亦同。

由回路内去方块效应滤波器290所发出的特定IDF_H264_x指令判定要从那个位置下载像素数据。由回路内去方块效应滤波器290所使用的IDF_H264_x指令处理第1组垂直边缘(a-d)的次序为:

IDF_H264_0 SRC1=address of(R1,C1);

IDF_H264_0 SRC1=address of(R2,C1);

IDF_H264_0 SRC1=address of(R3,C1);

IDF_H264_0 SRC1=address of(R4,C1);

接下来,回路内去方块效应滤波器290处理第2垂直边缘(b),从(R1,C2)开始。在定义为(R1,C2)8×4子方块内最左边4个像素与(R1,C1)子方块最右边的像素重迭。这些由(R1,c1)的垂直边缘滤波器所处理,亦可能更新,之重迭像素是因而被读自执行单元池740而非纹理快取760。然而,在(R1,C2)子方块最右边的4个像素还没被滤波,因而读自纹理快取760。子方块(R2,C2)到(R4,C2)亦同。回路内去方块效应滤波器290通过命令下面IDF_H264_x的顺序以处理第2组垂直边缘,以完成此结果:

IDF_H264_1 SRC1=address of (R1,C2);

IDF_H264_1 SRC1=address of (R2,C2);

IDF_H264_1 SRC1=address of (R3,C2);

IDF_H264_1 SRC1=address of (R4,C2);

当处理第3组垂直边缘时,从(R1,C3)开始。在(R1,C3)8x4子方块内最左边4个像素与(R1,C2)子方块最右边的像素重迭,因而要读自执行单元池740而非纹理快取760。

然而,在(R1,C2)子方块最右边的4个像素还没被滤波,因而读自纹理快取760。子方块(R1,C2)到(R4,C2)亦同。最后一组垂直边缘会发生类似的情形。因此,回路内去方块效应滤波器290通过命令下面IDF_H264_x的顺序以处理剩下2组垂直边缘:

IDF_H264_1 SRC1=address of(R1,C3);

IDF_H264_1 SRC1=address of(R2,C3);

IDF_H264_1 SRC1=address of(R3,C3);

IDF_H264_1 SRC1=address of(R4,C3);

IDF_H264_1 SRC1=address of(R1,C4);

IDF_H264_1 SRC1=address of(R2,C4);

IDF_H264_1 SRC1=address of(R3,C4);

IDF_H264_1 SRC1=address of(R4,C4);

接着处理水平边缘(e-h)。此时,去方块效应滤波器已应用于大方块中的每个子方块,因而每个像素可能已更新。因此,送去进行水平边缘滤波的各子方块是读自执行单元池740而非纹理快取760。因此,回路内去方块效应滤波器290通过命令下面IDF_H264_x的顺序以处理水平边缘:

IDF_H264_2 SRC1=address of(R1,C1);

IDF_H264_2 SRC1=address of(R2,C1);

IDF_H264_2 SRC1=address of(R3,C1);

IDF_H264_2 SRC1=address of(R4,C1);

IDF_H264_2 SRC1=address of(R1,C2);

IDF_H264_2 SRC1=address of(R2,C2);

IDF_H264_2 SRC1=address of(R3,C2);

IDF_H264_2 SRC1=address of(R4,C2);

IDF_H264_2 SRC1=address of(R1,C3);

任何程序说明或流程图中的方块应被理解为表示模块、区段或部分程序码,其包含用于实现特定逻辑电路功能或程序中的步骤的一个或多个可执行的指令。熟悉软件部门的技术人员应当了解到,其它的实现方法亦包含于所揭露的范围内。在其它的实现方法中,各功能可不依所示或揭露的顺序执行,包含实质上同步进行或逆向进行,依所涉的功能而定。

在此揭露的系统与方法可以软件、硬件或其结合实现。在一些实施例中,该系统及/或方法是以存在存储器中的软件实现,且由位于计算装置中的适当处理器所执行(包含而不限于微处理器、微控制器、网络处理器、可重新装配处理器、可扩充处理器)。在其它实施例中,该系统及/或方法是以逻辑电路实现,包含而不限于可编程逻辑装置(PLD,programmable logic device)、可编程逻辑门阵列(PGA,programmable gate array)、现场可编程逻辑门阵列(FPGA,field programmable gate array)或专用电路(ASIC)。在其它实施例中,这些逻辑叙述是在图形处理器或图形处理单元(GPU)完成。

在此揭露的系统与方法可被嵌入任何计算机可读媒体而使用,或连接指令执行系统、设备、装置。该指令执行系统包含任何以计算机为基础的系统、含有处理器的系统或其它可以从该指令执行系统撷取与执行这些指令的系统。所揭露的文字“计算机可读媒体(computer-readable medium)”可为任何可以容纳、储存、沟通、传递或传送该程序作为使用或与该指令执行系统连接的工具。该计算机可读媒体可为,例如(非限制)为基于电子的、有磁性的、光的、电磁的、红外线的或半导体技术的系统或传递媒体。

使用电子技术的计算机可读媒体的特定范例(非限制)可包含:具有一条或多条电性(电子)连接的线;随机存取存储器(RAM,random access memory);只读存储器(ROM,read-only memory);可拭去可编程只读存储器(EPROM或闪存)。使用磁技术的计算机可读媒体的特定范例(非限制)可包含:可携带计算机磁盘。使用光技术的计算机可读媒体的特定范例(非限制)可包含:光纤与可携带只读光盘(CD-ROM)。

虽然本发明在此以一个或更多个特定的范例作为实施例阐明及描述,不过不应将本发明局限于所示的细节,然而仍可在不背离本发明的精神下且在权利要求范围均等的领域与范围内实现许多不同的修改与结构上的改变。因此,最好将所附上的权利要求范围广泛地且以符合本发明领域的方法解释,在随后的权利要求范围前提出此声明。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号