一种哈夫曼并行解码方法及其装置与流程

文档序号:12133432阅读:190来源:国知局
一种哈夫曼并行解码方法及其装置与流程

本发明涉及编码解码技术领域,特别是涉及一种哈夫曼并行解码方法及其装置。



背景技术:

当前,随着互联网、物联网的飞速发展,数据文件规模越来越大。为节省存储成本,各数据中心均对数据进行压缩出来。大量的数据压缩占用较高的CPU资源,不仅降低了服务器性能,而且提升了服务器功耗,增加了能源成本。

目前,数据压缩中常采用哈夫曼解码方法。哈夫曼(Huffman)编码是一种一致性编码法(又称“熵编码法”),用于数据的无损耗压缩。它根据每一个字符出现的概率建立起来编码表,出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,使得编码后的字符串的平均期望长度降低,从而达到无损压缩数据的目的。由于哈夫曼编码是一种变长编码,各字符编码长度不定,故哈夫曼解码时只能串行执行,不能够预先将待解码比特流预先分为特定长度的二进制码串再进行处理,且在解码过程中,是先读取一个二进制码,与哈夫曼码表比较后,再读取下一个二进制码,直至与哈夫曼码表匹配成功,效率低,解码速度慢。

因此,如何提供一种解码效率高的哈夫曼并行解码方法及其装置是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种哈夫曼并行解码方法及其装置,读取效率高,能够统一过滤无效匹配位置,合并效率高,进而能够提高解码效率,解码速度快。

为解决上述技术问题,本发明提供了一种哈夫曼并行解码方法,包括:

从待解码比特流上依次读取若干组二进制码组;

分别依次对每组二进制码组进行哈夫曼解码,得到所述待解码比特流上的二进制码对应的解码结果,所述解码结果包括解码字符和解码长度,所述解码长度为所述解码字符在预设的哈夫曼码表内对应的二进制码的个数;

依据所述待解码比特流上各个二进制码对应的解码长度,按照预设规则过滤所述待解码比特流上的无效匹配位置,得到有效匹配位置;

依次读取各个所述有效匹配位置处对应的解码字符,得到最终解码结果。

优选地,所述从待解码比特流上依次读取若干组二进制码组的过程具体为:

从所述待解码比特流上依次读取若干组二进制码组,除最后一组外,每组包括L个二进制码,L≥m+n-1;m为解码器的个数,n为所述哈夫曼码表的最长编码长度;令所述读取起始位置后移m位,作为新的读取起始位置,重复读取操作;

相应的,所述分别依次对每组二进制码组进行哈夫曼解码,得到所述待解码比特流上的二进制码对应的解码结果的过程具体为:

m个所述解码器分别依次对每组所述二进制码组进行哈夫曼解码;其中,第i个所述解码器自所述二进制码组的第i位开始进行哈夫曼解码,得到所述二进制码组的第i位处的解码结果;1≤i≤m且i为正整数。

优选地,所述从待解码比特流上依次读取若干组二进制码组的过程具体为:

分别将所述待解码比特流上的每一位二进制码作为读取起始位置依次读取n位二进制码,得到若干组二进制码单组,依次将预设个数的连续二进制码对应的所述二进制码单组组成一个二进制码组。

优选地,所述分别依次对每组二进制码组进行哈夫曼解码,得到所述待解码比特流上的二进制码对应的解码结果的过程具体为:

分别从每个所述二进制码单组的首位二进制码开始进行哈夫曼解码,得到每组所述二进制码组中,各个所述二进制码单组的首位二进制码对应的解码结果。

优选地,所述哈夫曼码表为范式哈夫曼码表,所述分别依次对每组二进制码组进行哈夫曼解码,得到所述待解码比特流上的二进制码对应的解码结果的过程具体为:

对不足n位的二进制码组右侧补零,扩充为n位二进制码组;

将所述哈夫曼码表内每个字符对应的编码右侧补零,扩充为n位编码

计算每个扩充后编码的数值,并分别记录原始编码长度相同的若干个编码的编码数值中的最小值,得到k个最小值作为阈值,k≤n;

计算每组所述二进制码组的数值D;将D分别按照从小到大的顺序与k个所述阈值进行比较,若D小于当前比较的阈值,则记录比较结果为0,反之,记录比较结果为1,并将比较结果按照比较顺序的先后从左至右进行排序,得到k位掩码;若k<n,则按照预设规则调整为n位掩码;

