视频解码器、以及相关联的操作方法

文档序号:7629233阅读:280来源:国知局
专利名称:视频解码器、以及相关联的操作方法
技术领域
本发明通常涉及视频解码器以及相关联的操作方法。更具体地,本发明涉及运动补偿的视频解码器,其适用于在主存储器和本地存储器之间传输没有编码的宏块组。
背景技术
在许多电子设备中可找到视频解码器。例如,仅仅对一些通用的平台举例来说,它们用于读取数字视频盘(DVD)、处理从国际互联网络接收的流媒体、以及在数字照相机、个人数字助理(PDA)和便携式电话上显示视频图像。
视频解码器通过接收处于压缩或者编码格式的视频序列、然后将该视频序列转换为解压缩或者解码的格式来进行操作。在某些情况下,编码的视频序列通过与编码器相连的输入设备提供。在其它情况下,编码的视频序列读取自存储器,或者例如通过无线或者国际互联网络传输从远端源接收。
可以以许多不同编码格式之一的形式将编码的视频序列给予解码器。例如,表示编码视频序列的最通用方法之一为作为对应于小图像区域的编码单元集合。每个小图像区域,其被称为“宏块”,一般包括像素值组。例如,在运动图像专家组(MPEG)编码的图像中,每个宏块一般包括一个16×16的亮度值块(Y)和两个8×8的相应色度值(UV)块。作为选择,像素值可以包括红-绿-蓝(RGB)值、灰度值、或者数字图像表示的一些其它形式。
每个对应于宏块的编码单元(此后,称为“宏块单元”)包括编码数据单元(data element)和相伴随的头部(header)。编码数据单元可以包括,例如,编码像素值、用于估计在连续视频帧之间的宏块运动的运动矢量、和/或编码的“运动补偿误差”(即运动矢量对在帧之间的宏块进行预计的好坏程度的度量)。头部通常提供有关宏块单元和/或它的相应宏块的信息。
虽然每个宏块一般包括一个16×16像素值块和两个8×8像素值块,但是像素值通常以8×8块进行编码。例如,一般通过在四(4)个8×8像素值块上执行离散余弦变换(DCT)并且导致产生四个8×8DCT系数块,对16×16像素值块进行编码。
一般通过一系列的顺序操作进行将编码的视频转换为解码或者解压缩格式的处理。这些操作通常包括解释每个宏块单元的头部、在一些宏块单元上执行逆离散余弦变换(IDCT)和运动补偿、以及为对应于相同图像的宏块单元执行图像重建和存储。
解释每个头部的操作包括读取包含在头部中的信息、以及基于这个信息确定如何处理已编码的数据单元。例如,在头部指示该宏块单元没有使用运动估计被进行编码的地方(例如,当在MPEG解码中对I帧进行解码时),将以与其中使用了运动估计的其它情况不同的方式对已编码的数据单元进行解码。
执行IDCT的操作包括将在编码数据单元中的DCT系数值组转换为像素值组或者运动估计误差值组。
随后,执行运动补偿的操作包括基于来自先前已解码图像的至少一个宏块、将解码的运动补偿误差值添加到参考数据中。由在宏块头部的运动矢量定义在先前已解码的图像(多个)中的宏块(多个)的位置。换句话说,宏块头部中的运动矢量用于定位在先前已解码帧(多个)中的宏块(多个)。在参考数据基于超过一个宏块的地方(例如,当在MPEG解码中对B帧进行解码时),组合超过一个的宏块(例如,通过插值),以生成已插值的宏块。在参考数据不是基于超过一个宏块的地方,使用没有插值的宏块。然后通过将已解码的运动补偿误差值添加到已插值或者没有插值的宏块中、对它们进行修改或者“补偿”以创建解码的宏块,而且结果产生的宏块用于重构当前的图像。
除上述操作之外,视频解码器还可以执行几个附加操作中的一个或多个,这些附加操作包括,例如,可变长度解码(例如Huffman解码)、逆量化等等。
与视频解码器的性能相关的一些参数包括它的功耗、带宽、压缩比、信息损失、存储器要求、和尺寸。
功耗是视频解码中重要的参数,这是因为视频解码器常常用于其中电池寿命有限的便携式设备。因此,高功效的视频解码器是所期望的。此外,过度的功耗可以导致电子器件被加热,导致这些器件更快速地用坏乃至出故障。
带宽是视频解码中另一个重要参数,这是因为它可以影响可以由使用该解码器的设备所实现的有效帧频和/或图像质量。例如,具有特定帧频、分辨率、和图像质量的编码视频序列仅仅可以由能够以相应的所需位速率接收、解码、和传输该视频序列的视频解码器进行解码。除了其它事物以外,视频解码器的带宽取决于视频解码器的存储器存取速度、视频解码器的存储容量、时钟频率等。
视频解码器的压缩比指示由视频解码器接收和产生的数据的相对大小。较高的压缩比指示在由解码器所接收的数据大小和由其产生的数据大小之间较大的相对差别。对于在其中存储器受限的系统中使用的视频解码器,较高的压缩比是所期望的,这是因为这允许从紧凑表示中产生大的视频序列。理论上,对于视频解码器可以实现的压缩比没有限制,但是实际上来说,压缩比由所期望的输出视频质量所限制。因此,视频编码技术力求产生这样的紧凑编码的视频序列,其尽可能多地保持来自相应原有输入视频序列的信息。
一种这样的编码技术涉及将当前的视频帧与先前的视频帧进行比较,以确定两个帧中的部分是否是相同的,或者换句话说,视频部分是否没有显著地在帧之间发生改变。在其中当前和先前帧的部分相同的情况下,可以将对应于这个部分的宏块指定为对当前帧“没有编码”。换句话说,该宏块没有存储在编码的视频序列中,而是在该编码视频序列中包括指示该宏块是“没有编码”的头部。然后,在随后的解码过程中,解码器使用存储的、来自先前帧的相应宏块,以便对当前帧进行重构。
这个技术在其中视频序列包括许多静止(即没有改变)特征的情况下是尤其有效的。在这样的情况下,可以实现高压缩度而没有显著地牺牲视频质量。此外,使用来自先前帧的宏块来重构当前帧减少了解码器必须进行解码以对视频序列进行重构的宏块总数,由此提高了视频解码器的吞吐量。总之,有效地提高解码器所使用的压缩比降低了解码器的存储器要求、并且增加了它的速度。
在以输入视频序列不能由解码器确切地再现的方式、对该输入视频序列进行编码的地方,出现信息损失。例如,在编码处理对某些值进行量化以降低表示视频序列所需的位数的地方,可以出现信息损失。在这样的情况下的信息损失一般与所发生的量化量成比例。
视频解码器的存储器要求和大小同样是重要的参数,这是因为视频解码器经常使用在便携式或者小型设备中。在这样的设备中,具有需要极少存储器的小视频解码器通常是所期望的,这是因为这减少了在组成的设备中、视频解码器所需要的空间量。
图1是说明传统的视频解码器电路的框图。视频解码器电路使用IDCT和运动补偿对压缩的位流进行解码,该压缩位流表示在视频序列中的宏块序列。
参见图1,视频解码器电路100包括第一本地存储器(LM0)10、第二本地存储器(LM1)12、可变长度解码器(VLD)20、逆量化/逆离散余弦变换(IQ/IDCT)单元30、视频重建单元40、和运动补偿器50。视频解码器电路100通过直接存储器存取(DMA)单元60和系统总线70连接到系统存储器80。
在图1中,第一本地存储器10存储压缩的位流,并且将压缩的位流输出到VLD20。通常经由DMA单元60和系统总线70将压缩的位流从系统存储器80取到第一本地存储器10。VLD 20在由该位流表示的DCT系数和运动矢量上执行可变长度解码。将解码的DCT系数输出到IQ/IDCT单元30,并且将解码的运动矢量输出到DMA单元60。
IQ/IDCT单元30在DCT系数上执行逆量化,然后在已逆量化的DCT系数上执行IDCT。逆量化过程一般地将DCT系数与量化值组相乘,其中该量化值组在用于对DCT系数进行量化的相应量化过程中使用。IDCT过程使用众所周知的数学操作,以把DCT系数块转换为像素值组或者误差值组。
第二本地存储器12存储用于执行运动补偿的参考数据。该参考数据一般包括来自先前解码的帧中的至少一个宏块,这些宏块在先前解码的帧中的位置由在压缩位流中的运动矢量所定义。参考数据可以使用DMA单元60和系统总线70从系统存储器80中取出。也就是说,一旦DMA单元60接收了定义来自先前解码帧(多个)的宏块(多个)的位置(多个)的运动矢量,则从系统存储器80中取出对应的参考数据。将参考数据输出到运动补偿器50,在将该数据输出到视频重建单元40之前在该运动补偿器50中对其进行处理。在运动补偿器50中进行的处理可以包括,例如,将来自超过一个宏块的信息进行组合,或者通过对两个或者四个相邻像素进行插值来产生子整数单元像素值,以形成平均或者插值的宏块。
对视频序列的MPEG编码是在运动补偿器中组合多个宏块的视频编码处理的一个示例。在MPEG编码中,通过将来自从帧序列中选出的先前和随后I帧或者P帧的信息进行组合,对P帧进行编码。在对P帧进行编码之前对先前和随后的帧进行编码,以及在对P帧进行解码之前对先前和随后的帧进行解码,以便来自I帧(多个)和/或P帧(多个)的信息可用于表示P帧中的每个宏块。
在一些情况下,没有来自先前解码帧的信息用于对当前帧进行解码。例如在MPEG编码中,对I帧进行编码和解码而不用参考其它帧。在这些情况下,运动补偿器50的输出不必用于重构用于当前帧的宏块。否则,运动补偿器50输出已平均了的或者已插值了的宏块。
视频重构单元40接收运动补偿器50输出的宏块和IQ/IDCT单元30输出的相应像素值组或者误差值组。在其中IQ/IDCT单元30的输出包括用于运动补偿的误差值的情况下,将该误差值添加到由运动补偿器50输出的相应的已运动补偿了的宏块中,而且结果产生的重构宏块与其它重构了的宏块进行组合以形成重构的当前帧。在其中IQ/IDCT单元30包括像素值组的情况下,例如,在对I帧进行解码的情况下,像素值可以与其它组像素值进行组合以形成重构的当前帧。一旦形成了重构的当前帧,则将其输出到DMA单元60。然后使用系统总线70,将输出到DMA单元60的已重构的帧存储在系统存储器80中。
图2是时序图表(time-wise chart),示出由典型的视频解码器电路100执行的示例、有序操作序列。贯穿这个描述,在括号(XXX)内命名方法步骤,以区别方法步骤和如图1所示那些示例系统元件。
一起参见图1和2,通过DMA单元60将压缩位流存储在第一本地存储器10中,然后将其输出到VLD20。然后,VLD20通过对由该压缩位流所代表的量化的DCT系数和运动矢量进行解码,来处理该压缩位流(S11)。将解码的量化DCT系数输出到IQ/IDCT单元30,并且将解码的运动矢量输出到DMA单元60。
接下来,DMA单元60从系统存储器80中读取要用于运动补偿的参考数据,其中如上所述,该参考数据基于从VLD20接收的运动矢量(S12)。
运动补偿器50然后在该参考数据上执行任何必需的处理(例如插值),并且将所产生的宏块输出到视频重构单元40(S13)。
由VLD20输出的量化DCT系数通过IQ/IDCT单元30进行逆量化和逆离散余弦变换,然后将它们输出到视频重构单元40(S14)。视频重构单元40然后通过将由运动补偿器50输出的宏块添加到由IQ/IDCT单元30输出的值中来执行运动补偿,以生成用于生成最终运动补偿视频数据的重构了的宏块(S15)。
一旦生成了最终运动补偿视频数据,则将该数据输出到DMA单元60,并且将其存储在系统存储器80中(S16)。在对应于视频序列的宏块的几个压缩位流上重复操作S11到S16,直到完全解码了该视频序列为止。
在上述操作中的某些变化可用于对与视频解码器相关的各种参数进行优化。例如,如先前所述,可以增加或者减少量化量,以便增加或者减少解码器的压缩比(以及因此增加或者减少信息损失)。尽管如此,上述描述用来说明,尤其是在MPEG示例的上下文中,解码操作的一般流程。
一种可以用来提高解码器的压缩比而没有显著地降低解码视频序列的质量的特定变化涉及利用“没有编码”宏块的存在的技术。在其中视频序列内的连续帧彼此充分类似的地方,即在连续帧之间几乎没有相对变化或者运动的地方,使用这个技术。在对应于特定宏块的运动矢量为零的地方,该宏块块可以被指定为“没有编码”,即编码过程没有对该宏块进行编码或者压缩。作为替代,生成这样的宏块单元,其中该宏块单元的头部指定该宏块为“没有编码”。在随后的解码序列中,由与在先前帧中同一位置处的宏块对应的存储数据定义该没有编码的宏块,而且这个存储的数据被用作没有编码宏块类的替代品。
当视频解码器电路100处理包括“没有编码”宏块的视频序列时,VLD20解释每个宏块单元的头部,以确定相应的宏块是否被指定为没有被编码。在相应的宏块被指定为没有被编码时,DMA单元60从系统存储器80中取出先前存储的、与先前帧相关联的已解码宏块。如上所述,这个来自先前帧的已解码的宏块的位置与在当前帧中的“没有编码”的宏块的位置相同。因此从系统存储器80中读取该已解码的宏块,将其存储在第二本地存储器12中,然后作为用于当前帧的解码过程的一部分、将其写回到系统存储器80中。
图3为时序图表,说明了在其中视频解码器电路100遇到与当前帧相关联的三(3)个连续“没有编码”宏块的情况下、所执行的解码操作。参见图3,将来自系统存储器80的压缩位流通过DMA单元60存储在第一本地存储器10中。VLD20对压缩位流进行解码,并且解释相应宏块单元的头部。在解释宏块单元的头部时,VLD 20检测到相应宏块被指定为没有编码。因此,VLD20输出具有值零(0)的运动矢量到DMA单元60(S21)。
DMA单元60响应由VLD20输出的运动矢量,从系统存储器80中的第一位置取出与先前帧相关联的已解码的宏块,然后将已解码的宏块存储在第二本地存储器12中(S22)。一旦将解码的宏块存储在第二本地存储器12中,则将该解码的宏块写回到系统存储器80中的指定第二位置(S23)。
可以从图3中看出,对当前帧中的每一个没有编码宏块“T-1”、“T”和“T+1”重复操作(S21)、(S22)、和(S23)。然后,在对没有编码的宏块“T+1”进行解码之后,使用参考图2描述的操作S11到S16对编码的宏块“T+2”进行解码。
图3所说明的传统方法的一个缺点是在编码视频序列中的每个没有编码的宏块都需要单独的存储器存取操作。因为每个存储器存取操作需要一定量的功率(取决于系统存储器80的大小和性能),所以执行与图3中所说明的方法相关联的大量重复性存储器存取操作导致过多的功耗。为了解决这个问题,需要对视频序列进行解码的新方法和/或新的视频解码器体系结构。

