CN101068364B - 视频编码器与图形处理系统 - Google Patents
视频编码器与图形处理系统 Download PDFInfo
- Publication number
- CN101068364B CN101068364B CN2007101101921A CN200710110192A CN101068364B CN 101068364 B CN101068364 B CN 101068364B CN 2007101101921 A CN2007101101921 A CN 2007101101921A CN 200710110192 A CN200710110192 A CN 200710110192A CN 101068364 B CN101068364 B CN 101068364B
- Authority
- CN
- China
- Prior art keywords
- filter
- deblocking effect
- processing unit
- parameter
- memory source
- 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.)
- Active
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
Abstract
一示范性图形处理单元包含:一解码器,设置成解码一第一与一第二去方块效应滤波器加速指令,该第一与第二去方块效应滤波加速器指令均与被一特定视频解码器所使用的一去方块效应滤波器相关;以及一视频处理单元,设置成接收由该第一去方块效应滤波器加速指令所编码的第一参数,并判断由该接收第一参数所规范的第一存储器源,该第一存储器源位于该图形处理单元的多个存储器源其中之一,并接收由该第二去方块效应滤波器加速指令所编码的第二参数,并判断由该接收第二参数所规范的第二存储器源,该第二存储器源位于该图形处理单元的多个存储器源其中之一,其中该多个存储器源包含在该图形处理单元内的一纹理高速缓存器与一执行单元。
Description
技术领域
本发明关于影像压缩与解压缩,且尤其是关于具有影像压缩与解压缩特征的图形处理单元。
背景技术
个人计算机与消费性电子产品用于各种娱乐用品。这些娱乐用品可以大致区分为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)、运动补偿(motioncompensation)、去方块效应滤波器(deblocking filter)。这些计算通常由通用中央处理器(CPU)结合特别的硬件逻辑电路,例如特殊应用集成电路(ASICs,application specific integrated circuits),来处理。消费者因而需要多个运算平台以满足他们的娱乐需求。因而需要可以处理计算机制图与视频编码/解码的单一计算平台。
发明内容
在此公开的实施例提供一种用于视频压缩去方块效应的系统与方法。一示范性图形处理单元(GPU)包含:一解码器,设置成解码一第一与一第二去方块效应滤波器加速指令,该第一与第二去方块效应滤波加速器指令均与被一特定视频解码器所使用的一去方块效应滤波器相关;以及一视频处理单元,设置成接收由该第一去方块效应滤波器加速指令所编码的第一参数,并判断由该接收第一参数所规范的第一存储器源,该第一存储器源位于该图形处理单元的多个存储器源其中之一,并接收由该第二去方块效应滤波器加速指令所编码的第二参数,并判断由该接收第二参数所规范的第二存储器源,该第二存储器源位于该图形处理单元的多个存储器源其中之一,其中该视频处理单元还设置成从所判断的第一存储器源下载一第一像素数据方块,并将该去方块效应滤波器应用于该第一像素数据方块,并从所判断的第二存储器源下载一第二像素数据方块,并将该去方块效应滤波器应用于该第二像素数据方块,其中该多个存储器源包含在该图形处理单元内的一纹理高速缓存器与一执行单元。
附图说明
图1是用于图形与视频编码和/或解码的一示范性运算平台的方块图。
图2是图1中该视频解码器160的方块图。
图3说明一VC-1滤波器的子方块像素设置。
图4是图1VC-1回路内去方块效应滤波器硬件加速逻辑电路400的硬件描述虚拟码的列表。
图5是图4行加速逻辑电路500的硬件描述语言程序代码的列表。
图6A-D形成图4、5的行加速逻辑电路的一方块图。
图7H.264回路内去方块效应滤波器硬件加速单元700的硬件描述虚拟码。
图8A与8B显示用于行加速逻辑电路800的硬件描述虚拟码。
图9是图1的图形处理单元120的数据流程图。
图10是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门。
700~H.264回路内去方块效应滤波器硬件加速单元、710~模块定义区段、720~迭代循环区段、730~测试垂直参数区段、740~撷取参数区段、750~示例区段。
800~行加速逻辑电路、810~模块定义区段、820~对应参数区段、830~像素计算区段。
910~指令流处理器、920~指令、930~指令数据、940~执行单元池、950~纹理滤波单元、960~纹理高速缓存器、970~后包装器。
具体实施方式
用于视频编码/解码的运算平台
图1是用于图形与视频编码和/或解码的一示范性运算平台的方块图。系统100包含一通用CPU 110(此后称为主处理器)、一图形处理器(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在主处理器110上执行,而大部分的解码器160由图形处理单元120执行,在驱动器极少超载之下。依此法,经常被执行的密集运算方块(computationally intensive blocks)被卸至图形处理单元120,而更复杂的运算由主处理器110所执行。
在一些实施例中,由图形处理单元120内的VPU 150所实现的一个密集运算功能包含回路内去方块效应滤波器硬件加速逻辑电路(IDF,inloop deblocking filter hardware acceleration logic)400,亦称为回路内方块效应滤波器400或去方块效应滤波器400。VPU 150的一些实施例包含多个回路内去方块效应滤波器硬件加速逻辑电路的范例,例如,与不同编码标准如VC-1与H.264相符的滤波器。例如示于图1的实施例,其中VPU 150包含H.264回路内去方块效应滤波器硬件加速逻辑电路170与VC-回路内去方块效应滤波器硬件加速逻辑电路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视频压缩规范使用16x16像素的宏块尺寸,而其他压缩规范可使用其他尺寸。图形235内的宏块与先前解码图项的信息结合,称为帧间预测(inter prediction)处理,或与图形235的其他宏块的信息结合,称为帧内预测(intra prediction)处理。该输入比特流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去方块效应滤波器
由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 of taps),而详细的计算与比较将稍后结合图5讨论。更新值亦基于对预定群组中像素所执行的运算。
该VC-1滤波器以模拟方式处理最右边的子方块,判定像素P6、P7、P8是否达到一标准,若达到该标准则更新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子方块滤波,但需要一增加逻辑门数来执行。相对的,由VC-1回路内去方块效应滤波器硬件加速逻辑电路400所使用的开创性方法系先处理第三列/行像素,而若这些像素达到该所要求的标准,接着顺序处理剩下的那三列/行。此开创性方法比已知方法使用较少的逻辑门数,其复制各列/行的机能。VC-1IFD加速逻辑电路400的循序列处理每4个周期对两个邻近的4x4子方块滤波。此较长的滤波时间与图形处理单元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将方块参数视为4x8方块(参见图3),并执行垂直边缘滤波。若垂直参数为假(False),则该加速逻辑电路400将方块参数视为8x4方块(参见图3),并执行水平边缘滤波。
程序代码的区段420开始一迭代循环(iteration loop),设定该循环参数变量的值。第一次通过此循环时,循环参数设为3,故先处理第3行。后续的循环迭代设定循环参数为1、2与4。利用这些参数,VC-1回路内去方块效应滤波器硬件加速逻辑电路400重复4次,每次处理8个像素,其中一行可为一水平列或一垂直行。每一列是由行加速逻辑电路500所处理(参见图5)。在一些实施例中,此行加速逻辑电路500以一HDL次模块实现,将结合图5说明。
区段430测试垂直参数以判定执行垂直或水平边缘滤波。根据该结果,行阵列变量的8个元素系自该4x8输入方块的列或8x4输入方块的行初始化。
区段440通过将循环参数(由区段420所设定)与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列则通过较高层逻辑电路将其设为真。参数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-D中说明,他们一起构成行加速逻辑电路500的方块图。本领域技术人员应当对VC-1回路内去方块效应滤波器演算法及逻辑电路结构感到熟悉。因此,图6A-D的元件将不详述。而将选择详述行加速逻辑电路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、615与620用来从像素寄存器P1-P8在不同时序周期选择不同的输入,而这些输入被提供给各共用逻辑电路方块。逻辑电路方块625与630各执行一减法。逻辑电路方块635通过执行左移1位实现乘以2。乘以5由左移1位(640)所实行,后面接一加法器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开创性地采用平行与循序的结合,如前所述。平行处理提供较快速的执行并减少延迟。尽管平行化增加了逻辑门数,但增加量被前述的循序处理所抵消。没有使用前述循序处理的已知方法徒增逻辑门数。
H.264去方块效应滤波器
由VC-1所规范的去方块效应滤波器(IDF)的一实施例已如上所述。图形处理单元120的一些实施例包含一用于H.264去方块效应的硬件加速单元。本领域技术人员应当对H.264回路内去方块效应滤波器相当熟悉,故仅对该滤波操作简单概述。H.264回路内去方块效应滤波器是一条件滤波器(conditional filter),应用于所有图形的4X4方块边缘,除非 Disable_Deblocking_Filter_IDC被定义为该边缘。该滤波器系循序的应用于所有的宏块以增加宏块位址。对每个宏块,垂直边缘先从左滤到右,接着水平从上到下的滤波(VC-1应用相反的顺序)。从而使用来自目前宏块上面与左边的宏块及先前滤过的宏块取样值,且可能再次滤波。
H.264回路内去方块效应滤波器硬件加速单元700的一些先进特色将结合图7的硬件描述虚拟码说明。虽非使用实际硬件描述语言(HDL,hardwaredescription language),例如Verilog与VHDL而使用一虚拟码,本领域技术人员应对这些虚拟码相当熟悉。这些人应可了解当以实际HDL描述时,这些程序代码应可被编译并接着合成为构成部分视频加速单元150的数逻辑门配置。这些人应当可了解到这些逻辑门可以各种技术实现,例如一特定应用集成电路(ASIC)、可编程门阵列(PGA)或现场可编程门阵列(FPGA)。
此程序代码的710段是模块定义(module definition)。H.264回路内去方块效应滤波器硬件加速逻辑电路700有许多输入参数。要进行滤波的子方块是由该方块参数(Block parameter)所规范。若垂直参数(Vertical parameter)为真(True),则该加速逻辑电路700将方块参数视为4x8方块,并执行垂直边缘滤波。若垂直参数为假(False),则该加速逻辑电路700将方块参数视为8x4方块(参见图3),并执行水平边缘滤波。
程序代码的区段720开始一迭代循环(iteration loop),设定该循环参数变量的值。利用这些参数,H.264回路内去方块效应滤波器硬件加速逻辑电路700重复4次,每次处理8个像素,其中一行可为一水平列或一垂直行,依垂直参数而定。将于下详述,各行是由行加速逻辑电路800执行2次(参见第8图)。
区段730测试垂直参数以判定执行垂直或水平边缘滤波。根据该结果,行阵列变量的8个元素被自该4x8输入方块的列或8x4输入方块的行初始化。当示例时(when instantiated),区段730的这些码结合区段720的迭代码变成多工与比特放置(bit-positioning)逻辑电路(有时也称为重组逻辑电路,swizzling logic),其依程序代码所描述的,从存储器的输入方块中移动比特至P寄存器中适当的比特位置。应注意到区段720、730中的程序代码与图4中用于VC-1去方块效应滤波器400的模拟码(analogous)相同。该选择的结果是,单个多工/重组逻辑电路方块被产生且用于H.264回路内去方块效应滤波器逻辑电路700与VC-1回路内去方块效应滤波器逻辑电路400。
区段750从由图形处理单元120所提供的H.264指令内所含的信息撷取使用于实际滤波器的参数。bS(边界强度)与chromaEdgeFlag参数被使用于H264回路内去方块效应滤波器且为本领域技术人员所熟悉。参数indexA与indexB对应H.264回路内去方块效应滤波器所使用的阿法(alpha)与贝塔(beta)参数,其也为本领域技术人员所熟悉。
图形处理单元120的一开创性特征为indexA、indexB、bS参数不由H.264回路内去方块效应滤波器硬件加速逻辑电路700所计算,而由图形处理单元120内的一执行单元940所计算(稍后结合图9说明)。通过使用EU指令以实现bS、indexA、indexB的计算,可利用图形处理单元执行单元940的运算功率与通用,增强回路内去方块效应滤波器硬件加速逻辑电路700。这样的选择避免了回路内去方块效应滤波器硬件加速逻辑电路700中额外的、可能复杂的逻辑电路。在另一实施例中,参数bS、indexA、indexB是由主处理器110(参见图1)上所执行的程序代码所运算。
区段750举例说明另一HDL模块,H264_Deblock_Filter_Line,该滤波器应用目前的行。提供至该子模块的参数包含撷取自上述EU指令的控制变量,与LeftTop参数。逻辑电路700的一开创性特征是呼叫该行滤波器两次,每次呼叫仅更新一半的像素,其中被更新的一半是由LeftTop参数所标示。此设计衡量节省了逻辑门数但需要更多的时脉周期。本领域技术人员应当了解到如何以不同参数值示例该滤波行模块以产生两不同的逻辑电路方块,具有如该像素方块不同两半的输入。
在子模块处理该列的后,硬件加速逻辑电路700在区段720以一循环参数更新值继续该迭代循环。依此法,对输入方块的第1-4行应用H264_Deblock_Filter_Line。
图8A、B显示用于行加速逻辑电路800的硬件描述虚拟码,其实现了上述的H264_Deblock_Filter_Line次模块。如图8A所示,该行模块800被分成模块定义区块810、对应参数区块820与计算像素区块830。本领域技术人员应可从第8A的程序代码中理解模块定义区块810,将不再解释。对应参数区块820呼叫其他两个子程序(结合图8B说明)以对应由H.264回路内去方块效应滤波器硬件加速逻辑电路700所提供的参数IndexA、IndexB至阿法与贝塔参数。
阿法与贝塔,以及ChromaEdge flag,接着被区段830使用以通过基于 阿法、贝塔、ChromaEdge与邻近的像素值计算新的像素值确实的应用该滤波器。未显示该区段实际的虚拟码,因为本领域技术人员应知道如何实现用于单一行的去方块效应滤波器,如H.264规范中所述。
行加速逻辑电路800的开创性特征更示于逻辑区段,getAlphaBeta 850与getThreshold 870,示于图8B。这些逻辑区段对应图8A的对应参数区段820所使用的子程序。如图8B中可看到的程序代码,只读存储器(ROM,readonly memory)表系用来自IndexA与IndexB对应相对的阿法与贝塔值。同样地,ROM表是用来计算该临界值。
在图形处理单元120的一些实施例中,其中上述H.264去方块效应功能通过图形处理单元指令实施。将结合图10更详细的说明图形处理单元120,强调图形处理单元指令的特殊选择以实施H.264去方块效应加速。
图形处理器
多重去方块效应指令的原理
图形处理单元120的指令集包含在软件里执行的部分解码器160可用来加速一去方块效应滤波器。在此说明一开创性技术提供不只一个的多重图形处理单元指令以加速特定去方块效应滤波器。回路内去方块效应滤波器290原本就是循序的,因而一特定滤波器必须以一定次序对像素滤波(例如H.264规定从左到右接着从上到下)。因而,先前滤过的或更新过的像素在滤后面像素时被拿来作为输入。主处理器处理储存在已知存储器的像素值,这使得像素一个接一个读取、写入。然而,这循序的本质当回路内去方块效应滤波器290使用一图形处理单元加速部分滤波处理时无法适当配合。已知图形处理单元将像素储存在一纹理高速缓存器(texture cache),而该图形处理单元管线设计不遵从一个接一个(back-to-back)读取、写入纹理高速缓存器。
在此公开图形处理单元120的一些实施例提供多重图形处理单元指令,其可一起用来加速一特定去方块效应滤波器。其中一些指令把纹理高速缓存器当像素数据源,而一些指令使用图形处理单元执行单元作为数据源。回路内去方块效应滤波器290适当的结合使用这些不同的图形处理单元指令以实现一个接一个读取、写入像素。接下来概要说明流经图形处理单元120的数据,再接着解释由图形处理单元120提供的去方块效应加速指令,与回路内去方块效应滤波器290运用这些指令。
图形处理单元流
图9是图形处理单元120数据流的图,其中指令流是由图9左边的箭头,而影像或图形流是由右边的箭头表示。图9省略了数个本领域技术人员已知的元件,这些对解释图形处理单元120的回路内去方块效应特征非必要。一指令流处理器910从一系统总线(未示)接收一指令920,并解码该指令,产生指令数据930,例如顶点数据。图形处理单元120支援一已知图形处理指令,以及加速视频编码和/或解码的指令。
已知图形处理指令牵涉到如顶点着色(vertex shading)、几何着色(geometry shading)、像素着色(pixel shading)等难题。因此,指令数据930系应用于着色器执行单元(shader execution units)的池(pool)940。执行单元940必要使用一纹理滤波单元(TFU,texture filter unit)950以施加一纹理至一像素。纹理数据被高速缓存自纹理高速缓存器960,其在主存储器(未示)后面。
一些指令送给视频加速器150,其运作将于后说明。产生的数据接着由后包装器(post-packer 970)处理,其压缩该数据。在后处理(post-processing)之后,由视频加速单元所产生的数据被提供给执行单元池(execution unitpool)940。
视频编码/解码加速指令的执行,例如前述的去方块效应滤波指令,在许多方面与前述的已知图形指令不同。首先,视频加速指令是由视频加速单元150执行,而非着色器执行单元。其次,视频加速指令不使用其纹理数据。
然而,视频加速指令所使用的影像数据与图形指令所使用的纹理数据均为2维阵列。图形处理单元120同样利用此优点,使用纹理滤波单元950下载给视频加速单元150的影像数据,因而使纹理高速缓存器960高速缓存一些由视频加速单元150运作的影像数据。因此,示于图9,视频加速单元150是位于纹理滤波单元950与后包装器970之间。
纹理滤波单元950检验从指令920撷取的指令数据930。指令数据930更提供纹理滤波单元950纹理高速缓存器960内想要的影像数据的座标。在一实施例中,这些座标标明为U、V对,本领域技术人员应对此熟悉。当指令920是一视频加速指令时,所撷取的指令数据更命令纹理滤波单元950略过纹理滤波单元950内的纹理滤波器(未示)。
依此法,纹理滤波单元950系受操纵为视频加速指令去下载影像数据给视频加速单元150。视频加速单元150从数据路径上的纹理滤波单元950接收影像数据,与命令路径上的命令数据930,并根据命令数据930对该影像 数据执行一运作。由视频加速单元150所输出影像数据系回馈给执行单元池940,在由后包装器970处理之后。
去方块效应指令
在此叙述的图形处理单元120的实施例,提供VC-1去方块效应滤波器与H.264去方块效应滤波器硬件加速。VC-1去方块效应滤波器是由一图形处理单元指令(”IDF_VC-1”)加速,而H.264去方块效应滤波器由三个图形处理单元指令(”IDF_H264_0”、”IDF_H264_1”、”IDF_H264_2”)加速。
如先前说明的,各图形处理单元指令系解码且分析(parsed)为指令数据930,其可视为各指令的特定参数集,示于表1。IDF_H264_x指令共用一些共用参数,而其他的为各指令独有的。本领域技术人员应了解到这些参数可以使用各种操作码(opcode)与指令格式编码,所以这些议题将不在此讨论。
表1:IDF_H264指令的参数
结合使用许多输入参数以判定由纹理滤波单元950所撷取的4x4方块位址。BaseAddress参数指出在纹理高速缓存器中该纹理数据的起点。将此区域内左上方块座标给BaseAddress参数。PictureHeight与PictureWidth输 入参数系用来判断该方块的范围,即左下方座标。最后,视频图形可为逐行扫描(progessive)或隔行扫描(interlace)。若为隔行扫描,其是由两个方向组成(上方与下方)。纹理滤波单元950使用FieldFlag与TopFieldFlag以适当处理隔行扫描影像。
去方块效应8x4x8比特输出被提供给一目标寄存器,且还写回执行单元池940。将去方块效应输出写回执行单元池940是一“位置修改(modify inplace)”运作,在某些解码器的实现中是必要的,例如H.264其中方块中的像素值,右边与下方,是依先前的结果所计算。然而VC-1解码器不像H.264有此限制关系。在VC-1中,对每个8x8边界(先垂直再水平)滤波。所有的垂直边缘可以因而实质上平行地执行,4x4边缘稍后滤波。可以利用平行化因为仅有两个像素(一个边缘一个)被更新,而这些像素不用来计算其他边缘。既然去方块效应数据是写回执行单元池940而非纹理高速缓存器960,提供了不同的IDF_H264_x指令,这子方块从不同位置被撷取。这可在表1中看到,在BlockAddress的叙述中,Data Block 1与Data Block 2参数。IDF_H264_0指令从纹理高速缓存器960撷取整个8x4x8比特子方块。IDF_H264_1指令从纹理高速缓存器960撷取半个子方块并从执行单元池940撷取半个。
随解码器160而变的IDF_H264_x指令的功用将结合第8图详述。接下来叙述在供应像素数据给视频加速单元150前,纹理滤波单元950与执行单元池940转换所撷取的像素数据的处理。
影像数据的转换
上述的指令参数,提供欲从纹理高速缓存器960或从执行单元池940解取的子方块位址的座标给纹理滤波单元950。影像数据包含亮度(Y)与色度(Cb,Cr)平面。一YC标志输入参数定义要处理Y平面或是CbCr平面。
当处理亮度(Y)数据时,如YC标志参数所标示的,纹理滤波单元950撷取该子方块并提供该128比特作为VC-1回路内去方块效应滤波器硬件加速逻辑电路400的输入(例如图4的VC-1加速器范例的方块输入参数)。所产生的数据被写入目标寄存器作为一4组-寄存器(register quad,即,DST、DST+1、DST+2、DST+3)。
当处理色度数据时,如YC标志参数所标示的,Cb与Cr方块将由VC-1回路内去方块效应滤波器硬件加速逻辑电路400连续地处理。所产生的数据被写入纹理高速缓存器960。在一些实施例中,此写入动作在各周期中发 生,每个周期写入256比特。
一些视频加速单元实施例使用隔行扫描CbCr平面,各存为一半宽度与一半长度。在这些实施例中,纹理滤波单元950为视频加速单元150将CbCr子方块数据解隔行扫描至用来沟通纹理滤波单元950与视频加速单元150的一缓冲器。尤其是,纹理滤波单元950将2个4x4Cb方块写入该缓冲器,接着将2个4x4Cr方块写入该缓冲器。8x4Cb方块首先由VC-1回路内去方块效应滤波器硬件加速逻辑电路400处理,所产生的数据写入纹理高速缓存器960。接着,8x4Cr方块由VC-1回路内去方块效应滤波器硬件加速逻辑电路400处理,所产生的数据写入纹理高速缓存器960。视频加速单元150使用CbCr标志参数以管理此循序处理。
软件解码器使用去方块效应指令
结合先前图1的说明,解码器160在主处理器110上执行但也利用图形处理单元120所提供的视频加速指令。尤其是H.264回路内去方块效应滤波器290的实施例使用特定IDF_H264_x结合以处理边缘,依H.264所规定的次序,从纹理高速缓存器960撷取一些子方块并从执行单元池940撷取另一些。在适当结合之下,这些IDF_H264_x指令实现一个接一个像素读取与写入。
图10是用于H.264的16x16宏块的方块图。这宏块切割成16个4x4子方块,每个均将进行去方块效应。图10中的4个子方块可依列与行定义(例如R1,C2)。H.264定义先处理垂直边缘在处理水平边缘,如图10所示的边缘顺序(a-h)。
因此,该去方块效应滤波器是应用于一对子方块间的边缘,子方块对依此次序滤波:
edge a=[block to left of R1,C1]|[R1,C1];[block to left of R2,C1]|[R2,C1];
[block to left ofR3,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 top of R1,C2][R1,C2];
[block to top of R1,C3]|[R1,C3];[block to top of R1,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对子方块,均下载自纹理高速缓存器960,因为还没有像素因应用滤波器而被改变。尽管第1垂直边缘(a)的滤波器可以改变(R1,C1)的像素值,第2列垂直边缘实际上与第1列垂直边缘共用所有像素。因此,第2对子方块(边缘b)还下载自纹理高速缓存器960。既然两相邻列间的垂直边缘不共用像素,第3对(边缘c)与第4对(边缘d)子方块也相同。
由回路内去方块效应滤波器290所发出的特定IDF_H264_x指令判定要从那个位置下载像素数据。由回路内去方块效应滤波器290所使用的IDF_H264_x指令处理第1垂直边缘(a)的次序为:
IDF_H264_0SRC1=address of(R1,C1);
IDF_H264_0SRC1=address of(R2,C1);
IDF_H264_0SRC1=address of(R3,C1);
IDF_H264_0SRC1=address of(R4,C1);
接下来,回路内去方块效应滤波器290处理第2垂直边缘(b),从(R1,C2)开始。在定义为(R1,C2)8x4子方块内最左边4个像素与(R1,C1)子方块最右边的像素重迭。这些由(R1,C1)的垂直边缘滤波器所处理,还能更新,之重迭像素系因而被读自执行单元池940而非纹理高速缓存器960。然而,在(R1,C2)子方块最右边的4个像素还没被滤波,因而读自纹理高速缓存器960。子方块(R2,C2)到(R4,C2)也相同。回路内去方块效应滤波器290藉由命令下面IDF_H264_x的顺序以处理第2垂直边缘(b),以完成此结果:
IDF_H264_1SRC1=address of(R1,C2);
IDF_H264_1SRC1=address of(R2,C2);
IDF_H264_1SRC1=address of(R3,C2);
IDF_H264_1SRC1=address of(R4,C2);
当处理第3垂直边缘(c)时,从(R1,C3)开始。在(R1,C3)8x4子方块内最左边4个像素与(R1,C2)子方块最右边的像素重迭,因而要读自执行单元池940而非纹理高速缓存器960。然而,在(R1,C2)子方块最右边的4个像素还没被滤波,因而读自纹理高速缓存器960。子方块(R1,C2)到(R4,C2)也相同。最后一垂直边缘(d)会发生类似的情形。因此,回路内去方块效应滤波器290藉由命令下面IDF_H264_x的顺序以处理剩下2垂直边缘c与d:
IDF_H264_1SRC1=address of(R1,C3);
IDF_H264_1SRC1=address of(R2,C3);
IDF_H264_1SRC1=address of(R3,C3);
IDF_H264_1SRC1=address of(R4,C3);
IDF_H264_1SRC1=address of(R1,C4);
IDF_H264_1SRC1=address of(R2,C4);
IDF_H264_1SRC1=address of(R3,C4);
IDF_H264_1SRC1=address of(R4,C4);
接着处理水平边缘(e-h)。此时,去方块效应滤波器已应用于宏块中的每个子方块,因而每个像素可能已更新。因此,送去进行水平边缘滤波的各子方块系读自执行单元池940而非纹理高速缓存器960。因此,回路内去方块效应滤波器290藉由命令下面IDF_H264_x的顺序以处理水平边缘:
IDF_H264_2SRC1=address of(R1,C1);
IDF_H264_2SRC1=address of(R2,C1);
IDF_H264_2SRC1=address of(R3,C1);
IDF_H264_2SRC1=address of(R4,C1);
IDF_H264_2SRC1=address of(R1,C2);
IDF_H264_2SRC1=address of(R2,C2);
IDF_H264_2SRC1=address of(R3,C2);
IDF_H264_2SRC1=address of(R4,C2);
IDF_H264_2SRC1=address of(R1,C3);
依此法,复杂的滤波运作系通过图形处理单元指令集所实施。整个去方块效应滤波运作通常太复杂而难以实现为单一指令滤波器。例如,H.264滤 波器太复杂了,其包含水平路径与垂直路径。此外,方块尺寸亦相当大。因此,与其建构硬件管理滤波器的控制方面,不如依序结合各单一指令(例如,巨集),于是这些指令序列就被用来处理4x4方块。这使得可使用执行单元资源,其已齐备,因而将在回路内去方块效应滤波器中复杂控制结构的需求降到最低,如此一来可减低回路内去方块效应滤波器单元中硬件与存储器的需求。另一方面,在去方块效应滤波器290中实现这些滤波指令而不是通过在执行单元上执行的指令实现是有好处的,因为该滤波包含一些数量运作(scalar operation,例如数据重组、查表、条件滤波),这对以向量为基础的执行单元来说是没有效率的。
任何程序说明或流程图中的方块应被理解为表示模块、区段或部分程序代码,其包含用于实现特定逻辑电路功能或程序中的步骤的一个或多个可执行的指令。软件领域的普通技术人员应当了解到,其他的实现方法亦包含于所公开的范围内。在其他的实现方法中,各功能可不依所示或公开的顺序执行,包含实质上同步进行或逆向进行,依所涉之功能而定。
在此公开的系统与方法可以软件、硬件或其结合实现。在一些实施例中,该系统和/或方法系以存在存储器中的软件实现,且由位于一计算装置中的适当处理器所执行(包含而不限于一微处理器、微控制器、网路处理器、可重新装配处理器、可扩充处理器)。在其他实施例中,该系统和/或方法是用逻辑电路实现,包含而不限于一可编程逻辑器件(PLD,programmable logicdevice)、可编程门阵列(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)。
虽然本发明在此以一个或更多个特定的范例作为实施例阐明及描述,不过不应将本发明局限于所示的细节,然而仍可在不背离本发明的精神下且在请求保护的范围均等的领域与范围内实现许多不同的修改与结构上的改变。因此,最好将所附上的权利要求书广泛地且以符合本发明领域的方法解释,在随后的请求保护的前提出此声明。
Claims (14)
1.一种图形处理系统,包含:
一解码器,设置成解码一第一与一第二去方块效应滤波器加速指令,该第一与第二去方块效应滤波加速器指令均与被一特定视频解码器所使用的一去方块效应滤波器相关;以及
一视频处理单元,设置成接收由该第一去方块效应滤波器加速指令所编码的第一参数,并判断由该接收第一参数所规范的第一存储器源,该第一存储器源位于该图形处理系统的多个存储器源其中之一,并接收由该第二去方块效应滤波器加速指令所编码的第二参数,并判断由该接收第二参数所规范的第二存储器源,该第二存储器源位于该图形处理系统的多个存储器源其中之一,
其中该视频处理单元还设置成从所判断的第一存储器源下载一第一像素数据方块,并将该去方块效应滤波器应用于该第一像素数据方块,并从所判断的第二存储器源下载一第二像素数据方块,并将该去方块效应滤波器应用于该第二像素数据方块,
其中该多个存储器源包含在该图形处理系统内的一纹理高速缓存器与一执行单元。
2.如权利要求1所述的图形处理系统,其中利用该第一存储器源与第二存储器源以实现一个接一个像素读取与写入。
3.如权利要求1所述的图形处理系统,其中该第一存储器源是在该图形处理系统内的一纹理高速缓存器,而该第二存储器源是在该图形处理系统内的一执行单元。
4.如权利要求1所述的图形处理系统,其中该去方块效应滤波器加速指令与H.264视频解码器所使用的滤波器相关。
5.一种图形处理系统,包含:
一视频处理单元,设置成应用于与一特定视频解码器相关的一去方块效应滤波器;
一解码器,设置成对与该去方块效应滤波器相关的多个去方块效应滤波器加速指令解码;
一纹理滤波器单元,设置成提供像素数据至该视频处理单元,为该去方块效应滤波器所用;以及
一执行单元,设置成对像素数据执行一图形处理功能,
其中该视频处理单元还设置成接收由该各去方块效应滤波器加速指令编码的参数,并判断由该接收参数所规范的第一存储器源是对应于该纹理滤波器单元或是该执行单元,并判断由该接收参数所规范的第二存储器源是对应于该纹理滤波器单元或是该执行单元;
该视频处理单元还设置成依照所接收的参数,从该第一存储器源下载一第一像素方块,与从该第二存储器源下载一第二像素方块,并应用该去方块效应滤波器至该第一像素数据方块与应用该去方块效应滤波器至该第二像素数据方块。
6.如权利要求5所述的图形处理系统,其中该视频处理单元还设置成依照至少一滤波器参数,应用于该去方块效应滤波器,而该执行单元还设置成根据该第一像素数据方块计算该至少一滤波器参数。
7.如权利要求5所述的图形处理系统,其中该去方块效应滤波器加速指令与H.264视频解码器所使用的滤波器相关。
8.如权利要求5所述的图形处理系统,其中由该接收参数所定义的第一存储器源对应该纹理滤波单元,而由该接收参数所定义的第二存储器源对应该执行单元,以实现一个接一个像素读取与写入。
9.一种视频编码器,包含:
多个执行单元装置,设置成计算与一像素数据方块及一特定视频编码规范相关的至少一去方块效应滤波器配置参数,且还设置成执行在一图形处理单元内的一着色执行单元;
多个去方块效应装置,设置成应用于与所计算的滤波器配置参数相符的一去方块效应滤波器,且还设置成执行在该图形处理单元内的一视频处理单元。
10.如权利要求9所述的视频编码器,其中该去方块效应滤波器加速指令与H.264视频解码器所使用的滤波器相关。
11.如权利要求9所述的视频编码器,其中该至少一滤波器参数是边界强度、阿法alpha或贝塔beta。
12.如权利要求9所述的视频编码器,其中该多个去方块效应滤波器指令其中之一为该像素数据方块规范一第一存储器源,而其中该多个去方块效应滤波器指令其中的另一个为另一像素数据方块规范一第二存储器源,该第一和第二存储器源皆在图形处理单元内。
13.如权利要求12所述的视频编码器,其中该第一存储器源是在该图形处理单元内的一纹理高速缓存器,而该第二存储器源是在该图形处理单元内的一执行单元。
14.如权利要求9所述的视频编码器,其中该去方块效应滤波器加速指令与H.264视频解码器所使用的滤波器相关。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US81462306P | 2006-06-16 | 2006-06-16 | |
US60/814,623 | 2006-06-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101068364A CN101068364A (zh) | 2007-11-07 |
CN101068364B true CN101068364B (zh) | 2010-12-01 |
Family
ID=38880763
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101103594A Active CN101072351B (zh) | 2006-06-16 | 2007-06-13 | 去方块效应滤波器和视频解码器与图形处理单元 |
CN2007101101940A Active CN101068365B (zh) | 2006-06-16 | 2007-06-18 | 判定描述参考方块移动的移动向量的方法及其储存媒体 |
CN2007101101921A Active CN101068364B (zh) | 2006-06-16 | 2007-06-18 | 视频编码器与图形处理系统 |
CN200710111956.9A Active CN101083764B (zh) | 2006-06-16 | 2007-06-18 | 可编程视频处理单元与视频数据处理方法 |
CN2007101119554A Active CN101083763B (zh) | 2006-06-16 | 2007-06-18 | 可编程视频处理单元及视频数据处理方法 |
CN2007101101936A Active CN101068353B (zh) | 2006-06-16 | 2007-06-18 | 图形处理单元与计算巨图块的绝对差值加总值的方法 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101103594A Active CN101072351B (zh) | 2006-06-16 | 2007-06-13 | 去方块效应滤波器和视频解码器与图形处理单元 |
CN2007101101940A Active CN101068365B (zh) | 2006-06-16 | 2007-06-18 | 判定描述参考方块移动的移动向量的方法及其储存媒体 |
Family Applications After (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710111956.9A Active CN101083764B (zh) | 2006-06-16 | 2007-06-18 | 可编程视频处理单元与视频数据处理方法 |
CN2007101119554A Active CN101083763B (zh) | 2006-06-16 | 2007-06-18 | 可编程视频处理单元及视频数据处理方法 |
CN2007101101936A Active CN101068353B (zh) | 2006-06-16 | 2007-06-18 | 图形处理单元与计算巨图块的绝对差值加总值的方法 |
Country Status (2)
Country | Link |
---|---|
CN (6) | CN101072351B (zh) |
TW (6) | TWI444047B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9077971B2 (en) | 2008-04-10 | 2015-07-07 | Qualcomm Incorporated | Interpolation-like filtering of integer-pixel positions in video coding |
US8705622B2 (en) | 2008-04-10 | 2014-04-22 | Qualcomm Incorporated | Interpolation filter support for sub-pixel resolution in video coding |
US9967590B2 (en) | 2008-04-10 | 2018-05-08 | Qualcomm Incorporated | Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter |
EP2359590A4 (en) * | 2008-12-15 | 2014-09-17 | Ericsson Telefon Ab L M | METHOD AND APPARATUS FOR AVOIDING QUALITY DETERIORATION OF TRANSMITTED MULTIMEDIA CONTENT |
CN101901588B (zh) * | 2009-05-31 | 2012-07-04 | 比亚迪股份有限公司 | 一种嵌入式系统的图像平滑显示方法 |
CN102164284A (zh) * | 2010-02-24 | 2011-08-24 | 富士通株式会社 | 视频解码方法和系统 |
US8295619B2 (en) * | 2010-04-05 | 2012-10-23 | Mediatek Inc. | Image processing apparatus employed in overdrive application for compressing image data of second frame according to first frame preceding second frame and related image processing method thereof |
TWI395490B (zh) * | 2010-05-10 | 2013-05-01 | Univ Nat Central | 實施於電子裝置之影像編碼方法 |
US8681162B2 (en) * | 2010-10-15 | 2014-03-25 | Via Technologies, Inc. | Systems and methods for video processing |
WO2012092841A1 (en) | 2011-01-03 | 2012-07-12 | Mediatek Inc. | Method of filter-unit based in-loop filtering |
CN106162186B (zh) * | 2011-01-03 | 2020-06-23 | 寰发股份有限公司 | 基于滤波单元的回路滤波方法 |
WO2012152174A1 (en) * | 2011-05-10 | 2012-11-15 | Mediatek Inc. | Method and apparatus for reduction of in-loop filter buffer |
CA2840587C (en) | 2011-06-28 | 2017-06-20 | Samsung Electronics Co., Ltd. | Method and apparatus for coding video and method and apparatus for decoding video, accompanied with intra prediction |
TW201345269A (zh) * | 2012-03-30 | 2013-11-01 | Jvc Kenwood Corp | 影像編碼裝置、影像編碼方法、影像編碼程式、送訊裝置、送訊方法、及送訊程式、以及影像解碼裝置、影像解碼方法、影像解碼程式、收訊裝置、收訊方法、及收訊程式 |
US9953455B2 (en) | 2013-03-13 | 2018-04-24 | Nvidia Corporation | Handling post-Z coverage data in raster operations |
US10154265B2 (en) | 2013-06-21 | 2018-12-11 | Nvidia Corporation | Graphics server and method for streaming rendered content via a remote graphics processing service |
CN105872553B (zh) * | 2016-04-28 | 2018-08-28 | 中山大学 | 一种基于并行计算的自适应环路滤波方法 |
US20180174359A1 (en) * | 2016-12-15 | 2018-06-21 | Mediatek Inc. | Frame difference generation hardware in a graphics system |
CN111028133B (zh) * | 2019-11-21 | 2023-06-13 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于SystemVerilog的图形命令预译码装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1150674A (zh) * | 1994-12-02 | 1997-05-28 | 索尼公司 | 产生图像数据的方法和图像数据处理装置以及记录媒体 |
CN1398115A (zh) * | 2002-07-22 | 2003-02-19 | 上海芯华微电子有限公司 | 无附加帧存储器基于块边界的差和量化因子的去块效应法 |
CN1558680A (zh) * | 2004-01-16 | 2004-12-29 | 北京工业大学 | 一种用于视频编码的简单化环路滤波方法 |
CN1742281A (zh) * | 2002-12-27 | 2006-03-01 | 摩托罗拉公司 | 视频去块效应的方法和设备 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08298642A (ja) * | 1995-02-28 | 1996-11-12 | Daewoo Electron Co Ltd | 対話型情報記録媒体の順次情報表示方法 |
US6064450A (en) * | 1995-12-06 | 2000-05-16 | Thomson Licensing S.A. | Digital video preprocessor horizontal and vertical filters |
JP3876392B2 (ja) * | 1996-04-26 | 2007-01-31 | 富士通株式会社 | 動きベクトル探索方法 |
JPH10145753A (ja) * | 1996-11-15 | 1998-05-29 | Sony Corp | 受信装置および方法 |
US6496537B1 (en) * | 1996-12-18 | 2002-12-17 | Thomson Licensing S.A. | Video decoder with interleaved data processing |
US6177922B1 (en) * | 1997-04-15 | 2001-01-23 | Genesis Microship, Inc. | Multi-scan video timing generator for format conversion |
JP3870491B2 (ja) * | 1997-07-02 | 2007-01-17 | 松下電器産業株式会社 | 画像間対応検出方法およびその装置 |
US6487249B2 (en) * | 1998-10-09 | 2002-11-26 | Matsushita Electric Industrial Co., Ltd. | Efficient down conversion system for 2:1 decimation |
US6573905B1 (en) * | 1999-11-09 | 2003-06-03 | Broadcom Corporation | Video and graphics system with parallel processing of graphics windows |
US6882688B1 (en) * | 1998-12-11 | 2005-04-19 | Matsushita Electric Industrial Co., Ltd. | Deblocking filter arithmetic apparatus and deblocking filter arithmetic method |
CN1112714C (zh) * | 1998-12-31 | 2003-06-25 | 上海永新彩色显象管有限公司 | 显象管屏清洗设备及方法 |
US6871001B1 (en) * | 1999-03-23 | 2005-03-22 | Sanyo Electric Co., Ltd. | Video decoder |
KR100677082B1 (ko) * | 2000-01-27 | 2007-02-01 | 삼성전자주식회사 | 움직임 추정기 |
JP4461562B2 (ja) * | 2000-04-04 | 2010-05-12 | ソニー株式会社 | 再生装置および方法、ならびに、信号処理装置および方法 |
US6717988B2 (en) * | 2001-01-11 | 2004-04-06 | Koninklijke Philips Electronics N.V. | Scalable MPEG-2 decoder |
US7940844B2 (en) * | 2002-06-18 | 2011-05-10 | Qualcomm Incorporated | Video encoding and decoding techniques |
US6944224B2 (en) * | 2002-08-14 | 2005-09-13 | Intervideo, Inc. | Systems and methods for selecting a macroblock mode in a video encoder |
US7336720B2 (en) * | 2002-09-27 | 2008-02-26 | Vanguard Software Solutions, Inc. | Real-time video coding/decoding |
US7027515B2 (en) * | 2002-10-15 | 2006-04-11 | Red Rock Semiconductor Ltd. | Sum-of-absolute-difference checking of macroblock borders for error detection in a corrupted MPEG-4 bitstream |
FR2849331A1 (fr) * | 2002-12-20 | 2004-06-25 | St Microelectronics Sa | Procede et dispositif de decodage et d'affichage en marche avant acceleree d'images mpeg, circuit pilote video et boitier decodeur incorporant un tel dispositif |
TWI373734B (en) * | 2003-03-17 | 2012-10-01 | Qualcomm Inc | Method and apparatus for improving video quality of low bit-rate video |
US7660352B2 (en) * | 2003-04-04 | 2010-02-09 | Sony Corporation | Apparatus and method of parallel processing an MPEG-4 data stream |
US7274824B2 (en) * | 2003-04-10 | 2007-09-25 | Faraday Technology Corp. | Method and apparatus to reduce the system load of motion estimation for DSP |
NO319007B1 (no) * | 2003-05-22 | 2005-06-06 | Tandberg Telecom As | Fremgangsmate og apparat for videokomprimering |
US20050013494A1 (en) * | 2003-07-18 | 2005-01-20 | Microsoft Corporation | In-loop deblocking filter |
EP1659803A4 (en) * | 2003-08-19 | 2008-10-29 | Matsushita Electric Ind Co Ltd | METHOD FOR ENCODING AND DECODING A MOVING IMAGE |
US20050105621A1 (en) * | 2003-11-04 | 2005-05-19 | Ju Chi-Cheng | Apparatus capable of performing both block-matching motion compensation and global motion compensation and method thereof |
US7292283B2 (en) * | 2003-12-23 | 2007-11-06 | Genesis Microchip Inc. | Apparatus and method for performing sub-pixel vector estimations using quadratic approximations |
US20050262276A1 (en) * | 2004-05-13 | 2005-11-24 | Ittiam Systamc (P) Ltd. | Design method for implementing high memory algorithm on low internal memory processor using a direct memory access (DMA) engine |
NO20042477A (no) * | 2004-06-14 | 2005-10-17 | Tandberg Telecom As | Fremgangsmåte for chroma de-blokking |
US20060002479A1 (en) * | 2004-06-22 | 2006-01-05 | Fernandes Felix C A | Decoder for H.264/AVC video |
US8116379B2 (en) * | 2004-10-08 | 2012-02-14 | Stmicroelectronics, Inc. | Method and apparatus for parallel processing of in-loop deblocking filter for H.264 video compression standard |
NO322722B1 (no) * | 2004-10-13 | 2006-12-04 | Tandberg Telecom As | Fremgangsmate for videokoding gjennom reduksjon av blokkartefakter |
CN1750660A (zh) * | 2005-09-29 | 2006-03-22 | 威盛电子股份有限公司 | 移动向量计算方法 |
-
2007
- 2007-06-05 TW TW096120098A patent/TWI444047B/zh active
- 2007-06-13 CN CN2007101103594A patent/CN101072351B/zh active Active
- 2007-06-15 TW TW096121865A patent/TWI395488B/zh active
- 2007-06-15 TW TW096122000A patent/TWI350109B/zh active
- 2007-06-15 TW TW096122002A patent/TWI383683B/zh active
- 2007-06-15 TW TW096121890A patent/TWI482117B/zh active
- 2007-06-15 TW TW096122009A patent/TWI348654B/zh active
- 2007-06-18 CN CN2007101101940A patent/CN101068365B/zh active Active
- 2007-06-18 CN CN2007101101921A patent/CN101068364B/zh active Active
- 2007-06-18 CN CN200710111956.9A patent/CN101083764B/zh active Active
- 2007-06-18 CN CN2007101119554A patent/CN101083763B/zh active Active
- 2007-06-18 CN CN2007101101936A patent/CN101068353B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1150674A (zh) * | 1994-12-02 | 1997-05-28 | 索尼公司 | 产生图像数据的方法和图像数据处理装置以及记录媒体 |
CN1398115A (zh) * | 2002-07-22 | 2003-02-19 | 上海芯华微电子有限公司 | 无附加帧存储器基于块边界的差和量化因子的去块效应法 |
CN1742281A (zh) * | 2002-12-27 | 2006-03-01 | 摩托罗拉公司 | 视频去块效应的方法和设备 |
CN1558680A (zh) * | 2004-01-16 | 2004-12-29 | 北京工业大学 | 一种用于视频编码的简单化环路滤波方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101083764A (zh) | 2007-12-05 |
CN101068364A (zh) | 2007-11-07 |
TW200803528A (en) | 2008-01-01 |
CN101068353B (zh) | 2010-08-25 |
CN101072351A (zh) | 2007-11-14 |
CN101083764B (zh) | 2014-04-02 |
CN101072351B (zh) | 2012-11-21 |
TWI350109B (en) | 2011-10-01 |
CN101083763A (zh) | 2007-12-05 |
TWI444047B (zh) | 2014-07-01 |
CN101068365B (zh) | 2010-08-25 |
TW200816082A (en) | 2008-04-01 |
TW200803527A (en) | 2008-01-01 |
CN101083763B (zh) | 2012-02-08 |
TW200816820A (en) | 2008-04-01 |
TWI383683B (zh) | 2013-01-21 |
TWI348654B (en) | 2011-09-11 |
CN101068365A (zh) | 2007-11-07 |
TW200821986A (en) | 2008-05-16 |
TW200803525A (en) | 2008-01-01 |
TWI482117B (zh) | 2015-04-21 |
CN101068353A (zh) | 2007-11-07 |
TWI395488B (zh) | 2013-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101068364B (zh) | 视频编码器与图形处理系统 | |
US8369419B2 (en) | Systems and methods of video compression deblocking | |
US8243815B2 (en) | Systems and methods of video compression deblocking | |
CN103918273B (zh) | 确定用于变换系数的二进制码字的方法 | |
US20120307004A1 (en) | Video decoding with 3d graphics shaders | |
DE112009004320T5 (de) | Speicher-Untersystem | |
CN102857758B (zh) | 可复用像素处理方法及视频处理芯片 | |
Enfedaque et al. | GPU implementation of bitplane coding with parallel coefficient processing for high performance image compression | |
CN109246430A (zh) | 虚拟现实360度视频快速帧内预测和cu划分提前决策 | |
CN102572430A (zh) | 一种基于可重构技术的h.264去块滤波算法的实现方法 | |
Cheung et al. | Highly parallel rate-distortion optimized intra-mode decision on multicore graphics processors | |
CN116076073A (zh) | 用于高性能视频编码的硬件编解码器加速器 | |
CN116097649A (zh) | 无滤波相依性的视频帧的并行编码 | |
CN111147866B (zh) | 对数据阵列进行编码 | |
Kopperundevi et al. | A high throughput hardware architecture for deblocking filter in HEVC | |
Baldev et al. | Scalable wavefront parallel streaming deblocking filter hardware for HEVC decoder | |
CN103179391A (zh) | 图像处理设备以及图像处理方法 | |
Baldev et al. | A directional and scalable streaming deblocking filter hardware architecture for HEVC decoder | |
Jilani et al. | JPEG image compression using FPGA with Artificial Neural Networks | |
JP3757116B2 (ja) | デブロッキングフィルタ演算装置及びデブロッキングフィルタ演算方法 | |
Hautala et al. | Programmable lowpower implementation of the HEVC adaptive loop filter | |
Doan et al. | Multi-asip based parallel and scalable implementation of motion estimation kernel for high definition videos | |
Kopperundevi et al. | Methods to develop high throughput hardware architectures for HEVC Deblocking Filter using mixed pipelined-block processing techniques | |
CN102572416B (zh) | 视频滤波方法及装置 | |
Radicke et al. | Highly-parallel HVEC motion estimation with CUDA [title missing from article PDF] |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |