CN1217489C - 快速解码的方法及其装置 - Google Patents
快速解码的方法及其装置 Download PDFInfo
- Publication number
- CN1217489C CN1217489C CN001225901A CN00122590A CN1217489C CN 1217489 C CN1217489 C CN 1217489C CN 001225901 A CN001225901 A CN 001225901A CN 00122590 A CN00122590 A CN 00122590A CN 1217489 C CN1217489 C CN 1217489C
- Authority
- CN
- China
- Prior art keywords
- code
- data
- value
- analog value
- length table
- 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
- 238000000034 method Methods 0.000 claims abstract description 46
- 238000013519 translation Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 6
- 238000000802 evaporation-induced self-assembly Methods 0.000 claims description 4
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 230000000873 masking effect Effects 0.000 claims description 2
- 230000000007 visual effect Effects 0.000 claims description 2
- 238000004364 calculation method Methods 0.000 claims 3
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000007906 compression Methods 0.000 description 10
- 230000006835 compression Effects 0.000 description 8
- 230000006837 decompression Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000013144 data compression Methods 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 229920006395 saturated elastomer Polymers 0.000 description 2
- 108091029480 NONCODE Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000004087 circulation Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003340 mental effect Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/41—Structure of client; Structure of client peripherals
- H04N21/414—Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
- H04N21/4143—Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a Personal Computer [PC]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- General Engineering & Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种新颖的、改进型的可变长解码方法和装置,通过并行地将第一组接收数据的码字与编码长度表中的相应值比较,提高了数据解码的速度和效率,如果比较的第一组码字超出标准,就将第二组接收数据的码字与码长表中的相应值比较,如果第一和第二组码字之一中有一个码字符合标准,则确定来自第一和第二组码字之一中的哪一个码字符合标准,一旦符合标准的码字被确定,就提供其符号值。
Description
本发明涉及数据解码,具体地涉及可变长度编码的数据的解码。具体地,本发明还为用中央处理器(CPU)快速有效地解码霍夫曼编码的数据提供了新方法和装置。
在多数计算机系统中,大量的应用软件是在数据进行压缩/解压缩的同时,在同一CPU中运行的。随着视频数据正成为基于计算机的通信系统和应用软件的工作界面,就更另需要高分辨率、高品质的图象。快速压缩/解压缩,包括编码/解码,是用户处理视频数据时降低延迟的需要。
霍夫曼编码是一种最广泛用于压缩视频数据的算法,霍夫曼编码被用于各种图象和视频压缩标准,如联合图象专家组(JPEG),运动图象专家组(MPEG),MPEG-II,H.261,H.263和H.323。在此部分地或全部地参考上述标准。霍夫曼码是一种无损熵编码技术。它利用概率论,对出现次数最频繁的数据选择最短的编码。例如,当编码英语文本时,在英语中很常用的字符“E”占2位码字,而象“A”等非常用的字符占8位码字。
结果,霍夫曼编码是如此进行数据压缩的,即把频繁出现的数据指定为较短的编码,把不太常出现的数据指定为较长的编码。这些指定的码字被维持在接收和发送时使用的数据表中。关于霍夫曼编码的更详细的说明,请参见“一种最小冗余码结构的方法”,IRE会议录,第40卷,第9期,1952年9月,第1098-1101页,作者:D.A.Huffman,在此整体地做为参考。
而且,霍夫曼码字的组成方法是,非代码是其它代码的前缀。这使得,尽管代码的长度可变,数据位流中的每个符号都有明确的解码。对霍夫曼编码特征的附加描述在下列书中能查到,Data Compression Book,M&TBooks,1996,M.nelson和J.L.Gailly等著。在第31-35页中,指出了基于树型结构的解码算法。然而,这种算法不适用于诸如因特尔公司奔腾系列产品一类的现行微处理器的快速解压缩。
因此,人们需要一种可以在共享其CUP资源的计算机系统中,更快速有效地压缩/解压缩,编码/解码的技术。
本发明通过并行地将第一组接收数据的码字与编码长度表中的相应值比较,提高了数据解码的速度和效率。如果比较的第一组码字超出标准,就将第二组接收数据的码字与码长表中的相应值比较。如果第一和第二组码字之一中有一个码字符合标准,则确定来自第一和第二组码字之一中的一个码字符合标准。一旦符合标准的码字被确定,就提供其符号值。
在一个实施例中,公开了一种包括屏蔽掉所接收的数据中的第一和第二组接收数据的码字的方法。这种屏蔽操作确定了所接收的数据的哪一部分将与码长表的相应值比较。例如,第一组码字可以是从相同位流开始点的2,3,4和5位。如果其中一个码字包含在最大和最小码值范围内,就寻找可变长编码,并可将它应用到霍夫曼查询表中。这种屏蔽允许对该并行比较选择不同的位长。
在另一个实施例中,公开了一种仅用一个查询表来索引霍夫曼编码值的算法。这使所需的寄存器数最小化,并加速对霍夫曼编码值的索引,在多种情况下这是有用的。该算法利用这样一个表,对于每个霍夫曼编码表它仅需要被计算一次。该算法基于两个其他表的查询结果来计算该表值。
本发明是用扩充多媒体容量的微处理器实施的。具体地,具有执行图形操作的内部功能的微处理器,需要在多个象素上进行单指令多数据流(SIMD)操作,它们适用于利用SIMD指令来执行本发明的解码过程。
为进一步了解本发明的实质和优点,下面将结合附图进行说明。
图1显示了一种用于实现本发明方法的计算机系统;
图2显示了一种用于实现本发明方法的典型计算机系统100的简化系统方块图;
图3显示了按照本发明一个实施例的一种SIMD系统300的简化方块图;
图4显示了按照本发明一个实施例的一种系统400的简化方块图;
图5显示了按照本发明一个实施例的一种用于解码霍夫曼编码数据的顺序解码方法500;
图6显示了按照本发明另一个实施例的一种用于解码霍夫曼编码数据的并行解码方法600。
图1显示了用于执行本发明软件的计算机系统。图1显示计算机系统100包括监视器104,屏幕102,机箱108,键盘214(见图2)和鼠标110。鼠标110有多个按键,如按键112。机箱108包括用于存储和检索包含本发明的软件程序的CD-ROM光盘驱动器106和硬盘驱动器(未显示)。尽管光盘106是可移动的媒体,但其他可移动媒体包括软盘、磁带机、压缩(ZIP)驱动器和闪存都可使用。机箱108还包括其他计算机部件,如处理器,内存等。
图2显示了一种用于执行本发明软件的典型计算机系统的简化方块图。如图1所示,计算机系统100包括监视器104,同时还包括输入/输出控制器204、系统内存206、中央处理器208、扬声器210、可移动磁盘212、键盘214、固定磁盘216、和网络接口218等子系统。其它适用于本发明的计算机系统还可包括其它子系统。例如,某种计算机系统包括不止一个处理器208(如多处理器系统)或高速缓冲存储器。箭头220代表计算机系统100的系统总线构架,这些箭头220表示连接子系统的各种互连方案。
例如,本地总线可用于将中央处理器208与系统内存206连接。为获取图象数据,图象获取设备,如电荷耦合器件(CCD)摄象机被连接到计算机系统100。图象获取设备通过相同或其它总线结构如通用串行总线(USB)等连接到计算机系统100。USB可即插即用,它通过与设备驱动程序数据库相匹配的识别码,能支持100多种外设。USB还可通过输入/输出控制器204或网络接口218连接到计算机系统100。另外,计算机系统100被设置为通过输入/输出控制器204或网络接口218连接到因特网。因此,数据还可通过各种设备输入到计算机系统100或从其输出。图2所示的计算机系统只是一个适用于本发明的计算机系统的例子,其它适用于本发明的子系统配置对一般专业人员来说是显而易见的。
本发明适用任何包括单指令多数据流(SIMD)的微处理器。例如,因特尔公司的多媒体微处理器(IntelMMXTM),SUN公司的具有可视化指令集的UltraSPARC,高级微驱动设备公司的3Dnow!TM,具有数据流SIMD扩展的IntelMMXTM,等均可利用。为了举例,将对因特尔公司的多媒体技术进行描述,多媒体技术是1997年1月推出的,用于加速中央处理器所需的多媒体应用软件。因特尔公司的多媒体技术提供一套指令(57个指令)。它可在同一构架的一个64位单元中实现加、减、乘、逻辑和移位运算等。这个64位单元还可当作8字节,4个字,2个词或1个四元词。饱和算法和打包/解包数据指令以及在多媒体寄存器和整数寄存器间转换的指令也被提供了。其它关于多媒体技术的信息在“因特尔公司多媒体技术构架开发手册介绍”(因特尔公司1996年)中有介绍。
图3显示了SIMD系统300的简化方块图。该系统300包括多媒体处理器302,它支持57个指令。多媒体处理器在CPU中执行或在一单独芯片中运行。多媒体处理器302从寄存器304a-h中接收数据,每个寄存器304a-h有64位。每个寄存器可容纳8*8,16*4,32*2,64*1位数据。多媒体处理器302在每个程序循环中从寄存器304a-h中接收数据,执行所需的运算。经过处理的数据存储到内存306中或返回寄存器304a-h。内存306在多媒体处理器302中运行或为共享存储器。多媒体处理器302在同一时间再对不同的数据执行同样的步骤。因此,它有了SIMD构架。
图4显示了根据本发明一个实施例的系统400的简化方块图。摄象机402捕获图象并将它们提供到位流转换模块404,摄象机402包括用于模拟数据到数字数据转换的电路。摄象机402还包括用于数据压缩和/或编码的电路。摄象机402和位流转换器404通过连接器406进行连接。连接器可从其它一般专业人员熟悉的连接器和总线结构中选择。连接器406最好是USB连接,在一些构架中,USB提供每秒12兆比带宽。连接器406还可是可提供每秒100兆比,200,400或800兆比带宽的火线(IEEE 1394)。对某些实例来说,连接器最好是USB,因为它是可提供高达500毫安和5伏的功率总线。USB提供的功率可用于运行连接到总线的驱动设备,如摄象机402。此外,USB成本低。在一些结构中,由于USB没有象火线一样的带宽,数据在传送给USB前首先要进行压缩。
此外,摄象机402可包括压缩电路,在发送数据到位流转换器404前压缩获取的图像。摄象机402可是其他获取图像的驱动设备,包括CCD,互补金属氧化物半导体(CMOS)等。位流转换模块404可被用于将连续传送数据转换成数据包。例如,位流转换块404对每帧图像进行累加,并向解压缩模块408发送累加的数据。每帧数据的大小是任意的,最好是352*288像素。帧还可是320*240,176*144或160*120像素。在一些构架中,每帧数据还可是640*480像素。解压缩模块408解压和/或解码从位流转换模块404中接收的数据。解码可依据霍夫曼编码,算法码,其它类型平均信息量码等。位流转换模块404还包括存储从摄象机402中接收的数据和向解压缩模块408发送的数据的缓冲区。
解压缩模块408中的解压缩数据提供给彩色转化模块410。解压缩模块408中的数据可是任意格式,但最好是YUV格式,这里,Y是亮度,U是红色度(也称CR),V是蓝色度(也称CB)。转换模块410把YUV格式的数据转换为适合显示器412格式的数据,包括RBG(红绿蓝)。显示器412可以是包括打印机,手持设备等在内的输出设备。系统400还包括为显示器412、彩色转换模块410和位流转换模块404提供用于存储的内存414。内存414可是诸如动态随机存取存储器(DRAM),扩充数据总线动态随机存取存储器(EDO DRAM),同步动态随机存取存储器(SDRAM),视频随机存储器(VRAM),静态随机存储器(SRAM)等。位流转换模块404,彩色转换模块410和显示器412可有本地内存。解压缩模块408根据其存储需要,也可有自己的存储器或使用内存414。
图5显示了根据本发明一个实施例的用于解码霍夫曼编码数据的顺序解码方法500。该顺序解码方法500用下列4个表得出解码值:
MINCODE[I]-长度为I的码字的最小值;
MAXCODE[I]-长度为I的码字的最大值;
HUFFVAL[J]-与第J个码字相符合的符号值表;
VALPTR[I]-HUFFVAL列表的起始索引,该值是用长度为I的码字解码的。
所有码字的最小长度是MinLength,码字的最大长度是MaxLength,因此,MINCODE,MAXCODE和VALPTR表的大小等于[最大长度值-最小长度值+1]。HUFFVAL的大小依赖于码字的数量,用N表示。对每个霍夫曼编码,MINCODE,MAXCODE和VALPTR这三个表是解码HUFFVAL表的指针。
在步骤502,在解码时接收位流数据;在步骤504,设定当前码长值I为最小长度;步骤504还将变量CODE初始化为下一位[最小长度],它包括从步骤502提供的位流中得到的码字;步骤506比较CODE和最大CODE[I]的值,如果CODE值大于最大CODE[I]值,则当前码比I长,I是在步骤504处首先设置的最小值,步骤508接着步骤506。在步骤508中,I值增加1,同时,步骤508还读取位流中的下一位到CODE,并在当前CODE值上左逻辑移位(SLL)一位来更新CODE值,并用位流中的下一位(NEXTBIT)来填充CODE的最低有效位。
另一方面,如果在步骤506中,码值不大于最大CODE[I]的值,则当前码字长度等于或小于I,就进入步骤510,步骤510解码符号值,计算指针J的码值,并用J计算符号值。在步骤510中,赋值J为VALPTR[I-最小长度]+CODE-最小码[I-最小长度],步骤510通过给HUFFVAL[J]设置VALUE值来计算符号值。步骤510执行3个表检索,即VALPTR,MINCODE和HUFFVAL,以计算符号值。计算出的符号值(VALUE)输出给步骤512。顺序解码方法500再重复下一个码字。
用于编解码的霍夫曼表可自定义。许多编码标准都提供缺省的霍夫曼表。下表1是一个根据JPEG标准推荐的亮度DC差分的霍夫曼表。详细信息参见“JPEG-静止图像数据压缩标准”,附录A,国际标准化组织ISODIS10981-1,需求和指导方针,第F-26页,Van Nostrand Reinhold,1993,作者:William B.Pennebaker和Joan L. Mitchell,在此仅做参考。
在JPEG标准中,最小长度是2,最大长度为16。码字按长度分组,
每组按升序排序。最小码值和最大码值指定为16位整数。
霍夫曼码值 | 编码长度 | 码字 | 霍夫曼编码 |
0 | 2 | 00 | 0 |
1 | 3 | 010 | 2 |
2 | 3 | 011 | 3 |
3 | 3 | 100 | 4 |
4 | 3 | 101 | 5 |
5 | 3 | 110 | 6 |
6 | 4 | 1110 | 14 |
7 | 5 | 11110 | 30 |
8 | 6 | 111110 | 62 |
9 | 7 | 1111110 | 126 |
10 | 8 | 11111110 | 254 |
11 | 9 | 111111110 | 510 |
表1
在表1中,码字是位流中的实际码字;码长度是每个码字的长度;霍夫曼码是每个码字的值;霍夫曼码值是每个符号的霍夫曼码。
例,从表1中取值,最小长度为2,最大长度为9,用顺序解码方法500得出的3个表值为:
MINCODE[8]={0,2,14,30,62,126,254,510};
MAXCODE[8]{0,6,14,30,62,126,254,510};
VALPTR[8]={0,1,6,7,8,9,10,11}。
例如,考虑到输入位流“010”,步骤504将I赋值为2,CODE为01。由于“01”大于MAXCODE[2-2]的值“0”,故步骤506返回YES。在步骤508中,I增加到3,CODE值为“010”。则再重复步骤506,由于“010”小于MAXCODE[3-2]的值“6”,步骤506返回NO,步骤510赋值J为1,同时检索符号值HUFFVAL[I],并在步骤512中输出符号值(VALUE)。
因此,顺序法500重复将位流移位为CODE码,比较当前码和相同长度的最大码。一旦码长已知,解码每个值需要两个加数并检索3个表。事实上,由于编码长度被顺序搜索,这种算法是顺序的。在检查I值长度前,实际编码长度I,I+1,I+2等是不确定的。
图6显示了按照本发明另一个实施例的用于解码霍夫曼编码数据的并行解码方法600。为了举例,就象参考图3所讨论的那样,来描述并行解码方法600的实施。而且参考图5和表1所谈到的JPEG样值和也用于该实施例中。可是,并行解码方法600可用任意包括单指令多数据流的处理器执行,包括Intel公司的MM多媒体系统微处理器,SUN公司的具有可视化指令集的SPARC工作站系统,Advance Micro Device公司的3Dnow!TM,具有单指令多数据流扩展的IntelMMXTM等。
正如上面提到的,多媒体技术可用同样的指令运行64位。一个64位可视为8字节,4个字,2个词或一个四位词。例如表1,64位视为4个16位寄存器(或4个字),这是因为表1中的最大码字长度是9。在图6中,MMX多媒体指令PSRL,PSLL和PSRA被用于转移所选变量的内容。PSRL代表数据包向右逻辑转移,PSLL代表数据包向左逻辑转移,PSRA代表数据包向右算法转移。
在步骤602,并行解码方法600接收位流数据,在步骤604,位流被排列为具有little-endian(小-安迪安)格式的4位格式(或4位码)。即如果原始位流是b0,b1,b2,b3......(bi代表字节I)形式,则转换的位流是b1,b0,b1,b0,b1,b0,b1,b0,b3,b2,b3,b2,b3,b2,b3,b2,b3,b2,......形式。
这种变换用每16位字5.5循环来执行。在步骤606中,I的值,掩码和码4(CODE4)被初始化。正如上面JPEG例子提到的,I被赋值为2,步骤606将码4赋值为位流中4*16位码(或4位码)的第一集合。并行解码方法600用MASK(掩码)屏蔽用于步骤608中比较操作的位。MASK初始值位“1100,0000,0000,0000,1110,0000,0000,0000,1111,0000,0000,0000,1111,1000,0000,0000b”或“0xC000,E000,F000,F800.”这是编码长度2至5的掩码位,它们在并行解码方法600的第一次迭代中被查出。
在步骤608,CODE4被MASK值屏蔽掉。在步骤608,赋值MAXCODE4为MAXCODE4_P[I-I+3],它表示I,I+1,I+2,和I+3的MAXCODE4_P值。因此对于四个连续的码长,MAXCODE4始终保持最大值。由于MAXCODE4的4个值被装载在一个指令中,并行解码方法600的MAXCODE表如下:
I=0
当I小于(最大长度-最小长度+2)时,执行
J=(I/4)*4+3-I%4
MAXCODE_P[I]=(2(16-最小长度-J)*MAXCODE[J]+1
I=I+1
结束
其中,“J”代表舍入部分,“%”代表模操作,MAXCODE_P的值代表未标记的16位整数。每个霍夫曼表仅产生一次MAXCODE表。
关于图5的连续霍夫曼解码算法,并行算法的MAXCODE表具有如下值:
MAXCODE_P[8]={61441,57345,49153,1,65281,65025,64513,63489}
在本例中,本表的维数必须是4的倍数。同时,霍夫曼编码表中不允许码长为0的值。
在步骤610,比较MAXCODE4的值和在步骤606和608中被初始化和屏蔽掉的CODE4的大小。在使用多媒体技术的装置中,由于多媒体指令PCMPEQ只比较标记的字,这种比较操作由一个具有饱和的无正负标记结构和零的比较过程来执行。MAXCODE+1的值储存到MAXCODE4中。如果CODE4大于MAXCODE4,则进入步骤612,I增加4,MASK值向右算术位移4位。MASK的新值产生出下4编码长度(6到9)的位掩码。执行完612步后,再重复608和610步骤。据此,在表1中,步骤608和610重复两次,一次是从编码长度2到5,一次是从6到9。
直到步骤610的返回值是YES,才执行步骤614,在步骤614中,确定检索的4个长度之一包括符号。据此,步骤614计算DIF值,DIF等于[MAXCODE4-CODE4-1]逻辑向右位移4位。步骤610同时查找表,提供找到的符号值(VALUE)。步骤614在表HUFFVAL_P中查找符号值(VALUE)。
在本例中,假设1<J<17,表HUFFVAL_P作为索引由[I+16*(MAXCODE[I]-CODE)]产生。令:
M=max(MAXCODE[I]-MINCODE[I]);
I=0,1,2,…..,最大长度-最小长度。
表HUFFVAL_P的大小为[16*(M+2)]。令COENUM[I]等于编码长度为(I+最小长度)的码字数。令CODE[J]等于编码长度为I的第J个编码值。HUFFVAL表的各项计算如下:
I=0
当I小于(最大长度-最小长度+1)时,执行
J=0
当J小于CODENUM[I]时,执行
HUFFVAL_P[I+16*(MAXCODE[I]+1-CODE[J])]=
HUFFVAL[VALPTR[I]+CODE[J]-MINCODE[I]
J=J+1
结束
I=I+1
结束
据此,表HUFFVAL_P将依据霍夫曼编码数将成为无正负标记的16位整数的最大值。通过将顺序法的3个表组合成一个,检索霍夫曼编码值的指明显减小。同时,减小的表号存储有效寄存器空间,另外,当确定编码长度时计算出(MAXCODE[I]+1-CODE),并且可由查询表获得。
在步骤616,计算出的符号值(VALUE)被输出。一旦当前霍夫曼编码的长度在步骤614中被确定,当前4*16位码字即向左位移,下一个4*16位码字也位移相同位数。然后开始下一个霍夫曼编码的解码。
据此,并行解码方法600从位流中一次读取4位数据。每个连续4位长度被并行地检查,以确定当前编码是否在范围之内。在连续算法覆盖1到16的范围,需要16次检查,而现在只需4次检查就可覆盖相同的范围。其它改进是合并3个检索表,以便只解码一个表。它使计算和寄存器的使用最小化,这在许多情况下是有用的。
长度从1到8的实例
在上例中,编码长度在2到9之间。如果编码的长度在1和8之间,则解码是以8位为单元进行的。对于每个码字,最多需要1个检查,而不是8个。这就需要位流扩充到8*8位。例如,如果输入位流是“b0,b1,…”(bi代表i字节),则转换的位流为“b0,b0,b0,b0,b0,b0,b0,b0,b1,b1,b1,b1,b1,b1,b1,b1,…”初始位掩码为“10000000,11000000,11100000,11110000,11111000,11111100,11111110,11111111b”或“0x80C0,E0F8,F8FC,FEFF.”
表中各项如下产生:
I=0
当I小于(最大长度-最小长度+1)时,执行
J=(I/8)*8+7-I%8
MAXCODE_P[I]=(2(8-最小长度-I)*MAXCODE[J]+1
I=I+1
结束
I=1
当I小于9时,执行
J=0
当J小于CODENUM[I]时,执行
HUFFVAL_P[I+8*(MAXCODE[I]+1-CODE[J])]=
HUFFVAL[VALPTR[I]+CODE[J]-MINCODE[I]]J=J+1
结束
I=I+1
结束
HUFFVAL_P表值为无正负的8位整数。MAXCODE_P表值为无正负8位整数。
长度从1到32的实例
如果编码长度在1到32之间,解码可以32位为单元进行。为了确定码字长度最多需要8个检查,而不是16个。位流扩充到2*32位,如下:
输入位流:b0,b1,b2,b3,b4,b5,b6,b7,…
输出位流:b3,b2,b1,b0,b3,b2,b1,b0,b7,b6,b5,b4,b7,b6,b5,b4,…
初始位掩码是“10000000,00000000,00000000,00000000,11000000,00000000,00000000,00000000,00000000,b”或“0x8000,0000,C000,0000。”
表各项运行如下:
I=0
当I小于32时,执行
J=(I/2)*2+1-I%2
MAXCODE_P[I]=(2(32-最小长度-1)*MAXCODE[J])+1
I=I+1
结束
I=1
当I小于32时,执行
J=0
当J小于CODENUM[I]时,执行
HUFFVAL_P[I+32*(MAXCODE[I]+I-CODE[J])]=
HUFFVAL[VALPTR[I]+CODE[J]-MINCODE[I]]
J=J+1
结束
I=I+1
结束
因此,MAXCODE_P表值为无正负的32位整数。HUFFVAL_P表值为无正负的32位整数的最大值。
评估性能
建议的并行霍夫曼解码算法用多媒体汇编码完成。对于此部分,从原始位流扩展到4*16位部分的CPU工作时间包括在解码时间内。
如果长度为I的码字出现的概率为2-I,则码字具有长度I的概率为CODENUM[I]*2-1。令T[I]为解码长度为I的码字的时间,一个符号的平均解码时间计算如下:
假设用连续算法对10个通用中间格式(CIF)图像压缩,其中,1/4离散余弦变换系数被RUN-LEVEL符号编码,则要解码的霍夫曼编码计算如下:
(352*288/4)*10=253,440
尽管选择的是离散余弦变换,显而易见,一般专业人员均可应用,如差分脉码调制技术(DPCM),小波,子波段变换,向量量化等。应用166兆赫因特尔多媒体奔腾处理器,最佳情况(全部编码均为2到5位长)、最差情况(全部编码均为12到15位长)和平均情况(编码长度分散为2到16位)的压缩时间,如表2所示:
解码时间(千分之一秒) | 并行霍夫曼解码 |
最好情况 | 111 |
一般情况 | 113 |
最差情况 | 218 |
表2
表2说明,当一般情况性能优良时,并行算法明显地减少最差情况的解码时间。另外,通过进一步优化汇编编码能提供较好结果。
对于一般专业人员来说,在不脱离本发明的基本特性和精神情况下,可用其它特定格式来实施本发明。例如,本发明应用于单指令多数据流系统,如SUN公司的具有可视化指令集的UltraSPARC,Advance MicroDevice公司的3Dnow!TM等均可利用。
继奔腾II添加流式单指令多数据流之后,因特尔公司又推出新一代奔腾III处理器。奔腾III提供70个新的指令。许多指令支持浮点型单指令多数据流系统,即3D应用。这些指令针对MPEG(移动图象专家组)编码/解码(运动估计,运动补偿)。一般专业人员应了解,这些新的指令有利于进一步加速本发明的解码技术。例如,最小最大化操作可加速编码长度的检测。嵌入指令转换整数寄存器,部分多媒体寄存器也提供加速。同样,广播指令可以更有效地方式复制位流。
本发明可在计算机系统中实现。例如,方法500和600可在外设部件互连标准卡(PCI)上实现。PCI卡安装于个人计算机PCI总线上。同样,其它总线技术,如NUBUS(网络用户总线),ISA(工业标准结构),EISA(扩展工业标准结构),USB(通用串行总线构架),1394 Firewire(火线)和AGP(图形加速端口)均可被利用。此外,本发明可通过利用例行程序和功能部件来实现,如高速缓存,新的指令集合,多处理器系统及其替代物。因此,本发明范围的限定,请参考所附的权利要求书。
Claims (18)
1.一种数据解码方法,包括:
接收待解码的数据;
并行地将第一组接收数据的码字与编码长度表的相应值比较;
如果第一组码字大于编码长度表中的相应值,将第二组接收数据的码字与编码长度表的相应值比较;
如果第一和第二组被比较的码字之一中的一组码字中有一个码字小于或等于编码长度表中的相应值,则确定来自第一和第二组被比较的码字之一中的哪一个码字小于或等于编码长度表中的相应值;
提供上述确定的码字的符号值。
2.按照权利要求1的方法,其中,所接收的数据是可变长编码的。
3.按照权利要求2的方法,其中,可变长编码的数据是用包括霍夫曼编码和算法编码的组群中挑选的方法而形成的。
4.按照权利要求1的方法,其中,第一、第二组码字是从已接收数据的连续数组中挑选的。
5.按照权利要求1的方法,其中,已接收数据的第一、第二组码字是彼此不同的。
6.按照权利要求1的方法,进一步包括计算该编码长度表,该计算步骤是在该接收步骤后和该并行地将第一组接收数据的码字与编码长度表的相应值比较的步骤之前执行,该编码长度表包括码字的最大长度值,它用于对接收的数据进行可变长编码的编码技术。
7.按照权利要求1的方法,进一步包括屏蔽掉第一、第二组接收数据的码字,这种屏蔽操作确定了接收数据的哪一部分要与编码长度表中的相应值比较,其中该屏蔽步骤是在该接收和计算步骤之间进行的。
8.按照权利要求1的方法,其中,第一、第二组码字均包括已接收数据的重迭码字。
9.按照权利要求1的方法,其中,第一、第二组码字均包括4*16位的接收数据。
10.一种数据解码方法,包括:
接收待解码的数据,接收的数据是可变长编码的;
计算编码长度表,编码长度表包括最大码字长度值,该码字用于编码接收数据的编码技术;
屏蔽接收数据中的第一组码字;
并行地将屏蔽掉的第一组码字与编码长度表中的相应值比较;
如果比较的第一组码字大于编码长度表中的相应值,则将接收数据的第二组码字与编码长度表中的相应值比较;
屏蔽接收数据的第二组码字,屏蔽掉的第二组码字确定接收数据中的哪一部分要与编码长度表中的相应值比较;
如果第一、第二组被比较的码字中的一组码字中有一个码字小于或等于编码长度表中的相应值,则确定第一、第二组码字中的哪一个码字小于或等于编码长度表中的相应值;
为确定的码字提供符号值。
11.一种传送来自摄象机的图像的系统,该系统包括:
连接到摄象机的编码器,该编码器被构成以通过对该图像进行可变长编码,而对从摄象机接收的图像进行编码;
与所述编码器连接的位流转换器,该位流转换器被构成以将顺序传输的数据转换成数据包,该传输的数据包括形成图象的数据;
连接器,将编码器和位流转换器连接在一起;及
解码器,连接到位流转换器,该解码器被构成以解码编码的图像,该解码器接收要被解码的数据;并行地将第一组接收数据的码字与编码长度表的相应值比较;如果被比较的第一组码字大于编码长度表中的相应值,将第二接收数据的码字与编码长度表的相应值比较;如果第一和第二组被比较的码字之一中有一个码字小于或等于编码长度表中的相应值,则确定来自第一和第二组码字之一中的哪一个码字小于或等于编码长度表中的相应值;及提供上述确定的码字的符号值,以用于提供解码的图像。
12.按照权利要求11的系统,其中,所述连接器是从包括外设部件互连标准(PCI),网络用户总线(NUBUS),工业标准结构(ISA),扩展工业标准结构(EISA),通用串行总线构架(USB),火线和图形加速端口(AGP)的群组中选择的。
13.按照权利要求11的系统,其中,所述解码器包括能运算单指令多数据流的中央处理器。
14.按照权利要求11的系统,其中,所述解码器包括从以下类型中选择的中央处理器:Intel多媒体微处理器,SUN公司的具有可视化指令集的UltraSPARC,Advance Micro Device公司的3Dnow!TM,具有单指令多数据流(SIMD)扩展的IntelMMXTM。
15.按照权利要求11的系统,其中,该编码器利用从包括霍夫曼编码和算法码的组群中选出的方法格式化该可变长编码的图像。
16.按照权利要求11的系统,其中,该解码器从接收数据的连续组群中选择第一、第二组码字。
17.按照权利要求11的系统,其中,该解码器选择接收数据的第一、第二组码字,使得它们彼此不同。
18.按照权利要求11的系统,其中,该解码器接收来自接收数据的第一、第二组码字,每一组包括来自接收数据的重迭码字。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/343,934 US6580828B1 (en) | 1999-06-30 | 1999-06-30 | Fast decoding |
US09/343,934 | 1999-06-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1281295A CN1281295A (zh) | 2001-01-24 |
CN1217489C true CN1217489C (zh) | 2005-08-31 |
Family
ID=23348307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN001225901A Expired - Fee Related CN1217489C (zh) | 1999-06-30 | 2000-06-30 | 快速解码的方法及其装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6580828B1 (zh) |
CN (1) | CN1217489C (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6995794B2 (en) * | 1999-06-30 | 2006-02-07 | Logitech Europe S.A. | Video camera with major functions implemented in host software |
US6850647B1 (en) | 1999-07-30 | 2005-02-01 | Michael L. Gough | System, method and article of manufacture for decompressing digital camera sensor data |
US7373005B2 (en) * | 2003-04-10 | 2008-05-13 | Micron Technology, Inc. | Compression system for integrated sensor devices |
US9081681B1 (en) | 2003-12-19 | 2015-07-14 | Nvidia Corporation | Method and system for implementing compressed normal maps |
US8078656B1 (en) * | 2004-11-16 | 2011-12-13 | Nvidia Corporation | Data decompression with extra precision |
US7961195B1 (en) | 2004-11-16 | 2011-06-14 | Nvidia Corporation | Two component texture map compression |
US7928988B1 (en) | 2004-11-19 | 2011-04-19 | Nvidia Corporation | Method and system for texture block swapping memory management |
US7916149B1 (en) | 2005-01-04 | 2011-03-29 | Nvidia Corporation | Block linear memory ordering of texture data |
US7773816B2 (en) * | 2006-04-17 | 2010-08-10 | Mediatek Inc. | Systems and methods for decoding large images |
US7394411B1 (en) | 2007-01-09 | 2008-07-01 | International Business Machines Corporation | Fast implementation of decoding function for variable length encoding |
US8610732B2 (en) * | 2008-12-11 | 2013-12-17 | Nvidia Corporation | System and method for video memory usage for general system application |
CN101505155B (zh) * | 2009-02-19 | 2012-07-04 | 中兴通讯股份有限公司 | 实现前缀码构造的装置和方法 |
CN104126171B (zh) * | 2011-12-27 | 2018-08-07 | 英特尔公司 | 用于基于两个源写掩码寄存器生成依赖向量的系统、装置和方法 |
KR102022173B1 (ko) * | 2015-04-08 | 2019-09-17 | 텔레폰악티에볼라겟엘엠에릭슨(펍) | 알려진 또는 가정된 차이를 가진 메시지의 디코딩 |
CN107810605A (zh) * | 2015-04-30 | 2018-03-16 | 瑞典爱立信有限公司 | 消息解码 |
CN106559085A (zh) * | 2016-11-30 | 2017-04-05 | 郑州云海信息技术有限公司 | 一种范式哈夫曼解码方法及其装置 |
CN110383844A (zh) * | 2018-05-30 | 2019-10-25 | 深圳市大疆创新科技有限公司 | 变长解码方法与装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4823201A (en) | 1987-11-16 | 1989-04-18 | Technology, Inc. 64 | Processor for expanding a compressed video signal |
US5379070A (en) | 1992-10-02 | 1995-01-03 | Zoran Corporation | Parallel encoding/decoding of DCT compression/decompression algorithms |
US5452006A (en) * | 1993-10-25 | 1995-09-19 | Lsi Logic Corporation | Two-part synchronization scheme for digital video decoders |
US5572208A (en) * | 1994-07-29 | 1996-11-05 | Industrial Technology Research Institute | Apparatus and method for multi-layered decoding of variable length codes |
US5652582A (en) | 1995-12-29 | 1997-07-29 | Xerox Corporation | Method of high speed Huffman coding and decoding of lab color images |
US5696507A (en) | 1996-05-31 | 1997-12-09 | Daewoo Electronics Co., Inc. | Method and apparatus for decoding variable length code |
US5872965A (en) * | 1997-06-30 | 1999-02-16 | Sun Microsystems, Inc. | System and method for performing multiway branches using a visual instruction set |
-
1999
- 1999-06-30 US US09/343,934 patent/US6580828B1/en not_active Expired - Fee Related
-
2000
- 2000-06-30 CN CN001225901A patent/CN1217489C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN1281295A (zh) | 2001-01-24 |
US6580828B1 (en) | 2003-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1217489C (zh) | 快速解码的方法及其装置 | |
US7639883B2 (en) | Method, device, mobile terminal and computer program product for providing variable compression of data files | |
US6285796B1 (en) | Pseudo-fixed length image compression scheme | |
US6757439B2 (en) | JPEG packed block structure | |
US8107752B2 (en) | Method and system for processing image at high speed | |
CN1642282A (zh) | 视频编码系统 | |
CN1407510A (zh) | 动画影像压缩方法 | |
CN1615653A (zh) | 多通道视频译码的系统和方法 | |
WO1999060793A1 (en) | The compression of color images based on a 2-dimensional discrete wavelet transform yielding a perceptually lossless image | |
JP2008510349A (ja) | グラフィックとビデオとの混合ソースを圧縮するシステムおよび方法 | |
CN1302419A (zh) | 缩放压缩的图象 | |
CN1235483A (zh) | 预测滤波器 | |
CN101039374A (zh) | 一种图像无损压缩和图像解压缩方法 | |
CN101771797B (zh) | 用于生成压缩文件的方法和装置及包括该装置的终端 | |
CN1825964A (zh) | 片上处理视频数据的方法和系统 | |
WO2012078281A1 (en) | Video processing architecture | |
EP3178224B1 (en) | Apparatus and method for compressing color index map | |
CN1193621C (zh) | 调整计算复杂度的方法、对离散余弦反变换进行近似计算的方法和一种解码器 | |
US7333037B2 (en) | Method and system for improved lookup table (LUT) mechanism for Huffman decoding | |
CN1379594A (zh) | 对被编码的视频信号同时进行格式压缩和解码的方法 | |
CN110708547B (zh) | 针对变换模式的有效熵编码组分组方法 | |
CN1849826A (zh) | 用于可缩放信号处理的方法和设备 | |
CN102118616A (zh) | 图片解码方法及图片解码器 | |
CN1308894C (zh) | 图形文件的无损压缩方法 | |
US20130177241A1 (en) | Image processing apparatus and method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: LOGITECH EUROPE S.A. Free format text: FORMER OWNER: LOGITECH ELECTRONICS CO., LTD. Effective date: 20031203 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20031203 Address after: Morges Switzerland Applicant after: Logitech Europe S. A. Address before: American California Applicant before: Logitech Inc. |
|
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: 20050831 |