发明内容
考虑到需要在视频解码器电路中节省功率和增加速度,所以本发明提供了适于以省时和节能的方式对视频序列进行解码的方法和设备。
依据本发明的一个实施例,提供了一种对视频解码器进行操作的方法。该方法包括确定在与当前帧相关联的宏块序列中、连续没有编码的宏块;定义与所述连续没有编码的宏块相关联的多宏块DMA操作;响应所述多宏块DMA操作,从主存储器中读取与先前帧相关联的相应宏块;以及将该相应宏块写入到主存储器中。
依据本发明的又一个实施例,提供了另一种对视频解码器进行操作的方法。该方法包括顺序地标识在与当前帧相关联的宏块序列中、编码的宏块和没有编码的宏块,其中没有编码的宏块包括单个没有编码的宏块以及连续没有编码的宏块组;对每个编码的宏块执行解码操作。该方法还包括对每单个没有编码的宏块执行单个宏块DMA操作;以及对每个连续没有编码的宏块组执行多宏块DMA操作。
依据本发明的又一个实施例,提供了一种对基于运动补偿的视频解码器进行操作的方法,该视频解码器接收可被标识为与当前帧相关联的宏块序列的、压缩视频数据的位流。该方法包括除了在连续没有编码的宏块组中存在的没有编码宏块之外,为在该宏块序列中每个宏块,从主存储器中读取相应的先前帧宏块,并且将相应的已解码的宏块写入到主存储器中。
依据本发明的又一个实施例,提供了基于运动补偿的视频解码器。该视频解码器包括可变长度解码器,适合于标识在与当前帧相关联的宏块序列中的编码和没有编码的宏块;DMA电路,适合于响应每个编码的宏块、从主存储器中读取与先前帧相关联的相应宏块,以及响应每个连续没有编码的宏块组、从主存储器中读取与先前帧相关联的相应宏块组。


