使用系数压缩进行解码的装置和方法

文档序号:7992057阅读:571来源:国知局
使用系数压缩进行解码的装置和方法
【专利摘要】本发明提供在图形解码中使用系数压缩的方法和装置。在一个实施例中,计算机处理单元(CPU)与图形处理单元(GPU)通过接口连接,其中所述CPU提取系数并且将经过压缩的系数数据优选以均匀大小的数据包的形式传递至所述GPU进行解码和系数处理。优选地,所述所提取的系数是反变换(iT)系数且CPU包括编码器控制组件,所述编码器控制组件被配置来自适应地选择系数编码程序用于基于所述iT系数的数据内容执行iT系数数据压缩从而产生数据包,所述数据包包括识别用于对所述数据包中所包含的所述经过压缩的iT系数数据进行编码的所述所选择的系数编码程序的数据。在此情况下,所述GPU被配置来接收这些数据包并且使用作为所述包内所识别的所述所选择的系数编码程序的补充的系数解码方法在每个包内对所述iT系数数据进行解码。所述GPU优选地使用这些数据包的大规模平行系数解码。
【专利说明】使用系数压缩进行解码的装置和方法
[0001]相关申请的交叉引用
[0002]本申请案要求2011年7月19日申请的美国非临时申请案13/186,007的权利,该案内容以引用的方式并入本文中。
【技术领域】
[0003]本发明大体上涉及对图形/视频进行解码且具体而言涉及共享图形解码的集成电路(诸如中央处理器(CPU)和图形处理单元(GPU))和相关方法。
【背景技术】
[0004]已开发图形处理单元(GPU)协助计算机生成图像和视频的高效显示。通常,与计算机中央处理器(CPU)相关的二维(2D)和/或三维(3D)引擎会将图像和视频呈现为存储在系统存储器的帧缓冲器中的数据。GPU将协助CPU以所选择的方式处理数据以提供所要类型的视频信号输出。
[0005]已开发用于对编码视频进行解码并且生成适于驱动显示装置的信号(诸如DAC(数字-模拟转换器)、DVI (数字视频接口)或HDMI (高清晰度多媒体接口)信号)的各种CPU/GPU工作共享系统。从计算装置首次用于对DVD-视频进行解码时开始,就已存在图形处理功能的划分,其中CPU对视频流的某些部分(诸如MPEG-2流)进行解码而GPU进行其余处理以提供适于显示装置的格式化输出。最初,GPU将主要用于处理色彩空间转换(YUV至RGB)并且从原始编码大小伸缩以适于显示器的所需窗口或全屏。随后,GPU开始处理运动补偿(MO功能,因为这些功能属于存储带宽密集型。具有经过扩展的能力的GPU的早期实施例是 1997 年开发并且由 ATI Technologies, Inc 销售的 RagePro GPU。
[0006]一种用于给图形/视频编码的常见方法涉及使用离散余弦变换(DCT)处理的编码,所以经过编码的视频内容被转化为DCT系数。为了对这类编码视频进行播放/解码,使用反离散余弦变换(iDCT)处理是必要步骤之一。
[0007]对于视频的MPEG-2编码,视频首先被定义为由YUV值表示的像素且随后针对YUV像素数据块执行DCT处理以形成DCT系数块,所述DCT系数块量化且随后使用形成通常也包括运动矢量以及音频数据的MPEG-2编码位流的许多视频数据的可变长度码(VLC)进行熵编码。为了对这样一种MPEG-2位流的视频进行解码,针对VLC编码数据的程序必须反转,但是因编码量化程序未完全反转而以一定的数据质量损失作为牺牲。
[0008]通常,除处理MPEG-2位流的其他分量外,计算机的CPU将执行可变长度码解码(VLD)和反量化以得出与随后必须进行iDCT处理的原始DCT系数密切对应的反离散余弦变换(iDCT)系数。为了进一步减小对视频进行解码时CPU的处理负荷,已将iDCT计算的执行转移至GPU。1998年至1999年,由于提供高质量MPEG-2解码用于在具有被称作DXVA(DirectX视频加速)的接口的Windows PC上播放DVD的高需求,Microsoft将CPU-GPU接口标准化。这种界面是被称作DirectX的通用图形芯片应用编程接口(API)的一部分。有关 DXVA 接 口 的信息可在 Microsoft 网站上获得:http://msdn.microsoft.com/en-us/Iibrary/ff568238 (v=vs.85).aspx,其中提到:
[0009]DirectX VA接口支持处理低级反离散余弦变换(iDCT)的不同方式。存在两种基本类型的操作:
[0010]1.主机外iDCT:将转换系数的宏块传递至加速器进行外部iDCT、图像重建和重建裁剪。
[0011]2.基于主机的iDCT:在主机上执行iDCT并且将空间域结果块传递至加速器进行外部图像重建和重建裁剪。
[0012]在两种情况下,在主机上执行基本的反量化程序、iDCT前范围饱和、MPEG-2失配控制(若需要)和DC内部偏移(若需要)。在两种情况下,最后的图像重建和重建裁剪在加速器上完成。
[0013]图1提供经由标准DXVA接口耦合至GPU的CPU的图,其中GPU执行iDCT处理。如图1所示,CPU处理MPEG-2编码视频以提取iDCT系数并且经由iDCT系数数据接口 100(诸如耦合在个人计算机主板上的数据总线)将iDCT系数的宏块传递至GPU进行iDCT处理。CPU也传递运动矢量列表和与显示顺序逻辑和相关视频相关的各种其他数据项。但是,iDCT系数构成传递至GPU进行视频处理的数据的绝大部分,因为iDCT系数包含用于界定视频的每个帧的每个像素的显示特性的信息。
[0014]DXVA (和类似DXVA)插口围绕使用解码处理用于视频实时播放的概念设计,其中(PU将一部分工作转移给GPU。DXVA接口适用于经过处理按典型的三十(30)帧/秒速率显示的相对较低分辨率视频。近些年来,分辨率已从DVD分辨率(720x480像素)增至HDTV(1920x1080像素)。目前,GPU甚至可能需要针对各种编解码器按1920x1080处理全位流解码以支持可能也具有双流或PIP (画中画)能力的蓝光电影播放。
[0015]除满足由更高分辨率形成的处理需求以外,还需要按更高帧率(诸如大于实时十倍或更高)进行解码。例如,更高帧率可用于将一种格式的代码转换成另一种格式、流畅的超快快进显示、针对流畅快进的传输顺序和显示顺序转换、120Hz及240Hz显示器上的流畅快进、视频编辑(尤其在多个视频流合并成一个最终流时)和视频检索算法(诸如针对面部或目标检测)。
[0016]已通过使用包括被称作着色器的处理组件的SMD处理引擎的配置开发具有扩展的处理功能的GPU。例如,图2图示了现有技术GPU,即ATI Radeon HD5800系列GPU。Radeon HD5800系列GPU具有大约2.72TeraFL0PS的处理能力。所述GPU具有20个SMD引擎,每个引擎具有16个处理器(着色器),即320个着色器。RadeonHD5800系列GPU也具有80个纹理单元(每个SMD引擎4个)和一个提供大约150+GB/秒峰值带宽的图形双倍数据率(⑶DR)存储接口。
[0017]在传统的DXVA接口中,iDCT系数通常使用每个系数32位发送。
【发明者】已承认将帧率增大为例如实时显示速度的10倍或100倍或更大会产生严重的存储带宽瓶颈。

【发明内容】

[0018]提供将系数压缩用于图形解码的方法和装置。在一个实施例中,计算机处理单元(CPU)与图形处理单元(GPU)通过接口连接以对视频或其他图形进行解码,其中CPU压缩所提取的系数并且将经过压缩的系数数据传递至GPU进行解压缩和处理。优选地,反变换(iT)系数被压缩编码成均匀大小的数据包,所述数据包可逐个包地解码以促进大规模的平行系数解码。
[0019]示例性CPU可包括编码器控制组件,该编码器控制组件被配置来自适应地选择编码程序以基于iT系数的数据内容执行iT压缩使得所选择的iT系数编码程序自适应地用于iT系数编码。在此情况下,GPU被配置来接收识别所选择的iT系数编码程序的数据以及经过压缩的iT系数数据并且具有被配置来使用作为所选择的系数编码程序的补充的系数解码方法对iT系数数据进行解码的解码器。
[0020]根据本发明制作的组件处理器可被连接来提供分布式图形解码装置。这样一种装置可例如包括第一处理单元(诸如CPU)和第二处理单元(诸如GPU)。第一处理单元优选地被配置来提取定义图像数据的反变换(iT)系数并且将iT系数编码成经过压缩的iT系数数据。提供被配置来将经过压缩的iT系数数据传递至第二处理单元的接口。第二处理单元优选地被配置来将经过压缩的iT系数数据解码成定义图像数据的iT系数并且进行iT系数的iT处理。
[0021]这样一种分布式图形解码装置可包括一个组件,所述组件被配置来自适应地选择编码程序以基于iT系数的数据内容执行iT系数编码使得所选择的编码程序用于系数编码。优选地,第一处理单元包括自适应地选择所选择的系数编码程序并且被配置成包括用经过压缩的iT系数数据识别所选择的系数编码程序的数据的组件。较佳地,系数编码程序定义可独立解码以促进第二处理单元中的大规模平行系数解码的均匀大小的数据包。
[0022]在另一个实施例中,公开一种计算机可读存储介质,其中存储由一个或多个处理器执行以促进经过选择性配置的处理单元的制造的一组指令,所述处理单元包括:处理组件,其被配置来生成定义图像数据的反离散余弦变换(iT)系数;和编码器,其被配置来将iT系数编码成经过压缩的iT系数数据以输出至另一个集成电路来完成iT处理。
[0023]在另一个实施例中,公开一种计算机可读存储介质,其中存储由一个或多个处理器执行以促进经过选择性配置的处理单元的制造的一组指令,所述处理单元包括:输入端,其被配置来接收表示定义图像数据的经过编码的iDCT系数的经过压缩的反离散余弦变换(iDCT)系数数据;解码器,其被配置来将经过压缩的iDCT系数数据解码成定义图像数据的iDCT系数;和处理组件,其被配置来对iDCT系数进行iDCT处理。
[0024]可提供指令组来促进相应CPU和GPU的制造。计算机可读存储介质可具有用用于装置(诸如集成电路)的制造的硬件描述语言(HDL)指令书写的指令。
【专利附图】

【附图说明】
[0025]图1是具有与传统图形处理单元(GPU)通过接口连接的传统计算机处理单元(CPU)的传统分布式图形解码装置的实施例的方框图,其中CPU将iDCT系数传递至GPU进行iDCT处理。
[0026]图2是示例性现有技术GPU的方框图。
[0027]图3是根据本发明的实施方案的分布式图形解码装置的示例性设计的方框图。
[0028]图4是根据本发明的实施方案的经过压缩的iDCT系数数据的数据包格式的实施例。
[0029]图5a和图5b是传统MPEG-2DCT系数块扫描顺序编码图。[0030]图6a和图6b是根据本发明的实施方案的iDCT系数块扫描顺序编码图的实施例。
[0031]图6c和图6d是图6a和图6b所示的iDCT系数块扫描顺序编码图的象限的iDCT系数扫描顺序编码图的其他替代实施例。
[0032]图7a是一系列iDCT系数内的非零iDCT系数的实施例。
[0033]图7b是根据本发明的实施方案的包含图7a的非零iDCT系数的所述系列的iDCT系数的替代iDCT系数编码的实施例。
[0034]图7c是图7b的实施例的系数编码的经过压缩的iDCT系数数据的数据包格式的实施例。
[0035]图8是根据本发明的实施方案的iDCT系数子块扫描顺序编码图的实施例。【具体实施方式】
[0036]参考图3,图示了分布式图形解码装置30的实施例。示例性装置30包括第一处理单元31 (诸如计算机处理单元(CPU))和第二处理单元32 (诸如包括iDCT系数数据接口300 (诸如图1所示的iDCT系数数据接口 100)的图形处理单元(GPU))。如本领域技术人员所知,处理单元31和处理单元32的功能(除经由传统通信架构连接外)可实体在单个包装内或甚至在同一个模上。第一处理单元31包括图形/视频位流解码处理组件33,所述图形/视频位流解码处理组件33被配置来提取定义图像数据的反离散余弦变换(iDCT)系数并且执行其他传统功能诸如生成显示顺序逻辑和音频时间同步的运动矢量和数据。iDCT系数的提取可通过传统方式执行,诸如由图1的现有技术CPU完成。
[0037]与图1所示的现有技术CPU不同,示例性第一处理单元31包括iDCT系数包编码器35,所述iDCT系数包编码器35被配置来将由处理组件33生成的iDCT系数压缩编码成经过压缩的iDCT系数数据的均匀大小的包。编码器35通过接口 300(诸如,例如计算机主板上的传统数据总线)输出经过压缩的iDCT系数数据。如本领域技术人员所知,计算机主板可以多种形式存在于多种计算装置中,包括但不限于服务器、笔记本电脑、移动装置(例如,智能手机)、摄像机、平板电脑等。
[0038]与图1所示的现有技术GPU不同,示例性第二处理单元32包括iDCT系数包解码器36,所述iDCT系数包解码器36具有被配置来经由接口 300接收由第一处理单元31的包编码器35生成的经过压缩的iDCT系数数据的包的输入端。解码器36对经过压缩的iDCT系数数据的包进行解码以重建定义图像数据的iDCT系数。解码器随后将经过解码的iDCT系数提供给进行iDCT系数的iDCT处理的iDCT处理组件38。由iDCT处理组件38执行的iDCT处理可通过与由图1的GPU执行的传统iDCT处理相同的方式执行。
[0039]如下文更全面讨论,iDCT系数包编码器35可被配置来使用各种系数编码方法对iDCT系数进行压缩编码。优选地,所产生的包被可单独解码成经过识别的iDCT系数以允许由第二处理单元32进行大规模的平行系数解码解压缩。例如,第二处理单元32可以是类似于图2所示的GPU的GPU。在此情况下,解码器36优选地被配置来使用GPU着色器进行所接收的经过压缩的iDCT系数数据的包的大规模平行系数解码解压缩以重建iDCT系数。通过提供均匀大小的可单独解码的包,可将单独包分配给单独的着色器线程进行平行系数解码。
[0040]为了充分利用GPU处理能力和数据传输总线300,解码装置30可包括类似于第一处理单元31的多个处理单元。例如,每个这样的处理单元可以是多核CPU的处理核心。在这样的实施例中,多个CPU核心可执行例如相同视频流的不同部分或不同视频流的系数编码并且被配置来各通过接口 300将经过压缩的系数数据发送给GPU32。
[0041]可提供一种组件,该组件被配置来自适应地选择编码程序以基于iDCT系数的数据内容执行系数编码使得所选择的编码程序用于系数编码。优选地,第一处理单元31包括自适应地选择所选择的系数编码程序的组件。例如,处理组件33可被配置来执行这种功能。处理组件33随后可将识别所选择的系数编码程序的数据提供给编码器35,所述编码器35接着可包括用所述编码器35使用所选择的系数编码程序进行编码的经过压缩的iDCT系数数据识别包中的所选择的系数编码程序的数据。[0042]图像/视频数据传统上针对连续的图像/视频帧而产生。可由处理组件33结合针对每个帧生成iDCT系数而收集压缩方法统计数据。数据压缩优选地定义一系列数据包,所述数据包对大致短于帧的iDCT系数的总大小的整个帧的iDCT系数进行编码。
[0043]虽然可以使用针对一个帧的所收集的统计数据以针对每个帧逐个包地自适应地选择系数编码方法以限制处理所述帧的数据所需的时间量,但是较佳地,这种统计数据用于动态适应并且改变后一个帧的iDCT系数的压缩方法。若需要,可针对多个帧延迟自适应方法改变以防止方法之间和/或在针对所选择系列的帧收集到表明需要不同方法的类似统计数据后的触发。
[0044]优选地选择系数编码和系数解码程序使得对于给定系列的帧,由编码器35针对所述系列的帧对iDCT系数进行系数编码所需的时间Tenc加上将经过压缩的iDCT系数数据从第一处理单元31传递至第二处理单元32所需的接口时间Tic加上由解码器36对iDCT系数进行系数解码和重建所需的时间Tdec小于或等于通过接口 300将未压缩的iDCT系数从第一处理单元31传递至第二处理单元32所需的时间Tiu。
[0045]Tenc+Tic+Tdec ^ Tiu (等式 I)
[0046]通常,自适应方法选择被配置来针对各帧实现与仅传达未压缩iDCT系数的传统方法相比充分(非最佳)的时间节省。在收集到的统计数据表明无法实现处理时间节省或未压缩iDCT系数的传达所花时间较少的情况下,处理组件33可被配置来指示编码器35放弃系数编码并且仅仅将未压缩iDCT系数传递至第二处理单元32。在此情况下,解码器36将仅接收并且存储未压缩iDCT系数以供iDCT处理组件38处理。
[0047]在DXVA接口中,未压缩iDCT系数的宏块通常使用每个系数32位发送。传统的接口可被设计成按30帧/秒的帧率(其为正常速度视频显示的典型速率)适应每个系数32位的通信。但是,如果变得需要按高得多的帧率(诸如300帧/秒)处理视频图像,那么每个系数32位的数量针对给定时间周期增大10倍且接口可能因归因于接口的存储带宽瓶颈而限制图形处理可实现的总速度。但是,本发明可大大提高相同处理器间接口的总处理速度的限制。
[0048]与将未压缩iDCT系数格式化成每个通过处理器间接口发送的系数数据段32位的时间相比,iDCT系数的压缩编码花费非常少的额外时间。如上所述,诸如传统GPU中所有的着色器可有利地用于执行处理的系数解码以藉由执行高效、大规模平行解压缩快速重建iDCT系数。
[0049]在将传统GPU设计用于第二处理单元32时,实施解码器36的时间节省(或成本)随设计而改变;具有较少着色处理器的设计可实现基本性能,具有较多着色处理器的设计可实现较高性能。
[0050]在由编码器35执行的系数编码的第一实施例中,压缩流由数量可根据帧的相应iDCT系数而逐个帧地变化的固定大小的包组成。具有固定大小(诸如64字节、128字节等)促进大规模的平行解压缩。因而,解码器36可被配置来将针对iDCT系数重建的每个接收到的包分配给第二处理单元32内的任何可用着色器。在第二处理单元32类似于图2所示具有可按时间片方式同时处理多条线程的320个着色器的GPU而配置的情况下,多达2560个包可同时解码,其中每个着色器被配置来一次同时处理八条线程。
[0051]优选地,第二处理单元32被配置有可被配置来驱动一个或多个显示装置的多个输出端。现行的标准型输出端包括用于经由模拟视频图形阵列(VGA)线驱动许多可购得类型的阴极射线管(CRT)显示器/平板电视/投影仪的数字-模拟转换器(DAC)输出端、用于在许多可购得的数字显示装置(诸如平板显示器)上提供非常高的视觉质量的数字视频接口(DVI)输出端和用作许多高清晰度电视或类似物的未压缩数字数据的小型音频/视频接口的高清晰度多媒体接口(HDMI)输出端。或者或此外,第二处理单元32可包括在具有显示器的装置中并且可直接连接以驱动装置的显示器。一旦第二处理单元32重建iDCT系数,所述iDCT系数随后就可通过传统方式处理以提供经过选择性格式化的信号以驱动所要显示装置以显示反映经过解码的系数的图像。
[0052]图4图示了示例性包格式,其从报头开始,随后是第一系数段且随后是许多后续系数段以填满数据包,可从所述数据包中解码可变数量的iDCT系数。如果数据包大小选择为64个8位字节,那么报头表示4个字节且针对经过压缩的iDCT系数数据存在60个字节。针对图4的实施例,每个系数段表示2个字节,所以对于64个8位字节包,将存在第一系数段,随后是58个后续系数段。
[0053]具有可变数量的可解码iDCT系数的固定包长度通常意味着数据应被连续压缩,但是允许大规模的平行系数解压缩。如使用对DCT系数进行编码,iDCT系数编码优选地利用许多系数具有零值的事实。
[0054]图4示例性格式的报头包括足够的信息以随机针对任何宏块(MB)、MB内的任何块、在所述块内的任意iDCT系数下开始系数处理。通常,在包含8X8像素块的视频数据的8X8块中存在64个iDCT系数。所以,示例性报头格式提供用于识别所识别的块内的第一个非零iDCT系数的6个位。通常,在MB内存在6至8个块,对于4:2:OYUV色彩空间,针对亮度编号为O至3且针对色度编号为4和5以及对于4:2:2YUV色彩空间,针对亮度编号为O至3且针对色度编号为4至7。所以,示例性报头格式提供用于识别任一 YUV格式的所识别的MB内的特定块的3个位。通过在示例性包格式中提供16个位用于识别MB,可提供多达65535个ID,其多于足以识别4000X4000像素显示器或甚至更高分辨率显示器的所有MB的ID数。
[0055]图4的示例性报头还包含5个位以指示用哪种压缩模式压缩包内的iDCT系数数据。可存在针对压缩选择的多达32种压缩类型。数据包的系数段的格式可取决于所选择的压缩类型。图4图示了第一实施例,其中典型12位iDCT系数的整体的数据编码在数据包中。下文参考图7a至图7c讨论替代实施例。
[0056]图4示例性包格式的报头以两个备用位结束使得报头包含可均匀分成整数字节的位大小。
[0057]图4实施例的系数段包括表示iDCT系数“游程”中许多iDCT系数的4个位和针对12位iDCT系数值的12个位。在此情况下;“游程”是其后为非零值iDCT系数的一系列零值iDCT系数。对于第一系数段,前四个位是备用的,因为第一个iDCT系数是由报头识别的开始系数。对于后续系数段,前四个位识别包括下一个非零值iDCT系数的游程中iDCT系数的数量。在游程中存在14个或更少零值iDCT系数的情况下,所述段的后12个位包含游程中的非零值iDCT系数的12位iDCT系数值。在游程中存在15个或更多零值iDCT系数的情况下,转义值(诸如前4位中的0000)用于指示所述段的后12位识别下一个非零值iDCT系数前的零值iDCT系数的数量。
[0058]压缩系数编码的8X8系数块内的iDCT系数编号顺序可基于统计分析选择以提供更有效的压缩。对于MPEG-2DCT系数编码,存在图5a所示的锯齿形扫描顺序,其用于提高游程长度编码效率。还存在替代的MPEG-2DCT系数锯齿形扫描顺序,其对于图5b所示的隔行扫描视频是优选的。但是,对iDCT和DCT系数进行编码存在使其他编码顺序成为优选的差异。
[0059]图6a和图6b是根据本发明的实施方案的iDCT系数块扫描顺序编码图的实施例。在图6a中,扫描/编码序列在8X8块上方拼贴成4个4x4子块,所述子块进一步分成4个2x2段。序列相对于2x2段、4x4子块内的2x2段和块内的4x4子块内的系数从左至右,从顶行开始并且继续到底行。在图6中,扫描/编码序列在8X8块上方拼贴成4个4x4子块。次序相对于4x4子块内和块内的4x4子块内的系数从左至右,从顶行开始并且继续到底行。图6c和图6d分别是图6a和图6b所示的iDCT系数块扫描顺序编码图的象限的iDCT系数扫描顺序编码图的其他替代实施例。
[0060]系数编码程序的iDCT系数块扫描顺序分量可基于考虑帧是逐行或隔行编码而从视频的前一帧的块中收集的统计数据选择。在处理期间,可对数据样本尝试多种方法以确定哪种提供最佳结果。在帧结束时,整个统计数据随后可编译以例如通过使用某些阈值(即,添加迟滞)而确定更好的系数编码替代。如果指示更好的系数编码程序,那么可针对下一帧切换至所述替代系数编码程序。
[0061]此外,帧的宏块(MB)通常在MPEG型编码中以传统的光栅扫描顺序处理,从左至右,从顶行开始并且进行至底行。类似MB解码处理是优选的,但是可通过将输入的MB划分成组(诸如行或片)而获得一定数量的平行压缩,其可能因邻接的存储缓冲器的一些未使用部分或对多个独立存储缓冲器的需要而产生稍微较低的压缩比。
[0062]iDCT系数编码的另一个实施例是将iDCT系数数据划分为两个或更多个流,使得基础流仅提供每个系数的一些最低有效位且第二流(列)和/或后续流(列)提供其余的位。这样一种替代实现更高的压缩比,因为非常少的系数具有需用12个位来表示的值。
[0063]特定实施例图示在图7a至图7c中,其中针对系数编码/解码将iDCT系数数据分成二个流。
[0064]图7a是8个非零iDCT系数的实施例,85个iDCT系数的序列从MB “22”的块“I”中开始。在这个样本数据中,8个非零12位二进制值中,6个可通过仅使用4个位编码;I个需要7个位;且I个需要11个位。这种统计事实可用于设计针对系数编码将iDCT系数数据划分成三个流,即每个非零iDCT系数值的4个最低有效位(LSB)、4个中间位和4个最高有效位(MSB)。
[0065]图7c图示了这种系数编码的示例性包格式。如使用图4的示例性报头,图7c的示例性报头具有16个位用于识别MB ;3个位用于识别所识别的MB内的特定块;5个位用于指示用哪种压缩模式压缩包内的iDCT系数数据;6个位用于识别所识别的块内的第一个非零iDCT系数。两个备用位使得报头包含可均匀分成整数字节的位大小。例如,这样一种报头可组成64个8位字节包的前4个字节。
[0066]图7a至图7c实施例的系数段包括表示iDCT系数数据的“游程”中的许多iDCT系数部分的4个位,但仅4个位针对12位iDCT系数值的三个分区之一。所以,每个这种区可以是示例性64个8位字节包的I字节。在此情况下;“游程”是之后是相应分区的非零值iDCT系数部分的一系列零值iDCT系数部分。
[0067]如使用图4实施例,对于第一系数段,前4个位是备用的,因为第一个iDCT系数是由报头识别的开始系数。对于后续系数段,前4个位识别包括下一个非零值iDCT系数部分的游程中iDCT系数部分的数量。在游程中存在14个或更少零值iDCT系数部分的情况下,所述段的后4个位包含游程中的非零值iDCT系数部分的4位iDCT系数值部分。在游程中存在15个或更多零值iDCT系数部分的情况下,转义值(诸如前4位中的0000)用于指示所述段的后4位识别在下一个非零值iDCT系数前存在至少15个零值iDCT系数部分。多个系数段(包括转义值)用于指示游程中非零值之前的多组15个零值系列。
[0068]图7b图示了将iDCT系数数据缓冲成缓冲器I中的LSB流、缓冲器2中的中间位流和缓冲器3中的MSB流并且图示了由具有图7a的8个非零值的85个iDCT系数的组得出的相应流数据包的数据。每个数据包可包括额外数据以填满针对包选择的字节大小。
[0069]如图7b所示,LSB流的包包含指示包内的系数数据以MB22的块I的iDCT系数开始的报头。系数编码方案“X”指示为iDCT系数数据的三向划分系数编码的LSB流。“O”用于指示第一个非零值发生在所述系列的相应第一个LSB系数部分中且“s”指示备用报头位。这表示示例性64字节包的4个字节。
[0070]在缓冲器I包的第一个系数段中,“s”指示前4个备用位且后4位包含对应于非零值“a”的LSB部分的值10。对于缓冲器I包的下一个系数段,前4位中的“I”指示一位的游程且后4位包含对应于非零值“b”的LSB部分的值11。对于缓冲器I包的下一个系数段,前4位中的“4”指示四位的游程且后4位包含对应于非零值“c”的LSB部分的值5。对于缓冲器I包的下一个系数段,前4位中的“O”指示后4位包含非零值“c”后的游程中的前15个非零值。对于缓冲器I包的下一个系数段,前4位中的“2”指示与之前段结合的17位的游程且后4位包含对应于非零值“d”的LSB部分的值4。对于缓冲器I包的下一个系数段,前4位中的“3”指示3位的游程且后4位包含对应于非零值“e”的LSB部分的值4。
[0071]对于缓冲器I包的下一个系数段中,前4位中的“O”指示后4位包含非零值“e”后的游程中的前15个非零值。对于缓冲器I包的下一个系数段,前4位中的“6”指示与前段结合的21位的游程且后4位包含对应于非零值“f”的LSB部分的值4。对于缓冲器I包的下一个系数段,前4位中的“I”指示一位的游程且后4位包含对应于非零值“g”的LSB部分的值4。
[0072]对于缓冲器I包的下两个系数段,前4位中的“O”指示后4位包含非零值“g”后的游程中的第一组和第二组15个非零值。对于缓冲器I包的下一个系数段,前4位中的“7”指示与前两段结合的37位的游程且后4位包含对应于非零值“h”的LSB部分的值6。
[0073]上述内容表示64个8位字节包的前16个字节的系数编码。包的其余部分可用iDCT系数数据的其他LSB部分填充。
[0074]如图7b进一步所示,中间位流的包包含指示包内的系数数据以MB22的块I的iDCT系数开始的报头。系数编码方案“y”指示为iDCT系数数据的三向划分系数编码的中间位流。“46”用于指示第一非零值发生在所述系列的相应第47个中间系数部分中且“s”指示备用报头位。这表示示例性64字节包的4个字节。
[0075]在缓冲器2包的第一个系数段中,“s”指示前4个备用位且后4位包含对应于非零值“f”的中间位部分的值4。对于缓冲器2包的下一个系数段,前4位中的“I”指示一位的游程且后4位包含对应于非零值“g”的中间位部分的值6。
[0076]上述内容表示64个8位字节包的前6个字节的系数编码。包的其余部分可用iDCT系数数据的其他中间位部分填充。
[0077]如图7b进一步所示,MSB流的包包含指示包内的系数数据以MB22的块I的iDCT系数开始的报头。系数编码方案“z”指示为iDCT系数数据的三向划分系数编码的MSB流。“47”用于指示第一个非零值发生在所述系列的相应第48个MSB部分中且“s”指示备用报头位。在缓冲器2包的第一个系数段中,“s”指示前4个备用位且后4位包含对应于非零值“g”的中间位部分的值4。上述内容表示64个8位字节包的前5个字节的系数编码。包的其余部分可用iDCT系数数据的其他中间位部分填充。
[0078]如图7b所示,针对iDCT系数数据的给定系列/帧,需以iDCT系数数据的三向划分编码在中间和MSB数据流中的包的数量与需编码在LSB流中的包的数量相比相对较小。在第二处理单元32中,包解码器34因此可被配置来首先将基础LSB流解压缩,所述基础LSB流具有大多数数据。较小量的中间位和MSB数据随后可在可能会非常短的后续系数解码进程中解压缩并且添加至iDCT系数存储器。
[0079]如果位流、位率因量化改变而大量增大或减小,那么用于位划分的位的数量可改变或如果未针对使用多流划分计算出提高,那么压缩可回退至单流。
[0080]基于不同分辨率的统计数据和经过编码的数据流的位率,用于指示游程长度和非零系数数据的位的数量的不同组合可用于提供提高的数据压缩。
[0081]例如,对于双向划分,12位iDCT系数数据可划分为2位LSB流和10位MSB流。在此情况下,使用图4和图7b的相同类型的数据包头,LSB流的系数段可包括表示iDCT系数数据“游程”中的iDCT系数部分的数量的6个位和供iDCT系数数据的LSB部分用于定义I字节段的唯一 2个位。MSB流的系数段可包括表示iDCT系数数据“游程”中的许多iDCT系数部分的6个位和供iDCT系数数据的MSB部分用于定义2字节段的10个位。
[0082]对于三向划分的另一实施例,12位iDCT系数数据可划分成2位LSB流、2位中间流和8位MSB流。在此情况下,使用图4和图7b的相同类型的数据包报头,LSB流的系数段可包括表示iDCT系数数据“游程”中的许多iDCT系数部分的6个位和供iDCT系数数据的LSB部分用于定义I字节段的2个位。中间位流的系数段还可包括表示iDCT系数数据“游程”中的许多iDCT系数部分的6个位和供iDCT系数数据的部分用于定义I字节段的2个位。MSB流的系数段可包括表示iDCT系数数据“游程”中的许多iDCT系数部分的8个位和供iDCT系数数据的MSB部分定义2字节段的8个位。优选地,所使用的划分类型由报头位指示。
[0083]在多个缓冲器将在包解码器的系列进程中处理进行解压缩的情况下,第一个缓冲器之后的每个缓冲器可包含指示其之前有多少个位的一个值。
[0084]如本领域技术人员所知,存在可使用的多种压缩划分方案。在存在系数和游程都需要的少量位的情况下,可使用额外方案,诸如2r-2C-2r-2C (2位游程、2位系数、2位游程、2位系数)或2r-2c-2c-2c (2位游程、2位系数、2位系数、2位系数)或4r-2c_2c (4位游程、2位系数、2位系数)、6r-2c-2c-2c-2c (6-位游程、2位系数、2位系数、2位系数、2位系数)等。优选地在存在高密度的非零值时使用一组游程位后有多组系数位的方案,但是在一些情况下,所述组的系数位中的一个或多个定义零系数。
[0085]用于定义系数段的位的数量(游程值位加上系数值位)无需加总成8的倍数,但是其可提高第一处理单元31和/或第二处理单元32上的性能而具有偶数字节数。
[0086]所有包应包含完整固定长度的法定值以防止针对不相符包执行特殊处理的需要。用所有零垫充包的末端可用于实现这个目标。这可能被解释为许多零系数值或一个或多个转义码(针对超过所使用的位的游程)。任何在包的末端实施的转义可在解码器中取消。用零垫充可用作缓冲器划分的最后一个包或可使用任意次数以允许行或片的末端的编码侧上的平行处理,例如其中这些MB组被平行处理。
[0087]在系数数量稀疏且对“游程”进行编码所需的位的数量大的情况下,可有利地基于位掩码分组使用另一个替代压缩。在这样一种替代方案中,取代指示有关游程的零值,零值针对iDCT系数块的整个部分,报头是位掩码,所述位掩码包含针对无系数的零和针对非零系数的I。图8图示了编码成图6a所示的序列的iDCT系数的不同大小的片部分的一个位掩码识别。位掩码值可用于识别在编号为O至6的任意片段中是否存在任何非零iDCT系数。在位掩码指示存在非零iDCT系数的情况下,与所述系数相关的数据随后紧随位掩码值。数据可为相应位掩码片区域中的所有iDCT系数的形式或可为如上所述的游程值和系数值的形式。在统计数据显示压缩增益的情况下,可使用将8、16、32或64位用于位掩码的变化。
[0088]在iDCT系数块的位掩码值及其相关系数数据溢出超过包边界的末端时,系数的掩码中超过包边界的位可设为零且相同块位掩码可在下一个包中重复,可根据需要将先前压缩的系数掩码设为O并且将其余系数的位设为I。
[0089]虽然上述实施例中描述的特征和元件在用于处理iDCT系数的压缩的背景之下并且适合这些系数的统计性质,但是实施例不旨在限制。方法和装置可易适于稀疏数据的任何缓冲/压缩(即相对较少非零数据元素穿插有许多零数据元素),每个非零元素具有大致较少的有效位。
[0090]此外,iDCT系数通常用于MPEG和JPEG编解码器中所包含的特定变换。其他编解码器使用类似于iDCT但不同的变换。通常,针对视频/图形数据的解码(可以是或可以不是iDCT)使用某些类型的系数反变换(iT)。还可存在相对等效的数据,其未在技术上表现为所公开的方法和装置可应用的iT系数。
[0091]通过使用本发明,装置(例如,诸如平板电脑、智能手机、DTV等)可用较低的组件成本、较低的设计要求生产,否则其可能需要复杂且昂贵的存储器和存储接口。[0092]虽然上文中将特征和元件描述为特定组合,但是每个特征或元件可在无需其他特征和元件的情况下使用或在具有其他特征和元件或不具有其他特征或元件的情况下以不同组合使用。本文所述的装置可通过使用并入计算机可读存储介质中供通用计算机或处理器执行的计算机程序、软件或固件制造。计算机可读存储介质的实施例包括只读存储器(ROM)、随机存储器(RAM)、寄存器、高速缓冲存储器、半导体存储器装置、磁性介质(诸如内部硬盘和移动硬盘)、磁光介质和光学介质(诸如⑶-ROM盘和数字多功能光盘(DVD))。
[0093]本发明的实施方案可表现为存储在计算机可读存储介质中的指令和数据。例如,本发明的方面可使用Verilog (其为硬件描述语言(HDL))实施。在处理时,Verilog数据指令可生成其他中间数据(例如,网表、GDS数据或类似数据),所述中间数据可用于执行实施在半导体制作设备中的制造工艺。制造工艺可适于制造体现本发明的不同方面的半导体装置(例如,处理器)。
[0094]举例来说,合适的处理器包括通用处理器、专用处理器、传统处理器、数字信号处理器(DSP)、多个微处理器、图形处理单元(GPU)、DSP核心、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、任意其他类型的集成电路(IC)和/或状态机或其组

口 ο
【权利要求】
1.一种将系数压缩用于促进图形解码的方法,其包括: 在第一处理单元中将用于表示图像的系数编码成经过压缩的系数数据; 将所述经过压缩的系数数据传递至第二处理单元;和 在所述第二处理单元中将所述经过压缩的系数数据解码成表示所述图像的所述系数。
2.根据权利要求1所述的方法,其中所述系数是反变换(iT)系数,其还包括: 在所述第一处理单元中提取所述iT系数; 自适应地选择系数编码程序用于基于所述iT系数的所述数据内容执行所述编码,其中所述系数编码程序选自将所述iT系数编码成均匀大小的数据包的一组系数编码程序;和 在所述第二处理单元中处理所述经过解码的系数。
3.根据权利要求2所述的方法,其中所述第一处理单元选择所述系数编码程序并且将数据包传递至所述第二处理单元,其中每个数据包包含识别用于在所述包内对所述经过压缩的iT系数数据进行编码的所述所选择的系数编码程序的数据。
4.根据权利要求2所述的方法,其中所述第二处理单元处理所述经过解码的系数以提供经过选择性格式化的信号以驱动所要显示装置显示反映所述图像的图像。
5.一种分布式图形解码装置,其包括: 第一处理单元,其被配置来提取定义图像数据的系数; 所述第一处理单元,其被配 置来将所述系数编码成经过压缩的系数数据并且将所述经过编码的系数传递至第二处理单元;和 所述第二处理单元,其被配置来将所述经过压缩的系数数据解码成定义所述图像数据的系数。
6.根据权利要求5所述的装置,其中所述第一处理单元被配置来提取反变换(iT)系数且所述第二处理单元被配置来处理所述经过解码的系数以提供经过选择性格式化的输出以驱动所要类型的显示装置,所述装置还包括一个组件,所述组件被配置来自适应地选择系数编码程序用于基于所述iT系数的所述数据内容执行所述编码,其中所述系数编码程序选自将所述iT系数编码成均匀大小的数据包的一组系数编码程序。
7.根据权利要求6所述的装置,其中所述第一处理单元包括自适应地选择所述所选择的系数编码程序的所述组件且所述第一处理单元被配置来将所述iT系数编码成数据包,其中每个数据包包含识别用于在所述包内对所述经过压缩的iT系数数据进行编码的所述所选择的系数编码程序的数据。
8.一种将系数压缩用于促进图形解码的方法,其包括: 在第一处理单元中提取定义图像数据的系数;和 在所述第一处理单元中将所述系数编码成经过压缩的系数数据。
9.根据权利要求8所述的方法,其中所述所提取的系数是反变换(iT)系数,其还包括: 自适应地选择系数编码程序用于基于所述iT系数的所述数据内容执行所述系数编码,其中所述系数编码程序选自将所述iT系数编码成均匀大小的数据包的一组系数编码程序;和 输出所述数据包用于完成另一个处理单元中的系数处理。
10.根据权利要求9所述的方法,其中所述第一处理单元选择所述所选择的系数编码程序并且输出数据包,其中每个数据包包含识别用于在所述包内对所述经过压缩的iT系数数据进行编码的所述所选择的编码程序的数据。
11.一种用于促进分布式图形解码的集成电路,其包括: 处理组件,其被配置来提取定义图像数据的系数;和 编码器,其被配置来将所述系数编码成经过压缩的系数数据以输出至另一个集成电路以完成系数处理。
12.根据权利要求11所述的集成电路,其中所述所提取的系数是反变换(iT)系数,其还包括:编码器控制组件,其被配置来自适应地选择系数编码程序用于基于所述iT系数的所述数据内容执行所述编码使得所选择的系数编码程序用于所述系数编码,其中所述系数编码程序选自将所述iT系数编码成均匀大小的数据包的一组系数编码程序。
13.根据权利要求12所述的集成电路,其中所述编码器被配置来输出数据包,其中每个数据包包含识别用于在所述包内对所述经过压缩的iT系数数据进行编码的所述所选择的系数编码程序的数据。
14.一种计算机可读存储介质,其存储一组指令供一个或多个处理器执行以促进用于促进分布式图形解码的集成电路的制造,其包括: 处理组件,其被配置来提取定义图像数据的系数;和 编码器,其被配置来将所述系数编码成经过压缩的系数数据以输出至另一个集成电路以完成系数处理。
15.根据权利要求14所述的计算机可读存储介质,其中所述指令是用于装置的所述制造的硬件描述语言(HDL)指令。
16.一种将系数压缩用于促进解码的方法,其包括: 由处理单元接收表示定义图像数据的经过编码的iT系数的经过压缩的反变换(iT)系数数据; 在所述处理单元中将所述经过压缩的iT系数数据解码成定义所述图像数据的iT系数。
17.根据权利要求16所述的方法,其中所述处理单元接收均匀大小的数据包中的经过压缩的iT系数数据,所述均匀大小的数据包包括识别用于所述相应数据包中所包含的经过压缩的iT系数数据的所选择的系数编码程序的数据,且所述处理单元使用作为所述包内所识别的所述所选择的系数编码程序的补充的系数解码方法在每个数据包内对所述经过压缩的iT系数数据进行解码。
18.根据权利要求16所述的方法,其中所述GPU接收均匀大小、可独立解码的数据包中的所述经过压缩的iT系数数据并且使用所述所接收的数据包的大规模平行系数解码对所述经过压缩的iT系数数据进行解码。
19.根据权利要求16所述的方法,其还包括处理所述经过解码的iT系数以提供经过选择性格式化的信号以驱动所要显示装置显示反映所述图像数据的图像。
20.一种用于促进分布式图形解码的集成电路,其包括: 输入端,其被配置来接收表示定义图像数据的经过编码的iT系数的经过压缩的反变换(iT)系数数据;解码器,其被配置来将所述经过压缩的iT系数数据解码成定义所述图像数据的iT系数;和 处理组件,其被配置来对所述经过解码的iT系数进行iT处理。
21.根据权利要求20所述的集成电路,其中所述输入端被配置来接收均匀大小的数据包中的所述经过压缩的iT系数数据,所述数据包包括识别用于所述相应数据包中所包含的经过压缩的iT系数数据的所选择的系数编码程序的数据,且所述解码器被配置来使用作为所述包内所识别的所述所选择的系数编码程序的补充的系数解码方法在每个数据包内对所述经过压缩的iT系数数据进行解码。
22.根据权利要求20所述的集成电路,其中所述输入端被配置来接收均匀大小、可独立解码的数据包中的所述经过压缩的iT系数数据且所述解码器被配置来使用所接收的数据包的大规模平行系数解码对所述经过压缩的iT系数数据进行解码。
23.一种计算机可读存储介质,其存储一组指令供一个或多个处理器执行以促进集成电路的制造,其包括: 输入端,其被配置来接收表示定义图像数据的经过编码的iT系数的经过压缩的反变换(iT)系数数据; 解码器,其被配置来将所述经过压缩的iT系数数据解码成定义所述图像数据的iT系数;和 处理组件,其被配置来对所述iT系数进行iT处理。
24.根据权利要求23所述的计算机可读存储介质,其中所述指令是用于装置的所述制造的硬件描述语言(HDL)指令 。
【文档编号】H04N19/124GK103814573SQ201280045557
【公开日】2014年5月21日 申请日期:2012年6月27日 优先权日:2011年7月19日
【发明者】迈克尔·L·施密特, 维基·W·塔桑, 拉达克里什纳·基都瑟里 申请人:超威半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1