CN1199472C - 对数字编码视频信号进行译码的可变长度译码器 - Google Patents
对数字编码视频信号进行译码的可变长度译码器 Download PDFInfo
- Publication number
- CN1199472C CN1199472C CNB998064416A CN99806441A CN1199472C CN 1199472 C CN1199472 C CN 1199472C CN B998064416 A CNB998064416 A CN B998064416A CN 99806441 A CN99806441 A CN 99806441A CN 1199472 C CN1199472 C CN 1199472C
- Authority
- CN
- China
- Prior art keywords
- length
- decoder
- variable
- data
- circuit
- 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.)
- Expired - Fee Related
Links
- 230000033001 locomotion Effects 0.000 claims abstract description 43
- 239000013598 vector Substances 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 19
- 230000004044 response Effects 0.000 claims description 11
- 230000014509 gene expression Effects 0.000 claims description 10
- 230000000295 complement effect Effects 0.000 claims description 9
- 230000006835 compression Effects 0.000 claims description 6
- 238000007906 compression Methods 0.000 claims description 6
- 238000006073 displacement reaction Methods 0.000 claims description 3
- 241001269238 Data Species 0.000 claims 2
- 230000008569 process Effects 0.000 abstract description 3
- 230000006870 function Effects 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006837 decompression Effects 0.000 description 5
- 239000000284 extract Substances 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 3
- 241000446313 Lamella Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 2
- 238000004886 process control Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000003442 weekly effect Effects 0.000 description 2
- 235000017060 Arachis glabrata Nutrition 0.000 description 1
- 241001553178 Arachis glabrata Species 0.000 description 1
- 235000010777 Arachis hypogaea Nutrition 0.000 description 1
- 235000018262 Arachis monticola Nutrition 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 235000020232 peanut Nutrition 0.000 description 1
- 238000001485 positron annihilation lifetime spectroscopy Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
这里公开了一种用于对依从MPEG-1和-2语法的视频位流进行译码的可变长度译码器(VLD)(104)。VLD(104)包括一个微定序器(134)和用于采用一个新颖指令集(214a-214g)控制MPEG译码过程的VLD命令译码/执行单元(136)。指令集(214a-214g)包括一个用于译码视频数据的命令集和一个流程控制指令集。旋转器/桶形移位器(158)用于使得来自视频位流的预定数目的编码位可用于VLD(104)和采用MPEG标准可变长度代码(VLC)表进行可变长度译码的可变长度表译码器(186)。可变长度表译码器(186)在所有VLC表之间共享一个前缀模式匹配方案,并将可变长度代码组织成一系列子表。每个子表对应于一个唯一的前缀模式。通过识别视频数据位流中的领先模式并且并行地访问对应于该领先模式的子表来对可变长度代码进行译码。将运行-长度和幅度电平DCT系数码元以压缩形式存储,并由反变换单元(208)根据需要译码。运动矢量也被一直存储到运动补偿单元(212)需要为止。
Description
交叉参考
本申请要求在1998年5月18日申请的共同未决的临时申请No.60/085,797的申请日,其公开文本在这里作为参考。
发明领域
本发明涉及数字编码视频信号的译码,尤其涉及用于对已经用固定长度值和可变长度码编码的视频数据和控制信息进行译码的译码器。
发明背景
近年来视频信号的数字传输已经被更加广泛地使用,特别是用在消费者电子工业中。数字视频信号传输以及在数字通用盘(DVD)播放器和数字视频广播(DVB)机顶盒应用中的接收的使用方面的增长例如已经导致在图象的发射序列中的图象质量的提高以及更有效地控制视频信号在现有NTSC和PAL模拟传输系统上的存储、管理和显示的能力。在这些发展的促进下,由国际标准化组织(ISO)特许设立的行业主办的运动图象专家组(MPEG)具有用于数字视频压缩的特定格式,即用于编码视频位流的语法,该语法在两个标准、ISO-11172-2(MPEG-1)和ISO-13818-2(MPEG-2)中进行了定义。因此,在下面的讨论中,参考ISO-11172-2(MPEG-1)和ISO-13818-2(MPEG-2),以便更详细地说明用于根据这些标准对视频信号进行数字编码的位流语法。因此,这些标准中的每一个在这里都全部作为参考。
由MPEG-1和-2标准定义的位流语法涉及位流中的三种一般类型的信息或数据,即定义位流所必须的控制信息、正确地解压缩和复制图象的发射序列的控制信息、以及编码视频数据。位流控制信息可以识别位流是被分组的视频或音频数据,或者例如识别出位流是一个用MPEG-1或-2标准编码的视频信号。图象控制信息例如可以包括帧水平和垂直尺寸、即每行的图象象素(pels)数以及每帧中的行数、帧频或场频、以及画面高宽比。如同下面将要详细说明的,编码视频数据表示重新生成每一帧或场所必须的DCT变换和量化的色度和亮度象素值。
MPEG-1和-2标准分别指定被设计为通过去除空间和时间冗余的方法来提高信息密度和编码效率的位流语法。将每个MPEG图象分成一系列宏块,该宏块由16×16个亮度象素(Y)或四个8×8变换块象素的2×2阵列组成。每个宏块进一步包括8×16个色度象素(U,V)或两个8×8象素块的1×2阵列。在编码过程中,通过采用对8×8象素块的离散余弦变换(DCT)编码、随后进行量化、之字形扫描以及运行零(运行长度)和幅度电平的可变长度编码来去除空间冗余。采用运动补偿预测来去除时间冗余。
对于视频,MPEG考虑内(I-)帧、预测(P-)帧和双向预测(B-)帧。I-帧是独立编码的,是三种帧类型中编码效率最低的。P-帧比I-帧的编码效率高,相对于前面编码的I-或P-帧进行编码。B-帧是三种帧类型中编码效率最高的,相对于前面和后面的I-或P-帧进行编码。在MPEG系统中的帧的编码顺序不必与帧的出现顺序相同。位流的首部提供由译码器用来正确地对帧的时间和序列译码以展示一个活动图象所用的信息。
用于对数字发送的视频位流进行译码的典型的视频译码器具有一个用于控制可变长度译码器(VLD)的微控制器或定序器,所述可变长度译码器被设计为对位流进行语法分析,以便采用MPEG可变长度代码表(VLC)对量化的DCT系数和运动矢量进行译码。反变换处理器用于将每块量化系数值变换成一个表示该块的反之字形的值流,并对这些值进行去量化。将去量化的DCT系数传送到执行反DCT变换操作的反离散余弦变换(IDCT)处理器,以恢复色度和亮度象素值。然后将这些值与译码后的运动矢量结合起来送到一个运动补偿(MC)处理器,执行MPEG解压缩,将I-、P-和B-帧变换成全视频帧。
在典型的用于执行依从MPEG语法的位流语法分析和译码的VLD结构中,将视频位流的预定数目的未译码位存储在一个或多个寄存器中。VLD从寄存器中提取出这些位中的较小数目的位,将最左边的位总是排列为VLD提取的第一位。VLD然后在一个MPEG VLC表中执行表查找,以便对可变长度编码的视频数据进行译码,并获得代码长度。在已经对提取出的位中的可变长度代码进行译码后,VLD在寄存器中的位上执行MASK/SHIFT/OR操作,以重新排列寄存器的最左边位置上的第一未用位。VLC表一般包含在一个或多个大约具有2n×m个存储单元的PALS或ROM中,其中“n”表示在每个VLC表中的最大可能可变代码长度,“m”表示唯一VLC表的数目。
本领域普通技术人员应该理解,在特定VLD结构中的译码过程之后排列未使用的位所需的SHIFT/MASK/OR操作将显著地影响VLD的整个译码速度。由于这些操作中的每一个可能都需要一个或多个周期,所以当VLD需要多个周期来对每个DCT系数码元(即,每个运行长度和幅度电平对)进行译码并且然后重新排列未使用的位时,VLD的译码效率显著降低。另外,由于每个唯一的VLC表的每个可变长度代码都存储在一个单独的存储单元中,所以特定VLD结构中的VLC表结构增加VLD的成本和复杂性。
因此,需要一种对已经根据MPEG-1或-2标准编码的可变长度DCT系数和运动矢量进行高效译码的VLD。还需要一种使得译码各种MPEG可变长度代码所需的存储量最小的VLD。还需要一种能够根据预定的指令集从微定序器接收指令并进一步从主控制器接收指令的VLD。
US-A-5,502,493公开了一种用于MPEG信号的译码器,包括可变长度译码器。
1995年7月的信息技术-移动图象和相关音频信息的一般编码:系统的ITI-T推荐标准H.222.0(与ISO/IEC国际标准13818-1相同)公开了一种在译码之前对音频和视频数据进行多路分解的系统。
US-A-5,604,499公开了一种用于采用可变长度代码表对压缩视频数据进行译码的可变长度表译码器。
发明概述
实施本发明的可变长度视频译码器特别适合于对依从MPEG-1和-2语法的视频位流进行译码。将视频译码器设计为一个用于对单个时间片的宏块和块层进行译码以产生DCT系数值和运动矢量的单个事件每周期时间片语法分析机(single event per cycle slice parsingengine)。
视频译码器包含一个微定序器,微定序器与VLD命令译码/执行单元相连系,以便根据MPEG标准控制可变长度译码过程。在译码过程中,微定序器或者向VLD命令译码/提取单元发出命令来执行可变长度译码,或者控制通过存储在指令ROM中的指令集提供的程序流。视频译码器还能够从一个负责上层语法分析和控制整个译码过程以便重构译码的图象序列的RISC CPU接收译码指令。
将编码视频数据存储在DRAM存储器中,并通过一个信道缓冲器FIFO使其可用于视频译码器。依据本发明的一个方面,通过使用旋转器/桶形移位器和指针寄存器,使得预定数目的编码视频数据位对于视频译码器和可变长度表译码器来说是可见的。桶形移位器和指针寄存器使得从指针地址到指针地址+31的位作为旋转器/桶形移位器数据对于视频译码器和可变长度表译码器来说都是可见的。视频译码器负责对旋转器/桶形移位器数据中的可变长度代码进行译码,以获得每个时间片的所需DCT系数和运动矢量。在对可变长度代码译码之后,旋转器/桶形移位器的指针寄存器递增,准备下一个译码周期。
依据本发明的另一个方面,提供了一种使得视频译码器能访问每个MPEG VLC表、以获得所需的译码值的新颖的方案。根据每个表中所标识的唯一的前缀模式的限定,每个MPEG VLC表被分成一系列子表。在可变长度译码过程中,将提取出的32位的旋转器/桶形移位器数据运用到可变长度表译码器中的一个模式匹配逻辑和MUX控制上,以识别旋转器/桶形移位器数据中的唯一的前缀模式。将前缀模式后面的位并行地加到每个MPEG VLC表中的所有子表上。在已经对可变长度编码数据进行了译码之后,可变长度表译码器提供译码值和一个有效代码状态位。可变长度表译码器还向旋转器/桶形移位器的指针寄存器提供一个代码长度信号,以该代码长度递增该指针寄存器。
依据本发明的又一个方面,将译码的DCT系数作为压缩的运行长度和幅度电平对存储在运行-电平译码器/FIFO中。根据反变换单元的需要,运行-电平译码器/FIFO将运行长度和幅度电平对解压缩成DCT系数。这允许将对霍夫曼编码的可变长度对进行的译码与对以前译码的运行-电平对进行的运行-电平译码并行地进行。将运动矢量存储在mv/dmv FIFO中,直到运动补偿单元需要。
从下面的附图及其说明中,本发明的上述和其他方面、目的和优点将变得显而易见。
附图简要说明
附图被包含在说明书中,并构成说明书的一部分,附图显示了本发明的实施例,并与上面给出的本发明的总体说明以及下面给出的实施例的详细说明一起用于解释本发明的原理。
图1是依据本发明原理的用于执行数字音频/视频信号数据解压缩和输出的视频/音频译码器的方框图;
图2是图1所示的译码系统中的视频译码器的方框图,包括用于对数字编码视频数据和控制信息进行译码的可变长度译码器或VLD;
图2A是图2所示的视频译码器的微定序器和VLD命令/译码执行单元的方框图;
图3是用于将32位增量的编码视频数据提供到图2的可变长度译码器(VLD)命令译码/执行单元和可变长度表译码器的旋转器/桶形移位器电路的示意图;
图4是在由图2的可变长度译码器(VLD)命令译码/执行单元访问的“macroblock_address_increment”可变长度代码(VLC)表的模式匹配结构的表示图;
图5是由图2的可变长度译码器(VLD)在视频数据解压缩过程中访问可变长度代码(VLC)时使用的译码逻辑电路的方框图;
图6A是用于TBIT指令的微定序器指令格式;
图6B是用于ICMD、CMDI指令的微定序器指令格式;
图6C是用于COMP指令的微定序器指令格式;
图6D是用于BRANCH指令的微定序器指令格式;
图6E是用于SETF指令的微定序器指令格式;
图6F是用于INCM指令的微定序器指令格式;以及
图6G是用于HALT指令的微定序器指令格式。
最佳实施例的详细说明
参考附图,特别参考图1,图1显示了一个译码系统100,包括用于执行数字编码视频信号和解压缩的视频图象的显示的音频/视频译码的各种功能模块102至112。优选地,译码系统100被构造为一个专用集成电路(ASIC),用于例如数字通用盘(DVD)和数字视频广播(DVB)机顶盒(STB)应用中的数字音频/视频接收。应该理解,图1中所示的功能单元只是示例性的,而在实际的实施中,可以包括另外的功能单元。每个功能单元102至112以各种方式与一个大的芯片下(off-chip)存储器114进行交互,该存储器114是一个动态随机存取存储器或DRAM。对DRAM 114的访问由ASIC 100上的存储器控制器116控制。
出于示例的目的,下面将说明ASIC 100的几个功能单元。这些功能单元包括一个可编程输入多路分解器102,该可编程输入多路分解器102最好在线118上以直至72Mbps的数据速率接收数字编码视频/音频输入信号。数字编码视频/音频信号是一个分组数据的串行位流,通常被称为具有识别分组数据的配置的预先确定的位流语法的“分组载流线”或PES流。多路分解器102负责将输入的数字编码信号分成单个的视频、音频或其他数据分组,并用存储器控制器116将输入的信号存储进DRAM 114中的缓冲器。如同下面将要详细说明的,依据本发明的原理的视频译码器104用于取还存储在DRAM 114中的缓冲器中的视频数据和图象控制信息,(用对DRAM存储器114的经常和重复的访问来)译码视频数据和控制信息,然后将译码的视频信息传送到输出编码器108,以便通过总线120在监视器上输出。输出编码器108最好是一个NTSC/PAL编码器,对于NTSC以30fps提供720×480象素的图象尺寸,对于PAL以25fps提供720×576象素的图象尺寸。音频译码器106从DRAM 114取还音频信息,对音频信息进行译码以供输出,并将要输出的音频信息通过总线122传送到扬声器。ASIC 100还包括一个用于通过线124与主微控制器进行交互、以便允许主计算机监视和控制ASIC 100的操作的主接口110。
除了所显示的功能单元之外,可以有一个或多个另外的用于译码子照片视频信息的视频译码单元,子照片视频信息可以包含伴随由视频译码器104译码的主视频的子标题或其他信息。此外,屏上显示可以由与RBUS 126和GBUS 128相连的OSD部分在ASIC 100内产生。屏上显示可以响应于从主CPU接收的命令而产生,以便提供关于主CPU的操作的反馈和/或使用ASIC 100的设备的重放或接收状态。
对专用集成电路100的控制是由一个精简指令集中央处理单元(RISC CPU)112提供的,其控制和监视ASIC 100上的每个其他功能单元的操作。RISC CPU 112响应存储在指令存储器130中的16-位指令。指令存储器130保存4096个16-位指令,这对于相对简单的ASIC100程序来说是足够的。对于可以由ASIC 100执行的相对复杂的程序来说,可以将4096个指令的“指令页”从DRAM 114中的更大的指令缓冲器交换进或交换出程序存储器130。
如图1所示,RISC CPU 112通过两个主总线、即RBUS 126和GBUS128与ASIC 100中的每个功能单元交互。具体地说,每个功能单元与64位GBUS 128相连,通过GBUS 128可以取还或传送数据到存储器控制器116,因而取还或传送数据到DRAM 116。此外,可以将数据块通过GBUS 128从一个功能单元传送到另一个功能单元。
将对存储器访问或传送以及各种其他命令的请求通过RBUS 126从一个功能单元传送到其他功能单元。RBUS 126可以包括由对存储器进行经常访问的功能单元使用的一个或多个32-位总线,或由几个功能单元共享的单个8-位、时分多路复用总线。RBUS控制器132接收使用RBUS 126的请求,根据需要在这些请求之间仲裁,并将对RBUS的访问传送到最高优先权请求功能单元。
当请求存储器访问时,请求功能单元102至112通过RBUS 126将一个虚拟地址传送到存储器控制器116。存储器访问请求可以请求传送单个存储单元,或者可以包括对要响应请求而被访问的多个存储单元的识别。存储器控制器116通过响应于请求来管理对DRAM 114中的识别单元的访问来响应请求。如果对存储器访问的多个请求在任何时间是待决的,则存储器控制器116在待决请求之间仲裁,以便允许对最高优先权请求功能单元的访问。关于存储器控制器116响应请求的操作的更进一步的细节将在1997年4月30日申请的、题目为“用于数字视频的存储器地址产生”的共同未决的美国专利申请No.08/846,590中找到,该申请在这里全部作为参考。另外,关于RISCCPU 112及其精简指令集的操作可以在1997年3月30日申请的、题目为“用于数字音频视频译码的特定用途处理器”的共同未决的美国专利申请No.08/865,749中找到,该申请在这里全部作为参考。
关于各种功能单元的状态的附加数据可以通过RBUS 126得到。功能单元通过RBUS 126提供可以在识别出的特定地址访问的状态信息。因此,例如,为了访问一个来自视频译码器104的状态字,将一个识别DEC_VALUE地址的访问请求传送到RBUS控制器132。作为响应,RBUS控制器132使得视频译码器104的状态字被传送到请求功能单元。
命令也通过RBUS 126发送到功能单元。为了将命令传送到功能单元,通过RBUS将命令传递到用于功能单元的一特定地址。因此,例如,为了将命令传送到视频译码器104,将一个识别VLD_CMD地址的访问请求传送到RBUS控制器132。作为响应,RBUS控制器132使得请求功能单元能够将命令传送给RBUS 126,并使得视频译码器104将命令接收进其命令缓冲器。
视频译码器104是本发明的焦点,其操作和特征在图2-6G中显示得更清楚。依据本发明的原理,视频译码器104特别适合于执行依从MPEG-1和主简档@主级别MPEG-2语法的数字编码视频信号的视频译码。如整体在这里作为参考的ISO/IEC 13182-2:1995(E)所述,MPEG-2语法定义了视频数据和控制信息的压缩位流,以六层表示一个图象序列,具体为:序列层,照片组层,照片层,时间片层,宏块层,以及块层。编码位流中的这些层中的每一层包括一个唯一的起始代码,该起始代码识别该层,并提供固定长度数据值或可变长度霍夫曼编码数据或二者兼而有之,这些数据必须由视频译码器104进行语法分析和译码。在时间片层之上的图象控制信息的上层语法分析由RISC CPU 112处理。这样,RISC CPU 112从压缩视频位流获得足够的信息来控制视频位流中的所发送图象序列的解压缩、重构和展示。
现在参看图2和图2A,详细显示了视频译码器104的方框图。如同下面将要更加详细地说明的,视频译码器104的主要功能是一个用于对各个时间片的宏块和块层进行译码的单个有序码元每周期时间片语法分析机。当达到一个时间片的结束时,向RISC CPU 112发送一个中断,执行各种存储器检查,然后指示下一个时间片的处理。视频译码器104的操作主要通过微定序器134来控制,微定序器134通过线138与VLD命令/译码执行单元136接口。微定序器134包括一个256×16的指令ROM 140和一个指令译码/控制单元142(参看图2A)。在每个时间片的宏块和块层的译码过程中,将微定序器134编程为或者向VLD命令/译码执行单元136发出执行可变长度译码的命令,或者控制通过其指令集提供的程序流。另外,VLD命令/译码执行单元136可以通过RBUS接口144、线146和多路复用器148直接从RISC CPU 112接收指令。如同下面将要更加详细地说明的,RISC CPU 112、微定序器134和VLD命令译码/执行单元136能够读和写形成VLD体系数据路径的一部分的一系列VLD命令指令寄存器(VCI寄存器)150的内容。
如上所述,编码视频数据最初存储在DRAM 114中。编码视频数据通过存储器控制器116经GBUS 128对于视频译码器104是可用的。视频译码器104包括一个16×64信道缓冲器FIFO形式的GBUS接口152,用于存储足够量的编码视频位流,以确保缓冲器FIFO 152在译码过程中不会空或过满。
视频译码器104的主要功能之一是对视频位流中的可变长度编码数据进行译码。可变长度数据是根据MPEG-1和-2标准中的VLC表进行霍夫曼编码的。本发明的VLD支持至少十一个MPEG VLC表,包括:macroblock_type_I;macroblock_type_P;macroblock_type_B;macroblock_type_D;macroblock_address_increment;dct_dc_size_luma;dct_dc_size_chrominance;ac_table(table 0和table 1);coded_block_pattern;motion_code;以及dmvector。
如图2所示,信道缓冲器FIFO 152通过相应的64-位总线从信道缓冲器FIFO 152向一对A和B寄存器156A和156B中的每一个提供64位的视频数据。依据本发明的一个方面,提供旋转器/桶形移位器158和指针寄存器160来使得从指针地址到包括指针地址+31在内的位对于VLD命令译码/执行单元136是可见的。将这32位作为旋转器/桶形移位器数据162提供给VLD命令译码/执行单元136。
参看图2和3,A和B寄存器156A和156B以一个128-位的环形相连,以允许指针的边界交叉从A寄存器中的位63到B寄存器中的位64,从B寄存器中的位127到A寄存器中的位0。当指针从A寄存器到B寄存器时,A寄存器的内容以新数据更新。同样,当指针从B寄存器到A寄存器时,B寄存器的内容以新数据更新。为了允许指针绕环形的运动,并使得128个位中的每一位对于指针都是可达到的,图3所示的桶形移位器164具有七个选择器级,提供数据向左的以2为幂的各种增量移位或不移位。标为“级64/0”的第一级166具有128个选择器(D0-D127)来允许128个位中的每一位左移64位或不移位。标为“级32/0”的第二级168具有95个选择器来提供左移32位或不移位。标为“级16/0”的第三级170具有63个选择器来提供左移16位或不移位。标为“级8/0”的第四级172具有47个选择器来提供左移8位或不移位。标为“级4/0”的第五级174具有39个选择器来提供左移4位或不移位。标为“级2/0”的第六级176具有35个选择器来提供左移2位或不移位。标为“级1/0”的第七级也就是最后一级178具有33个选择器来提供左移1位或不移位。
采用桶形移位器164的结构,可以使A和B寄存器156A和156B中的128位中的任何32位作为旋转器/桶形移位器数据162可用于VLD命令译码/执行单元136。在级166-178的每一级中,左移由箭头180表示,不移动由箭头182表示。本领域普通技术人员将会理解,如同这里相对于桶形移位器164所用的,术语“选择器”意味着提供上面详细说明的左移或不移动操作的任何电路。通过依据本发明的桶形移位器164的操作,可以从几级168-178中去除如图3中的虚三角框所概略地表示的各种选择器。通过将桶形移位器164截成一个梯形而不是对称的长方形,可以理解,可以去除不必要的选择器,以节约花费和硬件不动产。
如图2和5所更清楚地显示的,使得旋转器/桶形移位器162的32位对于包含MPEG标准可变长度代码(VLC)表的可变长度表译码器184是可用的。依据本发明的另一个方面,提供了一个新颖的方案,使得VLD命令译码/执行单元136访问十一个MPEG VLC表中的每一个。如图4所示,在“macroblock_address_increment”的VLC表的例子中,在每个MPEG VLC表中识别一个前缀模式,该前缀模式定义在可变代码中的“1”第一次出现之前“0”的个数,以及产生一个所有唯一的前缀模式的集合所需的任何额外逻辑。
例如,在图4的“macroblock_address_increment”表中,每个可变长度代码具有一个被定义为K0、K1、K2、K3、K4_0、K4_1、K5_1、K5_01、K5_001、K5_000和K6的规定前缀模式。K0表示在“1”第一次出现之前没有“0”,K1表示在“1”第一次出现之前有一个“0”, K2、K3和K6也依此类推。在几个可变长度代码的情况下,在“1”之前的领先“0”模式之后需要额外的逻辑、例如K4_0、K4_1、K5_1、K5_01、K5_001和K5_000来产生一个所有唯一的前缀模式的集合。这样,可以由每个MPEG VLC表中的前缀模式定义一个子表集合,每个子表对应唯一的前缀模式中的一个。此外,每个可变长度代码具有一个定义可变长度代码中的位数的代码长度。一个增量值与“macroblock_address_increment”的每个可变长度代码相联系,以便相对于照片的左沿或距离最近发送的宏块的差分增量值来限定一个时间片中的第一宏块的水平位置。本领域普通技术人员从这个例子中将会容易地理解如何为其他MPEG VLC表定义前缀模式和额外逻辑。
下面参考图5所示的可变长度表译码器186,在可变长度译码过程中,将32位的旋转器/桶形移位器数据162加到模式匹配逻辑和’MUX控制上,以识别旋转器/桶形移位器数据162中的唯一的前缀模式。所识别的前缀模式匹配、例如K0、K1等用作为信号“MUX CNTL”190来控制十一个MPEG VLC表中的每一个中的每个MUX 192的输出。因此,由模式匹配逻辑和MUX控制188确定的前缀模式匹配在全部十一个MPEG VLC表、包括如图5所示的“macroblock_address_increment”和“motion_code”VLC表之间共享,以控制其各个MUX 192的输出。
在任何给定时间被译码的VLC表是由VLD命令译码/执行单元136提供的“VLC TABLE SELECT”信号194确定的,这将在下面详细说明。在前缀模式匹配由模式匹配逻辑和MUX控制188进行识别以便限定要加到每个MUX 192的MUX CNTL信号190的同时,将在32位旋转器/桶形移位器数据162中的领先模式匹配之后的位同时加到十一个MPEGVLC表中的每一个的所有子表,如总线196所示。因此,如果VLC表“macroblock_address_increment”由“VLC TABLE SELECT”信号194选择,并且前缀模式匹配是K5_1,并且通过总线196将一个“1”加到子表K5_1则MUX 192将输出一个译码值14(表示增量值)、一个代码长度8(表示可变长度代码中的位数)和一个有效状态位(表示代码的有效性)到VLD命令译码/执行单元136。因此,在完成译码过程之后,可变长度表译码器186将两个信号提供给VLD命令译码/执行单元136,包括译码值198和有效代码状态位200。可变长度表译码器186还将线204上的代码长度信号202提供给指针寄存器160,以便以代码长度递增指针寄存器。可变长度表译码器186可以是RAM或ROM,但它最好是硬连线优化随机逻辑。
现在参考图2和3,来自可变长度表译码器186的代码长度信号202用于递增指针寄存器160。代码长度信号202还由桶形移位器164用来控制桶形移位器中必需的移位模式。例如,如果代码长度信号202的值为13,则桶形移位器164的级172(8/0)、174(4/0)和178(1/0)将被允许引起左移13位,而其他所有级则没有移位。在由桶形移位器164执行了移位操作之后,使一个新的旋转器/桶形移位器数据162的集合对于VLD命令译码/执行单元136和可变长度表译码器186是可见的。本发明的可变长度表译码器186和桶形移位器164提供对MPEG可变长度代码的有效译码,同时减少了对VLC表的存储器需求。
依据MPEG标准,将可变长度编码的DCT系数译码为运行-长度和幅度电平对,如图2中的码元“<r,l>”所示。值“r”表示在具有由“l”表示的幅度电平的系数之前的零值系数的数目。例如,码元<5,2>表示在系数值2之前有5个零。依据本发明的又一方面,由于运行-长度和幅度电平对是由可变长度表译码器186译码的,所以将运行-长度和幅度电平对码元从VLD命令译码/执行单元136加到一个64×18的运行-电平译码器/FIFO 206,将其存储为压缩对,直到反之字形、反量化和反DCT变换单元208需要。应该理解,由于压缩码元的数目少于DCT系数的数目,所以运行-电平译码器/FIFO 206允许与前面译码的运行-电平对的运行-电平译码并行地对霍夫曼编码的可变长度对进行译码。
如图2所示,将译码的运动矢量“mv”和差分运动矢量“dmv”从VLD命令译码/执行单元136加到一个16×13的mv/dmv FIFO 210,将其一直存储到运动补偿单元212需要为止。如同在1997年12月30日申请的、题目为“运动补偿数字视频译码及缓冲器存储器寻址”的共同未决的美国专利申请No.09/001,122(该申请在这里全部作为参考)中详细说明的,译码视频数据值和运动矢量由运动补偿单元212进行合并,以形成用于显示的全I-、P-和B-帧。VLD命令译码/执行单元136最好具有用于运动矢量、差分运动矢量、宏块增量地址、dc系数和ac系数计算的状态机。
图6A-6G显示了由视频译码器104的微定序器134支持的指令集,而图2A显示了在微定序器134与VLD命令译码/执行单元136之间的全部程序流控制。特别地,微定序器指令集包括八个指令214a-214g,每个指令使用三位操作码216,而指令214b表示两个不同的指令。在图6A-6G所示的指令中,只有指令214b的两个指令ICMD和CMDI是执行命令。其他六个指令214a和214c-214g是流程控制指令,这将在下面更详细地说明。指令214a-214g中的大多数对在VCI寄存器150中找到的数据进行操作。
下面的表提供了对各种VCI寄存器150的描述。表1定义了VCI控制寄存器描述。表2定义了宏块和块层寄存器描述。表3定义了用于上层译码的照片层寄存器描述。表3寄存器是由RISC CPU 112写入的。表4定义了控制和状态寄存器描述,表5定义了预测器和状态机寄存器描述。
表1.VCI控制寄存器定义
名称 字段 类型 描述
vci_addr [5:0] r/w VCI间接寄存器地址
vci_data [15:0] r/w VCI间接数据
VCI控制寄存器用于访问在下面的表2-5中定义的VCI间接寄存器。RISC CPU 112将VCI_addr寄存器设置为读或写特定地址的VCI间接寄存器的内容。这个读和写操作由VCI_data寄存器完成。
表2.宏块级的VCI间接寄存器定义
名称 地址 宽度 Dir 描述
vci_mba_x 0x00 7 r/w 宏块地址x维数
vci_mba_y 0x01 7 r/w 宏块地址y维数
vci_vld_out 0x02 16 r/w VLD的临时输出
vci_q_scale 0x03 5 r/w 量化器比例信息
vci_cbp 0x04 8 r/w 编码块模式
表2.宏块级的VCI间接寄存器定义(续表)
名称 地址 宽度 Dir 描述
vci_mtype 0x05 5 r/w 宏块类型
vci_motype 0x06 3 r/w 译码运动类型
[0]mv_count
0:1向量,1:2向量
[1]mv_format 0:场,1:帧
[2]dmv
vci_dct_type 0x07 1 r/w DCT类型0:帧,1:场
vci_mvfsl 0x08 1 r/w 运动垂直场选择-
reserved 0x09 1 保留
vci_temp_0 0x0a to r/w 保留
0x0f
表3.照片级层的VCI间接寄存器定义
名称 地址 宽度 目录 描述
vci_pic_init 0x10 26 r/w [25:24]:DC精度
-->00:8-bit,01:9-bit,10:10-bit
-->11:11-bit
[23:20]:反向垂直帧代码
[19:16]:反向水平帧代码
fcode
[15:12]:正向垂直帧代码
[11:8]:正向水平帧代码
[7]:隐藏运动矢量
[6]:内vlc格式
[5]:frame pred frame dct
[4:2]:图象编码类型
(I,P,B,D)
[1:0]:图象结构(场,帧)
-->[00]:保留
-->[01]:顶场
-->[10]:底场
-->[11]:帧
vci_seq_init 0x11 10 r/w [10:4]:mb数x维数
[3]:0:常规,1:专用,--blk类型
[2]:0:mpeg2,1:mpeg1
[1:0]:色度格式
-->00:保留,01:420,10:422,
-->11:444
vci_conceal 0x12 3 r/w 隐藏计数寄存器
vci_temp_1 0x13 to r/w保留
0x1f
表4.控制和状态的VCI间接寄存器定义
名称 地址 宽度 目录 描述
vci_cntl 0x20 2 r/w vci状态控制寄存器
[31:30]=00:运行
[31:30]=10:暂停
[31:30]=11:复位
vci_pc 0x21 8 r/w vci程序计数器
vci_rom 0x22 16 r/w vci_rom输出端口
vci_dmvfifo_a 0x23 3 r/w dmb_fifo读/写地址
dr
vci_dmvfifo 0x24 2 r/w dmv_fifo数据端口
vci_pointer 0x25 7 r/w 旋转器指针
vci_dec_lpred 0x26 12 r/w Luma DC预测值。对DC_Lpred
的写复位到由DEC_模式寄存器中的
DC精度位所指示的恒定值
vci_dec_cpred 0x27 r/w 色度DC预测值,对DEC_cpred的写复
位到由DEC_模式寄存器中的
DC精度位所指示的恒定值
[23:1 V
2]
[11:1 U
0]
vci_temp_2 0x28 to 保留
0x2f
表5.预测器&状态机的VCI间接寄存器定义
名称 地址 宽度 目录 描述
vci_mv_predfh0 0x30 13 r/w mvfs,运动矢量预测器
正向水平-第一
vci_mv_predfv0 0x31 13 r/w mvfs,运动矢量预测器
正向垂直-第一
vci_mv_predbh0 0x32 13 r/w mvfs,运动矢量预测器
反向垂直-第一
vci_mv_predfh1 0x34 13 r/w mvfs,运动矢量预测器
正向水平-第二
vci_mv_predfv1 0x35 13 r/w mvfs,运动矢量预测器
正向垂直-第二
vci_mv_predbh1 0x36 13 r/w mvfs,运动矢量预测器
反向水平-第二
vci_mv_predbv1 0x37 13 r/w mvfs,运动矢量预测器
反向垂直-第二
vci_err_bits 0x38 10 r 误差条件
[9]motype_err
[8]coef_err
[7]rl_error
[6]cbp_err
[5]mv_err
[4]mbi_err
[3]mtype_err
[2]get_ac_err
[1]dctdcsz_chroma_err
[0]dctdcsz_luma_err
表5.预测器&状态机VCI间接寄存器定义(续表)
名称 地址 宽度 目录 描述
vci_stm 0x39 4 r 状态机
[14:12]vstate:motion vec STM
[11:9]dc_cstate:dc STM
[8:7]sc_state:start-code STM
[6:3]ms_cstate:MB STM
[2:0]lc_cstate:block STM
vci_tmp_3 0x3a to
0x3f
表6.定义带有RBUS接口的VLD控制寄存器
144:
表6.带有rbus接口的VLD寄存器
名称 目录 位字段 描述
dec_value1 r/w [15:0] 为除DECODE BLOCK命令之外的所有
命令保存译码值。
DECODE BLOCK命令返回这个字段中
的译码DC系数
dec_value2 r/w 该值保存当前运行和电平
[17:12] 译码运行长度
[11:0] 译码电平
mvfifo_adr r/w [4:0] mv_fifo读/写地址
位4-0:读,1:写
mvfifo_ data r/w [12:0] mv_fifo数据端口
表6.带有rbus接口的VLD寄存器(续表)
名称 目录 位字段 描述
vld_cntl r/w [31:30] 00:运行,10:暂停,11:复位
vld_pic_hdr r/w [31:0]] 照片级参数:
[31:28]f_code[0][0](F,H)
[27:24]f_code[0][1](F,V)
[23:20]f_code[1][0] (B,H)
[19:16]f_code[1][1](B,V)
[15:14]intra_dc_prec
[13:12]pic_structure
[11]topfld_first
[10]frame_prediction_frame_dct
[9]concealment_motion_vectors
[8]q_scale_type
[7]intra_vlc_format
[6]alternate_scan
[5]repeat_first_field
[4]chroma_420
[3]progressive_frame
[2:0]pic-type
rlfifo_adr r/w [6:0] rl_fifo读/写地址
位6-0:读,1:写
rlfifo_data r/w [17:0] rl_fifo数据端口
vld_status r/w [10:0] 状态位
[10]vid_busy
[9]vld_mv_fifo_empty
[8]vld_cfifo_empty
[7:4]chfifo_wr_addr
[3:0]chfifo_rd_addr
vld_cmd w [7:0] 要从CPU执行的vld命令
dec_status r/w [15] 出错。如果检测到位流误差则设置粘性位。
表6.带有rbus接口的VLD寄存器(续表)
名称 目录 位字段 描述
[14] chan_fifo_empty.信道FIFO空
[13:10] chan_fifo_wrprt.信道FIFO写指针
[9:6] chan_fifo_rdptr.信道FIFO读指针
[5:0] bitcnt译码器位流读指针,包含下一次被译码
器读取的位数
vld_cmd r/w [7:0] 来自CPU的vld命令-如果从rbus接口写该
地址,则执行vld命令
表7定义带有GBUS接口的VLD控制寄存器
152:
表7.带有gbus接口的VLD寄存器
名称 目录 位字段 描述
word_fifo r/w [63:0] 译码器FIFO数据端口
现在参看图6A-6G的微定序器指令214a-214g,TBIT(测试位)指令214a测试VCI寄存器220中的一个位(由“bitnum”218给出),如果等于4位正向相对地址222的值则转移。COMP(比较)指令214c将vci_vld_out寄存器的8msb或8lsb数据内容(由“msb”224的状态确定)与立即数226进行比较,并将结果存储在标志寄存器228中。如果“st_code”230=1,则将vci_vld_out寄存器的内容与起始代码模式进行比较,如果相匹配则将标志寄存器228设置为表明起始代码已经找到。BRANCH指令214d执行到8位转移目标地址232的绝对转移。“err”位234表明vci误差,“halt”位表明将vci控制寄存器改变为暂停状态。SETF(设置标志)指令214e用依据立即数238的值来设置标志寄存器的8lsb。INCM(增量宏块)指令214f将VCI寄存器240的较低字节与立即数242进行比较,如果不相等就停止。流程控制指令的最后一个指令、HALT指令214g暂停视频译码器104,并发出(deassert)vld_busy信号。
ICMD和CMDI(发出命令)指令214b向视频译码器104发出22个命令中的一个,并将输出存储在VCI寄存器244中。通过ICMD指令,微定序器134向视频译码器104发出一个命令并等待。CMDI指令使得微定序器134向视频译码器104发出一个命令,并保持运行微代码。
在表8中提供了向视频译码器104发出的各种命令:
表8.VLD命令
OP代码 符号 描述
0000 0001 <vld_escape> 宏块换码符
0000 0010 <vld_peek> 取数-不执行,只更新CC
0000 0011 <vld_startcode> 找到起始代码
0000 0100 <vld_mbi> 宏块地址递增
0000 0101 <vld_cbp> 编码块模式
0000 0110 <vld_intra_luma> 运行内亮度块
0000 0111 <vld_intra_chromau> 运行内色度U块
0000 1000 <vld_intra>chromav> 运行内色度V块
0000 1001 <vld_non_intra> 运行非内块
0000 1010* <vld_mbs> 产生宏块起始信号
0000 1100* <vld_dpcm> 复位亮度和色度预测器
0000 1101* <vld_mv_pred> 复位运动矢量预测器
0001 0000 <vld_dmv> 获得双重主要运动矢量
0001 0100 <vld_non_coded> 运行非编码块
0001 0101 <vld_field_motype> 译码场运动类型
0001 0110 <vld rame_motype> 译码帧运动类型
0001 1000 <vld_mtypei> 为I照片获得宏块类型
0001 1001 <vld_mtypep> 为P照片获得宏块类型
0001 1010 <vld_mtypeb> 为B照片获得宏块类型
0001 1011 <vld_mtyped> 为D照片获得宏块类型
0010 xxxx <vld_get<bitxx> 获得下面的1至16位(0=>16)
0011 0xyz <vld_mvxyz> 获得运动矢量:x-正向,y-水平,
z-第一
*:需要从cmdi指令调度
表8的VLD命令是对于许多类型的编码都通用的自主操作。VLD指令一般可以分类为用于从MPEG VLC表获得值的可变长度表译码命令、用于从编码视频数据接收参数化的位数的指令或块操作。
<vld_get_bitxx>命令例如从旋转器/桶形移位器158提取特定的位数,并用所取出的位数来增量指针寄存器160。<vld_dmv>命令采用来自视频数据位流的三个参数从一个MPEG VLC表取出运动矢量值。具体地,将每个运动矢量存储在前一运动矢量和预测值的组合。预测值本身以商(可变长度编码的)和余数(固定长度代码)的形式编码。<vld_dmv>命令用于通过MPEG VLC表对商进行译码,以确定余数的位置和商的值。余数是采用<vld_get_bitxx>命令获得的。最后,将商和余数进行合并,以生成运动矢量分量。<vld_peek>命令允许在不以所取出的位数递增指针寄存器160的情况下的来自旋转器/桶形移位器158的特定位数的可见性。
虽然已经以对各个实施例的描述说明了本发明并且已经相当详细地说明了这些实施例,但另外的优点和修改对于本领域普通技术人员来说将变得显而易见。更广义方面的发明因此并不限于特定细节、示意性装置和方法以及所示和所述的示例性实例。因此,在不背离本申请的总的发明概念的精神和范围的情况下,可对这些细节作出修改。
Claims (20)
1.一种用于对压缩视频数据流进行译码的可变长度译码器(104),其中,数据流包括表示所发送帧的图象区域的多个可变长度编码数据,所述可变长度译码器(104)包括:
存储器(114),用于存储可变长度编码数据;
与存储器相连的命令译码和执行电路(136),用于从存储器(114)接收所选择的可变长度编码数据;
与命令译码和执行电路(136)相连的定序器(134),用于根据存储在该定序器中的一组指令,向命令译码和执行电路(136)提供命令,以便将可变长度编码数据变换成相应的译码值;以及
与命令译码和执行电路(136)相连的主控制器(112),用于与定序器(134)无关地向命令译码和执行电路(136)提供命令,以控制命令译码和执行电路(136)的译码操作;
与定序器(134)和主控制器(112)相连的多个命令指令寄存器(150),其中,定序器(134)和主控制器(112)读取和写入该命令指令寄存器(150)中的内容,该命令指令寄存器(150)包括那些至少构成了存储在该定序器中的该组指令的一部分的数据。
2.如权利要求1所述的可变长度译码器(104),其中,定序器(134)包括用于存储多个指令的存储器(140)和与指令存储器(140)相连的指令译码和控制电路(142),指令译码和控制电路(142)用于对来自存储器(140)的指令译码,并提供命令到命令译码和执行电路(136),以便将可变长度编码数据变换成相应的译码值。
3.如权利要求1所述的可变长度译码器(104),其中,所述命令指令寄存器(150)与提供给命令译码和执行电路(136)的指令相对应。
4.如权利要求1所述的可变长度译码器(104),还包括与命令译码和执行电路(136)相连的可变长度表译码器(186),用于接收可变长度编码数据并提供相应的译码值到命令译码和执行电路(136)。
5.如权利要求1所述的可变长度译码器(104),其中,命令译码和执行电路(136)可用于对符合运动图象专家组语法的可变长度编码数据进行译码。
6.如权利要求5所述的可变长度译码器(104),其中,命令译码和执行电路(136)可用于将可变长度编码数据译码成离散余弦变换系数码元,每个离散余弦变换系数码元包括一个运行-长度值和一个幅度电平值。
7.如权利要求6所述的可变长度译码器(104),还包括与命令译码和执行电路(136)相连的先进先出存储器和译码器(206),用于将离散余弦变换系数码元存储为压缩的运行-长度和幅度电平对。
8.如权利要求7所述的可变长度译码器(104),还包括与先进先出存储器和译码器(206)相连的离散余弦反变换电路(208),其中,先进先出存储器和译码器(206)可用于将运行-长度和幅度电平对解压缩成离散余弦变换系数,以供离散余弦反变换电路(208)在重构所发送帧的图象数据时使用。
9.如权利要求5所述的可变长度译码器(104),其中,命令译码和执行电路(136)可用于将可变长度编码数据译码成运动矢量值。
10.如权利要求9所述的可变长度译码器(104),还包括与命令译码和执行电路(136)相连的用于存储运动矢量值的先进先出存储器(210)。
11.如权利要求10所述的可变长度译码器(104),还包括与先进先出存储器(210)相连的运动补偿电路(212),其中,先进先出存储器(210)可用于在重构所发送帧的图象数据时向运动补偿电路(212)提供运动矢量值。
12.一种用于采用可变长度代码表来对压缩视频数据进行译码的可变长度表译码器(186),其中,压缩视频数据包括表示一发送帧的图象区域的可变长度编码数据,该可变长度表译码器(186)被耦合到存储器(156A,156B)和与该存储器(156A,156B)相联系的移位器电路(164),其中该存储器(156A,156B)存储可变长度编码数据,而该移位器电路(164)使该可变长度编码数据的预定数目的位(162)可见,所述可变长度表译码器(186)包括:
与存储器(156A,156B)和移位器电路(164)相连的模式匹配电路(188),用于识别由移位器电路(164)使其可见的可变长度编码数据(162)中的唯一的前缀模式,每个唯一的前缀模式具有一前缀模式长度;
可变长度代码表数据包括与多个可变长度代码中的每一个相联系的译码值,其中,该可变长度代码表数据在多个子表数据电路中配置,每个子表数据电路与可变长度代码中的唯一的前缀模式相联系,并且和该前缀模式长度无关;
将由移位器电路(164)使其可见的可变长度编码数据(162)连到模式匹配电路(188)和每个子表数据电路的数据路径(196),用于将可变长度编码数据(162)同时加到模式匹配电路(188)和每个子表数据电路;
响应模式匹配电路(188)的控制电路(190,192),用于从与可变长度代码中的唯一的前缀模式以及在唯一的前缀模式之后的可变长度代码中的附加数据相联系的子表数据电路中获得一个译码值(198),其中所述唯一的前缀模式与可变长度编码数据中所识别的前缀模式相匹配,所述附加数据与在所识别的前缀模式之后的可变长度编码数据中的附加数据相匹配。
13.如权利要求12所述的可变长度表译码器(186),其中,每个可变长度代码包括一个相关代码长度,其中,控制电路(190,192)响应模式匹配电路(188),用于从与可变长度代码中的唯一的前缀模式以及在唯一的前缀模式之后的可变长度代码中的附加数据相联系的子表数据电路中获得一个代码长度(202),其中所述唯一的前缀模式与可变长度编码数据中所识别的前缀模式相匹配,所述附加数据与在所识别的前缀模式之后的可变长度编码数据中的附加数据相匹配。
14.如权利要求12所述的可变长度表译码器(186),其中,移位器电路(164)包括多个选择器电路,选择器电路用于有选择地移位存储器(156A,156B)中的可变长度编码数据。
15.如权利要求14所述的可变长度表译码器(186),其中,将多个选择器电路安排在多个选择器级中,其中,每个选择器级可用于以2的幂移位存储器(156A,156B)中的可变长度编码数据或不对可变长度编码数据提供移位。
16.如权利要求15所述的可变长度表译码器(186),其中,至少一个选择器级包括比前一选择器级更少的选择器电路。
17.如权利要求15所述的可变长度表译码器(186),其中,每个选择器级包括比其前一选择器级更少的选择器电路。
18.如权利要求14所述的可变长度表译码器(186),其中,移位器电路(164)响应最后获得的代码值,用于以等于所获得的代码值的位数来移位存储器(156A,156B)中的可变长度编码数据。
19.一种用于采用可变长度代码表来对压缩视频数据流进行译码的方法,其中,数据流包括表示所发送帧的图象区域的多个可变长度编码数据,所述方法包括下列步骤:
定义一个包括与多个可变长度代码中的每一个相联系的译码值的可变长度代码表;
定义与可变长度代码相联系的多个唯一的前缀模式,每个唯一的前缀模式具有一前缀模式长度;
定义多个子表,其中,每个子表与可变长度代码中的唯一的前缀模式中的一个相联系,并与该前缀模式长度无关,每个子表包括至少一个与唯一的前缀模式以及在唯一的前缀模式之后的可变长度代码中的附加数据相联系的译码值;
识别可变长度编码数据中的与可变长度代码相联系的唯一的前缀模式中的一个;
将可变长度编码数据同时加到多个子表的每一个上;以及
从与可变长度代码中的唯一的前缀模式以及在唯一的前缀模式之后的可变长度代码中的附加数据相联系的子表中获得一个译码值(198),其中所述唯一的前缀模式与可变长度编码数据中所识别的前缀模式相匹配,所述附加数据与在所识别的前缀模式之后的可变长度编码数据中的附加数据相匹配。
20.如权利要求19所述的方法,还包括下列步骤:
将代码长度与多个可变长度代码中的每一个相联系;以及
获得与具有一个前缀模式和在前缀模式之后的附加数据的可变长度代码相联系的代码长度(202),其中,所述前缀模式与可变长度编码数据中所识别的前缀模式相匹配,所述附加数据与在所识别的前缀模式之后的可变长度编码数据中的附加数据相匹配。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8579798P | 1998-05-18 | 1998-05-18 | |
US60/085,797 | 1998-05-18 | ||
US09/280,437 | 1999-03-29 | ||
US09/280,437 US6704361B2 (en) | 1998-05-18 | 1999-03-29 | Variable length decoder for decoding digitally encoded video signals |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1302512A CN1302512A (zh) | 2001-07-04 |
CN1199472C true CN1199472C (zh) | 2005-04-27 |
Family
ID=26773091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB998064416A Expired - Fee Related CN1199472C (zh) | 1998-05-18 | 1999-05-14 | 对数字编码视频信号进行译码的可变长度译码器 |
Country Status (9)
Country | Link |
---|---|
US (1) | US6704361B2 (zh) |
EP (1) | EP1078533B1 (zh) |
JP (1) | JP2002516501A (zh) |
KR (1) | KR20010043480A (zh) |
CN (1) | CN1199472C (zh) |
AU (1) | AU3990899A (zh) |
CA (1) | CA2330566A1 (zh) |
DE (1) | DE69905565T2 (zh) |
WO (1) | WO1999060521A2 (zh) |
Families Citing this family (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6934338B1 (en) * | 1998-05-18 | 2005-08-23 | Sony Corporation | Variable length decoder for decoding digitally encoded video signals |
US20020149595A1 (en) * | 2000-08-25 | 2002-10-17 | Kosuke Kubota | Decoding device, electronic device, and decoding method |
EP1193978A1 (fr) * | 2000-09-29 | 2002-04-03 | Koninklijke Philips Electronics N.V. | Procédé de rafraíchissement d'écran |
US6975809B1 (en) * | 2000-11-14 | 2005-12-13 | Ati International, S.R.L. | Method and apparatus for passing clear DVD data in a computer |
US7970645B2 (en) * | 2001-02-23 | 2011-06-28 | Cox Communications, Inc. | Method and apparatus for providing targeted advertisements |
DE10140289A1 (de) * | 2001-08-16 | 2003-02-27 | Technotrend Ag | Verfahren und Vorrichtung zur Bandbreitenreduzierung |
US7046852B2 (en) * | 2001-09-13 | 2006-05-16 | Sharp Laboratories Of America, Inc. | Fast image decompression via look up table |
JP2003169327A (ja) * | 2001-11-30 | 2003-06-13 | Matsushita Electric Ind Co Ltd | ソフトウェアでのmpeg−2ビデオ可変長復号化方法 |
KR100450753B1 (ko) * | 2002-05-17 | 2004-10-01 | 한국전자통신연구원 | 프로세서와 연결된 프로그램 가능한 가변 길이 디코더 |
US7398276B2 (en) * | 2002-05-30 | 2008-07-08 | Microsoft Corporation | Parallel predictive compression and access of a sequential list of executable instructions |
US20040086117A1 (en) * | 2002-06-06 | 2004-05-06 | Petersen Mette Vesterager | Methods for improving unpredictability of output of pseudo-random number generators |
KR100522595B1 (ko) * | 2002-11-29 | 2005-10-19 | 삼성전자주식회사 | 엠펙 비디오 복호화방법 및 엠펙 비디오 복호화기 |
US8111753B2 (en) | 2003-02-06 | 2012-02-07 | Samsung Electronics Co., Ltd. | Video encoding method and video encoder for improving performance |
US7627039B2 (en) * | 2003-09-05 | 2009-12-01 | Realnetworks, Inc. | Parallel video decoding |
JP4516068B2 (ja) * | 2004-03-12 | 2010-08-04 | パナソニック株式会社 | 可変長符号復号装置 |
US7590059B2 (en) * | 2004-05-21 | 2009-09-15 | Broadcom Corp. | Multistandard video decoder |
CN100356793C (zh) * | 2005-06-09 | 2007-12-19 | 清华大学 | 多变长码并行解码器 |
KR100731640B1 (ko) * | 2005-12-23 | 2007-06-22 | 주식회사 텔레칩스 | 비트스트림 처리기 |
AU2006340623B2 (en) * | 2006-03-23 | 2011-02-17 | Nds Limited | System for analysis of motion |
JPWO2007108395A1 (ja) | 2006-03-23 | 2009-08-06 | 日本電気株式会社 | 可変長符号の復号装置および復号方法 |
ATE515889T1 (de) * | 2007-03-14 | 2011-07-15 | Nippon Telegraph & Telephone | Vorrichtung und verfahren zur schätzung von codemengen, programm und aufzeichnungsmedium dafür |
US8265142B2 (en) * | 2007-03-14 | 2012-09-11 | Nippon Telegraph And Telephone Corporation | Encoding bit-rate control method and apparatus, program therefor, and storage medium which stores the program |
CN101682775B (zh) * | 2007-03-14 | 2015-04-01 | 日本电信电话株式会社 | 运动矢量搜索方法和装置 |
CN101637025B (zh) * | 2007-03-14 | 2016-03-23 | 日本电信电话株式会社 | 量化控制方法和量化控制装置 |
KR20080114388A (ko) * | 2007-06-27 | 2008-12-31 | 삼성전자주식회사 | 스케일러블 영상 부호화장치 및 방법과 그 영상 복호화장치및 방법 |
JP2010045598A (ja) * | 2008-08-12 | 2010-02-25 | Fujitsu Ltd | 可変長復号装置、及び、符号化装置 |
JP5067361B2 (ja) * | 2008-12-25 | 2012-11-07 | ソニー株式会社 | エンコーダ及びデコーダ、符号方法及び復号方法、並びに記録媒体 |
CN101505155B (zh) * | 2009-02-19 | 2012-07-04 | 中兴通讯股份有限公司 | 实现前缀码构造的装置和方法 |
US9419792B2 (en) * | 2012-12-28 | 2016-08-16 | Intel Corporation | Instruction for accelerating SNOW 3G wireless security algorithm |
US9490971B2 (en) * | 2012-12-28 | 2016-11-08 | Intel Corporation | Instruction for fast ZUC algorithm processing |
US9819359B1 (en) * | 2016-12-11 | 2017-11-14 | Microsoft Technology Licensing, Llc | Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines |
US11204768B2 (en) | 2019-11-06 | 2021-12-21 | Onnivation Llc | Instruction length based parallel instruction demarcator |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5614952A (en) | 1994-10-11 | 1997-03-25 | Hitachi America, Ltd. | Digital video decoder for decoding digital high definition and/or digital standard definition television signals |
US5815646A (en) | 1993-04-13 | 1998-09-29 | C-Cube Microsystems | Decompression processor for video applications |
FR2705805B1 (fr) | 1993-05-27 | 1996-06-28 | Sgs Thomson Microelectronics | Système de traitement d'images. |
US5608459A (en) | 1993-08-13 | 1997-03-04 | Texas Instruments Incorporated | Video data decoder having motion compensation and image memory circuitry on single substrate |
US5604499A (en) | 1993-12-28 | 1997-02-18 | Matsushita Electric Industrial Co., Ltd. | Variable-length decoding apparatus |
KR970003024B1 (ko) | 1994-02-28 | 1997-03-13 | 한국전기통신공사 | 병렬처리 패턴매칭을 이용한 가변부호길이에서 고속 재동기방법 |
US5557538A (en) | 1994-05-18 | 1996-09-17 | Zoran Microelectronics Ltd. | MPEG decoder |
US5502493A (en) | 1994-05-19 | 1996-03-26 | Matsushita Electric Corporation Of America | Variable length data decoder for use with MPEG encoded video data |
US5623311A (en) | 1994-10-28 | 1997-04-22 | Matsushita Electric Corporation Of America | MPEG video decoder having a high bandwidth memory |
US5623423A (en) | 1994-12-12 | 1997-04-22 | Univ. Of Texas | Apparatus and method for video decoding |
US5623308A (en) | 1995-07-07 | 1997-04-22 | Lucent Technologies Inc. | Multiple resolution, multi-stream video system using a single standard coder |
KR100207385B1 (ko) | 1995-08-31 | 1999-07-15 | 전주범 | 가변 길이 복호화 장치 |
-
1999
- 1999-03-29 US US09/280,437 patent/US6704361B2/en not_active Expired - Fee Related
- 1999-05-14 AU AU39908/99A patent/AU3990899A/en not_active Abandoned
- 1999-05-14 WO PCT/US1999/010659 patent/WO1999060521A2/en not_active Application Discontinuation
- 1999-05-14 CN CNB998064416A patent/CN1199472C/zh not_active Expired - Fee Related
- 1999-05-14 JP JP2000550062A patent/JP2002516501A/ja not_active Withdrawn
- 1999-05-14 EP EP99923050A patent/EP1078533B1/en not_active Expired - Lifetime
- 1999-05-14 KR KR1020007012555A patent/KR20010043480A/ko not_active Application Discontinuation
- 1999-05-14 DE DE69905565T patent/DE69905565T2/de not_active Expired - Fee Related
- 1999-05-14 CA CA002330566A patent/CA2330566A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP1078533A2 (en) | 2001-02-28 |
DE69905565D1 (de) | 2003-04-03 |
WO1999060521A2 (en) | 1999-11-25 |
JP2002516501A (ja) | 2002-06-04 |
CA2330566A1 (en) | 1999-11-25 |
KR20010043480A (ko) | 2001-05-25 |
US20030043917A1 (en) | 2003-03-06 |
WO1999060521A3 (en) | 2000-03-16 |
US6704361B2 (en) | 2004-03-09 |
EP1078533B1 (en) | 2003-02-26 |
CN1302512A (zh) | 2001-07-04 |
AU3990899A (en) | 1999-12-06 |
DE69905565T2 (de) | 2003-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1199472C (zh) | 对数字编码视频信号进行译码的可变长度译码器 | |
CN1223196C (zh) | 解码器、解码方法 | |
CN1224271C (zh) | 图像编码译码装置 | |
CN1054486C (zh) | 图象信号编码方法和装置和图象信号解码方法和装置 | |
CN1076932C (zh) | 图像信号编码和解码的方法与装置 | |
CN1141844C (zh) | 移动图像合成系统 | |
CN1135845C (zh) | 图像传送方法、图象处理方法、图象处理装置和数据存储介质 | |
CN1135708C (zh) | 图像信号处理系统及方法,解码器及解码方法 | |
CN1934866A (zh) | 视频解码设备 | |
CN1203679C (zh) | 用于自动转码编码的视频图象数据的方法和设备 | |
CN101052127A (zh) | 信息处理装置、信息处理方法、记录介质和程序 | |
CN1941913A (zh) | 用于跳跃图像的方法和设备 | |
CN1725844A (zh) | 数字媒体流的反向表示 | |
CN1684518A (zh) | 高保真代码转换 | |
CN1950907A (zh) | 运动画面流产生装置,运动画面编码装置,运动画面多路复用装置和运动画面解码装置 | |
CN1605213A (zh) | 跳过宏块编码 | |
CN1681325A (zh) | 视频尺度转换及从mpeg-2到mpeg-4的编码转换 | |
CN101036391A (zh) | 画面编码装置和画面解码装置 | |
CN1630374A (zh) | 用于前向预测的隔行扫描视频帧的场的预测运动矢量 | |
CN1550110A (zh) | 运动图像的编码方法、解码方法、编码装置及解码装置 | |
CN1909666A (zh) | 运动检测装置 | |
CN1270541C (zh) | 编码设备和方法 | |
CN1319996A (zh) | 图像编码和解码设备及其方法、图像记录和图像传送设备 | |
CN1788496A (zh) | 图像处理设备和方法、信息处理设备和方法、信息记录设备和方法、信息再现设备和方法、信息存储介质、以及程序 | |
CN1767648A (zh) | 信息处理设备和信息处理方法、记录介质、以及程序 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050427 Termination date: 20100514 |