CN100581258C - 霍夫曼解码方法和霍夫曼解码装置 - Google Patents
霍夫曼解码方法和霍夫曼解码装置 Download PDFInfo
- Publication number
- CN100581258C CN100581258C CN 200610163668 CN200610163668A CN100581258C CN 100581258 C CN100581258 C CN 100581258C CN 200610163668 CN200610163668 CN 200610163668 CN 200610163668 A CN200610163668 A CN 200610163668A CN 100581258 C CN100581258 C CN 100581258C
- Authority
- CN
- China
- Prior art keywords
- code
- huffman
- sign indicating
- masking piece
- bit stream
- 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
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及一种霍夫曼解码方法和霍夫曼解码装置。该方法包括取得对应压缩比特流的霍夫曼表,对霍夫曼表中的码以及压缩比特流的16位进行某些处理而获得多个新霍夫曼码,其中每一新霍夫曼码包含可变长度字码,判断压缩比特流的16位与哪一个新霍夫曼码相同,以及输出对应可变长度字码的尺寸符号码。由于本发明一次处理多组霍夫曼表数据的对比,相较于一次只能对一个位解码的已知二元树搜寻法,确实能大幅提升解码的速度。
Description
技术领域
本发明涉及一种解码方法,尤其涉及霍夫曼(huffman)解码方法。
背景技术
霍夫曼编码被广泛地使用于数据压缩与电信的领域中,包括例如,JPEG图像文件、MPEG影音文件的压缩。一般在待压缩的原始数据中,相同的符号(例如A、B、C等等)会有重复发生的情形,而霍夫曼编码的基本原则是使用长短不同的可变字码(codeword)来代表原始数据中的每个符号(symbol)。其中出现次数多的符号的可变字码的长度比出现次数少的可变字码的长度小。例如在原始数据为ABCBCDCDDD的情况中,代表符号A的可变字码是,例如“11111111”,而B的可变字码是“00000”,C的可变字码是“111”,而代表D的可变字码是“00”。其中因为D的出现次数最多,所以代表D的可变字码的长度(即位数)最短,而A的出现次数最少,因此A的可变长度字码的长度是所有符号中是最长的,以此达成数据压缩的效果。
经过霍夫曼编码之后的文件必需经过解压缩的程序才能让使用者取得原始的数据内容。经由霍夫曼编码后的文件通过对应的霍夫曼表而被解码。请参阅图1,其为已知解码所需的霍夫曼表,包括地址(Address)字段、符号字段、尺寸(Size)字段以及可变长度字码字段等字段。其中地址字段代表可变长度字码所在的存储器地址,符号字段代表原始的被编码的符号,尺寸字段则代表可变长度字码的位数量,而可变长度字码则代表被编码的符号的霍夫曼码。以图1中的符号J为例,其所对应的可变长度字码为“0110110”,共7个位,因此尺寸为7。当输入的待解码数据为“0110110”时,霍夫曼解码器根据此霍夫曼表解码出“0110110”对应的符号为J,尺寸为7。
已知有一种被称为二元树(Binary tree)搜寻法的霍夫曼解码方法,如美国第6,621,429号专利所公开的内容。二元树搜寻法将霍夫曼表转换为二元树的结构。在二元树中,每一节点(Node)仅具两条路径可走,由最上层的节点往下方延伸,形成树的形状,每一节点具有左右两分支,因此称为二元树。请参阅图2,其为对应图1的已知霍夫曼表格式的二元树示意图,其中不同的霍夫曼表会构建出不同的二元树。如图2所示,解码器从输入的被压缩比特流中一次读取一个位,根据读取进来的位数据来决定往哪个方向走,当输入的数据位为1(高逻辑电位)时,往右边的路径前进,相反的,其数据为0(低逻辑电位)的话,往左边的路径前进,直至走到叶节点(Leaf)为止,其中叶节点为储存对应于此位数据的符号。在搜寻到所输入的该位所对应的符号后,继续读取下一位数据,并重复前述步骤进行解码。
例如,输入的压缩比特流的数据为“011101”,以此例配合图2来说明,在节点11中,根据所读取的压缩比特流的第一个位数据为“0”,因此往左边的路径走而来到节点12,接着被读取的第二个位数据为“1”,因此往右边的路径走而到达节点13,依照此原则,可搜寻到节点20右分支的叶节点,在此叶节点中储存的符号为F,则表示输入“011101”经过解码后,可得到符号F。在搜寻到叶节点后,压缩比特流的数据继续被读取,由节点11再度开始搜寻,如此反复搜寻至压缩比特流的全部位数据被解码完毕为止。
由于二元树搜寻法每次只能针对一个位进行解码,因此解码的速度很慢,在需要处理大量的压缩文件的情况下并不适合使用此方法。因此需要一种解码速度较快的霍夫曼解码方法。
发明内容
本发明的目的在于提供一种霍夫曼解码方法,用以缩短解码所需的处理时间。
本发明提出一种霍夫曼解码方法,用以对压缩比特流进行解码而输出对应压缩比特流的多个尺寸符号码,其中压缩比特流包括多个位,该方法包括:
取得对应压缩比特流的霍夫曼表,其中:
霍夫曼表包括多个霍夫曼码以及多个尺寸符号码且每一该霍夫曼码包含可变长度字码,而每一霍夫曼码对应尺寸符号码,其中每一尺寸符号码包括尺寸码以及符号码;
根据多个尺寸码而获得多个遮幕码;
分别使用多个遮幕码对压缩比特流的依序被输入的16个位进行遮幕处理而产生多个遮幕处理结果;
分别对多个遮幕处理结果与多个该霍夫曼码进行逻辑运算而获得多个新霍夫曼码,其中每一新霍夫曼码包含可变长度字码;
判断压缩比特流的该16位与多个新霍夫曼码中的哪一个新霍夫曼码相同;以及
输出对应可变长度字码的尺寸符号码。
在优选实施例中,遮幕码由16个二进制位所组成并包含有效位部以及无效位部,其中有效位部的位数量等于尺寸码所代表的数量。
在优选实施例中,在有效位为0时,无效位为1,遮幕处理是与门运算(AND gate)而逻辑运算是或门运算(OR gate)。
在优选实施例中,在有效位为1时,无效位为0,遮幕处理是或门运算而逻辑运算是与门运算。
本发明还提出一种霍夫曼解码装置,用以对压缩比特流进行解码而输出压缩比特流所对应的多个尺寸符号码,其中每一尺寸符号码包括尺寸码以及符号码,该霍夫曼解码装置包括:
霍夫曼表获取和处理单元,用以取得对应压缩比特流的霍夫曼表并产生多个遮幕码,其中:
霍夫曼表包括多个霍夫曼码、多个尺寸符号码且每一霍夫曼码包含可变长度字码,以及每一尺寸码代表可变长度字码的位数量,其中该每一遮幕码依据每一多个尺寸码而获得;
霍夫曼存储器,连接于霍夫曼表获取和处理单元,用以储存多个霍夫曼码;
尺寸符号存储器,连接于霍夫曼表获取和处理单元,用以储存多个尺寸符号码;
遮幕存储器,连接于霍夫曼表获取和处理单元,用以储存多个遮幕码;
压缩比特流处理单元,连接于该遮幕存储器,用以接收该压缩比特流,并分别使用多个该遮幕码对压缩比特流的依序被接收的16位进行遮幕处理而产生多个遮幕处理结果;
霍夫曼码处理单元,连接于霍夫曼存储器,用以使多个遮幕处理结果与多个霍夫曼码进行逻辑运算而产生多个新霍夫曼码且每一新霍夫曼码包括可变长度字码;
霍夫曼解码单元,连接于霍夫曼码处理单元,用以比较压缩比特流的16位与哪一个新霍夫曼码相符,并输出新霍夫曼码所对应的尺寸符号码。
由于本发明一次处理多组霍夫曼表数据的对比,相较于一次只能对一个位解码的已知二元树搜寻法,确实能大幅提升解码的速度。
附图说明
通过下列附图和说明,获得对本发明的更深入的了解:
图1是已知的霍夫曼表示意图。
图2是已知二元树搜寻法的二元树示意图。
图3(a)是本发明数据格式的示意图。
图3(b)是本发明霍夫曼表的实施例示意图。
图3(c)是本发明解码装置的第一实施例的电路方块示意图。
图3(d)是本发明解码装置的第二实施例的电路方块示意图。
其中,附图标记说明如下:
11、12、13、14、15、16、17、18、19、20、21节点
A、B、C、D、E、F、G、H、I、J、K、L符号
300霍夫曼解码装置
301总线
302总线接口
303霍夫曼表获取和处理单元
304霍夫曼存储器
305尺寸符号码
306遮幕存储器
307压缩比特流处理单元
308霍夫曼码处理单元
309霍夫曼解码单元
310数据码
311多阶段处理单元
320霍夫曼码
330尺寸符号码
3301符号码
3302尺寸码
350遮幕码
360压缩比特流
370遮幕处理结果
380新霍夫曼码
具体实施方式
根据前述有关已知技术描述的内容,在进行霍夫曼解码时需要使用霍夫曼表。一般的作法是在霍夫曼解码器中预先构建霍夫曼表以作为解码的依据,以JPEG文件为例,通常在解码器中构建以JPEG文件为标准的霍夫曼表,此种标准JPEG霍夫曼表中具有大多数JPEG文件的可变长度字码,可对大部分的JPEG压缩数据进行解码。但有时编码者会根据特别的需求使用特殊编码法来编码,如此将使得标准JPEG霍夫曼表不足以满足所有JPEG文件的解码需求,因此编码者会自行设计特定的霍夫曼表。此特定的霍夫曼表被储存在此JPEG文件的报头(Header)中,而解码器在进行解码时经由总线从JPEG文件中下载此特殊编码的霍夫曼表至解码器内来进行解码工作。请参阅图3(a),其为本发明所使用的霍夫曼表的数据码的格式示意图。在本发明中设定霍夫曼表的数据码310为32个位。如图3(a)所示,数据码310前2个位用以定义色度(Chroma)、亮度(Luma)、交流(AC)以及直流(DC)。接下来的20个位则为霍夫曼码320,其中每个霍夫曼码320包含一个可变长度字码。而接下来的5个位为符号码3301,而符号码之后的5个位为尺寸码3302。在本实施例中可将符号码3301以及尺寸码3302结合为尺寸符号码330。在本发明实施例中,仅取霍夫曼码320的20个位中的16个位来说明,其原因在于,一般常用的霍夫曼码为16个位。而本发明的霍夫曼码320可扩充至处理20个位的霍夫曼码,使本发明遇16位以上的霍夫曼码也可进行解码,使用性更高。
请参阅图3(b),其为本发明实施例的霍夫曼表示意图,其包含地址字段、符号字段、尺寸字段以及霍夫曼码字段等字段。其中地址字段、符号字段及尺寸字段等字段的意义同已知,故不再赘述,而已知霍夫曼表中的可变长度字码在本发明中则是指每一霍夫曼码中的前1个或前多个位。本发明所设计的霍夫曼表和已知霍夫曼表的不同在于本发明的霍夫曼表将可变长度字码字段由霍夫曼码的字段取代。其意义在于,将不同长度的可变长度字码包含于统一为16个位的霍夫曼码中,使解码器在不知道可变长度字码的长度的情况下仍然可进行解码。此外,尺寸码在本发明中不只代表着可变长度字码在霍夫曼码中的长度,更是本发明所提出的遮幕码的重要依据。其中遮幕码由有效位部以及无效位部所组成,且有效位部的位数目由尺寸码所决定。在本发明中,霍夫曼码由可变长度字码以及有效位所组成。图3的实施例设定有效位为“0”,无效位为“1”,再加上地址“0”的尺寸码为“1”,除了可变长度字码“1”之外,其余的15个位为有效位“0”,因此,所对应的霍夫曼码为“1000,0000,0000,0000”。反之,若设定有效位为“1”,无效位为“0”,此时霍夫曼码为“1111,1111,1111,1111”。
请参阅图3(c),其为本发明霍夫曼解码装置的第一实施例的电路方块示意图。图3(c)中表示了总线301以及霍夫曼解码装置300。其中总线301用以传输包含于压缩文件,如JPEG文件,的报头中形成本发明霍夫曼表的数据码310,以便让霍夫曼解码装置300能取得该数据码310。而霍夫曼解码装置300包括:总线接口302,霍夫曼表获取和处理单元303,霍夫曼存储器304,尺寸符号存储器305,遮幕存储器306,压缩比特流处理单元307,霍夫曼码处理单元308以及霍夫曼解码单元309。
其中,总线接口302用以连接该总线301以及霍夫曼解码装置300。霍夫曼表获取和处理单元303用以将所获得的数据码310分类为霍夫曼码320、符号码3301以及尺寸码3302(符号码3301与尺寸码3302可结合,即尺寸符号码330),并依据尺寸码3302产生遮幕码350。霍夫曼存储器304是用以储存霍夫曼码320。尺寸符号存储器305用以储存尺寸符号码330。遮幕存储器306则是用以储存遮幕码350。压缩比特流处理单元307是用以接收待解码的压缩比特流360并使用该遮幕码350对压缩比特流360进行遮幕处理。霍夫曼码处理单元308则用以使用该遮幕处理结果以及该霍夫曼码进行逻辑运算而获得新霍夫曼码380。而霍夫曼解码单元309是用以对压缩比特流360进行解码。
以下详细说明图3(c)的电路方块的运作。总线301同已知的总线功能,用以传送待解码的压缩文件,该待解码的压缩文件包含待解码的比特流360以及前述的数据码310。由总线301传送的多个数据码310经由总线接口302被传送到霍夫曼表获取和处理单元303。
如图3(c)所示,于霍夫曼表获取和处理单元303中将数据码310分为霍夫曼码320、符号码3301以及尺寸码3302。根据此尺寸码而得到遮幕码350,其中遮幕码350包含有效位部以及无效位部且有效位部的位数目依据尺寸码3302的数目所决定。接着将霍夫曼码320、尺寸符号码330以及遮幕码350分别储存于霍夫曼存储器304、尺寸符号存储器305以及遮幕存储器306。令压缩比特流360的依序输入的16个位进入压缩比特流处理单元307,并读取遮幕存储器306中的遮幕码350,对依序输入的16个位以及遮幕码350进行遮幕处理而获得遮幕处理结果370。
在霍夫曼码处理单元308中,读取霍夫曼存储器304中的霍夫曼码320,将其与遮幕处理结果370进行逻辑运算而获得并输出新霍夫曼码380。其中新霍夫曼码也包含可变长度字码。在霍夫曼解码单元309中,读取尺寸符号存储器305中的尺寸符号码330以及压缩比特流360的依序输入的16个位并将其与新霍夫曼码380互相对照,若压缩比特流360的依序输入的16个位与新霍夫曼码380完全相符,则输出所对应的尺寸符号码330。且霍夫曼码320中的可变长度字码与经处理后所获得的新霍夫曼码380中的可变长度字码相同。
以图3(b)中的霍夫曼表配合图3(c)电路方块图详细说明本发明的实施方式。压缩比特流代表的是一串可变长度字码,而所谓的解码意味着要找出此串输入的可变长度字码中每一可变长度字码所对应的霍夫曼表上的尺寸及符号。由于可变长度字码具有各种不同的位长度,例如,第1个位即是代表1个可变长度字码,而第2-6个位代表第2个可变长度字码,之后第3个可变长度字码是由第7-9个位组成等等,但在一般情况下,解码器无法预先得知所接收的流中的哪几个位是代表一个完整的可变长度字码,因此已知的二位数解码方法必须每次处理1个位来进行解码。
本发明解码器通过每次处理16个位的压缩比特流360来加速解码的速度。此16位的待解码数据通过本发明解码器的运作可以同时和霍夫曼表内的多组霍夫曼码进行对比,以便快速解码出此16位中的第1个可变长度字码所对应的尺寸符号码。以下说明压缩比特流与霍夫曼表的对比方法。
假设压缩比特流360依序输入的前16个位为“1010,1010,1010,1010”。图3(b)的霍夫曼表共有12组霍夫曼码,此比特流”1010,1010,1010,1010”通过解码器的运作同时和该12组霍夫曼码进行对比,因而可以解码出所输入的16比特流所对应的霍夫曼码。以地址“0”的数据为例说明对比的方法。地址“0”的数据包含尺寸符号码1、A,以及霍夫曼码“1000,0000,0000,0000”。接着利用尺寸码的数值产生遮幕码350,方法如下:在本发明中将遮幕码设定为16个位,其中遮幕码包括有效位部以及无效位部且有效位部由尺寸码所决定。当尺寸码为1时,即表示遮幕码的第1个位为有效位而剩余的15个位为无效位。如前段所述,假设“0”代表有效位,而“1”代表无效位,则所获得的遮幕码是“0111,1111,1111,1111”。反之,若设定有效位为“1”,无效位为“0”时,此遮幕码为“1000,0000,0000,0000”。以此类推。尺寸码3302表示霍夫曼码320所包含的可变长度字码的位数,而在实施例中尺寸码3302被应用于遮幕码350的运算。在此霍夫曼码320(即“1000,0000,0000,0000”)之中,由于尺寸码为“1”,因此霍夫曼码320的第一个位即是可变长度字码,也就是“1”,以此类推。
接着对此遮幕码“0111,1111,1111,1111”以及压缩比特流360依序输入的16个位(即“1010,1010,1010,1010”)进行遮幕处理。本发明所指的遮幕处理指将16位的遮幕码与16位的压缩比特流进行与门运算或是或门运算。当设定有效位为0、无效位为1时,使用与门运算进行遮幕处理,而当有效位为1、无效位为0时,使用或门运算进行遮幕处理,本实施例使用与门运算进行遮幕处理。经过遮幕处理后可获得遮幕处理结果370为“0010,1010,1010,1010”。
接着,霍夫曼码处理单元308读取霍夫曼存储器304中的霍夫曼码“1000,0000,0000,0000”并将其与前述遮幕处理结果“0010,1010,1010,1010”进行逻辑运算。本发明所指的逻辑运算指将本发明霍夫曼表中的16位的霍夫曼码与16位的遮幕处理结果进行或门运算或是与门运算。当设定有效位为0、无效位为1时,使用或门运算进行逻辑运算,而当有效位为1、无效位为0时,使用与门运算进行逻辑运算,在本实施例中,此逻辑运算为或门运算。经过逻辑运算后可获得运算结果“1010,1010,1010,1010”,本例中称为新霍夫曼码380,而此新霍夫曼码380所包含的可变长度字码仍然为“1”。
霍夫曼解码单元309读取尺寸符号存储器305中的尺寸符号码330,并将新霍夫曼码“1010,1010,1010,1010”与压缩比特流360的16个位“1010,1010,1010,1010”进行比较。两者比较之下是相同的,表示所输入的16个位的压缩比特流中的第1个位代表地址“0”的可变长度字元。接着输出地址“0”的尺寸符号码1、A。
当然,霍夫曼表中的其它11组数据也依据以上的运算方式被处理并进行对比。由于此霍夫曼表是预先针对被压缩的比特流所设计的,因此16位的输入流一定会对应到霍夫曼表中某一地址的霍夫曼码。在以上的实施例中,既然已经对比出地址“0”的霍夫曼码是对应到输入比特流的第1个位,因此其它组的数据和输入比特流的其它位相比较的结果就不会相符。
由于本次被处理的16位的压缩比特流已经有1个位被解码完成,解码器接下来会多接收1个位的压缩位,使得下一次被处理的压缩位数维持为16个。
此为单组霍夫曼码的操作流程,但如前文所述,本发明实际上同时对多组霍夫曼码进行处理而获得多组新霍夫曼码,使压缩比特流依序输入的16个位可同时与多组数据进行对比。以下以图3(b)中的12组霍夫曼码来说明同时对比多组数据的完整流程。
假设压缩比特流360依序输入的16个位仍为“1010,1010,1010,1010”,将其霍夫曼表中所有的可变长度字码进行上述处理而获得12个新霍夫曼码,依序为:第一个为“1010,1010,1010,1010”、第二个为“0010,1010,1010,1010”、……以此类推,在上述对照比较中得知,第一个新霍夫曼码与压缩比特流360依序输入的16个位互相符合,输出所对应的尺寸符号码1、A,根据压缩比特流360依序输入的16个位中被解码的位为1个位,因此移除被解码的可变长度字码的部分,压缩比特流360依序输入的位数据变为“0101,0101,0101,010”共15个位,移除后再由压缩比特流360补入1个位,使其保持16个位,假设补入的位数据为“0”,故压缩比特流360依序输入的新16个位为“0101,0101,0101,0100”,其中由存在于压缩比特流360内的位数据决定压缩比特流360中补入的位数据是什么。
继续进行依序输入的新16个位的解码,根据图3(b)中的霍夫曼表,进行解码处理可获得12个新霍夫曼码380,依序为:第一个为“1101,0101,0101,0100”、第二个为“0001,0101,0101,0100”、第三个为“0101,0101,0101,0100”、第四个为“0111,1101,0101,0100”……以此类推。将压缩比特流360依序输入的新16个位“0101,0101,0101,0100”与这些新霍夫曼码进行对照比较,如果第一组新霍夫曼码不符合,则继续比较下一组,如果第二组新霍夫曼码也不符合,在对照比较第三组新霍夫曼码时发现两者完全符合,则输出对应的尺寸符号码5、D并移除对照符合的可变长度字码的部分且由压缩比特流补入5个位,使其保持16个位以继续进行解码,直至压缩比特流360中的位数据全部解码完毕为止。
以上为本发明的第一实施例的实施流程说明,通常一个霍夫曼表中会有数百组霍夫曼码,在解码过程中同步处理数百组霍夫曼码需要相当庞大的电路以及硬体设备,导致成本较高的问题,因此提出另一个实施例供使用者在想要缩小硬体设备成本时选择。
请参阅图3(d),其为本发明第二实施例的结构示意图。图3(d)与图3(c)不同之处在于霍夫曼解码单元后另外设置多阶段处理单元311以及霍夫曼表的分割。例如说,此实施例中,由总线301下载数据码310,通过总线接口302储存于霍夫曼表获取和处理单元303中的霍夫曼表共有500个霍夫曼码320,在此实施例的解码过程中将霍夫曼表分为五个部分,也就是将霍夫曼存储器304中的500个霍夫曼码320分为五组,每组100个霍夫曼码320。而尺寸符号存储器305和遮幕存储器306的作法也相同,且每一阶段处理一组霍夫曼码320、尺寸符号码330以及遮幕码350。
在压缩比特流处理单元307中,读取压缩比特流360依序输入的16个位以及遮幕存储器306中的第一组遮幕码350,再进行遮幕处理而获得100个遮幕处理结果370。在霍夫曼码处理单元308中取得霍夫曼存储器304中的第一组霍夫曼码320再进行逻辑运算,可获得第一组新霍夫曼码380,其中共100个新霍夫曼码380。读取尺寸符号存储器305中的第一组尺寸符号码330在霍夫曼解码单元309中进行压缩比特流360依序输入的十六个位与新霍夫曼码380的对照比较,一次比较100个新霍夫曼码380,若是无法找到符合的新霍夫曼码380,则输出0至多阶段处理单元311中,以表示无符合的新霍夫曼码380。接下来读取遮幕存储器306中的第二组遮幕码且继续进行上述解码步骤而获得第二组新霍夫曼码380,再将其与压缩比特流360依序输入的16个位进行对照比较,若是在对照比较中仍无法找到符合的新霍夫曼码380,则输出0至多阶段处理单元311且继续处理下一组霍夫曼码320,直至找到符合的新霍夫曼码380为止;若是找到符合的新霍夫曼码380则输出所对应的尺寸符号码330至多阶段处理单元311中,在多阶段处理单元311中,将获得的0以及尺寸符号码330进行或门运算而输出运算结果,即所对应的尺寸符号码330。比较完毕后将压缩比特流360依序输入的16个位中符合的部分移除且由压缩比特流360补入与移除位数目相等的位数,以保持16个位而得以继续进行解码,至压缩比特流360中的位数据都被解码完毕为止。
本发明第二实施例的作法在每次的对照比较中仅比较100个新霍夫曼码,相较于图3(b)的实施例,第二实施例需要的解码时间比较长,但所需的硬体设备成本较低,使用者可依需求选用不同的实施例。
综合以上的描述可以理解,由于本发明一次处理多组霍夫曼表数据的对比,相较于一次只能对一个位解码的已知二元树搜寻法,确实能大幅提升解码的速度。
以上所述仅为本发明的优选实施例,并非用以限定本发明的权利要求,因此任何其它未脱离本发明所揭示的精神下所完成的等效改变或修改,均应包含于本发明的权利要求内。
Claims (8)
1、一种霍夫曼解码方法,用以对压缩比特流进行解码而输出对应所述压缩比特流的多个尺寸符号码,其中所述压缩比特流包括多个位,所述方法包括:
取得对应所述压缩比特流的霍夫曼表,其中:
所述霍夫曼表包括多个霍夫曼码以及多个尺寸符号码且每一霍夫曼码包含可变长度字码,而每一霍夫曼码对应所述尺寸符号码,其中每一尺寸符号码包括尺寸码以及符号码;
根据多个所述尺寸码而获得多个遮幕码;
分别使用所述多个遮幕码对所述压缩比特流的依序被输入的16个位进行遮幕处理而产生多个遮幕处理结果;
分别对所述多个遮幕处理结果与多个所述霍夫曼码进行逻辑运算而获得多个新霍夫曼码,其中每一新霍夫曼码包含所述可变长度字码;
判断所述压缩比特流的所述16位与所述多个新霍夫曼码中的哪一个新霍夫曼码相同;以及
输出对应所述可变长度字码的尺寸符号码。
2、如权利要求1所述的霍夫曼解码方法,其中所述遮幕码由16个二进制位所组成并包含有效位部以及无效位部,其中所述有效位部的位数量等于所述尺寸码所代表的数量。
3、如权利要求2所述的霍夫曼解码方法,其中在所述有效位为0时,所述无效位为1,所述遮幕处理是与门运算而所述逻辑运算是或门运算。
4、如权利要求2所述的霍夫曼解码的方法,其中在所述有效位为1时,所述无效位为0,所述遮幕处理是或门运算而所述逻辑运算是与门运算。
5、一种霍夫曼解码装置,用以对压缩比特流进行解码而输出所述压缩比特流所对应的多个尺寸符号码,其中每一尺寸符号码包括尺寸码以及符号码,所述霍夫曼解码装置包括:
霍夫曼表获取和处理单元,用以取得对应所述压缩比特流的霍夫曼表并产生多个遮幕码,其中:
所述霍夫曼表包括多个霍夫曼码、多个尺寸符号码且每一霍夫曼码包含可变长度字码,以及每一尺寸码代表所述可变长度字码的位数量,其中所述每一遮幕码依据所述多个尺寸码的每一个而获得;
霍夫曼存储器,连接于所述霍夫曼表获取和处理单元,用以储存所述多个霍夫曼码;
尺寸符号存储器,连接于所述霍夫曼表获取和处理单元,用以储存所述多个尺寸符号码;
遮幕存储器,连接于所述霍夫曼表获取和处理单元,用以储存所述多个遮幕码;
压缩比特流处理单元,连接于所述遮幕存储器,用以接收所述压缩比特流,并分别使用多个所述遮幕码对所述压缩比特流的依序被接收的16位进行遮幕处理而产生多个遮幕处理结果;
霍夫曼码处理单元,连接于所述霍夫曼存储器,用以使所述多个遮幕处理结果与所述多个霍夫曼码进行逻辑运算而产生多个新霍夫曼码且每一新霍夫曼码包括所述可变长度字码;
霍夫曼解码单元,连接于所述霍夫曼码处理单元,用以比较所述压缩比特流的16位与哪一个新霍夫曼码相符,并输出所述新霍夫曼码所对应的所述尺寸符号码。
6、如权利要求5所述的霍夫曼解码装置,其中所述遮幕码由16个二进制位所组成并包含有效位部以及无效位部,其中所述有效位部的位数量等于所述尺寸码所代表的数量。
7、如权利要求6所述的霍夫曼解码装置,其中在所述有效位为0时,所述无效位为1,所述遮幕处理是与门运算而所述逻辑运算是或门运算。
8、如权利要求6所述的霍夫曼解码装置,其中在所述有效位为1时,所述无效位为0,所述遮幕处理是或门运算而所述逻辑运算是与门运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610163668 CN100581258C (zh) | 2006-12-01 | 2006-12-01 | 霍夫曼解码方法和霍夫曼解码装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610163668 CN100581258C (zh) | 2006-12-01 | 2006-12-01 | 霍夫曼解码方法和霍夫曼解码装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101193295A CN101193295A (zh) | 2008-06-04 |
CN100581258C true CN100581258C (zh) | 2010-01-13 |
Family
ID=39487996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610163668 Expired - Fee Related CN100581258C (zh) | 2006-12-01 | 2006-12-01 | 霍夫曼解码方法和霍夫曼解码装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100581258C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101626243A (zh) * | 2008-07-11 | 2010-01-13 | 数维科技(北京)有限公司 | 改进的霍夫曼解码方法及装置 |
CN104283568B (zh) * | 2013-07-12 | 2017-05-17 | 中国科学院声学研究所 | 一种基于部分霍夫曼树的数据压缩编码方法 |
US9906239B1 (en) * | 2017-06-28 | 2018-02-27 | Ati Technologies Ulc | GPU parallel huffman decoding |
US11469773B1 (en) * | 2021-06-17 | 2022-10-11 | Beijing Tenate Electronic Technology Co., Ltd. | Deflate compression using sub-literals for reduced complexity Huffman coding |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4899149A (en) * | 1986-02-28 | 1990-02-06 | Gary Kahan | Method of and apparatus for decoding Huffman or variable-length coees |
-
2006
- 2006-12-01 CN CN 200610163668 patent/CN100581258C/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4899149A (en) * | 1986-02-28 | 1990-02-06 | Gary Kahan | Method of and apparatus for decoding Huffman or variable-length coees |
Also Published As
Publication number | Publication date |
---|---|
CN101193295A (zh) | 2008-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102244518B (zh) | 并行解压缩的硬件实现的系统及方法 | |
KR100286195B1 (ko) | 가변장 코드로 엔코드된 신호의 디코딩 장치 | |
CN100525450C (zh) | 一种实现霍夫曼译码的方法和装置 | |
CN109587483B (zh) | 码流提取模块 | |
CN105610447B (zh) | 基于lz77算法的分区编码压缩方法 | |
US8947272B2 (en) | Decoding encoded data | |
JP2002252563A (ja) | ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法 | |
CN100581258C (zh) | 霍夫曼解码方法和霍夫曼解码装置 | |
CN114697654B (zh) | 一种神经网络量化压缩方法及系统 | |
CN114697672B (zh) | 基于游程全零编码的神经网络量化压缩方法及系统 | |
US20080122664A1 (en) | Huffman decoding method | |
CN106649217A (zh) | 数据的匹配方法及装置 | |
CN103701470A (zh) | 一种流智能预测差异压缩算法及相应的控制装置 | |
US8018359B2 (en) | Conversion of bit lengths into codes | |
US8970405B2 (en) | Method and apparatus for entropy decoding | |
CN103428502B (zh) | 一种解码方法及解码系统 | |
US10742783B2 (en) | Data transmitting apparatus, data receiving apparatus and method thereof having encoding or decoding functionalities | |
CN206712982U (zh) | 一种用于VLSI设计的Huffman编码系统 | |
CN101546559B (zh) | 一种用于压缩数字音频的秘密信息密写及提取方法 | |
Siahaan | Huffman text compression technique | |
US20020166041A1 (en) | Data mask coding | |
CN109347484B (zh) | 一种基于二级查表的64b/66b编码器及编码方法 | |
CN104717499B (zh) | 一种霍夫曼表的存储方法及用于jpeg的霍夫曼解码方法 | |
CN103905054A (zh) | 构建码表的方法和装置,编码、解码方法和装置 | |
CN102572425A (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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100113 Termination date: 20141201 |
|
EXPY | Termination of patent right or utility model |