下面结合在附图中说明的几个实施例描述本发明。在所有附图中,类似的参考数字指示类似的示例单元、部件、或者步骤。在附图中图1为传统视频解码器电路的框图;图2为说明对编码的视频序列进行解码的传统方法的图表;图3为说明对连续“没有编码”的宏块系列进行解码的传统方法的图表;图4为说明依据本发明的一个实施例、对连续“没有编码”的宏块系列进行解码的方法的图表;图5为依据本发明又一个实施例的视频解码器电路的框图;图6为依据本发明又一个实施例的视频解码器电路的框图;图7为依据本发明又一个实施例的视频解码器电路的框图;以及图8为一个示出在传统的视频解码器电路和依据本发明的视频解码器电路中、每个宏块的系统存储器存取周期的平均数的比较的图表。
具体实施例方式
下面参考相应的附图对本发明的示例实施例进行描述。作为示教示例给出这些实施例。本发明的实际范围由接下来的权利要求所定义。
下面所述的示例实施例说明了对视频解码器进行操作以便对编码的视频序列进行解码的各种方法,通过这些方法,成组地在系统存储器和本地存储器之间传输连续没有编码的宏块,而不是逐个地进行传输。此外,示例实施例说明了适于执行各种创造性方法的各种视频解码器。
图4是时序图表,说明了对视频解码器进行操作、以便对编码的视频序列进行解码的方法,其中该视频序列包括连续没有编码的宏块系列。在编码的视频序列中,由对宏块单元进行编码的压缩位流表示每个宏块。
每个宏块单元包括编码的数据单元和相伴随的宏块头部。编码的数据单元一般包括指示宏块中的每块是“编码”还是“没有编码”的编码块模式(CBP)。该宏块信息块包括,例如,像素值或者运动补偿误差值等。宏块头部通常包括运动矢量差(MVD)和有关CBP的信息,以及使用了什么量化值(如果有的话)。
参见图4,在操作(S31)中,经由DMA单元将与当前帧相关联的压缩位流从系统存储器(即主存储器)传输到第一本地存储器。该压缩位流从第一本地存储器输出到可变长度解码器,其中在该位流上执行可变长度解码,以生成宏块单元。可变长度解码器检查在宏块单元中的宏块头部,以确定相应的宏块是否没有被编码。在确定相应的宏块没有被编码时,可变长度解码器对与当前帧相关联的随后位流进行解码,并且读取相应的宏块头部,以确定它们的相应宏块是否同样没有被编码。如图4中的示例所示,三(3)个连续的宏块“T-1”、“T”、和“T+1”都没有被编码。
当确定有多个连续的宏块没有被编码时,与这些连续没有编码的宏块相关地定义多宏块DMA操作。在这方面,该DMA操作可以标识,例如,要通过DMA单元从系统存储器中读取的数据块的数据块地址、水平和垂直块尺寸、以及该数据块的水平分辨率。
在操作(S32)中,DMA单元使用该数据块地址、水平分辨率、和块尺寸,将与先前帧相关地存储的、已解码宏块从系统存储器的第一位置中读取到第二本地存储器。来自先前帧的已解码的宏块对应于与当前帧相关联的连续没有编码的宏块。
为了防止DMA单元过早地存取系统存储器,当检测到压缩位流序列中的第一(或者随其后)压缩位流对应于没有编码的宏块时,可以向DMA单元发出等待指令。因此,在图4所示的工作示例的上下文中,可以在确定宏块“T-1”没有被编码时发出DMA等待指令,并且,当确定宏块T没有被编码时再次发出该等待指令,以及当确定宏块T+1没有被编码时再次发出该等待指令。此后,当在没有编码的宏块序列之后检测到第一个编码宏块时,DMA将实际执行读取操作。自然,如在特定系统体系结构中所定义的那样,这种DMA传输在向前看的同时进行等待的方法将具有实际的时间和带宽限制,但是为了DMA传输而进行没有编码的宏块的某些有用集结几乎是必然有可能的。
在步骤(S33)中,将来自先前帧的已解码宏块从第二本地存储器写入到系统存储器的第二位置处。此后,写入到系统存储器的已解码宏块用于重构已解码的当前帧。
通过在系统存储器和第二本地存储器之间传输已解码宏块组(即,集合)而不是逐个传输每个宏块,显著地减少了整个解码操作所需要的存储器存取周期的总数。因此,提高了视频解码器的操作速度,同时减少了相关联的功耗。
沿着传统的线路处理与编码的宏块相关联的DMA传输。也就是说,每个编码的宏块执行单个宏块DMA操作。单个宏块DMA操作包括基于至少一个先前解码的帧、从系统存储器中的第一位置读取参考数据;通过将运动补偿应用到参考数据对第一宏块进行解码;以及把已解码的宏块写入到系统存储器中的第二位置。取决于当前帧是P帧还是B帧,参考数据一般包括可以从先前的I帧或P帧或者先前的和下一个I帧或者P帧中取走的一个或者两个宏块。
在本发明的上下文中所考虑的示例方法将在许多特定系统体系结构中找到应用。在图5到7中说明了三个示例。
图5是说明依据本发明的一个实施例的视频解码器电路的框图。参见图5,视频解码器电路包括第一本地存储器410、第二本地存储器412、VLD420、IQ/IDCT单元430、视频重构单元440、和运动补偿器450。视频解码器电路还包括第一DMA单元460A和第二DMA单元462A,它们经由系统总线470连接到系统存储器480。
VLD420通过对由第一本地存储器410输出的压缩视频数据位流进行处理,标识在与当前帧相关联的宏块序列中、已编码和没有编码的宏块。由第一本地存储器410输出压缩的视频数据位流。
对于每个由VLD420标识的编码宏块,第一DMA单元460A将与先前帧相关联的相应宏块从系统存储器480中读取到第二本地存储器412。在其中当前帧为B帧的情况下,第一DMA单元460A还将与随后的帧相关联的、相应先前已解码的宏块从系统存储器480中读取到第二本地存储器412中。运动补偿器450从第二本地存储器412接收至少一个解码的宏块,对该至少一个宏块进行处理,并且将产生的宏块输出到视频重构单元440。
视频重构单元440接收由运动补偿器450输出的宏块,并且通过将由IQ/IDCT单元430输出的运动补偿误差值添加到该宏块上对该宏块执行运动补偿。然后由视频重构单元440将产生的已运动补偿、解码的宏块输出到第二DMA单元462A,其然后将该已运动补偿、解码的宏块写入到系统存储器480中。
对于所标识的每个没有编码的宏块组,第一DMA单元460A将与先前帧相关联的相应宏块组从系统存储器480中的第一位置中读取到第二本地存储器412中。然后经由第一DMA单元460A将该宏块组写入到系统存储器480中的第二位置处。
如图5所示,第一DMA单元460A用于将压缩视频数据从系统存储器480中读取到第一本地存储器410中,并且在系统存储器480和第二本地存储器412之间读取和写入连续没有编码的宏块组。第二DMA单元462A用于将最终解码的视频数据从视频重构单元440写入到系统存储器480。
图6是说明依据本发明的又一个实施例的视频解码器电路的框图。参见图6,视频解码器电路包括第一本地存储器410、第二本地存储器412、VLD420、IQ/IDCT单元430、视频重构单元440、和运动补偿器450。视频解码器电路还包括第一DMA单元460B和第二DMA单元462B,它们经由系统总线470连接到系统存储器480。
VLD420通过对由第一本地存储器410输出的压缩视频数据位流进行处理,标识在与当前帧相关联的宏块序列中、已编码和没有编码的宏块。由第一本地存储器410输出压缩视频数据的位流。
对于每个由VLD420标识的编码宏块,第一DMA单元460B将与先前帧相关联的相应宏块从系统存储器480读取到第二本地存储器412。在其中当前帧为B帧的情况下,第一DMA单元460B还将与随后的帧相关联的、相应先前已解码的宏块从系统存储器480读取到第二本地存储器412。运动补偿器450从第二本地存储器412接收至少一个解码的宏块,对该至少一个宏块进行处理,并且将产生的宏块输出到视频重构单元440。视频重构单元440接收由运动补偿器450输出的宏块,并且通过将由IQ/IDCT单元430输出的运动补偿误差值添加到该宏块上而对该宏块执行运动补偿。然后由视频重构单元440将产生的已运动补偿的、解码的宏块输出到第二DMA单元462B,其然后将该已运动补偿的、解码的宏块写入到系统存储器480中。
对于所标识的每个没有编码的宏块组,第一DMA单元460B将与先前帧相关联的相应宏块组从系统存储器480中的第一位置读取到第二本地存储器412。然后,经由第一DMA单元460B将该宏块组写入到系统存储器480中的第二位置处。
第二DMA单元462B用于将压缩视频数据从系统存储器480读取到第一本地存储器410,以及将最终的已解码视频数据写入到系统存储器480中。
图7是说明依据本发明的又一个实施例的视频解码器电路的框图。参见图7,该视频解码器电路包括第一本地存储器410、第二本地存储器412、VLD420、IQ/IDCT单元430、视频重构单元440、和运动补偿器450。该视频解码器电路还包括第一DMA单元460C、第二DMA单元462C、和第三DMA单元464C,它们经由系统总线470连接到系统存储器480。
VLD420通过对由第一本地存储器410输出的压缩视频数据的位流进行处理,识别在与当前帧相关联的宏块序列中、已编码和没有编码的宏块。由第一本地存储器410输出压缩视频数据的位流。
对于每个由VLD420标识的编码宏块,第一DMA单元460C将与先前帧相关联的相应宏块从系统存储器480读取到第二本地存储器412。在其中当前帧为B帧的情况下,DMA单元460C还将与随后的帧相关联的、相应的先前已解码的宏块从系统存储器480读取到第二本地存储器412。运动补偿器450从第二本地存储器412接收至少一个解码的宏块,对该至少一个宏块进行处理,并且将产生的宏块输出到视频重构单元440。
视频重构单元440接收由运动补偿器450输出的宏块,并且通过将由IQ/IDCT单元430输出的运动补偿误差值添加到该宏块上而对该宏块执行运动补偿。然后由视频重构单元440将产生的已运动补偿的、解码的宏块输出到第二DMA单元462C,然后,该第二DMA单元462C将该已运动补偿的、解码的宏块写入到系统存储器480中。
对于所标识的每个没有编码的宏块组,第一DMA单元460C将与先前帧相关联的相应宏块组从系统存储器480的第一位置读取到第二本地存储器412。然后,经由第一DMA单元460C将该宏块组写入到系统存储器480的第二位置处。
第二DMA单元462C将由视频重构单元440输出的最终解码的视频数据写入到系统存储器480中,而且第三DMA单元464C将压缩的视频数据从系统存储器480读取到第一本地存储器410。
图5到7所示的各种DMA单元可以被看做定义不同的物理部件,或者更宽泛地,被看做不同的功能实体。例如,如图5到7所示每个所说明的DMA块单元可以定义硬件或者软件分区,或者简单地是单个集成单元的功能划分。使用超过一个DMA提供了多个可能的好处。
如图5到7所示使用超过一个DMA单元的一个益处是其允许由视频解码器电路实现一定量的流水线处理。例如,使用图6所示的视频解码器电路,图4所示的操作(S34)和(S39)可以使用第二DMA单元462B,同时操作(S35)可以使用第一DMA单元460B。因此,可以在与当前帧相关联的两个连续宏块上同时执行操作(S34)和(S35),而不会引起资源冲突。
本领域的那些普通技术人员将会理解有多种将图5到7所示的示例视频解码器的操作划分为流水线阶段,并且依据该流水线阶段对相应的解码指令进行调度的方法。因此,将不会在此处给出特定流水线原理、实现、和机构的穷举表示。
图8为数据图表,其将在传统的视频解码器电路中、用于在系统存储器和本地存储器之间读取和写入宏块的系统存储器存取周期的平均数,与在依据本发明实施例的视频解码器电路中所使用的系统存储器存取周期的平均数进行比较。
在图8中,标记为“M”的列列出在视频序列中连续没有编码的宏块数目。标记为“传统”的列示出使用传统的视频解码器电路、在系统存储器和本地存储器之间读取和写入“M”个没有编码的宏块中的每一个所需要的系统存储器周期的平均数。标记为“选定实施例”的列示出使用依据本发明的一个实施例的视频解码器电路、将“M”个没有编码的宏块从系统存储器传输到本地存储器所需要的系统存储器周期的平均数。
图8中的图表假定系统存储器包括具有10个周期的行存取等待时间(latency)“L”的DRAM。它进一步假定每个宏块包括16×16的1字节亮度值块,和两个8×8的1字节色度值块。在每个存储器存取操作中,系统存储器将4字节字从系统存储器传输到本地存储器。因此,使用传统的视频解码器电路在系统存储器和本地存储器之间传输16×16亮度块中的一行所需要的周期数是“L”+4,而使用传统的视频解码器电路传输8×8色度块中的一行所需要的周期数是“L”+2。
相反,本发明允许一起读出“M”个宏块中每一个中的多行,而没有引起附加的行存取等待时间。因此,在系统存储器和本地存储器之间传输组合的“M”个宏块中的一行所需要的周期数,对于16×16亮度块为“L”+M×4,而对于8×8色度块为“L”+M×2。
因此,为了使用传统的视频解码器电路读取和写入“M”个宏块,需要“M”×(16×(“L”+4))个周期来读取16×16亮度块,以及需要“M”×(16×(“L”+4))个周期来将该16×16亮度块写回到存储器中。类似地,读取和写入“M”个色度块需要2דM”×(8×(“L”+2)+8×(“L”+2))个周期。
另一方面,依据本发明一个选定实施例的视频解码器仅仅需要16×(4דM”+“L”)个周期来读取M个16×16块,以及需要16×(4דM”+″L″)个周期写入M个16×16块。同样地,依据本发明一个选定实施例的视频解码器仅仅需要2×(8×(2דM”+“L”)+8×(2דM”+“L”))个周期来读取和写入“M”个8×8色度块。
因为与传统的视频解码器电路相比,依据本发明涉及的视频解码器电路需要明显少的存储器存取周期数,所以,在其中存在大量没有编码的宏块组的情况下,视频解码器电路可以提供比传统的视频解码器电路更好的性能和更好的功率效率。
图8所示的结果是本发明的一个选定实施例在上述假定下操作时的示例。实际节省的“存取周期”将是组成依据本发明设计的视频解码器的系统的特定体系结构的函数。尽管如此,只要某些块能够被指定为“没有编码”,则对于任何在块的基础上运行视频解码的系统,重要的存取周期节省是可能的。
已经结合假定运行MPEG相关操作的系统描述了上述背景技术和说明性实施例。MPEG仅仅是一个示教环境,而本发明具有遍及视频解码标准和技术范围的更广阔应用。类似地,如同“本地存储器”和“DMA”的术语的特定使用表示数据传输和存储的广阔功能。任意数量和/或类型的胜任的数据存储和传输单元可以在组成本发明规定的系统内获得应用。
权利要求
1.一种对视频解码器进行操作的方法,包括确定在与当前帧相关联的宏块序列中连续没有编码的宏块;定义与所述连续没有编码的宏块相关联的多宏块DMA操作;响应所述多宏块DMA操作,从主存储器中读取与先前帧相关联的相应宏块;以及将这些相应的宏块写入到主存储器中。
2.如权利要求1所述的方法,其中,确定连续没有编码的宏块并且定义多宏块DMA操作包括读取与第一宏块相关联的头部;当确定第一宏块没有被编码时,读取与下一宏块相关联的头部;以及当确定下一宏块没有被编码时,至少与该第一和下一宏块相关地定义该多宏块DMA操作。
3.如权利要求1所述的方法,其中,所述多宏块DMA操作与该连续没有编码的宏块相关地标识存储器地址信息、块大小信息、分辨率信息、和读取/写入指示中的至少一个。
4.如权利要求2所述的方法,还包括在确定第一宏块被编码时,执行单个宏块DMA操作。
5.如权利要求4所述的方法,其中,单个宏块DMA操作包括从主存储器中读取与先前帧相关联的相应单个宏块;以及对该第一宏块进行解码,并且将所解码的宏块写入到主存储器中。
6.如权利要求2所述的方法,还包括在确定第一宏块没有被编码时,在读取与下一宏块相关联的头部之前、向DMA发出等待指令。
7.如权利要求1所述的方法,其中,从主存储器中读取相应宏块、并且将相应宏块写入到主存储器中包括从主存储器中的第一存储器位置读取相应的宏块,并且将它们写入到第一本地存储器中;此后,从第一本地存储器中读取相应的宏块,并且将它们写入到主存储器中的第二存储器位置中。
8.如权利要求7所述的方法,还包括在第二本地存储器中存储与当前帧相关联的压缩视频数据的位流;以及对所存储的、与宏块序列相关联的压缩视频数据位流进行解码。
9.如权利要求1所述的方法,其中,与多宏块DMA操作相关联的、主存储器中的先前帧的相应宏块的数据区域是包括16行的长方形形状,而且先前帧的相应宏块中的数据通过“逐行”操作从主存储器中传输/传输到主存储器中。
10.一种对视频解码器进行操作的方法,包括顺序地识别与当前帧相关联的宏块序列中的编码的宏块和没有编码的宏块,其中没有编码的宏块包括单个没有编码的宏块以及连续的没有编码的宏块组;对每个编码的宏块执行解码操作;对每个单个没有编码的宏块执行单个宏块DMA操作;以及对每个连续没有编码的宏块组执行多宏块DMA操作。
11.如权利要求10所述的方法,其中,多宏块DMA操作包括从主存储器中读取与先前帧相关联的相应连续宏块组,并且将该相应的连续宏块组写入到本地存储器中,以及从本地存储器中读取相应的连续宏块组,并且将该相应的连续宏块组写入到主存储器中。
12.一种对接收可识别为与当前帧相关联的宏块序列的压缩视频数据的位流的、基于运动补偿的视频解码器进行操作的方法,该方法包括除了在连续没有编码的宏块组中存在的没有编码的宏块之外,对宏块序列中每个宏块,从主存储器中读取相应的先前帧宏块,并且将相应的已解码宏块写入到主存储器中。
13.如权利要求12所述的方法,还包括对每个连续没有编码的宏块组,从主存储器中读取相应的先前帧宏块组,并且将相应的先前帧宏块组写入到主存储器中。
14.一种基于运动补偿的视频解码器,包括可变长度解码器,适合于标识与当前帧相关联的宏块序列中的已编码和没有编码的宏块;以及DMA电路,适合于响应每个已编码的宏块、从主存储器中读取与先前帧相关联的相应宏块,以及响应每个连续没有编码的宏块组、从主存储器中读取与先前帧相关联的相应宏块组。
15.如权利要求14所述的基于运动补偿的视频解码器,还包括本地存储器,适合于接收压缩视频数据的位流;以及其中可变长度解码器还适合于对压缩视频数据的位流进行解码作为宏块序列。
16.如权利要求14所述的基于运动补偿的视频解码器,其中,DMA电路还适合于响应每个单个没有编码的宏块而从主存储器中读取与先前帧相关联的相应宏块。
17.如权利要求14所述的基于运动补偿的视频解码器,其中,可变长度解码器还适合于标识每个没有编码的宏块是否存在于连续没有编码的宏块组中。
18.如权利要求17所述的基于运动补偿的视频解码器,其中,可变长度解码器还适合于对每个连续没有编码的宏块组标识地址位置信息、块大小信息、分辨率信息、和读取/写入指示中的至少一个。
19.如权利要求14所述的基于运动补偿的视频解码器,其中DMA电路包括第一DMA单元和第二DMA单元,其适合往返于主存储器传输数据。
20.如权利要求19所述的基于运动补偿的视频解码器,还包括第一本地存储器,其适于将数据传输到可变长度解码器,和第二本地存储器;运动补偿器,从第二本地存储器接收数据;以及视频重构电路,从运动补偿器接收数据并且输出已解码的视频数据;其中第一DMA单元适合于将压缩的视频数据从主存储器传输到第一本地存储器,以及将连续没有编码的宏块组从主存储器传输到第二本地存储器;以及其中第二DMA单元适合于将已解码的视频数据从视频重构电路传输到主存储器。
21.如权利要求20所述的基于运动补偿的视频解码器,其中,第一DMA单元还适于将压缩视频数据的位流作为宏块序列、从主存储器传输到第二本地存储器。
22.如权利要求19所述的基于运动补偿的视频解码器,还包括第一本地存储器,其适于将数据传输到可变长度解码器,和第二本地存储器;运动补偿器,从第二本地存储器接收数据;以及视频重构电路,从运动补偿器接收数据并且输出已解码的视频数据;其中第一DMA单元适于将连续没有编码的宏块组从主存储器传输到第二本地存储器;以及其中第二DMA单元适于从主存储器传输压缩的视频数据到第一本地存储器,以及从视频重构电路传输已解码的视频数据到主存储器。
23.如权利要求14所述的基于运动补偿的视频解码器,其中,DMA电路包括第一DMA单元、第二DMA单元、和第三DMA单元,它们适于往返于主存储器传输数据,而且其中视频解码器还包括第一本地存储器,适于将数据传输到可变长度解码器,和第二本地存储器;运动补偿器,从第二本地存储器接收数据;以及视频重构电路,从运动补偿器接收数据并且输出已解码的视频数据;其中第一DMA单元适于将连续没有编码的宏块组从主存储器传输到第二本地存储器;其中第二DMA单元适合于将已解码的视频数据从视频重构电路传输到主存储器;以及其中第三DMA单元适于将压缩视频从主存储器传输到第一本地存储器。
全文摘要
公开了视频解码器以及与相关联的操作方法。视频解码器标识与从主存储器接收的压缩视频数据的位流中的当前帧相关联的连续没有编码的宏块组。然后,视频解码器将与先前帧相关联的相应宏块组从主存储器中的第一位置读取到本地存储器中,然后将其写回到主存储器中的第二位置,以便重构当前帧。
文档编号H04N7/26GK1791220SQ20051013174
公开日2006年6月21日 申请日期2005年12月16日 优先权日2004年12月16日
发明者朴贤相 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1