令所述二进制码组与所述n位掩码按位进行与操作,得到n位结果码,计算所述n位结果码的数值I;依据I得到所述二进制码组的首位二进制码对应的解码结果。

优选地,所述依据所述待解码比特流上各个二进制码对应的解码长度,按照预设规则过滤所述待解码比特流上的无效匹配位置,得到有效匹配位置的过程具体为:

得到所述待解码比特流上全部二进制码对应的解码结果后,将所述待解码比特流的第二位作为匹配位置;

判断所述匹配位置的前一位二进制码对应的解码长度L[i-1]是否大于1,若是,令所述匹配位置对应的解码长度L[i]=L[i-1]-1,并将当前匹配位置的下一位作为新的匹配位置;重复上述判断操作;直至所述待解码比特流上的全部二进制码对应的解码长度均调整完毕;

分别判断所述待解码比特流上除第一位以外的每一位二进制码对应的解码长度是否小于自身前一位二进制码对应的解码长度,若小于,令自身对应的解码长度为0;直至所述待解码比特流上的全部二进制码对应的解码长度均调整完毕;其中,所述待解码比特流上对应的解码长度不为0的二进制码为有效匹配位置。

优选地,所述依据所述待解码比特流上各个二进制码对应的解码长度,按照预设规则过滤所述待解码比特流上的无效匹配位置,得到有效匹配位置的过程具体为:

步骤s1031:得到所述待解码比特流上的一组二进制码组的解码结果后,将所述二进制码组内位置小于当前标准位置的二进制码对应的匹配长度设置为0;

步骤s1032:将处于所述当前标准位置处的二进制码作为匹配位置,判断所述匹配位置的前一位二进制码对应的解码长度L[i-1]是否大于1,若是,令所述匹配位置对应的解码长度L[i]=L[i-1]-1,并将当前匹配位置的下一位作为新的匹配位置;重复上述判断操作;直至所述二进制码组内对应的解码长度均调整完毕;

步骤s1033:从所述二进制码组内匹配有解码结果的二进制码中,分别判断除第一位以外的每一位二进制码对应的解码长度是否小于自身前一位二进制码对应的解码长度,若小于,令自身对应的解码长度为0;直至所述二进制码组内对应的解码长度均调整完毕;其中,所述二进制码组内对应的解码长度不为0的二进制码为有效匹配位置;

步骤s1034:令所述二进制码组内匹配有解码结果的二进制码中最后一个有效匹配位置与自身对应的解码长度求和后,减去所述二进制码组内匹配有解码结果的二进制码的总个数,得到下一组二进制码组的当前标准位置,返回步骤s1031,直至得到所述待解码比特流的全部有效匹配位置。

为解决上述技术问题,本发明还提供了一种哈夫曼并行解码装置,包括:

读取模块,用于从待解码比特流上依次读取若干组二进制码组;

解码模块,用于分别依次对每组二进制码组进行哈夫曼解码,得到所述待解码比特流上的二进制码对应的解码结果,所述解码结果包括解码字符和解码长度,所述解码长度为所述解码字符在预设的哈夫曼码表内对应的二进制码的个数;

无效过滤模块,用于依据所述待解码比特流上各个二进制码对应的解码长度,按照预设规则过滤所述待解码比特流上的无效匹配位置,得到有效匹配位置;

合并模块,用于依次读取各个所述有效匹配位置处对应的解码字符,得到最终解码结果。

本发明提供了一种哈夫曼并行解码方法及其装置,每次从待解码比特流上读取一组二进制码组,对各组哈夫曼码组进行解码后,得到与待解码比特流上的二进制码对应的解码结果,清除待解码比特流上的无效匹配位置,即这些位置处对应的解码结果无效,进而将有效匹配位置处的解码结果进行合并得到最终解码结果。即本发明在读取时采用以组为单位进行读取,而不是每次仅读取一个二进制码,读取效率高,并且,本发明是在得到部分二进制码对应的解码结果后,统一过滤无效匹配位置,使得最后进行解码字符合并时,采用的是并行合并方式,即能够直接并行读取各个有效匹配位置处的解码字符,合并效率高。可见,本发明提高了解码效率,解码速度快。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种哈夫曼并行解码方法的过程的流程图;

