CN1187902C - 解码设备 - Google Patents
解码设备 Download PDFInfo
- Publication number
- CN1187902C CN1187902C CNB001057030A CN00105703A CN1187902C CN 1187902 C CN1187902 C CN 1187902C CN B001057030 A CNB001057030 A CN B001057030A CN 00105703 A CN00105703 A CN 00105703A CN 1187902 C CN1187902 C CN 1187902C
- Authority
- CN
- China
- Prior art keywords
- data
- decoding
- huffman
- area
- address
- 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
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
- H03M7/425—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
解码数据流的解码设备包括:包括第一区域和第二区域的解码表;第一解码器;第二解码器。第一解码器从数据流中读取第一数据;根据第一区域解码第一数据的该部分;确定第一数据该部分的解码是否完成;第一数据该部分的解码完成时,输出第一数据该部分的解码结果。第一数据该部分的解码未完成时,第二解码器从数据流中读取第二数据;将第一数据与第二数据连接产生连接的数据;根据第二区域解码连接数据并输出该连接数据的解码结果。
Description
本发明涉及解码数据流的解码设备,特别涉及解码包括霍夫曼编码数据的数据流的解码设备。
近来,解码霍夫曼编码的比特流(数据流)的解码设备已被广泛地利用。在这种解码设备中使用的解码方法一般分类成两种类型。一种类型的解码方法把重点放在节省存储器上。另一种类型的解码方法把重点放在提高解码速度上。在说明这种解码方法之前,首先说明编码方法。
图11表示在霍夫曼编码中使用的霍夫曼编码手册1100的实例。该霍夫曼编码手册1100的左列1101表示待作霍夫曼编码的输入值。在图11所示的实例中,输入值的范围从0至63。霍夫曼编码手册1100的中间列1102表示与各个输入值对应的霍夫曼码。霍夫曼编码手册1100的右列1103表示与各个霍夫曼码对应的码长。在霍夫曼编码中,输入值出现的频率越高,分配给输入值的霍夫曼码就越短。相反地,输入值出现的频率越低,分配给输入值的霍夫曼码就越长。
例如,霍夫曼编码手册1100的第一行1104表示对输入值0分配的霍夫曼码(01110),霍夫曼码的码长为5比特。编码设备接收和编码输入值0,并输出产生的霍夫曼码(01110)。编码设备不需要与霍夫曼码一起输出表示霍夫曼码码长的信息。这是因为具有从霍夫曼码(01110)的最左边数字开始但短于霍夫曼码(01110)的相同数字序列的任何码都不能包括在霍夫曼编码手册1100中。有5位或更多位码长的所有其它霍夫曼码不包括作为以其它霍夫曼码的最左边数字开始的数字序列的霍夫曼码(01110)。因此,当解码设备解码霍夫曼码(01110)时,解码设备不需要特别表示霍夫曼码(01110)的码长为5比特的信息。因此,霍夫曼码(01110)本身可以包括表示与输入值(0)对应的霍夫曼码的信息和表示霍夫曼码的码长(5)的信息。
由于此原因,可以按邻近方式产生霍夫曼码,以产生从编码设备输出的比特流。
下面,说明把重点放在节省存储器的普通解码方法。图12表示用于解码用图11所示的霍夫曼编码手册1100编码的数据的解码表1200。按从最短的霍夫曼码的码长开始的顺序,重新排列霍夫曼编码手册1100的行,由此获得解码表1200。解码表1200的左列1102A表示霍夫曼码。中间列1103A表示霍夫曼码的码长。右列1201表示解码霍夫曼码的结果。由图12可知,在第一行1202上有三比特(000)码长的霍夫曼码是最短的霍夫曼码。解码霍夫曼码(000)的结果是“9”,该结果对应于图11所示的霍夫曼编码手册1100的第十行1105(输入值“9”)。
由图12还可看出,在最低行1203上具有10比特的霍夫曼码(1111111111)是最长的霍夫曼码之一。解码霍夫曼码(1111111111)的结果是“63”,该结果对应于图11所示的霍夫曼编码手册1100的第64行1106(输入值“63”)。
下面说明在解码设备中使用解码表1200的霍夫曼解码。
解码表1200的第一行1202(最上边的行)表示码长为三。基于该码长,读取比特流的前三比特。解码设备确定比特流数据的前三比特是否与第一行1202上的霍夫曼码(000)匹配。
如果匹配成功(即发现匹配),那么解码设备输出“9”作为解码的结果,并将比特流中的读取位置位移三比特。因此,完成一个霍夫曼解码操作。
如果匹配不成功,那么考虑解码表1200的下一行1204。第二行1204的码长为四。因此,读取比特流中的跟着已读取的三比特后面的附加的一比特(1=4-3)。
然后,确定读取的四比特数据是否与第二行1204上的霍夫曼码(0010)匹配。
如果匹配成功,那么输出“17”作为解码的结果。比特流的读取位置位移一比特。从而完成一个霍夫曼解码操作。
如果匹配不成功,那么查看解码表1200的下一行1205。第三行1205的码长为4。因此,不读取比特流的新比特。然后,确定当前读取的四比特数据是否与第三行1205上的霍夫曼码(0011)匹配。
以这种方式,重复匹配步骤,直至顺序读取的比特流数据与解码表1200中包括的任何霍夫曼码匹配。当解码设备发现有匹配数据的霍夫曼码的行时,解码设备输出该行右列上的值,作为解码操作的结果。
在上述解码方法中使用的解码表在规模上很小。这是因为这种解码表仅需要与输入值(0至63)的数相同的行数。但是,在该解码方法中,在匹配步骤中要多次存取解码表,直至发现匹配的霍夫曼码。这需要很长的处理时间。
下面,说明把重点放在提高解码速度上的普通解码方法。
图13表示用于解码利用图11所示的霍夫曼编码手册1100编码的数据的解码表1300。图13表示的解码方法实例使用具有十比特宽度的地址。地址的比特宽度(10比特)对应于图11所示的霍夫曼编码手册1100中霍夫曼码的最长码长(10比特)。
解码设备利用10比特数据作为地址读取比特流的10比特数据和存取解码表1300。在解码表1300中,包括地址(0000000000)至(0001111111)的区域1301表示码长为三和解码操作的结果是“9”。前三比特为霍夫曼码(000)的10比特数据必定在地址(0000000000)至(0001111111)中。霍夫曼码(000)对应于值“9”。在这种情况下,解码设备输出“9”,作为基于图13所示的解码表1300的对应于前三比特(000)的解码结果。该区域1301表示码长为三的区域。因此,解码设备将读取位置位移三比特,并从该读取位置读取10比特数据。利用10比特数据作为一次存取,存取图13所示的解码表1300。因此,完成下一个霍夫曼解码操作。
上述解码方法可以高速度地实现。通过对解码表的一次存取便可完成各霍夫曼解码操作。但是,与把重点放在节省存储器上的解码方法相比,把重点放在提高解码速度上的解码方法需要大规模的解码表。
如上所述,把重点放在节省存储器上的解码方法需要很长的处理时间。而注意力集中在提高解码速度上的解码方法需要大的解码表,从而不能实现存储器的节省。
例如,与MPEG2-AAC标准一致的最近音频解码设备需要解码采用十二个不同霍夫曼码手册编码的霍夫曼码。在这种情况下,如果所有霍夫曼编码手册都设有图13所示的用于高速解码的解码表,那么就需要大量的存储器。另一方面,MPEG2-AAC标准需要多个信道和具有高采样率的高保真音频。使用图12所示的节省存储器的解码表需要大量的处理操作。
按照本发明的一个方案,解码数据流的解码设备包括:包括第一区域和第二区域的解码表;第一解码器;和第二解码器。第一区域限定具有预定数量的比特的第一数据和解码具有小于或等于该预定数量的比特的第一数据的一部分的结果之间的关系。第二区域限定连接第一数据与带有附加比特的第二数据而获得的连接数据和解码该连接数据的结果之间的关系。第一解码器从数据流中读取第一数据;根据第一区域解码第一数据的该部分;确定第一数据该部分的解码是否完成;当第一数据该部分的解码完成时,输出第一数据该部分的解码结果。当第一数据该部分的解码未完成时,第二解码器从数据流中读取第二数据;将第一数据与第二数据连接,产生连接数据;根据第二区域解码连接数据;并输出该连接数据的解码结果。
在本发明的一个实施例中,解码设备还包括多个解码表;和选择多个解码表中的一个解码表的选择器。根据对多个解码表中的每一个选择的频率,预先确定作为与多个解码表中的每一个对应的第一数据的比特数的该预定数量。
在本发明的一个实施例中,按这样的方式确定与多个解码表中的每一个对应的第一数据的比特数,即第一解码器完成第一数据该部分解码的概率等于或大于预定的概率。
在本发明的一个实施例中,第一区域包括第一字段和第二字段,第一字段用于表示第一数据该部分的码长或表示未完成对第一数据该部分解码的码;而第二字段用于表示第一数据该部分的解码结果。利用第一数据作为地址存取第一区域。第二区域包括表示连接数据的第三字段;表示连接数据码长的第四字段;和表示解码连接数据的结果的第五字段。
按照本发明的另一方面,解码数据流的解码设备包括:包括第一区域和第二区域的解码表;第一解码器;和第二解码器。第一区域限定具有预定数量的比特的第一数据和解码具有小于或等于该预定数量的比特的第一数据一部分的结果之间的关系。第二区域限定具有附加比特的第二数据和解码连接数据的结果之间的关系,而连接数据通过第一数据与第二数据的连接来获得。第一解码器从数据流中读取第一数据;根据第一区域解码第一数据的该部分;确定第一数据该部分的解码是否完成;当第一数据该部分的解码完成时,输出解码第一数据部分的结果;当第一数据该部分的解码未完成时,规定第二区域的地址。当第一数据该部分的解码未完成时,第二解码器从数据流中读取第二数据;根据第一解码器和第二数据规定的地址输出连接数据的解码结果。
在本发明的一个实施例中,解码设备还包括多个解码表;和选择多个解码表中的一个解码表的选择器。根据对多个解码表中的每一个选择的频率,预先确定与多个解码表中的每一个对应的第一数据的比特数。
在本发明的一个实施例中,按这样的方式确定与多个解码表中的每一个对应的第一数据的比特数,即第一解码器完成第一数据该部分解码的概率等于或大于预定的概率。
在本发明的一个实施例中,第一区域包括第一字段和第二字段,第一字段表示第一数据该部分的码长或表示未完成对第一数据该部分解码的码;而第二字段表示第一数据该部分的解码结果或规定第二区域地址的指示器。利用第一数据作为地址存取第一区域。第二区域包括表示第二数据的第三字段;表示第二数据码长的第四字段;和表示解码连接数据的结果的第五字段。
在本发明的一个实施例中,第一解码器规定与第二数据对应的地址,该地址在与第一数据有关的多个地址中具有最短长度。
在本发明的一个实施例中,数据流包括多个霍夫曼码。第一解码器和第二解码器解码多个霍夫曼码。
以下说明本发明的作用。
按照本发明的解码设备,根据解码表的第一区域解码包含于具有预定比特数的第一数据中的第一数据的该部分。解码表的第一区域表示第一数据和第一数据该部分的解码结果之间的关系。由于此原因,通过对表的一次存取,可解码具有短于或等于预定数的第一数据的相对短的该部分。因此,可以高速地解码相对短的码。
另一方面,当第一数据未被解码时,还读取第二数据。第二数据与第一数据连接,以产生具有比特大于预定数的连接数据。根据解码表的第二区域,解码该连接数据。该第二区域表示连接数据和连接数据的解码结果之间的关系,从而使得用于解码具有大于预定数的比特的长码的解码表的规模最小。
如上所述,适当选择预定数时,按高速解码短码,用于解码长码的解码表的规模最小化。解码设备可以高速地进行解码,同时节省存储器。特别地,当本发明的解码设备用于解码已经霍夫曼编码的比特流时,由于短的霍夫曼码有高出现频率而长霍夫曼码有低出现频率,所以解码设备可以高速地进行解码,同时节省存储器。
因此,这里说明的本发明可以使解码设备具备这样的优点,该解码设备既可实现存储器节省,也可实现高速处理,该解码设备例如还可以用于与MPEG2-AAC编码格式一致的音频解码设备。
对于本领域技术人员来说,通过阅读和理解参照附图的以下详细说明,本发明的这些和其它优点将变得明确。
图1是表示本发明实例1的解码设备结构的图。
图2是表示输入至本发明解码设备的比特流的实例图。
图3是表示在MPEG2-AAC编码格式中频带和频谱数之间相应关系的图。
图4是表示本发明实例1的第一解码表的图。
图5是表示相对于第二霍夫曼编码手册的普通解码表的图。
图6是表示本发明实例1的第二解码表的图。
图7A是表示本发明解码设备的第一霍夫曼解码器操作的流程图。
图7B是表示本发明解码设备的第二霍夫曼解码器操作的流程图。
图8是表示本发明实例2的解码设备结构的图。
图9是表示本发明实例2的第一解码表的图。
图10是表示本发明实例2的第二解码表的图。
图11是表示在霍夫曼编码中使用的第一霍夫曼编码手册的图。
图12是表示把重点放在节省存储器上的普通解码系统中使用的解码表的图。
图13是表示把重点放在提高速度上的普通解码系统中使用的解码表的图。
以下,参照附图说明本发明的实例。
(实例1)
在实例1中,说明解码比特流(数据流)的解码设备,在该比特流中,利用多个霍夫曼编码手册进行霍夫曼编码。实例1的解码设备可以用作与MPEG2-AAC编码格式一致的音频解码设备。
在说明实例1的解码设备之前,先说明待输入实例1的解码设备的比特流。
图2表示待输入实例1的解码设备的比特流10的结构。如图2所示,比特流10包括索引(index)部分12和跟随索引部分12的数据部分14。索引部分12识别在编码输入值中已由编码设备使用的霍夫曼编码手册。数据部分14包括多个编码的输入值(即霍夫曼码)。
索引部分12包括多个索引数12a。每个索引数12a对应于在编码输入值中已经使用的一个霍夫曼编码手册。例如,在MPEG2-AAC编码格式中,利用编号为第一至第十二的十二个不同的霍夫曼编码手册编码输入值。在这种情况下,索引数12a有与十二个霍夫曼编码手册对应的从1至12范围的值。
数据部分14包括多个数据部分14a。各数据部分14a包括利用由对应的索引数12a(HCB1、HCB3、HCB12、…、HCB6)识别的霍夫曼编码手册编码的至少一个输入值(即霍夫曼码)。
例如,在MPEG2-AAC编码格式中,在比特流10中,索引部分12包括49个索引数12a,数据部分14包括49个数据部分14a。例如,各数据部分14a包括与四个输入值对应的四个霍夫曼码。在该数据部分14a中包括的四个霍夫曼码已经利用相同的霍夫曼编码手册编码。
由于在MPEG2-AAC编码格式中将要传送的数据被分成49个频带和使用对例如包含于各频带中的四个频谱(四个输入值)最佳的霍夫曼编码手册,所以上述比特流有这类结构。再有,在MPEG2-AAC编码格式中,比特流10包括与总共1024个频谱(输入值)对应的霍夫曼码。
图3表示当1024个频谱包含于MPEG2-AAC编码格式的49个频带中的情况下频带和频谱数之间的对应表300。在图3中,左列301表示49个频带。右列302表示在左列301上表示的频带中包括的频谱数。
下面说明用于解码具有上述结构的比特流10的解码设备。
图1表示本发明实例1的解码设备1000的结构。解码设备1000包括用于检测比特流10中的索引数12a的索引检测设备103;第一解码表100-1至第m解码表100-m(其中,m是任意整数,表示在解码设备1000中包括的表的数量);和表选择设备104,用于选择第一解码表100-1至第m解码表100-m中的一个表。
第一解码表100-1至第m解码表100-m对应于在编码中使用的各个霍夫曼编码手册。例如,在MPEG2-AAC编码格式中,使用十二个霍夫曼编码手册,以致解码设备1000可以包括编号为第一至第十二的相应的十二个解码表。
解码表100-1至100-m的各表包括第一区域R1和第二区域R2。用具有预定比特宽度的地址指示第一区域R1。用具有超过该预定比特宽度的比特宽度的地址指示第二区域R2。下面详细说明解码表。
解码设备1000还包括第一霍夫曼解码器105、第二霍夫曼解码器106和输出选择设备107。第一霍夫曼解码器105解码具有比特数小于或等于预定数Nj(其中,Nj是由索引数j限定的任意整数,而该索引数j为满足1≤j≤m的任意整数)的短的霍夫曼码。第二霍夫曼解码器106解码具有比特数超过预定数Nj的长的霍夫曼码。输出选择设备107选择和输出由第一霍夫曼解码器105和第二霍夫曼解码器106解码的结果。
第一霍夫曼解码器105根据从索引检测设备103输出的索引数j确定预定数Nj,从比特流10中读取具有比特预定数Nj的数据(以下称为预定比特数的数据x)。当预定比特数的数据x包括具有比特数小于或等于预定数Nj的相对短的霍夫曼码时,第一霍夫曼解码器105利用上述解码表的第一区域R1解码短的霍夫曼码。
另一方面,当第一霍夫曼解码器105未完成霍夫曼解码时,第二霍夫曼解码器106读取比特流10中的在预定比特数的数据x之后的附加数据y。第二霍夫曼解码器106将附加数据y与预定比特数的数据x连接,以获得连接的数据x|y,利用解码表的第二区域R2解码连接数据x|y。
上述解码设备解码利用多个霍夫曼编码手册编码的比特流。尽管当比特流已经利用单一的霍夫曼编码手册编码时,但正如将要认识到的那样,解码设备1000的索引检测设备103和表选择设备104不是必需的。此外,在这种情况下,正如将要认识到的那样,仅需要与单一霍夫曼编码手册对应的一个解码表。
如上所述,利用不同的解码处理,解码设备1000解码相对短的霍夫曼码(即具有出现频率高的霍夫曼码)和相对长的霍夫曼码(即具有出现频率低的霍夫曼码)。下面详细说明在实例1的解码设备1000中使用的解码表。
图4表示第一解码表100-1。第一解码表100-1用于解码已用霍夫曼编码手册编码的比特流,该手册由索引数j(=1)标识。在实例1中,为了说明解码设备1000,图11所示的霍夫曼编码手册1100被用作第一霍夫曼编码手册。
如图4所示,第一解码表100-1包括第一区域R1和第二区域R2。第一区域R1包括具有从第0地址(000000)至第63(26-1)地址(111111)范围的六比特宽度的地址。第二区域R2包括具有从第64地址(1000000)至第104地址(1101000)范围的七比特宽度的地址。
第一区域R1的地址比特宽度等于由第一霍夫曼解码器105从比特流10中读取的预定比特数数据x(即预定数Nj)的比特数。在实例1中,第一区域R1中地址的比特宽度为六比特。当第一霍夫曼解码器105检测索引数1时,解码器105确定预定数Nj(j=1)为六。因此,从比特流10中读取六比特数据。
在图4所示的第一解码表100-1中,第一区域R1和第二区域R2在左列401和402(地址列)上有地址,在右列403和404(数据列)上有数据。数据列403和404存储与各地址对应的数据。
第一区域R1的数据列403包括第一字段405(数据列403的左列)和第二字段406(数据列403的右列)。第一字段405存储将要解码的霍夫曼码的码长。具体地说,当预定比特数的数据x有六比特时,第一区域R1的地址x中的第一字段405存储L比特的长度,该长度在六比特数据x的最高有效位(MSB)侧,对应于第一霍夫曼编码手册(图11中示出)中包括的霍夫曼码,其中,L是满足1≤L≤6的任意整数,表示码长。第二字段406存储解码霍夫曼码的结果。
例如,第一字段405在地址(000000)至地址(000111)中存储相同的值“3”。六比特数据(000000)至(000111)是六比特的所有可能数据,该数据在其MSB侧包括霍夫曼码(000)。第二字段406在地址(000000)至地址(000111)中存储相同的值“9”,其中,“9”是解码霍夫曼码(000)的结果。包括地址(000000)至地址(000111)的区域407对应于图12所示的普通解码表1200(对应于第一霍夫曼编码手册)的第一行1202(即对应于霍夫曼码(000)的行)。
此外,例如,第一字段405在地址(110011)中存储值“6”。第二字段406在地址(110011)中存储值“42”。六比特数据(110011)仅是六比特的可能数据,该数据在其MSB侧(即整个数据(110011))包括霍夫曼码(110011)。解码霍夫曼码(110011)的结果是“42”。因此,地址(110011)408对应于图12所示的解码表1200的第23行1206(即对应于霍夫曼码(110011)的行)。
此外,例如,第一字段405在地址(110100)409中存储超过“6”的值“15”。这表示六比特数据(110100)未完成霍夫曼码。在实例1中,存储超过预定数N1(=6)的整数“15”。只要数据可以表示六比特数据未完成霍夫曼码,那么可以使用任何数据。例如,除了数字外,可以使用负整数或符号。此外,第二字段406存储未完成的符号(--)。这是因为六比特数据(110100)未完成霍夫曼码和没有解码操作的结果。该未完成符号可以是可与解码的标准结果区别的任何数据。地址(110100)对应于图12所示的解码表1200的第24行1207和第25行1208(即对应于霍夫曼码(1101000)和(1101001)的行)。
另一方面,解码表100-1的第二区域R2包括具有七比特宽度的地址。第二区域R2的数据列404包括第三字段410、第四字段411和第五字段412。在图4中,数据列404的左列是第三字段410;中间列是第四字段411;而右列是第五字段412。
第二区域R2的第三字段410存储码长大于六的包含于第一霍夫曼编码手册1100(图11所示)中的霍夫曼码。第四字段411存储霍夫曼码的码长。第五字段412存储解码霍夫曼码的结果。这些存储数据霍夫曼码的长度增加的顺序被存储在第64地址413(地址(1000000))至第104地址414(地址(1101000)中。
在解码表100-1的第二区域R2的第一行的第64地址413(地址(1000000))中的第三字段410、第四字段411和第五字段412例如分别存储霍夫曼码(1101000)、码长“7”和解码操作的结果“41”。这些存储数据对应于图12所示的解码表的第24行1207(即对应于霍夫曼码(1101000)的行)的内容。随后,第65地址415(地址(1000001))至第104地址414(地址(1101000))存储图12所示的解码表的第25行1208(即对应于霍夫曼码(1101001))至第64行1203(即对应于霍夫曼码(1111111111))的各个内容。
下面说明第二解码表100-2。第二解码表100-2有与上述第一解码表100-1相似的结构。
图6表示第二解码表100-2。解码表100-2用于解码已用与索引数2对应的第二霍夫曼编码手册编码的霍夫曼码。
图5表示按增加霍夫曼码长度的顺序重新排列第二霍夫曼编码手册(未示出)的行所获得的普通解码表500。解码表500的左列501表示霍夫曼码。中间列502表示霍夫曼码的码长。右列503表示解码霍夫曼码的结果。
由图6可看出,第二解码表100-2包括第一区域R1和第二区域R2。第一区域R1包括具有第0地址601(0000000)至第127(=27-1)地址602(1111111)范围的七比特宽度的地址。第二区域R2包括具有第128地址603(10000000)至第178地址619(10110010)范围的八比特宽度的地址。
第一区域R1的地址的比特宽度等于数据的比特数(即预定数N2),当检测的索引数j为2时,该数据由第一霍夫曼解码器105从比特流中被读取。在实例1的第二解码表100-2中,第一区域R1中地址的比特宽度为七比特。
与第一解码表100-1类似,在第二解码表100-2中,第一区域R1的数据列606包括第一字段607和第二字段608。第二区域R2的数据列610包括第三字段611、第四字段612和第五字段613。
假设x’是具有七比特的数据,第一区域R1的地址x’的第一字段607存储L比特长度,该长度的比特在七比特数据(地址)x’的MSB侧,对应于包含于第二霍夫曼编码手册中的霍夫曼码(其中,L是满足1≤L≤7的任意整数,表示码长)。第二字段608存储解码霍夫曼码的结果。
例如,第一字段607在地址601(0000000)至地址614(0111111)中存储相同的值“1”。第二字段608在地址601(0000000)至地址614(0111111)中存储相同的值“0”。七比特数据(0000000)至(0111111)是七比特的所有可能的数据,该数据包括在其MSB侧的霍夫曼码(0),“0”是解码霍夫曼码(0)的结果。地址601(0000000)至地址614(0111111)对应于图5所示的解码表500中的第一行504(即对应于霍夫曼码(0)的行)。
此外,例如第一字段607在地址615(1110100)存储值“7”。第二字段608在地址615(1110100)存储值“3”。七比特数据(1110100)的最有效的七比特(即整个数据(1110100))完成霍夫曼码(1110100)。解码该霍夫曼码(1110100)的结果是“3”。因此,地址615(1110100)对应于图5所示的解码表500的第13行505(即对应于霍夫曼码(1110100)的行)。
此外,例如,第一字段607在地址616(1110101)存储超过“7”的值“15”。这表示七比特数据(1110101)不能完成霍夫曼码。与第一解码表100-1类似,除了数字外,可以使用负整数或符号作为这样的值。此外,第二字段608存储未完成符号(--)。这是因为没有解码七比特数据(1110101)的结果。与第一解码表100-1类似,该未完成符号可以是与解码的标准结果区别的任何数据。地址616(110101)对应于图5所示的解码表500的第14行506和第15行507(即对应于霍夫曼码(11101010)和(11101011)的行)。
在图6所示的解码表100-2中,第二区域R2的第三字段611(数据列610的左列)存储码长大于七的包含于第二霍夫曼编码手册中的霍夫曼码。第四字段612(数据列610的中间列)存储霍夫曼码的码长。第五字段613(数据列610的右列)存储解码霍夫曼码的结果。这些存储的数据以霍夫曼码长度增加的顺序被存储在第128地址603(地址(10000000))至第178地址619(地址(10110010)中。
在第二解码表100-2的第二区域R2的第一行的第128地址(地址603(10000000))的第三字段611、第四字段612和第五字段613例如分别存储霍夫曼码(11101010)、码长“8”和解码操作的结果“19”。这些存储数据对应于图5所示的解码表500的第14行(即对应于霍夫曼码(11101010)的行)的内容。随后,在第129地址(地址604(10000001))至第178地址619(地址(10110010))存储图5所示的解码表500的第15行(即对应于霍夫曼码(11101011))至第64行(即对应于霍夫曼码(111111111111))的各自内容。
实例1的解码设备1000还有取决于用于编码的霍夫曼编码手册数的更多解码表。与上述解码表100-1和100-2类似,这些解码表也可以包括第一区域R1和第二区域R2。第一区域R1的地址宽度可以对各解码表单独地限定。解码表可以不包括第二区域R2。下面说明如何确定解码表的地址宽度。
以下,说明利用上述解码表的实例1的解码设备1000的操作。
再参照图1,已霍夫曼编码的比特流10被输入索引检测设备103、第一霍夫曼解码器105和第二霍夫曼解码器106中。在图1中,粗线箭头表示数据的流动,而细线箭头表示控制信号的流动。
索引检测设备103检测来自比特流10(图12所示)的索引数j和将索引数j输出给表选择设备104(其中,j是满足1≤j≤m的任意整数;m是表示在解码设备1000中包括的解码表数的任意整数)。表选择设备104基于接收的索引数j选择第j解码表。例如,当由索引检测设备103检测的索引数是“1”时,表选择设备104选择第一解码表100-1。
索引检测设备103还将索引数j输出给第一霍夫曼解码器105。第一霍夫曼解码器105根据索引数j确定表示从比特流10中读取的数据的比特数的数Nj(其中,Nj是由j确定的任意整数)。预定数Nj的值被确定得等于在由表选择设备104选择的第j解码表中的第一区域R1的地址宽度。例如,当检测索引数j是“1”时,第一霍夫曼解码器105确定预定数N1为“6”。该值等于第一解码表100-1的第一区域R1的地址宽度。在实例1中,在第一霍夫曼解码器105中预定索引数j和预定数Nj之间的关系。为此,第一霍夫曼解码器105根据接收的索引数j预定预定数Nj。根据接收的索引数j确定预定数Nj的方法不限于此。可以在第一霍夫曼解码器105的外面设置根据接收的索引数j确定预定数Nj的另一设备。
然后,第一霍夫曼解码器105根据预定数Nj从比特流10中读取具有Nj比特的预定比特数数据x。接着,利用由表选择设备104选择的第j解码表的第一区域R1对读取的预定比特数数据x进行霍夫曼解码。具体地说,通过比较读取的具有Nj比特的预定比特数数据x与第一区域R1中包括的具有Nj比特宽度的地址,第一霍夫曼解码器105进行解码。
第一霍夫曼解码器105解码具有比特数小于或等于预定数Nj的相对短的霍夫曼码,该霍夫曼码可包括在具有Nj比特的预定比特数的数据x中。这是因为解码表的第一区域R1限定预定比特数数据x和包含于预定比特数数据x中的解码霍夫曼码的结果之间的关系。对于包括短码的数据来说,对解码表的一次存取就足够了。因此,可高速进行这种短霍夫曼码的解码。
如上所述,当相对短的霍夫曼码已被解码时,第一霍夫曼解码器105将表示利用预定比特数数据x完成一次霍夫曼解码操作的完成信号CPT(即具有值“真”的完成信号)输出给第二霍夫曼解码器106和输出选择设备107。第一霍夫曼解码器105还将解码的结果输出给输出选择设备107。
另一方面,当未完成对具有Nj比特的预定比特数数据x的解码时,第一霍夫曼解码器105将表示未完成解码的完成信号CPT(即具有值“伪”的完成信号)输出给第二霍夫曼解码器106和输出选择设备107。第一霍夫曼解码器105还将读取的具有Nj比特的预定比特数数据x输出给第二霍夫曼解码器106。
当上述完成信号为“伪”时,第二霍夫曼解码器106从比特流10中读取跟随预定比特数数据x的附加数据y。第二霍夫曼解码器106将附加数据y与从第一霍夫曼解码器105中接收的预定比特数数据x进行连接,产生连接数据x|y(比特连接)。利用第j表的第二区域R2第二霍夫曼解码器106对连接数据x|y进行霍夫曼解码,并将解码结果输出给输出选择设备107。具体地说,第二霍夫曼解码器106进行匹配测试,在该测试中,对连接数据x|y与第二区域R2的第三字段410中表示的霍夫曼码进行比较。按地址顺序,重复该匹配测试,直至连接数据x|y与在第二区域R2中包括的任何霍夫曼码匹配。在这种处理中,如果需要,可连续地读取附加数据。
第二霍夫曼解码器106解码具有其比特大于预定数Nj的相对长的霍夫曼码。这是因为解码表的第二区域R2限定附加数据与预定比特数数据连接的连接数据与解码连接数据的结果之间的关系。限定该关系的第二区域R2等于或小于与被解码的霍夫曼码数具有相同行数的地址空间。因此,可以减小解码表的整体规模。
当完成信号为“真”时,输出选择设备107输出从第一霍夫曼解码器105接收的解码操作的结果作为输出信号,当完成信号为“伪”时,输出从第二霍夫曼解码器106接收的解码操作的结果作为输出信号。因此,完成一次霍夫曼解码操作。
随后,霍夫曼解码设备1000重复上述操作,以连续地解码比特流10。其中,比特流10的数据部分14a(参见图2)可以包括已经利用相同的霍夫曼编码手册编码的多个霍夫曼码。因此,不必每完成一次霍夫曼编码操作就检测索引数来改变解码表。在解码设备1000中预定包含于规定数据部分14a中的霍夫曼码数。为此,在解码设备1000中,利用相同的解码表解码规定数的霍夫曼码之后,用表选择设备104改变将要采用的解码表。
用计算机程序可执行第一霍夫曼解码器105和第二霍夫曼解码器106的上述功能。下面将具体地说明这种计算机程序的操作。其中,假设由索引检测设备103检测的索引数为“1”,即选择第一解码表100-1(图4所示)。
图7A是表示利用第一霍夫曼解码器105进行解码处理(第一解码处理)的流程图。
如图7A所示,在步骤52中,从读取位置(RP)读取比特流10中的具有六比特(j=1和Nj=N1=6)的预定比特数数据x。
在步骤54中,读取第一解码表100-1的第一区域R1的地址x中的数据序列Z。其中,在地址x的数据序列Z中,Z1是在数据序列Z的第一字段405中表示的数据(即霍夫曼码的码长或表示霍夫曼解码未完成的数据),而Z2是在数据序列Z的第二字段406中表示的数据(即表示解码操作结果的数据)。
当读取的预定比特数的数据x是(000001)时,第一霍夫曼解码器105读取解码表100-1的第一区域R1的地址(000001)中的数据。由图4所示的解码表100-1可看出,第一字段存储值“3”(Z1=3)。第二字段存储值“9”(Z2=9)。因此,读取的具有六比特的预定比特数数据x在完成霍夫曼码的其MSB侧有三比特(000)。获得解码操作结果是“9”的信息。
然后,确定在读取的六比特数据x中包括的具有六比特或更少的霍夫曼码是否已经进行霍夫曼解码(即具有六比特的预定比特数的数据完成霍夫曼码)。这可以通过对预定比特数数据x的比特数“6”(=N1)与霍夫曼码的码长Z1进行比较来进行(步骤56)。如果Z1≤6,六比特数据x完成霍夫曼码。如果Z1>6,那么六比特数据x未完成霍夫曼码。在上述实例中,由于Z1(3)≤6,所以确定六比特数据x完成一次霍夫曼解码操作。
当六比特数据x完成一次霍夫曼解码操作时,第一霍夫曼解码器105输出具有值“真”的完成信号CPT(步骤58)。
在这种情况下,存储于第二字段406中的值Z2还被输出作为解码的结果(步骤60),根据存储在第一字段中的数据Z1,将比特流10的读取位置(RP)位移Z1比特(步骤62)。在上述实例中,在步骤60中输出解码操作的结果“9”,在步骤62中将比特流10的读取位置位移三比特。
因此,完成一次霍夫曼解码操作。随后,解码处理返回步骤52,进行下次霍夫曼解码操作。
另一方面,与上述实例不同,当步骤52中读取的第一个六比特数据x是(111000)时,读取第一解码表100-1的地址413(111000)(步骤54)。由图4所示的第一解码表100-1可看出,第一字段405在地址(111000)中存储值“15”(Z1=15)。在这种情况下,在步骤56中,由于Z1(=15)大于6,所以确定预定比特数的数据(111000)未完成霍夫曼码(即未进行预定比特数数据的霍夫曼解码)。
在这种情况下,第一霍夫曼解码器105输出具有值“伪”的完成信号CPT(步骤64),然后将读取位置(RP)移动6比特(步骤66),并将预定比特数的数据x输出给第二霍夫曼解码器106(步骤68)。随后,第二霍夫曼解码器106进行解码(步骤70)。
第一霍夫曼解码器105按上述方式进行解码。下面说明当利用第一霍夫曼解码器105未完成对预定比特数数据x的解码时,利用第二霍夫曼解码器106进行规定的解码操作(步骤70)。
图7B是表示利用第二霍夫曼解码器106进行解码(第二解码处理)的流程图。由图7A所示的流程图的步骤68和66可看出,第二霍夫曼解码器106接收六比特数据(N1=6)。比特流的读取位置(RP)位移六比特(即已经被完全读取的六比特数据x的位置)。
如图7B所示,在步骤72中,规定第二区域R2的被读取行的参数被初始化为零。“i=0”表示解码表100-1的第二区域R2的第一行413(图4)。换句话说,在由第二霍夫曼解码器106进行的解码中,解码表100-1的第二区域R2的第一行413总被最先读取。
因此,图4所示的解码表100-1的第二区域R2第一行413(即对应于地址(1000000)的行)中的Z=ROM B[0]被读取(步骤74)。在第二区域R2的地址(1000000)中的数据序列Z中,Z3表示在数据序列Z的第三字段410中说明的数据(即具有码长大于六比特的霍夫曼码);Z4表示在数据序列Z的第四字段411中说明的数据(即霍夫曼码的码长);而Z5表示在数据序列Z的第五字段412中说明的数据(即解码结果)。其中,假设霍夫曼码(1101000)、码长“7”和解码操作的结果“41”被读取作为Z3、Z4和Z5。
根据第四字段411中说明的数据Z4,确定比特数Z4’(步骤76),该比特数Z4’规定从比特流10中将要读取的附加数据的比特数。从码长Z4中减去已经读取的预定比特数数据x的比特数Nj的值获得Z4’。其中,Z4’=1(=7-6)。
从比特流10中读取跟随具有六比特的预定比特数数据x的具有一比特(Z4’=1)的附加数据y(步骤78)。这是因为第二霍夫曼解码器106已经获得第一霍夫曼解码器105读取和输出的六比特数据X。
然后,具有六比特的预定比特数的数据与具有一比特的附加数据y连接,产生具有七比特的连接数据x|y(步骤80)。
然后,确定七比特连接数据x|y是否与第三字段410中存储的霍夫曼码Z3匹配(步骤82)。当匹配成功时,第四字段412的值Z5作为解码结果输出(步骤84)。读取位置RP还位移Z4’=1(步骤86)。因此,第二霍夫曼解码器106完成一次霍夫曼解码操作(步骤88)。该处理返回图7A所示的流程图的步骤52,进行下次霍夫曼解码操作。
另一方面,在步骤82中,当连接数据x|y与在上述第三字段410中存储的霍夫曼码Z3不匹配时,表示第二区域R2的将要读取行的参数i增加1(步骤90)。
随后,解码处理返回步骤74,下一行(i=1)上(即对应于图4所示的第一解码表100-1的第二区域R2的地址(1000001)的行)的数据Z=ROM B[1]被读取。随后,按照与上述步骤类似的步骤,确定连接数据x|y是否与霍夫曼码Z3匹配。
其中,由图4所示的第一解码表100-1可看出,在地址(1000000)中第一行的数据Z4的值和在地址(1000001)中第二行的数据Z4的值分别有相同的值“7”。因此,被读取的附加数据是相同的数据。在这种情况下,在图7B所示的流程图中,可以省略产生连接数据的步骤76至80。至此,确定前面行上的Z4值是否与当前读取行上的Z4值匹配的步骤可以设置在步骤74和步骤76之间。另外,制备这样的数据指示行,在该行中,数据Z4根据前面行的数据Z4的值改变其值;仅在表的指示行参数i的值等于这种数据时,才可以执行步骤76至80。
从第二区域R2的行中读取数据序列Z。如果需要,根据读取数据序列Z的第四字段411的数据Z4,可从比特流10中读取附加数据y。从而产生连接数据。从第二区域R2的第一行413(对应于最短的霍夫曼码)至最下面的行414(对应于最长的霍夫曼码)重复这些操作,直至连接数据x|y在步骤82中与霍夫曼码Z3匹配。当匹配成功时,数据序列的第五字段值Z5作为解码的结果被输出(步骤84)。
再参照图6所示的第二解码表100-2,说明当索引检测设备103从比特流10中检测索引数为2时的解码设备1000的操作。检测索引数2时的操作基本上与检测索引数1时的上述操作相同。因此,对于与索引数1检测相同情况的说明可用于这种情况。
再参照图1,将比特流10输入至索引检测设备103、第一霍夫曼解码器105和第二霍夫曼解码器106。索引检测设备103从输入比特流10中读取索引数2。表选择设备104根据索引检测设备103的输出(j=2)选择第二解码表100-2。
第一霍夫曼解码器105从比特流10中读取与索引数2对应的具有预定比特数N2=7的预定比特数数据x。然后,第一霍夫曼解码器105利用第二解码表100-2解码预定比特数的数据x。当第一霍夫曼解码器105完成解码时,第一霍夫曼解码器105将表示解码结果的解码信号输出给输出选择设备107。当解码未完成时,第一霍夫曼解码器105将读取的预定比特数的数据x输出给第二霍夫曼解码器106。第一霍夫曼解码器105还将表示利用预定比特数数据x是否完成一次霍夫曼解码操作的完成信号CPT输出给输出选择设备107。
第一霍夫曼解码器和第二霍夫曼解码器的操作按以下方式进行。
第一霍夫曼解码器105读取具有七比特的预定比特数数据x’,和读取由上述表选择设备104选择的第二解码表100-2的第一区域R1中包括的地址x’中的数据。例如,当x’的值为(0000001)时,读取地址617(0000001)。由图6所示的第二解码表100-2可看出,值“1”存储在第一区域R1的数据序列的第一字段607中。值“0”存储在第二字段608中。这对应于图5所示的解码表500的第一行504的内容。在这种情况下,预定比特数数据x’的七比特的最有效的一比特(0)完成霍夫曼码,以致输出表示值“真”的完成信号CPT。第二字段608中存储的值(0)作为解码信号被输出。根据第一字段607中存储的值(1),比特流10的读取位置位移一比特。
另一方面,当读取的具有七比特的预定比特数数据x’例如为(1111000)时,第一霍夫曼解码器105读取第二解码表100-2的第一区域R1的地址618(1111000)。其中,在第一字段607中,存储超过“7”的值“15”。这表示预定比特数数据(1111000)未完成霍夫曼码。换句话说,第一霍夫曼解码器105根据第二解码表100-2的第一区域R1对预定比特数的数据x’未进行霍夫曼解码。
在这种情况下,第一霍夫曼解码器105输出具有值“伪”的完成信号CPT。。第一霍夫曼解码器105还将读取的具有七比特的预定比特数的数据x’输出给第二霍夫曼解码器106。然后,比特流10的读取位置位移七比特。随后,第二霍夫曼解码器106进行第二解码处理。
当完成信号CPT为“伪”时,第二霍夫曼解码器106从第128地址603(10000000)中连续地读取第二解码表100-2的第一区域R2的数据序列。读取的数据序列包括具有码长大于七比特的霍夫曼码、霍夫曼码的码长和解码霍夫曼码的结果。从第128地址603(10000000)按霍夫曼码的码长顺序存储这些数据序列。其中,第三字段611存储霍夫曼码。第四字段612存储霍夫曼码的码长。第五字段613存储解码霍夫曼码的结果。第二霍夫曼解码器106根据读取的数据序列的第四字段612中存储的数据从比特流10中读取附加数据y。
在这种情况下,第四字段612存储值“8”,以便从比特流10中读取作为附加数据y的一个新比特,并且读取位置位移一比特。这是因为第一霍夫曼解码器105已经读取七比特数据。
第一霍夫曼解码器105将七比特的预定比特数数据x与附加数据y连接。然后,确定连接数据是否与第三字段611中存储的数据匹配。直至匹配成功,按照上述步骤,从表100-2的第二区域R2中连续地读取数据序列,如果需要,从比特流10中读取附加数据。当匹配成功时,第五字段613的值作为解码的结果输出。
当完成信号CPT为“真”时,输出选择设备107输出第一霍夫曼解码器105的解码信号,而当完成信号CPT为“伪”时,输出第二霍夫曼解码器106的解码信号。
在上文中,说明了从比特流10中检测索引数为1或2的情况。显然,当检测另一索引数j时,利用第j解码表,以类似的操作解码霍夫曼码。
如上所述,在实例1的解码设备1000中,根据解码表的第一区域R1,由第一霍夫曼解码器105解码具有比特数小于或等于包含于比特流10中的预定比特数的霍夫曼码。另一方面,根据解码表的第二区域R2,由第二霍夫曼解码器106解码具有比特数大于预定比特数的霍夫曼码。因此,通过对表的一次存取就可高速地解码出现频率高和比特数相对小的短霍夫曼码,同时利用表内相对小的空间范围可解码出现频率低和比特数相对大的长霍夫曼码。
在实例1中,预定数Nj(即由第一霍夫曼解码器105读取的比特数和解码表的第一区域R1的地址宽度)例如对N1设定为六,而对N2设定为七。例如,根据以下原因进行这种设定。
当预定数Nj的值大时,第一解码表100-1的第一区域R1的地址宽度也大。使用该区域R1解码的霍夫曼码的数量增加。显然通过对表的一次存取可解码这些霍夫曼码。在这种情况下,被高速解码的霍夫曼码数量因此增加。
另一方面,当预定数N1的值小时,利用第一区域R1高速解码的霍夫曼码数量也小,尽管解码表的整体规模降低,由此节省存储器。这是因为第一区域R1需要多个地址(例如,000000至000111),用以解码其比特数(例如,三)小于包括于读取的具有N1比特的预定比特数数据中的N1(例如,六)的霍夫曼码;而第二区域R2仅需要具有与霍夫曼码的数相同行数的地址空间。N1的减小值可以相对降低第一区域R1的规模和扩大第二区域R2的规模。结果,包括第一区域R1和第二区域R2的解码表的整体规模变得很小。
按照这种观点,考虑到将要以高速解码霍夫曼码的数量和解码表的规模,将N1设定为合适的值。通过考虑在霍夫曼编码手册中包括的各霍夫曼码的出现频率,可以根据统计特性来确定该值。特别地,当解码霍夫曼编码的比特流时,最好使具有出现频率高的短霍夫曼码包括在第一区域R1中,从而可按高速进行处理。尽管在第二区域R2中包括的具有低出现频率的长霍夫曼码不能高速地解码,但第二区域R2可以节省存储器。
当解码设备有多个解码表时,预定数N1和N2可以按以下规则来确定。例如,当它被统计证实上述第一霍夫曼编码手册的出现频率低于第二霍夫曼编码手册的出现频率时(即第二霍夫曼编码手册具有相对高的出现频率),最好可以按高速对已经用第二霍夫曼编码手册进行霍夫曼编码的比特流进行解码。在这种情况下,使用具有相对大值的N2提高利用第一区域R1通过对表的一次存取完成霍夫曼码的概率,产生高速处理。在这种情况下,由图6所示的解码表100-2可看出,第一区域R1有七比特的地址宽度,因而需要128地址的空间。
另一方面,当第一霍夫曼编码手册的出现频率低时,解码利用第一霍夫曼编码手册已经进行霍夫曼编码的比特流的概率低,从而一般不需要高速处理。因此,小的预定数N1可以导致表规模的降低。如图4所示,第一解码表100-1的第一区域R1的地址宽度例如是六比特。因此,尽管通过对表的一次存取完成一次霍夫曼解码操作的概率降低,但第一区域R1仅需要64地址的空间。
其中,应该指出,当预定数Nj被设定为极端值,例如对于与具有出现频率低的霍夫曼编码手册对应的解码表来说为零时,通过对表的一次存取完成一次霍夫曼解码操作的概率明显下降,从而解码可能需要大量的处理负载。此外,当Nj被设定为小于将要解码的霍夫曼码可以具有的最小比特数的值时,基本上没有仅利用第一区域R1就可进行解码的霍夫曼码。在这种情况下,使用第一区域R1和第二区域R2实质上并不具有可以获得高速解码和节省存储器的优点。因此,Nj最好至少被设定为等于或大于霍夫曼码的最小比特数的值。
如上所述,预定数Nj的值可以根据第j霍夫曼编码手册即对应于第j解码表的出现频率来确定。换句话说,当选择第a霍夫曼编码手册的频率等于或大于选择第b霍夫曼编码手册的频率时,可以确定Nj(1≤j≤m)满足Na≥Nb,其中,a、b和j是整数,而且1≤a≤m和1≤b≤m。
另一方面,预定数Nj可以按这样的方式来确定,第一霍夫曼解码器105解码在预定比特数的数据x中包括的相对短的霍夫曼码的概率等于或大于预定的概率。为此,假设PC是在利用第c霍夫曼编码手册进行霍夫曼编码中具有码长XC比特或更小的霍夫曼码的出现概率,预定数NC可以预定等于获得等于或大于一预定值的概率PC的XC,其中,c是满足1≤c≤m的整数。概率PC例如可以被设定为约90%。在这种情况下,根据统计特性按这样的方式确定各解码表的预定数Nj的值,利用各解码表的第一区域R1完成解码的概率约为90%。对已经利用任何霍夫曼编码手册进行编码的比特流来说,预定数Nj的适当选择可以用至少预定的概率进行高速霍夫曼解码。换句话说,预定比特数的数据可以用至少预定的概率来解码。这可以避免这样的情况,由于需要大量的处理性能,致使解码设备不能令人满意地运转。
由于上述理由,在实例1中,第一解码表100-1的预定数N1和第二解码表100-2的预定数N2被分别设定为六和七。这些预定数根据使用的霍夫曼编码手册、解码表等可以设定为任意数。
如上所述,在实例1的解码设备1000中,当利用与具有出现频率高的霍夫曼编码手册对应的解码表进行霍夫曼解码时,如果可能,那么通过对表的一次存取完成霍夫曼解码。当利用与具有出现频率低的霍夫曼编码手册对应的解码表进行霍夫曼解码时,通过对表的多次存取但使用尽量少的存储器来完成霍夫曼解码。实例1可以提供一解码设备,在该解码设备中,通过对表的一次存取高速解码具有出现频率高的霍夫曼码,而通过对表的多次存取但使用尽量少的存储器解码具有出现频率低的霍夫曼码。
(实例2)
在实例2中,说明解码比特流10(图2中所示)的解码设备,在该解码设备中,与实例1类似,利用多个霍夫曼编码手册进行霍夫曼编码。
图8表示本发明实例2的解码设备2000的结构。解码设备2000包括检测比特流10中索引数j的索引检测设备203;第一解码表200-1至第m解码表200-m;和选择第一解码表200-1至第m解码表200-m中的一个表的表选择设备204。
与实例1的解码表100-1至100-m类似,第一解码表200-1至第m解码表200-m对应于在编码中使用的各个霍夫曼编码手册。解码表200-1至200-m的各表包括第一区域R1和第二区域R2。下面详细说明解码表。
解码设备2000还包括第一霍夫曼解码器205、第二霍夫曼解码器206和输出选择设备207。第一霍夫曼解码器205解码其比特数小于或等于预定数的短的霍夫曼码。第二霍夫曼解码器206解码其比特数超过预定数Nj的长的霍夫曼码。输出选择设备207选择和输出由第一霍夫曼解码器205和第二霍夫曼解码器206解码的结果。
第一霍夫曼解码器205解码其比特数小于或等于预定数的码长相对短的霍夫曼码,该预定数包含于已利用解码表的第一区域R1从比特流10中读取的预定比特数数据x中。当实例2的第一霍夫曼解码器205未解码霍夫曼码时,与实例1的第一霍夫曼解码器105不同,第一霍夫曼解码器205将规定解码表的第二区域R2地址的地址指示器(pointer)ap输出给第二霍夫曼解码器206,而不是输出预定比特数的数据x。
另一方面,当第一霍夫曼解码器205未完成霍夫曼解码时,第二霍夫曼解码器206从比特流10中读取跟随预定比特数的数据x的附加数据y。与实例1的第二霍夫曼解码器106不同,第二霍夫曼解码器206并不连接附加数据y与预定比特数数据x来获得连接数据。根据解码表的第二区域R2,利用从第一霍夫曼解码器205输出的地址指示器ap规定的地址和附加数据y第二霍夫曼解码器206根据解码表的第二区域R2进行解码。
实例2的解码设备2000还解码利用单个霍夫曼编码手册已经编码的比特流。在这种情况下,任意地省略索引检测设备203和表选择设备204。仅需要一个与单个霍夫曼编码手册对应的解码表。
如上所述,利用解码表的不同区域,解码设备2000解码相对短的霍夫曼码和相对长的霍夫曼码。下面,详细说明在实例2的解码设备2000中使用的解码表。
图9表示实例2的第一解码表200-1。第一解码表200-1用于解码已利用第一霍夫曼编码手册编码的比特流,用在比特流10中包括的索引数1识别该霍夫曼编码手册。
在实例2中,图11所示的霍夫曼编码手册1100还用作第一霍夫曼编码手册。因此,第一解码表200-1对应于图4所示的实例1的第一解码表100-1。
如图9所示,第一解码表200-1包括第一区域R1和第二区域R2。第一区域R1包括从第0地址901(000000)至第63(26-1)地址902(111111)范围的具有六比特宽度的地址。第二区域R2包括从第64地址903(1000000)至第104地址904(1101000)范围的具有七比特宽度的地址。第一区域R1和第二区域R2分别在左侧上有地址列905和907,在右侧上有数据列906和908。数据列906和908存储与各地址对应的数据。
第一区域R1的数据列906包括第一字段909(数据列906的左列)和第二字段910(数据列906的右列)。第一字段909存储将要解码的霍夫曼码的码长。具体地说,当预定比特数的数据x有六比特时,在第一区域R1的地址x中的第一字段909存储L比特的长度,该L比特在六比特数据x的MSB侧,并且对应于在第一霍夫曼编码手册(图11示出)中包括的霍夫曼码(其中,L是满足1≤L≤6的任意整数,表示码长)。第二字段910存储解码霍夫曼码的结果或地址指示器(下一个地址)。
例如,第一字段909在地址901(000000)至地址911(000111)中存储相同的值“3”。第二字段910在地址(000000)至地址(000111)中存储相同的值“9”。六比特数据(000000)至(000111)是六比特的所有可能数据,该数据包括在其MSB侧的霍夫曼码(000)。解码霍夫曼码(000)的结果是“9”。地址901(000000)至地址911(000111)对应于图12所示的普通解码表1200的第一行1202(即对应于霍夫曼码(000)的行)。
此外,例如,第一字段909在地址912(110011)中存储值“6”。第二字段910在地址912(110011)中存储值“42”。六比特数据(110011)仅是六比特的可能数据,该数据在其MSB侧(即整个数据(110011))包括霍夫曼码(110011)。解码霍夫曼码(110011)的结果是“42”。因此,地址912(110011)对应于图12所示的解码表1200的第23行1206(即对应于霍夫曼码(110011)的行)。
如上所述,实例2的第一解码表200-1有与实例1的解码表100-1类似的结构,在该解码表中,各六比特数据行(即与地址901(000000)至地址912(110011)对应的行)包括任何霍夫曼码。
此外,例如,第一字段909在地址913(110100)中存储超过预定数Nj(=6)的值“15”,其中,与实例1相似,未完成六比特数据(110100)的霍夫曼码。但是,第二字段910存储(1000000)作为地址指示器。这使实例2的第一解码表200-1的第一区域R1不同于图4所示的实例1的第一解码表100-1的第一区域R1。
该地址指示器规定解码表200-1的第二区域R2中的一个地址。当第一霍夫曼解码器205未完成霍夫曼解码时,第二霍夫曼解码器206确定地址,根据从第一霍夫曼解码器205输出的地址指示器ap,首先从该地址读取该数据列。
具体地说,地址指示器ap指示第二区域R2的一个地址,该地址涉及解码霍夫曼码的第二区域R2的数据列中的数据,在该数据中,其最有效的六比特是由第一霍夫曼解码器205读取的具有六比特的预定比特数数据。实际上,地址指示器ap指示与用于解码这种霍夫曼码的最短霍夫曼码的数据有关的地址。例如,地址x(x是六比特数据)中的第二字段910的地址指示器规定区域的终点,在该区域中,存储与在其最有效的六比特数据为x的第一霍夫曼编码手册中包括的霍夫曼码之中具有最短码长的霍夫曼码有关的数据序列。因此,在实例2中,解码表按这样的方式来构成,即第二霍夫曼解码器206不总首先读取第二区域R2的第一行903(即对应于地址(1000000)的行),但仅涉及第二区域R2的一个区域,在该区域中,可以解码已由第一霍夫曼解码器205读取的包括预定比特数的数据的霍夫曼码。
另一方面,与实例1的解码表100-1类似,解码表200-1的第二区域R2包括具有七比特宽度的地址。解码表200-1的第二区域R2的数据列908包括第三字段914、第四字段915和第五字段916。
第二区域R2的第三字段914存储与包含在第一霍夫曼编码手册1100(图11中示出)中的霍夫曼码对应的具有码长大于六的数据。在实例2中,从霍夫曼码中删除与各霍夫曼码的最有效的N1(=6)比特对应的预定比特数数据x,同时自动地存储霍夫曼码(霍夫曼部分码)其余部分的霍夫曼部分码。第四字段915存储从霍夫曼码的码长(即在第三字段914中说明的霍夫曼部分码的码长)中减去N1(=6)得到的值。第五字段916存储连接预定比特数的数据x与附加数据y而获得的解码霍夫曼码的结果。这些存储的数据以霍夫曼码长度增加的顺序存储在第64地址903(地址(1000000))至第104地址904(地址(1101000))中。第二区域R2的第三字段914的部分917表示在要被解码的霍夫曼码中包括的最有效的N1比特数据(预定比特数的数据x)。尽管为了说明该表,该部分917设置在图9中,但实际的表不需要该部分917。
例如,在解码表200-1的第二区域R2的第一行的第64地址903(地址(1000000))中的第三字段914、第四字段915和第五字段916分别存储霍夫曼码(0)、霍夫曼部分码的码长“1”和解码操作的结果“41”。这些存储的数据对应于图12所示的解码表1200的第24行1207(即对应于霍夫曼码(1101000)的行)的内容。随后,第65地址918(地址(1000001))至第104地址904(地址(1101000))分别存储图12所示的解码表1200的第25行1208(即对应于霍夫曼码(1101001)的行)至第64行1203(即对应于霍夫曼码(1111111111)的行)的内容。
其中,特别说明如上述那样构成的第一区域R1和第二区域R2之间的关系。
例如,参照第一解码表200-1的第一区域R1的地址913(110100),在地址(110100)的第一字段909说明表示未完成霍夫曼解码的值“15”;而第二字段919说明地址指示器(1000000)。第二区域R2有说明与包括预定比特数的数据(110100)的霍夫曼码有关的数据的区域(目标区域),该霍夫曼码也是第一区域R1的地址(即霍夫曼码包括(110100),作为其最有效的六比特)。例如,与第一区域R1的地址(110100)对应的目标区域包括两行903和918(即地址(1000000)和(1000001))。
在这种情况下,目标区域中的任何地址都有七比特。如果考虑第二霍夫曼解码器206的操作,那么目标区域中的最上面的行(即目标区域的终点)最好由地址指示器来规定。因此,在地址913(110100)的第二字段910中的地址指示器被设定为(1000000)。
例如,参照第一区域R1的地址902(111111),该地址中的第二字段910说明地址指示器(1011111)。其中,第二区域R2有目标区域,该区域表示与包括预定比特数数据(111111)的霍夫曼码有关的数据,该霍夫曼码也是第一区域R1的地址(即霍夫曼码包括(111111),作为其最有效的六比特)。该目标区域包括地址919(1011111)至地址904(1101000)。
类似地,按这样的方式设定第二字段910的地址指示器至(1011111),即地址指示器涉及目标区域的最短的霍夫曼码,并指示最上面行的地址(即目标区域终点的行)。
下面说明第二解码表200-2。第二解码表200-2有与上述第一解码表200-1相似的结构。
图10表示第二解码表200-2。解码表200-2用于解码已利用与索引数2对应的第二霍夫曼编码手册编码的霍夫曼码。在实例2中,假设第二霍夫曼编码手册(未示出)与实例1中的霍夫曼编码手册相似。第二解码表200-2对应于图6所示的实例1的第二解码手册100-2。如上所述,图5表示以霍夫曼码长增加的顺序重新排列第二霍夫曼编码手册(未示出)的行获得的普通解码表500。解码表500的左列501表示霍夫曼码。中间列502表示霍夫曼码的码长。右列503表示解码霍夫曼码的结果。
从图10可看出,第二解码表200-2包括第一区域R1和第二区域R2。第一区域R1包括第0地址1001(0000000)至第127(=27-1)地址1002(1111111)范围的具有七比特宽度的地址。第二区域R2包括第128地址1003(10000000)至第178地址1004(10110010)范围的具有八比特宽度的地址。
与第一解码表200-1类似,在第二解码表200-2中,第一区域R1包括第一字段1005和第二字段1006。第二区域R2包括第三字段1007、第四字段1008和第五字段1009。
假设x’是具有七比特的数据,在第一区域R1的地址x’中的第一字段1005存储L比特的长度,该L比特在七比特数据(地址)x’的MSB侧,对应于在第二霍夫曼编码手册中包括的霍夫曼码(其中,L是满足1≤L≤7的任意整数,表示码长)。第二字段1006存储解码霍夫曼码的结果。
例如,第一字段1005在地址1001(0000000)至地址1010(0111111)中存储相同的值“1”。第二字段1006在地址1001(0000000)至地址1010(0111111)中存储相同的值“0”。七比特数据(0000000)至(0111111)是七比特的所有可能的数据,该数据包括作为其最有效的一个比特的霍夫曼码(0)。“0”是解码霍夫曼码(0)的结果。地址1001(0000000)至地址(0111111)对应于图5所示的解码表500的第一行504(即对应于霍夫曼码(0)的行)。
此外,例如,第一字段1005在地址1011(1110100)中存储值“7”。第二字段1006在地址1011(1110100)中存储值“3”。七比特数据(1110100)的最有效七比特(即整个数据(1110100))完成霍夫曼码(1110100)。解码霍夫曼码(1110100)的结果是“3”。因此,地址1011(1110100)对应于图5所示的解码表500的第13行505(即对应于霍夫曼码(1110100)的行)。
此外,例如,第一字段1005在地址1012(1110101)中存储超过“7”的值“15”。这表示七比特数据(1110101)未完成霍夫曼码。第二字段1006说明在第二解码表200-2的第二区域R2中规定地址的地址指示器(10000000)。与上述解码表200-1中所示的地址指示器相似,该地址指示器指示第二区域R2的一个地址。
具体地说,地址指示器表示在第二区域R2中说明的数据中的一个地址,该第二区域涉及解码霍夫曼码的数据,该霍夫曼码最有效的七比特是已由第一霍夫曼解码器205读取的具有七比特的预定比特数的数据。特别地,地址指示器指示与用于解码这类霍夫曼码的最短霍夫曼码的数据有关的地址(即目标区域的终点)。
另一方面,解码表200-2的第二区域R2包括具有八比特宽度的地址。与实例1中的解码表相似,解码表200-2的第二区域R2的数据列分别包括第三字段1007、第四字段1008和第五字段1009。
第二区域R2的第三字段1007存储与在第一霍夫曼编码手册1100(图11示出)中包括的霍夫曼码对应的具有码长大于七的数据。从霍夫曼码中删除与各霍夫曼码的最有效的N2(=7)比特对应的预定比特数数据x,同时自动地存储霍夫曼码的其余部分(霍夫曼部分码)。第四字段1008存储从霍夫曼码的码长中减去N2(=7)产生的值(即在第三字段1007中说明的霍夫曼部分码的码长)。第五字段1009存储解码霍夫曼码的结果。这些存储的数据以霍夫曼码长度增加的顺序存储在第128地址1003(地址(10000000))至第178地址1004(地址(10110010))中。第二区域R2的第三字段1007的部分1013指示包含于要被解码的霍夫曼码中的最有效N2(=7)比特数据(预定比特数的数据x’)。过程的实际表不需要说明部分1013。
例如,在第128地址1003(解码表200-2的第二区域R2的第一行的地址(10000000))中的第三字段1007、第四字段1008和第五字段1009分别存储霍夫曼码(0)、霍夫曼部分码(0)的码长和解码操作的结果“19”。这些存储数据对应于图5所示的解码表500的第14行506的内容(即与霍夫曼码(11101010)对应的行))。随后,第129地址1005(地址(10000001))至第178地址1004(地址10110010)存储图5所示的解码表500的第15行507(即对应于霍夫曼码(11101011))至第64行(即对应于霍夫曼码(111111111111))的各自内容。
例如,参照第二解码表200-2的第一区域R1的地址1012(1110101),在地址1012(1110101)中的第一字段1005说明表示未完成霍夫曼解码的值“15”;第二字段1006说明地址指示器(10000000)。第二区域R2有说明相对于包括预定比特数的数据(1110101)的最短霍夫曼码数据的区域(目标区域),作为也是第一区域R1地址的其最有效的七比特。最上面的行(即目标区域的终点)有地址(10000000)。
例如,参照第二解码表200-2的第一区域R1的地址1002,在该地址中的第二字段1006说明地址指示器(10100100)。其中,第二区域R2有目标区域,说明与包括预定比特数的数据(1111111)的最短霍夫曼码有关的数据,作为其最有效的七比特。最上面行的地址为(10100100)。
根据与实例1中所述原因相同的原因(例如,统计特性),在解码设备2000中预定预定数Nj(例如,在实例2中,N1=6和N2=7)。
下面说明解码设备2000的操作。
再参照图8,将已霍夫曼编码的比特流10输入至索引检测设备203和第一霍夫曼解码器205及第二霍夫曼解码器206中。在图8中,粗线箭头表示数据的流动,而细线箭头表示控制信号的流动。
索引检测设备203检测来自比特流10的索引数j,将索引数j输出给表选择设备204(其中,j是满足1≤j≤m的任意整数;而m是表示在解码设备2000中包括的解码表的数目的任意整数)。表选择设备204根据接收的索引数j选择第j解码表。例如,当索引检测设备203检测的索引数为“1”时,表选择设备204选择第一解码表200-1。
索引检测设备203还将索引数j输出给第一霍夫曼解码器205。根据索引数j,第一霍夫曼解码器205确定表示从比特流10中将要读取的数据的比特数的预定数Nj(其中Nj是由j确定的任意整数)。预定数Nj的值在由表选择设备204选择的第j解码表中被确定为等于第一区域R1的地址宽度。例如,当检测的索引数j为“1”时,第一霍夫曼解码器205确定预定数N1为“6”。在实例2中,在第一霍夫曼解码器205中预定索引数j和预定数Nj之间的关系。基于接收的索引数j确定预定数Nj的方法不限于此。
然后,第一霍夫曼解码器205根据预定数Nj从比特流10中读取具有Nj比特的预定比特数的数据x。随后,利用第j解码表的第一区域R1霍夫曼解码读取的预定比特数数据x。具体地说,通过比较被读取的具有Nj比特的预定比特数数据与在第一区域R1中包括的具有Nj比特宽度的地址,第一霍夫曼解码器205进行解码。
例如,当检测的索引数j为“1”和读取具有六比特数据的预定比特数的数据x为(000001)时,第一霍夫曼解码器205读取在第一解码表200-1的第一区域R1的地址920(000001)中的数据。从图9所示的解码表可看出,第一字段909存储值“3”。第二字段910存储值“9”。因此,可以获得这样的信息,读取六比特数据x的最有效的三比特完成霍夫曼码并获得解码数据x的结果“9”。
如上所述,当相对短的霍夫曼码被解码时,第一霍夫曼解码器205将表示利用预定比特数的数据x完成一次霍夫曼解码操作的具有“真”值的完成信号CPT输出给第二霍夫曼解码器206和输出选择设备207。第一霍夫曼解码器205还将解码的结果输出给输出选择设备207。将比特流10的读取位置位移对应于第一字段909中说明的解码过的霍夫曼码的码长的比特数。
再有,在实例2中,第一霍夫曼解码器205解码包括小于或等于在具有Nj比特的预定比特数的数据x中包含的预定数Nj的相对短的霍夫曼码。这是因为第一区域R1限定在预定比特数的数据x和在预定比特数的数据x中包括的解码霍夫曼码结果之间的关系。这种解码处理仅需要对解码表进行一次存取。因此,这种短霍夫曼码可以高速解码。
例如,当检测的索引数j等于“1”和读取具有六比特的预定比特数的数据x是(110100)时,第一霍夫曼解码器205读取在第一解码表200-1的第一区域R1的地址913(110100)中的数据。从图9所示的解码表200-1中可看出,第一字段909存储值“15”。第二字段910存储地址指示器(1000000)。在这种情况下,由于第一字段909中的值“15”大于预定数N1(=6),所以确定预定比特数的数据(110100)未完成霍夫曼码。
另一方面,当未完成对具有Nj比特的预定比特数数据x的解码时,第一霍夫曼解码器205将表示解码未完成的具有“伪”值的完成信号CPT输出给第二霍夫曼解码器206和输出选择设备207。第一霍夫曼解码器205还将解码表200-1的第二字段910中说明的地址指示器ap输出给第二霍夫曼解码器206。读取位置位移预定数Nj比特。
在实例2的解码设备2000中,与实例1不同,已经由第一霍夫曼解码器205读取的预定比特数的数据x本身未输出给第二霍夫曼解码器206。以后,当预定比特数的数据x未被第一霍夫曼解码器205解码时,第二霍夫曼解码器206就开始操作。
当完成信号CPT表示“伪”时,第二霍夫曼解码器206读取从第一霍夫曼解码器205接收的由地址指示器ap规定的地址中解码表的第二区域R2的数据列。
然后,基于已经读取的数据列的第四字段915中说明的数据(即霍夫曼码部分的码长)从比特流10中读取跟随预定比特数数据x的附加数据y。
利用第j解码表的第二区域R2,第二霍夫曼解码器206霍夫曼解码附加数据y,将解码的结果输出给输出选择设备207。具体地说,第二霍夫曼解码器206进行匹配测试,在该测试中,附加数据y与第二区域R2的第三字段914中说明的霍夫曼部分码进行比较。
当匹配成功时,第二霍夫曼解码器206将在第五字段916中说明的数据作为解码结果输出给输出选择设备207。
另一方面,当匹配不成功时,第二霍夫曼解码器206读取在与当前行(即与地址指示器ap规定的地址对应的行)相邻的解码表的第二区域R2的行上的数据。然后,进行相似的匹配测试。匹配测试从地址指示器规定的地址开始重复,直至附加数据y匹配霍夫曼部分码。在该处理中,如果需要,新的附加数据被连续地读取。
当检测的索引数j为“1”和由第一霍夫曼解码器205从比特流10中读取的六比特数据为(111110)时,第一霍夫曼解码器205输出在第一区域R1的地址(111110)的第二字段910中说明的地址指示器(1011010)。根据地址指示器,第二霍夫曼解码器206读取第二区域R2的地址922(1011010)中的数据。其中,第三字段914存储霍夫曼部分码(00),第四字段915存储码长(2),而第五字段916存储解码操作的结果“15”。根据在第四字段915中存储的数据,第二霍夫曼解码器206从比特流10中读取具有两比特的附加数据y。
例如,假设最近读取的两比特附加数据y为(11)。在地址922(1011010)中的第三字段914存储(00),作为与附加数据(11)不匹配的霍夫曼部分码。
然后,第二霍夫曼解码器206读取在第二区域R2的地址922(1011010)下面一行地址923(1011011)中存储的数据。其中,第四字段915存储(2),以便不从比特流10中重新读取附加数据y。这是因为两比特附加数据已经从比特流10中读取。
在这种情况下,第二区域R2的地址923中的第三字段914存储与附加数据(11)不匹配的(01)。
然后,第二霍夫曼解码器206读取在第二区域R2的地址923(1011011)下面一行地址924(1011100)中存储的数据。其中,第四字段915存储(2),以便不从比特流10中重新读取附加数据y。在这种情况下,第二区域R2的地址924中的第三字段914存储仍不匹配附加数据(11)的(10)。
然后,第二霍夫曼解码器206读取在第二区域R2的地址924(1011100)下面一行地址925(1011101)中存储的数据。其中,第四字段915存储(3),以便不从比特流10中新读取具有一(=3-2)比特的附加数据。比特流10的读取位置位移一比特。这是因为当地址922(1011010)中的数据被读取时,已经读取两比特附加数据。
假设已经新读取的具有一比特的另一附加数据y为(0)(即整个附加数据为(110))。其中,地址925(1011101)中的第三字段914表示匹配附加数据y的(110)。
另一方面,假设另一附加数据y为(1)(即整个附加数据为(111))。在这种情况下,当带有地址926(1011110)的下一行被读取时,匹配将成功。
当按这种方式匹配成功时,输出第五字段916中的值,作为解码操作的结果。
当完成信号为“真”时,输出选择设备207输出从第一霍夫曼解码器205接收的解码操作的结果,作为输出信号,当完成信号为“伪”时,输出从第二霍夫曼解码器206接收的解码操作的结果,作为输出信号。
以这种方式,可以解码包括预定比特数的数据和附加数据的连接数据。从上述说明中可知,在实例2中实际上不产生连接数据。
与实例1类似,上述第一霍夫曼解码器205和第二霍夫曼解码器206的操作可以通过计算机程序来完成。实例2的计算机程序按照在以下各点与图7A和7B所示的流程图不同的流动来进行。
具体地说,在图7A所示的流程图的由第一霍夫曼解码器205进行处理的步骤68中,将第二字段910中的数据Z2输出给第二霍夫曼解码器206,而不是输出预定比特数的数据x。
在由第二霍夫曼解码器206进行的处理中,不需要计算在图7B所示的流程图的步骤76和78中读取的附加数据y的比特数Z4。代替这种计算,从读取位置RP中读取具有Z4比特的附加数据y。此外,不需要进行在图7B所示的流程图的步骤80和823中所示的产生连接数据x|y和比较连接数据x|y与Z3,附加数据y本身仅与Z3比较。
如上所述,在实例2中可以获得更简单的解码。
下面对由索引检测设备203检测的索引数为“2”时的情况进行说明。
当已经检测出索引数2时,表选择设备204选择第二解码表200-2(图10),而第一霍夫曼解码器205确定预定数N2为“7”。
当已经由第一霍夫曼解码器205读取的具有七比特的预定比特数数据x’为(0000001)时,第一霍夫曼解码器205读取在第二解码表200-2的第一区域R1的地址(0000001)中的数据。从图10所示的第二解码表200-2中可看出,第一字段1005存储值“1”。第二字段1006存储值“0”。因此,获得这样的信息,七比特数据x’通过最有效的一比特(0)完成霍夫曼码,且解码操作的结果为“0”。
在这种情况下,第一霍夫曼解码器205将表示一个霍夫曼解码操作用指定的比特数据完成的具有值“真”的完成信号CPT输出给第二霍夫曼解码器206和输出选择设备207。第一霍夫曼解码器205将在第二字段1006中存储的解码操作的结果“0”输出给输出选择设备207。根据第一字段1005中表示的数据,比特流10的读取位置位移一比特。
另一方面,当已经读取的具有七比特的预定比特数的数据x’为(1111101)时,第二解码表200—2的第一区域Rl的地址1013中的数据被读取。其中,从图10所示的第二解码表200-2中可看出,第一字段1005存储值“15”。第二字段1006存储地址指示器(10010110)。在这种情况下,第一字段1005中的值“15”大于预定的数N2(=7),因此确定利用预定比特数数据(1111101)未完成霍夫曼解码。
在这种情况下,第一霍夫曼解码器205将表示解码未完成的具有值“伪"的完成信号CPT输出给第二霍夫曼解码器206和输出选择设备207。第一霍夫曼解码器205将在第二解码表200—2的第一区域R1的第二字段1006中说明的地址指示器(10010110)输出给第二霍夫曼解码器206。此外,读取位置位移预定数七比特。
利用地址指示器,第二霍夫曼解码器206读取第二区域R2的地址1014(10010110)中的数据。其中,第三字段1007存储霍夫曼部分码(00),第四字段1008存储码长(2),而第五字段1009存储解码操作“50”的结果。根据在第四字段1008中存储的数据,第二霍夫曼解码器206从比特流10中读取具有两比特的附加数据y。
例如,假设最新读取的两比特附加数据y为(10)。地址1014(10011010)中的第三字段1007存储(00),作为未匹配附加数据(10)的霍夫曼部分码。
然后,第二霍夫曼解码器206读取在第二区域R2的地址1014(10010110)下面一行的地址1015(10010111)中存储的数据。其中,第四字段1008存储(2),以便不从比特流10中新读取附加数据y。这是因为两比特附加数据(10)已经从比特流10中读取。
在这种情况下,第二区域R2的地址1015中的第三字段1007存储未与附加数据(10)匹配的(01)。
然后,第二霍夫曼解码器206读取在第二区域R2的地址1015(10010111)下面一行的地址1016(10011000)中存储的数据。其中,第四字段1008存储(3),以便从比特流10中新读取具有一比特(=3-2)的附加数据y。比特流10的读取位置位移一比特。这是因为当地址1014(10010110)中的数据被读取时,两比特附加数据(10)已经被读取。
假设具有已经新读取的一比特的另一附加数据y为(0)(即整个附加数据y为(100))。其中,地址1016(10011000)中的第三字段1007表示匹配附加数据y的(100)。
另一方面,假设另一附加数据y为(1)(即整个附加数据y为(101))。在这种情况下,当具有地址1017(10011001)的下一行被读取时,匹配将成功。
当按这种方式匹配成功时,第五字段1009中的值被输出,作为解码操作的结果。
当完成信号CPT为“真”时,输出选择设备207输出第一霍夫曼解码器205的解码信号,当完成信号CPT为“伪”时,就输出第二霍夫曼解码器206的解码信号。
如上所述,在实例2中,与实例1类似,当利用与具有高出现频率的霍夫曼编码手册对应的解码表进行霍夫曼解码时,如果可能,由对表的一次存取完成霍夫曼解码。当利用与具有低出现频率的霍夫曼编码手册对应的解码表进行霍夫曼解码时,由对表的多次存取完成霍夫曼解码,但尽量使用小的存储器。实例2可以提供霍夫曼解码,在该霍夫曼解码中,通过对表的一次存取按高速度解码具有高出现频率的霍夫曼码(即码长短),而通过对表的多次存取解码具有低出现频率的霍夫曼码(即码长长),但尽量使用小的存储器。
在实例2的解码设备2000中,表示霍夫曼部分码的第二区域R2的第三字段中说明的数据可通过从霍夫曼码中删除最有效的Nj比特来获得。在表示霍夫曼码的码长的第四字段中说明的数据可通过从原来的霍夫曼码的码长中减去Nj来获得。结果,第二区域R2需要较少的容量。
在实例2的解码设备2000中,第二区域R2中的匹配测试需要附加数据和具有更小比特数的霍夫曼部分码。因此,这可以按比解码更长霍夫曼码时更高的速度来进行。在实例2中,根据在第一区域R1中包括的地址指示器来确定被最初读取的地址,从而省略读取解码所不需要的数据列部分的步骤。这进一步提高了解码的效率。
按照本发明,利用解码表的不同区域,分别解码在具有小于或等于预定比特数数据中包括的相对短的码和在具有比预定数量更大比特数据中包括的相对长的码。这种技术可以使相对短的码按高速度来解码,而解码相对长的码的表有尽量小的存储器。因此,该解码设备可以按高速度进行解码,同时节省存储器。
特别地,当本发明的解码设备用于解码霍夫曼码的解码设备时,此解码设备可以高速度同时节省存储器地进行解码。
对于本领域技术人员来说,在不脱离本发明范围和精神的情况下,显然可以容易地进行各种改进。因此,所附权利要求书的范围不限于上述说明所述的范围,而为各权利要求所广泛建立的范围。
Claims (10)
1.一种解码数据流的解码设备,包括:
包括第一区域和第二区域的解码表;
第一解码器;和
第二解码器,
其中:
第一区域限定具有预定数量的比特的第一数据和解码具有小于或等于该预定数量的比特的第一数据的一部分的结果之间的关系;
第二区域限定连接第一数据与带有附加比特的第二数据而获得的连接数据和解码连接数据的结果之间的关系;
第一解码器从数据流中读取第一数据;根据第一区域解码第一数据的该部分;确定第一数据该部分的解码是否完成;当第一数据该部分的解码完成时,输出第一数据该部分的解码结果;和
当第一数据该部分的解码未完成时,第二解码器从数据流中读取第二数据;将第一数据与第二数据连接,产生连接的数据;根据第二区域解码连接数据;并输出该连接数据的解码结果。
2.如权利要求1的解码设备,还包括:
多个解码表;和
选择多个解码表中的一个解码表的选择器;
其中:
根据对多个解码表中的每一个选择的频率,预先确定作为与多个解码表中的每一个对应的第一数据的比特数的该预定数量。
3.如权利要求2的解码设备,其中,按这样的方式预先确定与多个解码表中的每一个对应的第一数据的比特数,即第一解码器完成第一数据该部分解码的概率等于或大于预定的概率。
4.如权利要求1的解码设备,其中:
第一区域包括:
第一字段,用于表示第一数据该部分的码长或表示未完成对第一数据该部分解码的码;和
第二字段,用于表示第一数据该部分的解码结果;
利用第一数据作为地址存取第一区域;和
第二区域包括:
表示连接数据的第三字段;
表示连接数据码长的第四字段;和
表示解码连接数据的结果的第五字段。
5.如权利要求1的解码设备,其中,数据流包括多个霍夫曼码;和
第一解码器和第二解码器解码多个霍夫曼码。
6.一种解码数据流的解码设备,包括:
包括第一区域和第二区域的解码表;
第一解码器;和
第二解码器;
其中:
第一区域限定具有预定数量的比特的第一数据和解码具有小于或等于该预定数量的比特的第一数据的一部分的结果之间的关系;
第二区域限定具有附加比特的第二数据和解码连接数据的结果之间的关系,而连接数据通过第一数据与第二数据的连接来获得;
第一解码器从数据流中读取第一数据;根据第一区域解码第一数据的该部分;确定第一数据该部分的解码是否完成;当第一数据该部分的解码完成时,输出第一数据该部分的解码结果;当第一数据该部分的解码未完成时,规定第二区域的地址;
当第一数据该部分的解码未完成时,第二解码器从数据流中读取第二数据;根据由第一解码器规定的地址和第二数据输出连接数据的解码结果。
7.如权利要求6的解码设备,还包括:
多个解码表;和
选择多个解码表中的一个解码表的选择器;
其中:
根据对多个解码表中的每一个选择的频率,预先确定与多个解码表中的每一个对应的第一数据的比特数。
8.如权利要求7的解码设备,其中,按这样的方式预先确定与多个解码表中的每一个对应的第一数据的比特数,即第一解码器完成第一数据该部分解码的概率等于或大于预定的概率。
9.如权利要求6的解码设备,其中:
第一区域包括:
第一字段,用于表示第一数据该部分的码长或表示未完成对第一数据该部分解码的码;和
第二字段,用于表示第一数据该部分的解码结果或规定第二区域地址的指示器;
利用第一数据作为地址存取第一区域;和
第二区域包括:
表示连接数据的第三字段;
表示连接数据码长的第四字段;和
表示解码连接数据的结果的第五字段。
10.如权利要求6的解码设备,其中,第一解码器规定与第二数据对应的地址,该第二数据具有与第一数据有关的多个地址中的最短长度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP90286/1999 | 1999-03-30 | ||
JP11090286A JP2000286717A (ja) | 1999-03-30 | 1999-03-30 | デコード装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1268810A CN1268810A (zh) | 2000-10-04 |
CN1187902C true CN1187902C (zh) | 2005-02-02 |
Family
ID=13994294
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB001057030A Expired - Fee Related CN1187902C (zh) | 1999-03-30 | 2000-03-30 | 解码设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6297754B1 (zh) |
EP (1) | EP1041721A3 (zh) |
JP (1) | JP2000286717A (zh) |
CN (1) | CN1187902C (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6603413B2 (en) * | 2001-02-07 | 2003-08-05 | Canon Kabushiki Kaisha | Variable-length decoding apparatus and method |
US6778107B2 (en) * | 2001-08-30 | 2004-08-17 | Intel Corporation | Method and apparatus for huffman decoding technique |
US7428341B2 (en) * | 2003-05-27 | 2008-09-23 | Zaxel Systems, Inc. | Method and apparatus for lossless data transformation with preprocessing by adaptive compression, multidimensional prediction, multi-symbol decoding enhancement enhancements |
US7415162B2 (en) | 2003-05-27 | 2008-08-19 | Zaxel Systems, Inc. | Method and apparatus for lossless data transformation with preprocessing by adaptive compression, multidimensional prediction, multi-symbol decoding enhancement enhancements |
US20050182902A1 (en) * | 2004-02-12 | 2005-08-18 | Shuji Miyasaka | Signal processing apparatus |
US7757051B2 (en) * | 2004-05-20 | 2010-07-13 | Broadcom Corporation | Dynamic memory reconfiguration for signal processing |
CN101213754B (zh) * | 2005-05-13 | 2013-11-13 | 高通股份有限公司 | 用于改进的多媒体解码器的方法和设备 |
TWI324736B (en) * | 2006-11-01 | 2010-05-11 | Sunplus Technology Co Ltd | Searial transmission controller, searial transmission decoder and searial transmission method thereof |
WO2013132590A1 (ja) * | 2012-03-06 | 2013-09-12 | 富士通株式会社 | プログラム、情報処理装置およびデータ生成方法 |
CN105721105B (zh) * | 2016-01-22 | 2020-06-02 | 广州市毅航互联通信股份有限公司 | 一种基于字节流的解码方法 |
CN107682018B (zh) * | 2017-09-28 | 2021-06-04 | 西安万像电子科技有限公司 | 解码方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2746109B2 (ja) * | 1994-03-09 | 1998-04-28 | 日本電気株式会社 | ハフマン符号復号化回路 |
WO1996033558A1 (en) * | 1995-04-18 | 1996-10-24 | Advanced Micro Devices, Inc. | Method and apparatus for hybrid vlc bitstream decoding |
JP3816957B2 (ja) * | 1996-03-15 | 2006-08-30 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ディジタル情報信号符号化方法および装置 |
-
1999
- 1999-03-30 JP JP11090286A patent/JP2000286717A/ja not_active Withdrawn
-
2000
- 2000-03-27 EP EP00106553A patent/EP1041721A3/en not_active Withdrawn
- 2000-03-30 CN CNB001057030A patent/CN1187902C/zh not_active Expired - Fee Related
- 2000-03-30 US US09/538,674 patent/US6297754B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1041721A3 (en) | 2004-03-24 |
EP1041721A2 (en) | 2000-10-04 |
JP2000286717A (ja) | 2000-10-13 |
US6297754B1 (en) | 2001-10-02 |
CN1268810A (zh) | 2000-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1175579C (zh) | 编码器 | |
CN1159854C (zh) | 交织地址生成装置及其方法 | |
CN1235343C (zh) | 交织方法、交织装置以及存储交织模式产生程序的媒体 | |
CN1187902C (zh) | 解码设备 | |
CN1153354C (zh) | 纠错编码器、纠错解码器和具有纠错码的数据传输系统 | |
CN1106710C (zh) | 向量量化装置和方法 | |
CN1494767A (zh) | 压缩/解压缩结构化文档的方法 | |
CN2631163Y (zh) | 一种时分双工/码分多址(tdd/cd ma)通信系统 | |
CN1543223A (zh) | 图像编码装置及图像译码装置 | |
CN1217492C (zh) | 表面声波滤波器和使用该滤波器的通信设备 | |
CN1684492A (zh) | 图像词典作成装置、编码装置、图像词典作成方法 | |
CN1226039A (zh) | 指数计算装置和解码装置 | |
CN1379366A (zh) | 图像处理装置和方法 | |
CN1330455A (zh) | Turbo(涡轮)码的译码电路和编码译码电路 | |
CN1518350A (zh) | 帧数据修正量输出装置、修正装置和方法、显示装置 | |
CN1021004C (zh) | 在剩余数系统中用于编码和译码数据的方法和装置 | |
CN1023353C (zh) | 录音和重放的方法和设备 | |
CN1427548A (zh) | 迭代链接码解码电路以及使用该电路的编码/解码系统 | |
CN1669071A (zh) | 用于在音频代码的编码/解码处理之间转换代码的方法和装置以及使用该方法和装置的存储介质 | |
CN1390391A (zh) | 并行涡轮编码器实施方案 | |
CN1154238C (zh) | 交织地址生成装置及交织地址生成方法 | |
CN1768480A (zh) | 编码装置和方法、编码装置和方法、计算机程序以及记录介质 | |
CN1878312A (zh) | 用于解码比特流的装置和方法 | |
CN1839550A (zh) | 解码可变长度前缀码的方法 | |
CN101039435A (zh) | 在图象编码过程中实现自适应扫描的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C06 | Publication | ||
PB01 | Publication | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20050202 Termination date: 20180330 |
|
CF01 | Termination of patent right due to non-payment of annual fee |