由量化控制改良解码器性能的方法与系统的制作方法

文档序号:8001852阅读:423来源:国知局
由量化控制改良解码器性能的方法与系统的制作方法
【专利摘要】一种编解码器,包括编码器,具有定义特定区块的数值(例如,变换系数)的量化电平的量化电平产生器、根据区块-特定的量化电平量化该区块的变换系数的量化器、行程编码器、以及熵编码器。定义该量化电平以导致具有预定值的至少一预定数量(k)的量化系数。该编码器的数据压缩量与k成比例。该编解码器还包括解码器,具有熵解码部分以及行程解码部分,该两解码部分的吞吐量与k成比例。该解码器利用多个解码信道通过进一步并行解码系数而利用这种提高的吞吐量。又公开了编解码数据的方法。本发明非常适于量化、基于熵和/或行程的编解码器,例如JPEG。
【专利说明】由量化控制改良解码器性能的方法与系统
【技术领域】
[0001]本发明一般地涉及数据压缩,尤其是涉及一种编解码器(codec)系统。更特别地,本发明涉及在单一编码器的编解码器系统中提高解码器的性能。
【背景技术】
[0002]近年来对高清(HD)媒体(例如,视频、静止图像等)的需求已经显著增长。结果,对媒体装置(例如,照相机、行动电话、平板计算机等)的需求也已经增长。对现代媒体装置的主要设计目标是确保不间断的媒体吞吐量(throughput)。
[0003]编解码器用于媒体装置中,以便通过对所述媒体进行编码而提高数据压缩以及吞吐量。在编解码器中,编码器接收媒体数据并将其编码成压缩数据流。该压缩数据流最终被发送到解码器,该解码器解码该压缩数据并将其提供在输出。不幸的是,解码器常常在数据流中产生瓶颈(bottleneck),当解码器的数据输出速率不足以以一种期望的方式(例如,以期望的帧速率、以期望的分辨率等)播放该媒体或者造成数据丢失时,这是有问题的。
[0004]采用行程(Run-Length)与熵(Entropy)编解码技术(例如,JPEG、MPEG等)的编解码器特别容易使解码器瓶颈,因为来自该编码器的压缩数据流的内容是不可预知的。该不可预知性造成解码过程花费太长时间和图像数据丢失,和/或迫使媒体装置运行太缓慢。该不可预知性还把现有技术的解码器限制于单个解码信道。
[0005]因此,需要的是一种在编解码器系统中提高解码器性能的系统及方法。还需要的是一种在初始编码过程中控制数据压缩及解码器性能的系统及方法。还需要的是一种在解码过程中极大地减小或消除瓶颈的系统及方法。

【发明内容】

[0006]本发明通过提供一种编码器和解码器系统克服了现有技术中的问题,该编码器和解码器系统通过在编码期间控制每一个区块的数据的量化过程来提高数据压缩和解码器性能。作为编码过程的一部分,本发明有利于量化每一个区块的数据,以产生量化区块,该区块包括至少预定数量(或百分比)的具有预定值(例如,值为O)的量化系数。此外,虽然解码器接收单一压缩数据流作为输入,该解码器能够并行解码与两个或更多个系数相关联的数据。通过在熵和行程解码过程中增加的吞吐量而易于并行解码,因为该吞吐量通过量化过程来控制。也公开了一种改善的行程解码系统和方法。
[0007]根据本发明的编码器包括:输入端,接收一区块的数值(例如,来自变换单元的一区块的变换系数);量化电平产生器,定义该区块的变换系数的量化电平;以及量化器,基于量化电平量化该区块的变换系数,以产生区块的量化系数。定义该量化电平以使至少预定数量(k)(例如,大于或等于一半,等)的量化系数在量化之后具有预定值(例如,值为O)。该量化器通过以量化电平和与变换系数相关联的量化数据划分每一个变换系数而部分量化该区块的变换系数。当编码器很适合于JPEG应用时,量化电平产生器和量化器可以以任意编码器实施,其中需要一区块的数值的量化。[0008]根据特定实施例,该量化电平产生器通过基于量化数据和默认量化电平(例如,值为I)初始地量化该区块的变换系数来确定量化电平,以产生测试区块的量化系数。如果该测试区块包括至少该预定数量之具有O值(预定值)的系数,然后默认量化电平被用作为该区块的量化电平。如果该测试区块的量化系数不包括足够的O值,然后例如通过识别该测试区块中第k个最小量化系数并且将新量化电平设定为大于两倍的该第k个最小量化系数的值的数值来确定新量化电平。在特定实施例中,该量化器通过进一步以新量化电平量化该测试区块而完成量化。编码器也可以包括量化电平输出端,输出量化电平例如至先进先出(FIFO)内存。
[0009]在另一特定实施例中,该编码器进一步包括离散余弦变换(DCT)单元,以产生该区块的变换系数;“之”字型单元,执行“之”字型操作,以在多个量化系数的线性数据流中排列该区块的量化系数;行程编码器,将多个量化系数编码为行程编码(RLE)数据;以及熵编码器,熵编码该行程编码数据。该编码器例如可以为JPEG或MPEG编码器。可以进一步选择该预定数量(k),以控制该解码器的输入数据和/或吞吐量的压缩数量。
[0010]根据本发明的解码器包括:输入端,接收包含有与一系列区块的数据相关联的行程编码数据如图像的一区块的图像数据的行程编码数据流;行程解码器,将与连续区块相关联的行程编码数据解码为连续多个数值(例如,量化系数);以及并行操作的多个解码信道。每一个解码信道可以将多个系数解码为一区块的解码图像数据。该连续多个系数被依序地提供至不同的解码信道,以使两个或更多个系数通过其各自解码信道至少部分地并行解码。例如,第二多个系数可以通过第二解码信道至少部分地解码,同时第一多个系数正在通过第一解码信道解码。该解码器也可以包括熵解码器,接收熵编码数据流并且产生行程编码数据流,例如在JPEG实施。
[0011]根据特定实施例,多个系数为多个量化系数,每一个解码信道包括量化电平输入,接收与正在解码的多个量化系数相关联的量化电平。每一个解码信道也包括去量化器,根据经由该量化电平输入接收的相关联量化电平去量化该多个量化系数(例如,产生一区块的变换系数)。根据一实施例,该多个解码信道自一先进先出内存顺序地读取量化电平。每一个解码信道也可以包括一逆“之”字型单元,对该多个量化系数执行逆“之”字型过程,以产生一区块的量化系数;以及逆离散余弦变换单元,对该区块的变换系数执行逆离散余弦变换,以产生一区块的解码图像数据。
[0012]如上所述,该解码器的行程和熵解码器部分以足够速率操作,以使至少两个解码信道并行操作。尤其是,该熵和行程解码器部分以这样的速度操作,该速度为与具有预定值的量化数据中的系数的数量成比例。在解码期间,该行程解码器存取缓冲器,该缓冲器定义多个连续存取的存储位置。为了解码行程编码数据,该行程解码器在所有缓冲器的存储位置中存储预定值(例如,O)。然后该行程解码器基于该行程编码数据将第一非O值写入第一存储位置(例如,用指针表示),基于该行程编码数据跳至(例如,移动指针)下一个存储位置,然后基于该行程编码数据将下一个非O值写入第二存储位置。在特定实施例中,该行程编码数据包括多个数值对,其中该数值对的其中之一表示行程O。该行程解码器使用每一对中的行程值来确定在缓冲器中有多少个存储位置在写入下一个非O值之前跳过。当该行程解码器包括一指针时,跳过的存储位置可以通过增加指针以一加在行程编码数据中定义的行程值来完成。[0013]还描述了产生编码数据的方法。根据本发明编码数据的方法包括以下步骤:接收一区块的数值(例如,通过变换单元产生的一区块变换系数);定义与该区块的变换系数相关联的量化电平;以及基于该量化电平量化该区块的变换系数,以产生区块的量化系数。定义该量化电平以使至少预定数量(k)的量化系数具有预定值(例如,值为O)。根据特定方法,该值(k)为大于或等于该区块的量化系数中量化系数的数量的一半。也可以定义该值(k)以控制该解码器的熵解码部分和行程解码部分的速度。根据特定方法,可以通过基于量化数据和默认量化电平(例如,值为I)初始地量化该区块而部分地确定区块-特定的量化电平,以产生测试区块的量化系数,然后确定该测试区块是否具有至少该预定数量之具有如上所述该预定值的系数。如果没有,可以为该区块确定新量化电平,该测试区块可以通过新量化电平进一步量化。当该编码方法很适合于JPEG应用时,该量化过程应用于任意编码方法,其中需要量化一区块的数值。
[0014]还描述了一种解码编码数据的方法。该方法包括:接收行程编码数据流,该数据流包括与一系列区块的数据如图像的一区块图像数据相关联的行程编码数据;将与第一区块的图像数据相关联的行程编码数据行程解码为第一多个数值(例如,量化系数);以及利用自并行操作的多个解码信道中选择的第一解码信道解码该第一多个系数。该方法还包括以下步骤:将与第二区块的图像数据相关联的行程编码数据行程解码为第二多个系数;以及使用该多个解码信道中的第二解码信道解码第二多个个系数。执行该方法以使解码第一和第二多个系数的步骤至少部分地同时出现。根据本发明中的行程解码方法可以包括以下步骤:如上所述,将一预定值(例如,O)存储在缓冲器中多个连续存取的存储位置的每一个中,然后使用在该行程编码数据中的行程值以跳至将写入非O系数的存储位置。该行程解码(还有熵解码)的速度与具有该预定值的系数的数量成比例。
【专利附图】