图2为本发明提供的另一种哈夫曼并行解码方法的过程的流程图;

图3为本发明提供的另一种哈夫曼并行解码方法的过程的流程图;

图4为本发明提供的一种哈夫曼并行解码装置的结构示意图。

具体实施方式

本发明的核心是提供一种哈夫曼并行解码方法及其装置,读取效率高,能够统一过滤无效匹配位置,合并效率高,进而能够提高解码效率,解码速度快。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本发明提供了一种哈夫曼并行解码方法,参见图1所示,图1为本发明提供的一种哈夫曼并行解码方法的过程的流程图;该方法包括:

步骤s101:从待解码比特流上依次读取若干组二进制码组;

步骤s102:分别依次对每组二进制码组进行哈夫曼解码,得到待解码比特流上的二进制码对应的解码结果,解码结果包括解码字符和解码长度,解码长度为解码字符在预设的哈夫曼码表内对应的二进制码的个数;

步骤s103:依据待解码比特流上各个二进制码对应的解码长度,按照预设规则过滤待解码比特流上的无效匹配位置,得到有效匹配位置;

步骤s104:依次读取各个有效匹配位置处对应的解码字符,得到最终解码结果。

本发明提供了一种哈夫曼并行解码方法,每次从待解码比特流上读取一组二进制码组,对各组哈夫曼码组进行解码后,得到与待解码比特流上的二进制码对应的解码结果,清除待解码比特流上的无效匹配位置,即这些位置处对应的解码结果无效,进而将有效匹配位置处的解码结果进行合并得到最终解码结果。即本发明在读取时采用以组为单位进行读取,而不是每次仅读取一个二进制码,读取效率高,并且,本发明是在得到部分二进制码对应的解码结果后,统一过滤无效匹配位置,使得最后进行解码字符合并时,采用的是并行合并方式,即能够直接并行读取各个有效匹配位置处的解码字符,合并效率高。可见,本发明提高了解码效率,解码速度快。

实施例二

在实施例一的基础上,本发明还提供了另一种哈夫曼并行解码方法。

其中,步骤s101的过程具体为:

从待解码比特流上依次读取若干组二进制码组,除最后一组外,每组包括L个二进制码,L≥m+n-1;m为解码器的个数,n为哈夫曼码表的最长编码长度;令所述读取起始位置后移m位,作为新的读取起始位置,重复读取操作;

相应的,步骤s102的过程具体为:

m个解码器分别依次对每组二进制码组进行哈夫曼解码;其中,第i个解码器自二进制码组的第i位开始进行哈夫曼解码,得到二进制码组的第i位处的解码结果;1≤i≤m且i为正整数。

可以理解的是,由于哈夫曼解码串行解码的特点,每次需要先完成解码,才能确定下一个开始解码的位置,故每次只能对一个字符进行解码速度慢,效率低;通过m个解码器分别从每组二进制码组内前m位二进制码进行解码,能够得到待解码比特流上以每一个二进制码作为起始位置解码后得到的解码结果,然后再通过步骤s103去掉其中无效的解码结果,即可得到最终的解码字符。即本实施例采用并行解码的方式,能够每次对m个二进制码进行解码,得到多个解码字符,大大提高了解码速度和效率。

并且,本实施例的读取过程时从待解码比特流上依次读取二进制码组,即每读取完一组后即继续读取下一组;而解码过程中是分别依次对各组二进制码组进行解码,然后根据解码结果进行合并操作,得到最终解码结果。可见,实现了流水作业,读取过程与解码过程互不干涉,可以同时并列进行,相比目前仅能解码完成后再进行下一次读取的串行操作,解码速度大大提高。

另外,由于m个解码器需要分别从每组二进制码组内前m位二进制码进行解码,故为了保证最后一个解码器也能正常工作,故每组二进制码组不能仅包含m位,而是要多加n-1位,因为,解码所需的最长编码长度为n,故加上最后一个解码器所对的解码起始位置处的二进制码,最后一个解码器能够有n位二进制码供其进行解码操作。其中,m应不小于1,m与n的大小视具体情况而定。

当然,本发明不限定m和n的具体个数,可根据实际需要进行设定。

另外,步骤s102中可以每得到一个二进制码组的解码结果后即进行步骤s103的无效过滤操作,也可以得到全部解码结果后再进行步骤s103,本发明对此不作限定。

实施例三

在实施例一的基础上,本发明还提供了另一种哈夫曼并行解码方法。

其中,步骤s101的过程具体为:

分别将待解码比特流上的每一位二进制码作为读取起始位置依次读取n位二进制码,得到若干组二进制码单组,依次将预设个数的连续二进制码对应的二进制码单组组成一个二进制码组。

其中,这里的预设个数一般大于1,此时二进制码组内包含多个二进制码单组,可由预设个数的解码器分别对每个二进制码单组进行解码,得到每个二进制码单组的解码结果,从而实现并行解码的目的,提高解码速度。

当然,预设个数也可以为1,此时每次对一个二进制码单组进行解码。

具体采用哪种方式本发明不作具体限定。

另外,对待解码比特流进行读取时,可以每次读取一个二进制码组,也可以直接一次性获得全部二进制码组后,再进入步骤s102,具体采用哪种方式本发明不作限定。

进一步的,步骤s102中可以每得到一个二进制码组的解码结果后即进行步骤s103的无效过滤操作,也可以得到全部解码结果后再进行步骤s103,本发明对此不作限定。

相应的,步骤s102的过程具体为:

分别从每个二进制码单组的首位二进制码开始进行哈夫曼解码,得到每组二进制码组中,各个二进制码单组的首位二进制码对应的解码结果。

另外,若哈夫曼码表为范式哈夫曼码表,步骤s102的过程具体为:

步骤s1021:对不足n位的二进制码组右侧补零,扩充为n位二进制码组;

步骤s1022:将哈夫曼码表内每个字符对应的编码右侧补零,扩充为n位编码;

步骤s1023:计算每个扩充后编码的数值,并分别记录原始编码长度相同的若干个编码的编码数值中的最小值,得到k个最小值作为阈值,k≤n;

步骤s1024:计算每组二进制码组的数值D;将D分别按照从小到大的顺序与k个阈值进行比较,若D小于当前比较的阈值,则记录比较结果为0,反之,记录比较结果为1,并将比较结果按照比较顺序的先后从左至右进行排序,得到k位掩码;若k<n,则按照预设规则调整为n位掩码;

步骤s1025:令二进制码组与n位掩码按位进行与操作,得到n位结果码,计算n位结果码的数值I;依据I得到二进制码组的首位二进制码对应的解码结果。

其中,以上仅为一种具体实例,步骤s1021与步骤s1022和步骤s1023之间的先后顺序本发明不作限定。

另外,本发明不限定步骤s102具体采用以上哪种实施方式实现。

实施例四

在实施例二或三的基础上,本发明还提供了另一种哈夫曼并行解码方法。

其中,步骤s103的过程具体为:

步骤s1031:得到待解码比特流上全部二进制码对应的解码结果后,将待解码比特流的第二位作为匹配位置;

因为待解码比特流的第一位对应的解码结果一定不会时无效的,故从第二位开始判断。

步骤s1032:判断匹配位置的前一位二进制码对应的解码长度L[i-1]是否大于1,若是,令匹配位置对应的解码长度L[i]=L[i-1]-1,并将当前匹配位置的下一位作为新的匹配位置;重复上述判断操作;直至待解码比特流上的全部二进制码对应的解码长度均调整完毕;

例如,匹配位置的前一位的解码长度为4,则上述操作的目的,是将对应解码长度为4的二进制码之后的三位二进制码对应的解码长度调整为3/2/1。

步骤s1033:分别判断待解码比特流上除第一位以外的每一位二进制码对应的解码长度是否小于自身前一位二进制码对应的解码长度,若小于,令自身对应的解码长度为0;直至待解码比特流上的全部二进制码对应的解码长度均调整完毕;其中,待解码比特流上对应的解码长度不为0的二进制码为有效匹配位置。

例如,解码长度调整为4/3/2/1后的四位二进制码,通过上述比较调整后,变为4/0/0/0,故此时对应解码长度为4的二进制码有效,而其后的三位二进制码均无效。