【附图说明】
[0015]参考如下附图描述本发明,其中相似的参考编号实质上表示类似的组件:
[0016]图1为显示根据本发明的编解码器系统实施例的方块图;
[0017]图2为更详细地显示第I图的编码器的方块图;
[0018]图3为更详细地显示第2图的量化电平产生器与量化单元的方块图;
[0019]图4A显示至少包含32个具有预定值的系数的量化系数示例性区块;
[0020]图4B显示至少包含43个具有预定值的系数的量化系数示例性区块;
[0021]图4C显示至少包含48个具有预定值的系数的量化系数示例性区块;
[0022]图4D显示至少包含52个具有预定值的系数的量化系数示例性区块;
[0023]图5为图2的编码器所采用的编码过程的数据流程图;
[0024]图6为更详细地显示图1的解码器的方块图;
[0025]图7为更详细地显示图6的解码器的行程解码器部分的方块图;
[0026]图8A为显示图4D的区块的行程编码数据以及与图7的行程解码器有关的相关联行程解码参数的表800 ;
[0027]图SB更详细地显示图7的量化系数缓冲区;
[0028]图9为计算机系统900的方块图,该图显示了以软件实施的本发明的编码器和/或解码器;[0029]图10为概括根据本发明的编码数据的方法的流程图;
[0030]图11为概括用于执行图10的方法的第三步骤的特定方法的流程图;
[0031]图12为概括根据本发明用于解码编码数据流的方法的流程图;以及
[0032]图13为概括用于执行图12的方法的第二步骤和/或第四步骤的方法的流程图。
【具体实施方式】
[0033]本发明通过提供一种编解码器系统而克服了与现有技术相关联的问题,该编解码器系统通过控制在编码过程中对每个数据区块(block of data)的量化过程提高了数据压缩与解码器的性能。作为编码过程的一部分,量化每个数据区块,使得被量化的区块包含至少预定数量(或百分比)的量化系数,所述量化系数具有预定值。此外,由于被控制的量化过程促进快速的熵及行程解码,以及解码器并行解码被编码的数据,因此提高了解码器的速度。在以下描述中,为了提供对本发明的彻底理解,阐明了许多具体的细节(例如,解码器速度控制的输入、产生区块-特定(block-specific)的量化电平的方法等)。然而,本领域技术人员将意识到本发明可以脱离这些具体的细节实践。在其它例子中,已知的编解码技术与组件的细节已经被省略,为了不会不必要地模糊本发明。
[0034]图1为显示根据本发明的编解码器100的方块图,其整合在主机102中。正如下面将要更详细描述,编解码器100将数据编码成压缩数据以及将压缩数据解码成解码数据。主机102为从数据压缩中获益的某个设备(例如,显示器驱动器、媒体处理器、图像感应器等)。在本实施例中,主机102为一集成电路,编解码器100实施在集成电路中。然而,编解码器100还可以软件、固件等来实现,并且编解码器100的不同部分(例如,编码器部分与解码器部分)还可分开实现。
[0035]编解码器100包括编码器104以及解码器106。编码器104在其输入108接收未经编码的数据、编码该数据以及在其输出端110输出压缩数据流。该压缩数据流经压缩数据路径112提供至压缩数据存储器113,并从压缩数据存储器113提供至解码器106的输入114。解码器106在其输入114接收该压缩数据流、利用多个解码信道(参见图2)解码该压缩数据以及通过多个输出116 (I)至116 (η)输出解码数据。因为解码器106能够利用其多个解码信道并行解码该压缩数据,因此相对于现有技术,解码器106有利地提高了解码过程的速度。
[0036]压缩数据存储器113为内存(例如,帧缓冲器等),该内存整合在编解码器100和/或主机102中。压缩数据存储器113还可以为主机102外部的内存,例如易失性内存(例如,RAM)或者非易失性内存(例如,闪存等)。因为直接在编码器104与解码器106之间传输压缩数据是可取的,因此可选择使用压缩数据存储器113。
[0037]在本实施例中,编解码器100为JPEG编解码器,其将以此被描述。然而,正如下面将要描述的,本发明适合任何利用量化、行程和/或熵编码和/或解码技术的编解码器。在本实施例中,编码器104编码一串8 X 8图像数据区块,其中每个区块包括与64个图像像素有关的数据。作为其编码过程的一部分,编码器104为每个区块定义一个特定的量化电平,并根据该被定义的量化电平(及其它量化数据)量化每个区块。编码器104还通过区块量化电平路径118将一串量化电平输出至解码器106,其中每个量化电平与经JPEG编码的特定数据区块相关联。解码器106在解码过程中接收区块-特定的量化电平,并利用这些区块-特定的量化电平去量化相关联的数据区块。
[0038]图1还显示了编解码器100响应从例如主机102的速度控制输入120接收的速度控制信号。施加到速度控制输入120的该速度控制信号被提供至编码器104,并选择性地提供至解码器106。正如下面将要更详细描述的,该速度控制信号可用来控制编码器104中的量化过程,因此除了控制解码器106的输出速率以外还控制数据压缩量。可选择地,该速度控制信号还可提供至解码器106,以便促进其它的功能,如下文中所描述的。
[0039]图2为更详细地显示编解码器100的编码器104的方块图。在所示的JPEG实施例中,编码器104包括离散余弦变换(Discrete Cosine Transform, DCT)单元202,量化电平产生及量化(Q-Level Generation and Quantization, QLGQ)单兀 204、“之”字型排序(zig-zag)单元208、行程编码器210以及熵编码器212。图2除了压缩数据存储器113以夕卜,还显示了区块准备单元214、区块量化电平内存216以及时序控制单元220。
[0040]编码器104在其输入108从区块准备单元214接收一串8X8图像数据区块。区块准备单元214被显示为主机102的一个组件,但是其也可以并入编码器104中。区块准备单元214将来自主机102的图像数据格式化成与JPEG编码器104兼容的图像数据区块。例如,区块准备单元214可将图像数据从一个色彩空间(例如,红色、绿色、蓝色(RGB)等)转换成另一个色彩空间(例如,YUV、YCbCr等)。区块准备单元214将不同色彩空间的组成(例如,Y、Cb以及Cr等)分成不同图像数据流,每个图像数据流包含不同色彩空间组成的其中之一的数据,除此之外,区块准备单元214为了编码的目的,还可将一个图像数据帧分成多个图像数据区块。
[0041]提供至编码器104的每个图像数据区块经过下面的编码过程。首先,DCT单元202在该区块上执行DCT,藉此在频域中该区块被变换成64个变换系数的区块。作为本领域已知的,每区块的DCT系数包括DC分量系数以及63个AC分量系数。
[0042]然后,DCT系数的区块被提供至QLGQ单元204,该QLGQ单元204确定该DCT系数的区块的量化电平。该区块的量化电平是基于量化数据、期望的数据压缩量和/或期望的解码器106的输出速率。具体地,该量化电平被定义成使得在完成量化之后,DCT系数的区块将产生量化系数区块,其中预定数量(k)的量化系数具有预定值。在本实施例中,该预定值为O。换句话说,QLGQ单元204提供了一个用来定义区块-特定的量化电平使得在完成量化后该区块中至少预定数量的量化系数将具有该预定值的方法。
[0043]QLGQ单元204将每个区块-特定的量化电平输出至区块量化电平内存216。在本实施例中,区块量化电平内存216为先进先出(First In First 0ut,FIF0)内存,该内存确保量化电平以编码器104产生它们的顺序提供至该解码器106。因此,区块量化电平内存216确保在解码过程中量化电平与解码器106中它们的相关联区块匹配。虽然本发明人利用FIFO作为区块量化电平内存216已经获得了很好的成功,但是在某种程度上由于其实施的简单,只要在解码过程中所述区块-特定的量化电平能够与相应的数据匹配,其它类型的内存(例如,可寻址内存等)也可以同本发明使用。
[0044]QLGQ单元204还基于预定的量化数据(例如,8X8的表的量化值、所有DCT系数的固定量化值等)以及所述区块-特定的量化电平来量化每个DCT系数,以产生量化系数区块,图3将更加详细地描述。
[0045]一旦数据区块被量化,QLGQ单元204就将量化系数区块提供至“之”字型排序单元208。该“之”字型排序单元208接收量化系数的8X8的区块,并对该区块执行“之字型排序”操作。所述“之字型排序”操作通过“之字型排序”将该量化系数区块沿着该区块的对角线排列成一线性序列。然后该线性序列被输出至行程编码器210。
[0046]行程编码器210从“之”字型排序单元208接收量化系数的该线性序列,并且将该线性序列编码成行程编码(RLE)数据。行程编码是数据压缩的一种形式,其中具有相同值(例如,O)的数据行程(runs of data)存储为一个计数。行程编码的特定方法存储作为RLE数据的区块中的多个量化系数,该RLE数据包括复数对值,每对值中具有定义O的行程的第一值以及指示下一个非O量化系数的第二值。该RLE数据还可包括区块结束代码,该区块结束代码指示与该区块关联之所有剩余的量化系数为O。一旦产生该RLE数据,则该RLE数据就被输出至熵编码器212。
[0047]熵编码器212接收该RLE数据,并对其执行熵编码处理,藉此利用较短代码编码频繁出现的RLE数据,而利用较长代码编码不频繁出现的RLE数据。一种类型的熵编码被称为霍夫曼编码。一旦该RLE数据被熵编码,那么熵编码器212就输出编码数据作为压缩数据流。如上述所表明的,该压缩数据流在提供至解码器106之前可存储于压缩数据存储器113 中。
[0048]图2还显示了时序控制单元220,该时序控制单元220通过一条或多条时序控制路径222将时序(例如,时钟等)以及可选择性提供的其它控制信号提供至编码器104、区块量化电平内存216、压缩数据存储器113以及区块准备单元214。可选择地,时序控制单元220为主机102的通用组件。由时序控制单元220提供的该时序以及其它控制信号(例如,时钟脉冲、使能信号、重置信号等)能够使编码器104执行其预期的功能以及在适当的时间移动数据通过编码器104。
[0049]图3为更详细地显示编码器104的QLGQ单元204 (图2)的方块图。QLGQ204包括输入端302、初始量化单元304、量化验证及量化电平产生(QVQG)单元306、辅助量化单元308、存储至少一个默认(default)量化电平的默认量化电平内存310、存储量化数据的量化数据存储器312、量化系数输出314以及区块量化电平输出316。此外,QVQG单元306系被耦合以通过速度控制输入120接受速度控制信号。在本实施例中,所述量化数据包括一个8X8的表的量化值,其中每个量化值用来量化该区块中相应的DCT系数。另外在本发明的实施例中,该默认量化电平为每区块的值1,其提供了如下面所述的特别优点。
[0050]耦合初始量化单元304,以通过输入302接收区块DCT系数、从量化数据存储器312接收量化数据以及从默认量化电平内存310接收默认量化电平。响应这些输入,初始量化单元304根据该量化数据以及该默认量化电平量化该区块变换系数,以产生量化系数的试验区块。初始量化单元304根据下列公式量化该区块中的每个DCT系数
[0051 ] !ground ((DCTi) / (q^Defaul^Q-level)),
[0052]其中Ti表示该试验区块中产生的量化系数的值,DCTi表示被量化的DCT系数的值, 表示用来量化相应DCT系数的量化值,Default_Q_level表示默认量化电平,以及round
为进位函数,该进位函数将一小数点值四舍五入成最接近的整数。当初始量化单元304结束量化该区块DCT系数时,单元304将该量化系数的试验区块输出至QVQG单元306。
[0053]应该注意的是,初始量化单元304所使用的该量化数据可以周期性改变(例如,每帧一次、根据来自主机102的指令、根据图像数据等等)。例如,量化数据存储器312可包括多个根据情况而选择使用的量化表,和/或,量化数据存储器312中的该量化数据可以根据需要以不同的量化数据重新写入。因此,改变量化过程中所使用的该量化数据在本发明的范围内。同样地,周期性改变量化过程中所使用的该默认量化电平的值也在本发明的范围内。
[0054]QVQG单元306从初始量化单元304接收该量化系数的试验区块、通过输入120接收该速度控制信号以及从默认量化电平内存310接收该默认量化电平。然后,QVQG单元306确定该试验区块是否至少具有预定量(k)的具有O值的量化系数。在一特定实施例中,QVQG单元306确定在该试验区块中的第k个最小量化系数。如果该试验区块中的第k个最小量化系数等于0,那么该默认量化电平足以确保数据将被充分压缩以及解码器106将在期望的速度下操作。在这种情况下,QVQG单元306检索该默认量化电平,并且将其通过输出316输出至区块量化电平内存216,作为区块-特定的量化电平。
[0055]然而,如果该试验区块没有包含k个具有O值的系数,那么QVQG单元306为该区块产生新的量化电平。继续之前的例子,如果该试验区块中的第k个最小量化系数不等于0,那么QVQG模块306为该试验区块确定一新的量化电平,该试验区块将产生至少k个具有O值的量化系数。例如,该试验区块的新的量化电平(New_Q-level)可如下计算得出:
[0056]New_Q-level= (2*Tk) +1,
[0057]其中Tk表示该试验区块中的第k个最小量化系数的值。一旦产生该新的量化电平,则QVQG模块在输出316输出该新的量化电平,作为区块-特定的量化电平。
[0058]发明人已发现,对于JPEG编解码器,可利用上述之区块-特定的量化电平产生过程以多位数据来表示量化电平。然而,可根据期望采用产生或表示该区块-特定的量化电平的其它方法。
[0059]QVQG单元306所使用之用来确定区块的量化电平的k的值可由主机102通过在速度控制输入120提供的信号来控制。例如,第一速度控制信号可设定k为32(例如,至少该区块中的所述量化系数的一半(32/64)为0),而随后的速度控制信号可设定k为43 (例如,至少该区块中的所述量化系数的三分之二(43/64)为O)。因为k的值有很多种可能,因此该速度控制信号可为多位信号,该多位信号独特地确认QVQG单元306所使用之不同的k值。并且,该速度控制输入120允许数据压缩量以及解码器的速度是可动态调整的。
[0060]控制预定数量k就控制了数据压缩量以及该解码器106的速度,因为数据压缩量以及解码器106的熵解码部分与行程解码部分的吞吐量与k值成比例。因此,当k值较小时(更少O系数),该量化系数区块将具有更多非O值(更少数据压缩),并且熵解码过程与行程解码过程将花费较长时间。相反,当k值较大时(更多O系数以及大量数据压缩),该量化系数区块将具有更少非O值,并且熵解码过程与行程解码过程将更短。因为熵解码部分与行程解码部分的吞吐量能够可预见地增进,因此本发明还使并行解码成为可能。
[0061]随着量化验证与量化电平的产生,辅助量化单元308从QVQG单元306接收该试验区块与该区块-特定的量化电平,并利用该区块-特定的量化电平对该试验区块执行第二次量化过程。辅助量化单元308如下式量化该试验区块中的每个系数
[0062]Qi=Iround (Ti/Block_Q-level),
[0063]其中Qi表示在所产生的量化系数区块中的量化系数的值,Block_Q_level表示由QVQG单元306在区块量化电平输出端316输出的区块-特定的量化电平。辅助量化单元308对该试验区块中每个系数执行辅助量化,并且在量化系数输出端314输出产生的量化系数区块。
[0064]在一可选实施例中,辅助量化单元308还可接收该默认量化电平,并将其与由QVQG单元306输出的该区块-特定的量化电平进行比较。在由QVQG单元306输出的量化电平与该默认量化电平相同的情况下,然后辅助量化单元308可通过将该量化系数的试验区块直接输出至“之”字型排序单元208而放弃辅助量化过程。这样做将节省与该辅助量化过程相关联的周期并加速编码。作为另一种选择,初始量化单元304与辅助量化单元308可组合成一个单个量化器,以促进初始量化单元304与辅助量化单元308之各自的功能。
[0065]如上述所表明的,设定该默认量化电平的值为I提供了特别的优点。例如,当产生新的量化电平时,默认量化电平I能够使同样的新的量化电平值既输出至区块量化电平内存216,又输出至该辅助量化过程308。然而,如果该默认量化电平大于1,且产生了新的量化电平,那么不同的值将被提供至辅助量化单元308与区块量化电平内存216。例如,由于该试验区块根据该默认量化电平被初始量化,因此辅助量化单元308将只需要新的量化电平值来完成该试验区块的量化。然而,默认量化电平与新的量化电平的乘积将在该解码器106的去量化过程中需要,因此该乘积将在区块量化电平输出316输出,以存储到区块量化电平内存216中。因此,在该默认量化电平大于I的情况下,QVQG单元306可包括两个输出端:一个将新的量化电平提供至辅助量化单元308,另一个通过输出316将默认量化电平与新的量化电平的乘积提供至区块量化电平内存216。因此,设定该默认量化电平为I简化了 QLGQ单元204的操作,并且减小了系统复杂度。
[0066]描述上述实施例与过程,从而给出了 QLGQ单元204操作的彻底理解。然而,在仍就保护QLGQ单元204的主要功能的同时,对QLGQ单元204的修改是可能的。那些主要功能包括(I)为每个数据区块产生区块-特定的量化电平,使得随着量化,被量化的区块将至少具有k个预定值的系数,以及(2)根据该区块-特定的量化电平来量化每个数据区块。作为一个示例,其它的QLGQ单元204可首先利用默认量化电平以及量化数据将区块DCT系数量化成试验区块,然后分析该试验区块。如果该试验区块没有包含至少k个具有该预定值的系数,那么将确定新的量化电平(例如,通过上文描述的过程或某个其它过程)。然后,该其它的QLGQ单元204可利用该新的量化电平以及该量化数据再量化该区块DCT系数,以产生最终的量化系数区块。然后,该其它QLGQ单元204可将该默认量化电平或者该新的量化电平作为该区块-特定的量化电平输出。作为另一个示例,QLGQ单元204的不同模块(例如,该初始量化单元、辅助量化单元以及该QVQG单元)可被分成分开的单元、可被组合等等。作为再另一个示例,QLGQ单元204可用于在任何采用量化的编码器中量化任意区块值,而不只是在量化变换系数的编码器中。实际上,这些和对QLGQ单元204的其它修改都是可能的。
[0067]如上面讨论的,不管该量化电平是对应默认量化电平内存310中的该默认量化电平还是对应不同的量化电平,QLGQ单元204都输出被编码的图像数据之每个区块的区块-特定量化电平。虽然只输出非默认量化电平到区块量化电平内存216将是可能的,但是本发明人已经发现这样做增进了复杂度。例如,如果该默认量化电平被用来编码一个区块,而不是被输出至该解码器106,那么编解码器100将需要某些手段(例如,与一个区块以及一个量化电平相关联的唯一标识符等),使特定的区块与解码器106中的该区块-特定的各个量化电平相关联。
[0068]利用区块-特定的量化电平控制每量化系数区块中O的数量提供了重要的优点。首先,控制每区块中O的数量就控制了该区块(以及进而完整的图像)所经历的数据压缩量。因此,可以选择该k值,以便确保图像被充分压缩至其能够被存储到一个具有预定大小的缓冲器(例如,帧缓冲器)。因而,压缩数据存储器113可以做的更小,这样节省了电路空间以及成本。
[0069]在解码过程开始之前,控制每个区块的数据压缩量还将该编码器所输出的位速率维持在一个期望的范围内。因此,该解码器106不会变得超负荷,图像数据不会丢失,并且不必调整编码过程以响应不充分的解码器吞吐量。
[0070]根据本发明的控制量化过程的另一个优点是其允许编码器104控制解码器106的速度。因为该解码器的速度与k成比例,所以编码器104可通过调整k来动态增进或减少解码器106的吞吐量。例如,编码器104为了高吞吐量可增进k,以便在短时间内产生许多缩略(thumbnail)图像。相反地,当解码图像质量更重要时,编码器104为了低吞吐量可减小k。
[0071]图4A至第4D图显示了可由QLGQ单元204根据不同k值产生的量化系数的示例性区块400A至400D。
[0072]图4A显示对于k至少等于32的情况量化系数的示例性区块400A。如此,区块400A包含至少32个为O的系数以及至多32个为非O的系数(在图4A中用“x”注记)。因此,区块400A利用随着量化而产生至少32个O的量化电平而产生。正如下面将要更详细描述的,因为区块400A中至多一半系数不为0,所以解码器106提供改进的熵及行程解码。因此,解码器106的熵解码部分及行程解码部分将以大约是两倍快于区块400A中的每个量化系数都为非O时的速度解码与区块400A相关联的数据。此外,该k的值导致大约是区块400A中的每个量化系数都为非O时两倍的数据压缩。
[0073]图4B显示对于k至少等于43的情况量化系数的示例性区块400B。如此,区块400B包含至少43个为O的系数以及至多21个为非O的系数(在图4B中用“x”注记)。因此,区块400B利用随着量化而产生至少43个O的量化电平而产生。因为区块400B中大约三分之一的值不为0,因此解码器106的熵解码部分与行程解码部分将以大约是三倍快于区块400B中的每个量化系数都为非O时的速度解码与区块400B相关联的数据。因此,该k的值导致大约是区块400B中的每个量化系数都为非O时三倍的数据压缩。
[0074]图4C显示对于k至少等于48的情况量化系数的示例性区块400C。如此,区块400C包含至少48个为O的系数以及至多16个非O系数(在图4C中用“x”注记)。因此,区块400C利用随着量化而产生至少48个O的量化电平而产生。因为区块400C中至多四分之一的值可具有非O值,因此解码器106的熵解码部分与行程解码部分将以大约是四倍快于区块400C中的每个量化系数都为非O时的速度解码与区块400C相关联的数据。因为区块400C具有是区块400A —半数量的非O值,因此该熵解码部分与行程解码部分还将以大约是区块400A两倍快的速度解码区块400C。另外,该k的值导致大约是区块400C中的每个量化系数都为非O时四倍的数据压缩。
[0075]图4D显示对于k至少等于52的情况量化系数的示例性区块400D。如此,区块400D包含至少52个O系数以及至多12个非O系数(在图4D中表示为“xO至xll”)。因此,区块400D利用随着量化而产生至少52个O的量化电平而产生。因为区块400D中大约五分之一的值可具有非O值,因此解码器106的熵解码部分与行程解码部分将以大约是五倍快于区块400D中的每个量化系数都为非O时的速度解码与区块400D相关联的数据。另外,该k的值导致大约是区块400D中的每个量化系数都为非O时五倍的数据压缩。
[0076]概括地说,图4A至图4D显示了如何通过增进在量化过程中产生的O系数的数量,即,通过增进k的值,来提高该解码器106的速度。图4A至图4D进一步说明了编码器104的数据压缩量与该k值成比例。虽然在图4A至图4D中说明了对于k的特定值,但是可以根据期望的数据压缩量和/或解码器速度来决定采用任何k值。例如,可以选择产生大约
1.5倍的数据压缩与解码器吞吐量的k值。
[0077]虽然增进k的值具有提高解码器106速度的优点,但是增进k的值还具有越来越高的k值将逐渐降低解码图像质量的缺点。正如本领域技术人员将理解的,量化是一个有损的数据压缩过程。因此,由于更多的系数被量化为0,所以较高的k值将造成更多图像数据丢失。由此,当选择k值时,还应当考虑到期望的解码图像数据的质量。
[0078]如果一个应用需要高解码图像质量与高解码速度,那么可以在主机102中实现编解码器100的多次迭代(iteration)。更进一步地,因为每个压缩数据流将与具有η个解码信道的解码器106关联,因此在最小化其它被集成在主机102中的附加电路数量的同时,提高了吞吐量。
[0079]现在,将用图4D作为示例来更详细地描述“之”字型排序、行程编码以及熵编码过程。特别是,当“之”字型排序单元208接收量化系数区块时,“之”字型排序单元208以线性方式按照如图4D箭头所示沿着该区块的对角线排列该量化系数区块。在区块400D的具体情况中,“之”字型排序单元208将输出如下量化系数的序列:x0, xl, x2, O, x3, x4, 0, x5, x6,x7,x8,x9,0,0,0,xlO, 0,xll, 0,0,…0。
[0080]然后,该量化系数的序列将被提供至行程编码器210,并经行程编码。根据该特定实施例,行程编码器210编码该量化系数,并且将如下行程编码数据输出至熵编码器212:
[0081](O, xO)
[0082](O, xl)
[0083](O, x2)
[0084](I, x3)
[0085](0,x4)
[0086](I, x5)
[0087](0,x6)
[0088](0,x7)
[0089](0,x8)
[0090](0,x9)
[0091](3, xlO)
[0092](I, xll)
[0093](E.0.B.)。
[0094]每对RLE数据值包含第一值以及第二值,该第一值由先前的非O量化系数或者由对于该区块系数的起点,定义O的行程,该第二值定义下一个非O量化系数。例如,由于在非O系数xO与Xl之间没有O (按照“之”字型排序处理),因此在XO后面直到Xl以及包括xl的系数的RLE数据可以被定义为(0,xl)。同样,由于在非O系数x9与xlO之间有三个0,因此在x9后面直到xlO以及包括xlO的量化系数的RLE数据可以被表示为(3,xlO)。该RLE数据的最后一个元素为区块结束(End Of Block,E.0.B.)代码,该区块结束代码用来表示该区块中所有剩余量化系数均为O。
[0095]由行程编码器210输出的该RLE数据被提供至熵编码器212,在熵编码器212该RLE数据经熵编码。如上述解释的,通过将不同代码分配给不同数据值,来执行熵编码。在本实施例中,熵编码器212接收每对RLE数据,并且(例如,在一个查找表中)查找相关联的熵代码。然后,熵编码器212在压缩数据流中输出该熵代码,以作为熵编码数据。
[0096]由于k增进将使行程对以及熵代码的数量减小,因此控制量化过程改善了由编码器输出的压缩数据中的数据压缩。例如,图4A至图4D显示由于k增进,需要少量行程对来编码量化系数区块。相应地,少量行程对意味着需要少量熵代码来表示与每个区块相关联的行程数据。因此,本发明相对于现有技术而言改善了数据压缩。另外,本发明根据k值来控制数据压缩量。
[0097]最后,应当注意的是,可使用不同的“之”字型排序、行程编码以及熵编码的方法来代替上面提供的具体示例。
[0098]图5为关于JPEG编码过程中流经编码器104的每个数据区块的数据流程图500。如图所示,由编码器104接收一个与多个像素有关的8X8图像数据区块。然后,对该图像数据区块执行DCT,以产生一个8X8的DCT系数区块。然后,该区块DCT系数经过初始量化过程,所述初始量化过程利用默认量化电平(例如,I值)以及量化数据表将该区块DCT系数量化成量化系数试验区块。然后,该量化系数试验区块经过量化电平产生过程,以定义一个具体到该区块的量化电平,使得随着量化预定数量(k)的量化系数将有一预定值(例如,O)。然后,该量化系数测试区块以及该区块的量化电平转至辅助量化过程,以产生一区块至少具有k个O的量化系数。然后,该量化系数区块经过“之”字型排序过程,产生一个依序的数据流。接着,行程编码该依序的数据流,以产生RLE数据,再熵编码该RLE数据,以产生压缩数据流。然后,该压缩数据流被输出至内存和/或该解码器106。
[0099]如图5所示,被压缩的编码数据流包括标头(header)信息,该标头信息在所述编码过程中被嵌入到该数据流中。该标头信息除了包含所述编码过程中使用的查找表以外,还包含所述量化过程中使用的该量化数据。另外,可定期以新的信息来更新该压缩数据流中的该标头信息,例如,每巾贞一次。
[0100]图6为更详细地显示编解码器100的解码器106的方块图。解码器106进一步包括熵解码器602、行程解码器604以及多个并行操作的解码信道606 (I)至606 (η),每个解码信道连接至输出116 (I)至116 (η)中各自的输出。每个解码信道606 (I)至606 (η)包括各自的逆“之”字型排序单元608 (I)至608 (η)、去量化器610 (I)至610 (η)以及逆DCT单元612 (I)至612 (η)。编解码器100还包括数据重组单元614,该数据重组单元可选择性地与解码器106整合在一起。
[0101]当被编码的JPEG图像数据需要被解码时,该被编码的JPEG图像数据作为一个与一串图像数据区块相关联的熵编码比特流而被提供至该解码器106的输入114。熵解码器602对该熵编码数据执行逆熵处理,以产生与该串图像数据区块相关联的RLE数据。[0102]在所述编码过程中使用的量化控制极大地提高了熵解码器602的速度,并且消除或者至少极大地减小了在熵解码器602处的瓶颈。如上述表明的,需要用来表示数据区块的熵代码的数量与k成反比。因此,由于k增进,熵解码器602将极少执行查表。换句话说,熵解码器602的吞吐量与k成比例,因此由于k增进,吞吐量也增进。
[0103]参考图4A,由于区块400A包括至多32个非O量化系数(k≥32),所以将至多有32个数据行程对(除了该区块结束代码之外)。因此,熵解码器602能够以大约是其解码一具有64个非O系数的区块的量化系数时两倍的速度解码区块400A。因为同样的理由,熵解码器602能够以大约是解码一具有64个非O系数的区块的量化系数时三倍的速度解码区块400B (k≥43)。同样,熵解码器602能够以大约是解码一具有64个非O系数的区块的量化系数时四倍的速度并且大约是解码区块400A时两倍的速度解码区块400C (k > 48)。熵解码器602还能够以大约是解码一具有64个非O系数的区块的量化系数时五倍的速度解码区块400D (k≥52)。
[0104]由于可通过量化控制来提高熵解码器602的吞吐量,因此解码器106能够利用多个解码信道606 (I)至606 (η)并行解码数据。另外,由于量化过程控制RLE数据量以及产生的熵编码数据量,因此对熵解码器602的位速率还可由k值来控制。因此,熵解码器602没有超限运转,数据没有丢失,且熵解码器602没有变成瓶颈。
[0105]由熵解码器602输出的该RLE数据接下来被提供至行程解码器604,行程解码器604连续解码该RLE数据,以产生多个量化系数区块,其中每量化系数区块与图像数据区块相关联。如上述表明的,行程解码器604的速度与和具有O值的区块相关联的量化系数的数量成比例。随着行程解码,行程解码器604将每量化系数区块输出至解码器信道606(1)至606 (η)的其中之一,以便进一步并行解码。因此,行程解码器604是将RLE数据连续解码成连续的系数区块的工具。
[0106]行程解码器604将连续的量化系数区块按顺序输出至它们各自的解码信道606(I)至606 (η)。例如,行程解码器604将第一量化系数区块输出至解码信道606 (1),然后将第二量化系数区块输出至解码信道606 (2),…将第η量化系数区块输出至解码信道606 (η)。然而,行程解码器604的其它输出方法是可能的。例如,可随机使用每个解码信道606 (I)至606 (η)。作为另一个示例,如果解码器106不需要所有解码信道606 (I)至606 (η)在一期望的速度下操作,那么行程解码器604可以只使用解码信道606 (I)至606(η)中的某些解码信道,而不使用其它的解码信道。
[0107]正如将从以下讨论中显而易见的,解码信道606 (I)至606 (η)提供用于并行解碼多个量化系数区块的工具。解码信道606 (I)至606 (η)的操作如下。
[0108]一旦多个量化系数被提供至解码信道606 (I)至606 (η),那么相关联的逆“之”字型排序单元608 (I)至608 (η)就对该数据执行逆“之”字型排序处理,以重新产生来自编码过程的该8X8量化系数区块。然后,该区块转至相关联的去量化器610 (I)至610 (η)。
[0109]去量化器610 (I)至610 (η)逆量化该量化系数区块,以产生区块DCT系数。在本实施例中,去量化器610 (I)至610 (η)通过将量化系数乘以相关联量化数据与为区块-特定定义的量化电平的乘积,来逆量化每个量化系数。正如上述表明的,该量化数据嵌入到压缩数据流的标头中。因此,去量化器610 (I)至610 (η)可从该标头中获得该量化数据。去量化器610 (I)至610 (η)还通过从区块量化电平内存216中读取下一个值来获得该区块-特定的量化电平。由于行程解码器604以编码该区块的顺序解码与图像数据区块相关联的RLE数据,并将该数据顺序地提供至解码信道606 (I)至606 (n),因此从区块量化电平内存216检索的区块量化电平有利地与经去量化器610 (I)至610 (η)逆量化的该区块同步。
[0110]逆量化之后,该区块DCT系数被提供至各个逆DCT单元612 (I)至612 (η)。在那里,该区块经过逆DCT处理,产生解码图像数据区块,该解码图像数据区块从该解码器通过各自的输出端116 (I)至116 (η)输出。因为在编码器104中进行的量化过程是有损失的,所以该解码图像数据区块不是输入到编码器106的原始图像数据区块的准确再生。如上述表明的,解码图像数据的质量将取决于在编码过程中使用的k值。
[0111]可选择地,在输出端116 (I)至116 (η)提供的该解码图像数据区块可由数据重组单元614进行重组(例如,重组成图像)。因为行程解码器604将多个系数以连续的顺序提供至解码信道606 (I)至606 (η),所以数据重组单元614以同样的顺序在输出端116 (I)至116 (η)多路分解(de-multiplex)该解码图像数据区块。此外,数据重组单元614还可将来自一个色彩空间(例如YUV、YCbCr等)的解码图像数据转换到另一个色彩空间(例如,RGB 等)。
[0112]速度控制输入120作为一个输入可选择性地设置于行程解码器604与解码信道606 (I)至606 (η)的其中之一个或两个,以促进解码器106的其它功能。特别是,在速度控制输入120的信号可用来去能一个或多个解码信道606 (I)至606 (η),例如,达到节约电能。如上述表明的,由于k增进使行程解码器604提高了其解码速度,因此操作解码信道606 (I)至606 (η)的数量也将随着k的增进而增进。由于在输入120的速度控制信号可与k值相关联,因此该速度控制信号还可定义应当在一个给定时序间操作之解码信道606
(I)至606 (η)的数量,以防止解码器106中的瓶颈。通常,应该利用足够多的解码器信道606 (I)至606 (η),以便使行程解码器604不必不合理地长时间等待将每量化系数区块输出至下一个解码器信道606 (I)至606 (η)。该速度控制信号还可提示行程解码器604的信道606 (I)至606 (η)当前被去能。
[0113]图6还显示时序控制单元220通过一条或多条时序控制路径222提供时序(例如,时钟等)以及选择性地提供其它控制信号到第6图的组件。像编码器104 —样,由时序控制单元220提供的信号使解码器106能够执行其预期的功能以及在适当的时间移动通过解码器106的数据。可选择地,例如,如果解码器106与编码器104不在同一个主机中,那么解码器106可包括其自身的时序与控制系统。
[0114]解码器106相对于现有技术而言提供了重要的优点。特别是,解码器106能够接收来自单个编码器的压缩数据流以及利用多个并行操作的解码信道606 (I)至606 (η)来解码该比特流。通过更快速熵解码器602以及更快速行程解码器604来促进并行操作解码信道606 (I)至606 (η),该更快速熵解码器602以及更快速行程解码器604能够提供两个或以上具有充足数据量的解码信道606 (I)至606 (η)。因此,解码器106相对于现有技术提高了吞吐量,这在HD媒体应用中特别重要。而且,由于只有解码信道606 (I)至606(η)以集成电路复制,因此解码器106需要这样做最小化其它电路的数量,同时相对于现有技术而言提高了数据吞吐量。
[0115]图7为更详细地显示解码器106的行程解码器604的方块图。在所显示的实施例中,行程解码器604包括控制单元702、系数缓冲器704、指针(pointer)706以及输出信道管理器708。行程解码器604还包括输入710,接收来自熵解码器602的RLE数据,以及多个输出712 (I)至712 (n),每个输出用来将系数输出至各自的解码信道606 (I)至606(η)。
[0116]控制单元702控制及协调行程解码器604的全部解码以及输入/输出(I/O)。控制单元702通过输入710接收来自熵解码器602的RLE数据,并执行各种功能。特别是,控制单元702将由该RLE数据定义的非O量化系数通过系数路径714存储到系数缓冲器704。通过将在指针控制路径716上的信号置为有效(assert),控制单元702还根据该RLE数据对中的行程改变由指针706指向的位置。此外,控制单元702产生重置信号并通过重置路径718输出重置信号,重置路径718将该重置信号提供至系数缓冲器704、指针706以及输出信道管理器708。控制单元702还通过将在输出控制路径720上的输出使能信号置为有效来协调输出712 (I)至712 (η)的数据输出。当控制单元702知道与一组数据相关联的RLE数据已经结束解码时,例如当控制单元702在该RLE数据流中遇到一个区块结束代码时,控制单元702将产生输出使能信号。每当输出信道管理器708结束从系数缓冲器704向解码信道606 (I)至606 (η)的其中之一输出多个系数时,控制单元702还通过路径722接收输出完成信号。
[0117]量化系数缓冲器704包括大量可连续存取的缓冲位置,其数量等于数据区块中系数的数量。对于JPEG而言,因为有64个与每个图像数据区块相关联的量化系数,所以系数缓冲器704包括64个存储位置(图8Β)。响应重置路径718上的重置信号,系数缓冲器704将其每个存储位置重置成预定值O。然后,当系数缓冲器704在系数路径714上接收非O系数时,系数缓冲器704将每个非O系数存储到由指针706指示的该存储位置。当系数缓冲器704在输出控制路径720上接收来自控制单元702的输出使能信号时,系数缓冲器704按存储位置的顺序连续地将其完整内容输出至输出信道管理器708。
[0118]指针706被操作以选择性地指向系数缓冲器704中该存储位置中的任何一个。重置路径718接收到重置信号,指针706就重置其自身指向系数缓冲器704中的第一存储位置。基于指针控制路径716上的来自控制单元702的控制信号,指针706移动,以便指向系数缓冲器704中的一个新的存储位置。在指针控制路径716上由控制单元702提供的该控制信号可为序列的增量信号,该增量信号致使指针706移动多个存储位置,移动的存储位置的数量等于其接收的增量信号的数量。或者,控制单元702可提供跳跃(jump)信号到指示关于指针706的多个连续存储位置的指针706,以便在系数缓冲器704中“跳”过。实际上,控制单元702可以不同方式移动指针706。
[0119]输出信道管理器708选择性地将系数缓冲器704的内容通过各自的输出712 (I)至712 (η)提供至解码信道606 (I)至606 (η)的其中之一。响应在输出控制路径720上的来自控制单元702的输出使能信号,输出信道管理器708连续地将每个系数从系数缓冲器704输出至解码信道606 (I)至606 (η)的其中之一。当最后一个量化系数已经被输出时,输出信道管理器708通过路径722将一信号提供至控制单元702,以指示输出完成。响应重置路径718上的重置信号,输出信道管理器选择接下来的输出712 (I)至712 (η),该接下来的输出将用来输出被行程解码器604解码的下一组系数。在本实施例中,输出信道管理器708以特定的顺序(例如,按次序的顺序)选择输出712 (I)至712 (η)。然而,如上述表明的,输出信道管理器708可选择性地响应速度控制信号120,以便跳过输出712 (I)至712 (η)的某几个。
[0120]在本实施例中,在与区块相关联的RLE数据结束行程解码以及系数缓冲器704中的系数已经通过输出712 (I)至712 (η)被输出之后,控制单元702产生重置信号。在当前的实施例中,当系数缓冲器704中的所有系数都已被读出时,输出信道管理器708通过路径722指示控制单元702。此后,控制单元702在知道其是安全的重置路径718上产生重置信号,以便重置系数缓冲器704。
[0121]现在根据图8Α以及图SB来描述行程解码器604的操作,图8Α以及第SB图使用了与作为一个示例的图4D的区块400D相关联的RLE数据。
[0122]图8Α显示包含复数行802 (O)至802 (12)以及复数列804、806、808及810的表800。每行808 (O)至802 (12)将包含在列804中的RLE数据的各个部分与其它列806、808及810中的信息关联起来。列804限定第4D图的区块400D的RLE数据,该RLE数据包含行802 (O)至802 (11)中的对值(pair value)以及行802 (12)中的区块结束(E.0.B.)代码。
[0123]列806中的每个值指示根据相应行802 (O)至802 (11)中的RLE数据中的游程信息的指针706增进了多少个存储位置。一个指针增进不适用于区块结束(E.0.B.)代码,因为其指示所有剩余系数均为O以及系数缓冲器704的所有存储位置均已被预加载O。正如从该表中显而易见的,与彳丁 802 (O)至802 (11)相关联的列806中的指针增进是基于定义在相应数值对中的行程。在所示的实施例中,通过多个存储位置,增进该指针706,该多个存储位置的数量等于I加上定义在除了第一个RLE数值对以外的其余相应RLE数值对(SP,行802 (I)至802 (11))中的行程。对于行802 (O)中的第一个RLE数值对,该指针通过数量等于定义在该第一个RLE对中的行程的多个存储位置来增进该指针。
[0124]列808指示系数缓冲器704中的存储位置,每当指针706通过列806中的相关联数量增进时,这些存储位置就被指针706渐进地指向。换句话说,显示在行802 (I)至802
(11)中的非O系数xO至xll将被写入列808中指示的系数缓冲器704中的存储位置。
[0125]最终,列810中的每个值指示一个被写入相关联行802的列808中所指示的存储位置的非O系数。列810中的该非O系数从列804中的RLE数据获得。需注意的是,在列808与810中没有适用于行802 (12)中的区块结束代码的信息,因为没有更多的非O系数,并且该指针706不需要进一步移动直到由控制单元702产生重置。
[0126]图8B更详细地显示系数缓冲器704包含64个连续存取的存储位置812 (O)至812 (63)。图8B还通过图表解释列804中的该RLE数据如何被解码成区块400D的多个量化系数。
[0127]首先,响应由控制单元702在重置路径718上将的重置信号置为有效,O被存储到所有存储位置812 (O)至812 (63)。另外,指针706被重置指向系数缓冲器704中的第一存储位置812 (O)。此后,由于在xO之前没有O (该对中的第一个值是“O”)以及指针706正指向存储位置812 (0),因此控制单元702接收第一 RLE数据对(0,xO),并将xO通过系数路径714写入存储位置812 (O)。接下来,控制单元702依序处理列804中的行802 (I)至802 (11)中所示的RLE对值。首先,行802 (I)中的RLE数据指示在xO与xl之间没有O (该对中的第一个值是“O”)以及xl (该对中的第二个值)为下一个非O量化系数。因此,控制单元702通过将指针控制路径716上的控制信号置为有效使I加上行程(在这种情况下的一个位置的增进),来增进指针706。此后,指针706指向存储位置812 (1),并且控制单元702通过系数路径714将xl写入存储位置812 (I)。接下来,控制单元702处理行802 (2)中显示的RLE对值。行802 (2)中的RLE数据指示在xl与x2之间没有O (该对中的第一个值是“O”)以及x2 (该对中的第二个值)为下一个非O量化系数。因此,控制单元702通过将指针控制路径716上的控制信号置为有效使I加上行程(在这种情况下的一个位置的增进),来增进指针706。此后,指针706指向存储位置812(2),并且控制单元702通过系数路径714将x2写入存储位置812 (2)。对表800的行802 (3)至802 (9)中剩余的对值类似地继续进行该过程。
[0128]当控制单元702遇到行802 (10)中的RLE数据时,该对值指示在x9与xlO之间有三个O (该对中的第一个值是“3”)以及xlO (该对中的第二个值)为下一个非O系数。因此,控制单元702通过指针控制路径716上的控制信号置为有效使I加上行程(在这种情况下的四个位置的增进),来增进指针706。此后,指针706指向存储位置812 (15),并且控制单元702通过系数路径714将xlO写入存储位置812 (15)。接下来,行802 (11)中的RLE数据指示在xlO与xll之间有一个O (该对中的第一个值是“I”)以及xll (该对中的第二个值)为下一个非O系数。因此,控制单元702通过将指针控制路径716上的控制信号置为有效使I加上行程(在这种情况下的两个位置的增进),来增进指针706。此后,指针706指向存储位置812 (17),并且控制单元702通过系数路径714将xll写入存储位置812 (17)。
[0129]在接收行802 (11)中的RLE数据之后,控制单元702接收区块结束代码,该区块结束代码指示与图像数据的当前区块相关联的所有剩余量化系数具有O值。当控制单元702达到这个代码时,其已经结束将RLE数据解码成多个与图像数据区块相关联的量化系数。控制单元702然后可以继续进行,致使系数缓冲器704中的64个系数被输出至输出信道管理器708,例如通过将输出控制路径720上的输出使能信号置为有效。
[0130]在解码与每个图像数据区块相关联的RLE数据之前把所有O加载到该系数缓冲器704提供特定的优点。具体地,因为所有具有O值的量化系数都被预加载,所以行程解码器604不需要花费解码这些系数的时间及资源。反而,恰恰相反,行程解码器604只利用时间和资源解码与非O系数相关联的RLE数据。正如表800的列804中表明的,区块400D只包括12个非O系数,这意味着行程解码器604能够以大约是其必须分别解码区块400D中的64个系数的每一个时五倍的速度解码区块400D。换句话说,行程解码器604具有五倍现有技术之行程解码器的吞吐量。解码信道606 (I)至606 (η)通过并行完成对数据区块的解码处理而取得了行程解码器604的这种提高的速度的优点。
[0131]更进一步地,因为熵解码器602的吞吐量与行程解码器604的吞吐量都与k值成比例,所以两个解码器602与604的吞吐量随另一个变化,这还防止它们之间的瓶颈。此夕卜,解码器106可包括足够多的解码信道606 (I)至606 (n),以便取得这种提高的吞吐量的优点以及防止瓶颈。在一非限制实施例中,解码信道606 (I)至606 (η)的数量可由下式来确定:
[0132]η > INT 表
[0133]其中Q表示每个数据区块中的系数数量,INT是整数函数。[0134]重要的是还应当注意,虽然已经根据JPEG编解码器描述了本发明,但是行程解码器604还将提供采用行程解码的任何解码器中的重要优点。因为行程解码器604通过首先将该预定值载入到缓冲器的所有存储位置中来同时解码每个具有预定值的系数(并非必须是量化系数),所以行程解码器604提高RLE数据的解码速度。结果,只有具有与该预定值不同的值的系数需要被分别解码并存储到该缓冲器中。因此,行程解码器604相对于现有技术的行程解码器而言,特别是相对于分别解码每个系数的解码器而言,提高了行程解码性能。
[0135]由于这些相同的原因,重要的是还应当注意,输出信道管理器708 (图7)为可选组件。即使在只具有一个输出712的行程解码器604中,行程解码器604因为上述原因仍然会加速行程解码过程。实际上,对于任何k值以及即使在缺少多个并行解码信道606 (I)至606 (η)的情况下,行程解码器604都提供性能优点。
[0136]图9为计算机系统900的方块图,该图显示了以例如电子可读媒体这样的软件实施的本发明的编码器和/或解码器。计算机系统900包括一个或多个处理单元(CPU)902、非易失性内存904、使用者输入/输出控制器906、网络接口 908以及工作内存910,上述组件都通过系统总线912互通。CPU902执行包含在工作内存910中的数据和代码,以便使计算机系统900进行其预期的功能(例如,图像处理、视频回放等)。非易失性内存904 (例如,只读存储器、一个或多个硬盘驱动、闪存等)提供数据与代码(例如,启动代码、程序、压缩图像文件等)的存储,即使当计算机系统900断电,上述数据与代码也被保留下来。使用者输入/输出控制器906管理对使用者接口装置(未显示)的连接,该使用者接口装置例如是键盘、鼠标、显示器、打印机、照相机以及其它有助于计算机系统900与使用者之间通讯的装置。网络接口 908 (例如,以太网适配卡)在互联网(例如,因特网)上发送数据封包以及从互联网接收数据封包,以便使用者可通过互联网发送与接收数据(例如,图像数据)。系统总线912有助于计算机系统900的各种组件之间的互通。
[0137]工作内存910 (例如,随机存取内存)为计算机系统900提供动态存储,且工作内存910包括可执行代码(例如,操作系统914等),该可执行代码在系统启动时被加载到工作内存910中。操作系统914有助于加载到工作内存910中的其它所有模块的控制与执行。工作内存910还包括媒体编程916 (例如,图像浏览器、电影播放器等),该媒体编程916利用媒体压缩(例如,JPEG、MPEG等)来编码和/或解码媒体数据。编码器程序918代表执行本文之前描述的编码器104的任何或者所有功能的程序。编码器程序918利用量化电平缓冲器920来存储在编码过程中产生的区块-特定的量化电平,该量化电平缓冲器920可像FIFO—样操作。由编码器程序918产生的压缩数据可暂时存储在工作内存910中,或者可长期存储在非易失性内存904中。可选择地,存储在缓冲器920中的该量化电平还可以作为压缩数据文件的一部分或者作为单独的档存储在非易失性内存904中。工作内存910还可包括解码器程序922,该解码器程序922可以执行本文描述的解码器106的任何以及所有功能。工作内存910还包括量化系数缓冲器924,该量化系数缓冲器924提供第7图的系数缓冲器704的功能。
[0138]利用本领域技术人员熟知的方法,前述的每个程序及缓冲器都在工作内存910中被初始化和/或从非易失性内存904加载到工作内存910中。可选择地,前述的程序及缓冲器可以从可替代的大规模数据存储装置加载到工作内存910中,该大规模数据存储装置包括但不限于⑶-ROM、DVD-ROM、闪存盘等。此外,上述程序的一些或者全部可以根据需要加载到工作内存910中。例如,可在不加载编码器程序918的情况下(例如,对于存储图像的回放等)执行解码器程序922。同样,可在不执行解码器程序的情况下(例如,对于图像的存储)执行编码器程序918。
[0139]现在参考图10至图13来描述本发明的方法。为了解释清楚的目的,参考之前描述的实施例的特定组件来描述这些方法,这些特定组件实现特定功能。然而,应该注意的是,不管是在本文中明确描述的其它组件还是根据本公开而创造的其它组件都可以被在不脱离本发明范围的条件下引用的那些组件替代。因此,应该理解的是,本发明的方法并非限制在实现任意特定功能的任意特定组件。进一步地,本发明方法中的一些步骤不必按所示的顺序出现。例如,在某些情况中,两个或以上方法步骤可同时出现。特别是根据本文之前提供的本发明的描述,这些和本文中描述的方法的其它变化将非常显而易见,并且被认为是在本发明的全部范围内。
[0140]图10为概括根据本发明之编码数据的方法1000的流程图。在第一步骤1002中,接收区块值(例如,与多个图像像素相关联的区块变换系数)。在第二步骤1004中,为该区块值定义一个区块-特定的量化电平(“Q-level”)。该量化电平被定义成使得根据该区块-特定的量化电平对该区块值的量化过程将产生量化系数区块,该量化系数区块具有至少预定数量之具有预定值(例如,O)的量化系数。在第三步骤1006中,根据在步骤1004定义的该区块-特定的量化电平来量化该区块值,以产生包含至少该预定数量之具有该预定值的该量化系数区块。在第四步骤1008中,该区块-特定的量化电平被输出(例如,输出至内存等),以便在接下来的解码过程中使用。在第五步骤1010中,确定是否有另一区块值需要编码。如果有,那么方法1000返回到步骤1002。如果没有,那么方法1000结束。
[0141]图11为概括用来执行图10的第二步骤1004 (为区块定义量化电平)的特定方法的流程图。第一步骤1102包括确定随着量化在被量化区块中之必须具有该预定值的量化系数的最小数量k。如上述表明的,该k值对于所有区块可以是不变的,或者该k值可以根据某些其它参数(例如,由输出120的速度控制信号指示的期望的解码器速度、期望的解码图像质量等)周期性改变。在第二步骤1104中,利用量化数据以及默认量化电平来初始量化该区块值(例如,变换系数),以产生量化系数的试验区块。在第三步骤1106中,确定该试验区块中第k个最小量化系数的值,以及在第四步骤1108中,确定该第k个最小量化系数的值是否等于该预定值(例如,O)。如果等于,那么在第五步骤1110中,定义该默认量化电平作为第10图的步骤1008中之该区块-特定的量化电平,然后该方法结束。
[0142]如果在步骤1108中确定该第k个最小量化系数的值不为0,那么该方法继续进行第六步骤1112,在第六步骤1112中,产生一个新的区块-特定的量化电平,然后该方法结束。
[0143]图12为概括根据本发明的解码数据流的方法1200的流程图。在第一步骤1202中,解码器接收行程编码数据流,该行程编码数据流例如是从熵解码器输出的。在第二步骤1204中,解码器行程解码RLE数据,以产生第一区块值(例如,量化系数)。在第三步骤1206中,第一多个系数利用选自多个并行操作的解码信道606 (I)至606 (η)的第一解码信道606 (I)开始进一步解碼。在第四步骤1208中,解码器106行程解码RLE数据,以产生第二区块值(例如,量化系数)。在第五步骤1210中,该第二区块系数利用一选自多个并行操作的解码信道606 (I)至606 (η)的第二解码信道606 (2)开始进一步解码,以便该第一区块系数与第二区块系数至少部分地被同时解碼。
[0144]图13为概括用来执行图12的步骤1204与1208 (行程解码RLE数据)二者之一的特定方法的流程图。在行程解码过程的第一步骤1302中,将预定值(例如,O)存储到系数缓冲器704的多个存储位置的每一个中。在第二步骤1304中,将不同于该预定值的第一值写入基于该RLE数据的该系数缓冲器704的第一存储位置812。在第三步骤1306中,从第一存储位置812到基于该RLE数据的下一个存储位置812跳过了多个连续的存储位置812。接下来,在第四步骤814中,不同于该预定值的下一个值被写入基于该RLE数据的下一个存储位置812。然后,在第五步骤1310中,确定是否遇到该RLE数据中的区块结束代码。如果遇到该区块结束代码,则该方法结束。如果没有遇到该区块结束代码,则该方法返回到第三步骤1306,以便将另一个下一个系数写入另一个基于该RLE数据的下一个存储位置。
[0145]本发明的特定实施例及方法的描述现在完成。所描述的许多特征在不脱离本发明范围的条件下都可以被替代、改变或者省略。例如,尽管已经就JPEG压缩描述了本发明,但是本发明可同样地应用到其它数据压缩编解码器以及涉及量化、熵和/或行程编解码的方法(例如,MPEG等)。作为另一个示例,可以省略速度控制输入120,以及解码器106的行程解码器604可根据其接收的该RLE数据自动调整其行程解码。这些以及来自所示特定实施例的其它偏差对于本领域技术人员将是显而易见的,特别是在基于前述说明的情况下。
【权利要求】
1.一种行程解码与多个数值相关联的行程编码(RLE)数据的方法,该方法包括: 接收该行程编码数据; 将预定值储存于缓冲器的多个连续存取的储存位置的每一个中; 基于该行程编码数据,将不同于该预定值的第一值写入第一储存位置; 基于该行程编码数据,自该第一储存位置跳过多个该连续存取的储存位置到下一个储存位置;以及 基于该行程编码数据,将不同于该预定值的下一个数值写入该下一个储存位置。
2.根据权利要求1所述的方法,其中: 该行程编码数据包含多个数值对; 该数值对的每一个包含第一值以及第二值,该第一值代表具有该预定值的数值的行程,该第二值代表不同于该预定值的下一个数值;以及 被跳过的多个该连续存取的储存位置的数量等于该多个数值对的其中之一中的该第一值。
3.根据权利要求2所述的方法,其中所述跳过的步骤包括多次增进指针,其中增进指针的次数等于一加上该数值对的其中之一的该第一值。
4.根据权利要求1所述的方法,进一步包括: 基于该行程编码数据,自该下一个储存位置跳过第二多个该连续存取的储存位置到另一下一个储存位置;以及 基于该行程编码数据,将不同于该预定值的另一下一个数值写入该另一下一个储存位置。
5.根据权利要求1所述的方法,进一步包括重置该储存位置的每一个以包含该预定值。
6.根据权利要求5所述的方法,进一步包括重置指针以指向该多个连续存取的储存位置中的起始储存位置。
7.根据权利要求6所述的方法,其中所述重置该储存位置的每一个的步骤以及重置该指针的步骤紧随着接收到该行程编码数据中的结束代码而发生,该结束代码代表已接收到除了该预定值之外的最后一个值。
8.根据权利要求5所述的方法,进一步包括: 输出包含在该缓冲器的该多个储存位置每一个中的数值作为该多个数值;以及其中所述重置该储存位置的每一个以包含该预定值的步骤发生在所述输出该数值的步骤之后。
9.根据权利要求8所述的方法,其中所述输出包含在该多个储存位置的每一个中的数值的步骤紧随着接收到该行程编码数据中的结束代码而发生,该结束代码代表已接收到除了该预定值之外的最后一个值。
10.根据权利要求1所述的方法,进一步包括将包含在该多个储存位置的每一个中的数值输出到多个信道的任意一个中。
11.根据权利要求1所述的方法,其中该预定值为O。
12.根据权利要求1所述的方法,其中: 该行程编码数据定义与多个图像数据的像素相关联的区块的量化系数;以及该缓冲器包含64个该连续存取的储存位置。
13.一种用于解码与多个数值相关联的行程编码(RLE)数据的行程解码器,该行程解码器包括: 输入端,被操作以接收该行程编码数据; 缓冲器,包含多个可连续存取的储存位置;以及 控制单元,被操作以: 将一预定值储存于该多个储存位置的每一个中; 基于该行程编码数据,将不同于该预定值的第一值写入第一储存位置; 移动至离该第一储存位置多个该可连续存取的储存位置的下一个储存位置,该多个该可连续存取的储存位置系根据该行程编码数据来确定的;以及 基于该行程编码数据,将不同于该预定值的下一个值写入该下一个储存位置。
14.根据权利要求13所述的解码器,其中: 该行程编码数据包含多个数值对; 该数值对的每一个包含第一值以及第二值,该第一值代表具有该预定值的数值的行程,该第二值代表不同于该预定值的下一个数值;以及 该第一储存位置与该下一个储存位置之间的该连续存取的储存位置的数量等于该数值对的其中之一的该第一值。
15.根据权利要求14所述的解码器,进一步包括: 指针,被操作以指向任意一个的该储存位置;以及 其中该控制单元被操作以: 当该指针指向该第一储存位置时,写入该第一储存位置, 根据该行程编码数据修改该指针指向该下一个储存位置,以及 当该指针指向该下一个储存位置时,写入该下一个储存位置。
16.根据权利要求15所述的解码器,其中该控制单元被操作以通过多次增进该指针而修改该指针,其中增进该指针的次数等于一加上该数值对的该其中之一的该第一值。
17.根据权利要求13所述的解码器,其中该控制单元进一步被操作以: 基于该行程编码数据,移动至离该下一储存位置多个该连续存取的储存位置的另一下一个储存位置;以及 基于该行程编码数据,将不同于该预定值的另一下一个数值写入该另一下一个储存位置。
18.根据权利要求13所述的解码器,其中该控制单元进一步被操作以重置该储存位置的每一个以包含该预定值。
19.根据权利要求18所述的解码器,进一步包括: 指针,被操作以指向任意一个的该储存位置;以及 其中该控制单元被操作以重置该指针指向该多个连续存取的储存位置中的起始储存位置。
20.根据权利要求19所述的解码器,其中该控制单元被操作以紧随着在该输入端接收到该行程编码数据中的结束代码而重置该储存位置的每一个以及该指针,该结束代码代表已接收到除了该预定值之外的最后一个值。
21.根据权利要求18所述的解码器,进一步包括: 输出端,以及其中 该控制单元被操作以: 使包含在该缓冲器的该多个储存位置每一个中的数值作为该多个数值而从该缓冲器输出,以及 在包含在该缓冲器中的该数值被输出之后,重置该储存位置的每一个以包含该预定值。
22.根据权利要求21所述的解码器,其中该控制单元被操作以紧随着接收到该行程编码数据中的结束代码而使包含在该多个储存位置的每一个中的数值从该缓冲器输出,该结束代码代表已接收到除了该预定值之外的最后一个值。
23.根据权利要求13所述的解码器,其中该控制单元被操作以使包含在该多个储存位置的每一个中的数值被输出到多个信道中的任意一个信道。
24.根据权利要求13所述的解码器,其中该预定值为O。
25.根据权利要求13 所述的解码器,其中: 该行程编码数据定义与图像数据的多个像素相关联的区块的量化系数;以及 该缓冲器包含64个该连续存取的储存位置。
26.一种非暂时性电可读储存介质,具有实施在其中的代码以使电子装置: 接收与多个数值相关联的行程编码(RLE)数据; 将预定值储存于缓冲器的多个连续存取的储存位置的每一个中; 基于该行程编码数据,将不同于该预定值的第一值写入第一储存位置; 基于该行程编码数据,自该第一储存位置跳过多个该连续存取的储存位置到下一个储存位置;以及 基于该行程编码数据,将不同于该预定值的下一个数值写入该下一个储存位置。
27.一种用于解码与多个数值相关联的行程编码(RLE)数据的行程解码器,该行程解码器包括: 输入端,被操作以接收该行程编码数据; 缓冲器,包含多个连续存取的储存位置,其中包含在该多个连续存取的储存位置中的数值定义该多个数值;以及 用于集中解码在具有该预定值的该缓冲器中该多个数值的每一个的装置;以及基于该行程编码数据,用于分别解码在具有不同于该预定值的该缓冲器中数值的该多个数值的每一个的装置。
【文档编号】H04N19/124GK103581679SQ201310280651
【公开日】2014年2月12日 申请日期:2013年7月5日 优先权日:2012年7月19日
【发明者】杜宣明 申请人:豪威科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1