可以理解的是,解码长度为4表明该二进制码作为解码起始位置解码后得到的解码字符对应的编码为4位,故对应解码长度为4的二进制码与其后的三位二进制码,共同组成对应解码长度为4的二进制码对应的解码字符的编码,故其后三位二进制码的解码结果不应该读取。

参见图2所示,图2为本发明提供的另一种哈夫曼并行解码方法的过程的流程图。

实施例五

在实施例二或三的基础上,本发明还提供了另一种哈夫曼并行解码方法。

其中,步骤s103的过程具体为:

步骤s1031:得到待解码比特流上的一组二进制码组的解码结果后,将二进制码组内位置小于当前标准位置的二进制码对应的匹配长度设置为0;

当每得到一组二进制码组的解码结果后即进行步骤s103时,需要设置当前标准位置。需要注意的是,此时的一组二进制码组的解码结果不能仅包含一个解码结果。

步骤s1032:将处于当前标准位置处的二进制码作为匹配位置,判断匹配位置的前一位二进制码对应的解码长度L[i-1]是否大于1,若是,令匹配位置对应的解码长度L[i]=L[i-1]-1,并将当前匹配位置的下一位作为新的匹配位置;重复上述判断操作;直至二进制码组内对应的解码长度均调整完毕;

步骤s1033:从二进制码组内匹配有解码结果的二进制码中,分别判断除第一位以外的每一位二进制码对应的解码长度是否小于自身前一位二进制码对应的解码长度,若小于,令自身对应的解码长度为0;直至二进制码组内对应的解码长度均调整完毕;其中,二进制码组内对应的解码长度不为0的二进制码为有效匹配位置;

其中,在实施例二的操作下,二进制码组内匹配有解码结果的二进制码仅为前m位;在实施例三的操作下,二进制码组内匹配有解码结果的二进制码为各个二进制码单组的首位。

步骤s1034:令二进制码组内匹配有解码结果的二进制码中最后一个有效匹配位置与自身对应的解码长度求和后,减去二进制码组内匹配有解码结果的二进制码的总个数,得到下一组二进制码组的当前标准位置,返回步骤s1031,直至得到待解码比特流的全部有效匹配位置。

例如,最后一个有效匹配位置为8,该位置上的解码长度为4,则求和后为12,若每个二进制码组内匹配有解码结果的二进制码的总个数为8,则当前标准位置为4,由于各个二进制码组为顺序依次读取的,故这种情况下表明下一组读取的二进制码组内的前3位与上一组二进制码组中第8位上的二进制码组成一个解码编码,故这3位在本二进制码组内无效,匹配位置应从第4位开始。故需要将二进制码组内位置小于当前标准位置的二进制码对应的匹配长度设置为0。

参见图3所示,图3为本发明提供的另一种哈夫曼并行解码方法的过程的流程图。

本发明还提供了一种哈夫曼并行解码装置,参见图3所示,图4为本发明提供的一种哈夫曼并行解码装置的结构示意图。该装置包括:

读取模块1,用于从待解码比特流上依次读取若干组二进制码组;

解码模块2,用于分别依次对每组二进制码组进行哈夫曼解码,得到待解码比特流上的二进制码对应的解码结果,解码结果包括解码字符和解码长度,解码长度为解码字符在预设的哈夫曼码表内对应的二进制码的个数;

无效过滤模块3,用于依据待解码比特流上各个二进制码对应的解码长度,按照预设规则过滤待解码比特流上的无效匹配位置,得到有效匹配位置;

合并模块4,用于依次读取各个有效匹配位置处对应的解码字符,得到最终解码结果。

本发明提供了一种哈夫曼并行解码装置,每次从待解码比特流上读取一组二进制码组,对各组哈夫曼码组进行解码后,得到与待解码比特流上的二进制码对应的解码结果,清除待解码比特流上的无效匹配位置,即这些位置处对应的解码结果无效,进而将有效匹配位置处的解码结果进行合并得到最终解码结果。即本发明在读取时采用以组为单位进行读取,而不是每次仅读取一个二进制码,读取效率高,并且,本发明是在得到部分二进制码对应的解码结果后,统一过滤无效匹配位置,使得最后进行解码字符合并时,采用的是并行合并方式,即能够直接并行读取各个有效匹配位置处的解码字符,合并效率高。可见,本发明提高了解码效率,解码速度快。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1