CN101072034B - 一种变长解码方法及其装置 - Google Patents
一种变长解码方法及其装置 Download PDFInfo
- Publication number
- CN101072034B CN101072034B CN2007101109726A CN200710110972A CN101072034B CN 101072034 B CN101072034 B CN 101072034B CN 2007101109726 A CN2007101109726 A CN 2007101109726A CN 200710110972 A CN200710110972 A CN 200710110972A CN 101072034 B CN101072034 B CN 101072034B
- Authority
- CN
- China
- Prior art keywords
- prefix
- code
- suffix
- length
- value
- 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.)
- Active
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种变长解码方法,包括以下步骤:接收码流,将当前码流与前缀进行匹配;当所述当前码流与所述前缀匹配成功后,根据与所述前缀对应的后缀的长度截取剩余码流中对应长度的码值,所述前缀和后缀为根据原始协议码表划分得到;根据所述匹配以及所述截取的码值的前缀得到对应的解码值。本发明实施例通过前缀和后缀的划分在解码速度和硬件逻辑规模之间获得了很好的平衡。
Description
技术领域
本发明涉及网络通信技术领域,特别是涉及一种编解码方法及其装置。
背景技术
VLC(Variable Length coding,变长编码)是一种无失真编码方法,是目前各视频压缩协议所广泛采用的熵编码方案。该编码方法通过使用不同的Huffman编码树,对各语法元素的大概率符号分配较短码字,对小概率符号分配较长码字,从而实现的数据的压缩和从语法元素符号值到码字的映射。
其中VLD(Variable Length Decoding,变长解码)是相对VLC的解码过程,即实现从码流中的码字解码,恢复语法元素符号值的过程,解码端根据接收到的码字和协议规定的对应语法元素的码表,索引出当前码字对应的语法元素的符号值,从而实现解码。
现有技术采用一种通过比较器实现的VLD的ASIC(Application SpecificIntegrated Circuit,专属集成电路)解决方案,即将具体每个码字的解码都用比较器实现,即用当前码流中的码字同码表中规定的码字进行比较,当前码流中的码字使得某个比较器命中,则该比较器对应的符号值即为解码值,从而实现解码。
该现有技术的缺点在于需要对所有需要解码的语法元素的每个符号值对应的码值准备相对应的比较器,因此对于符号值较多,码字较长的语法元素必然导致逻辑规模的扩大,当VLD解码器支持的协议和语法元素符号值较多的时候,这种逻辑规模的扩大往往是不能接受的。
为了解决上述逻辑规模过大的问题,现有技术还采用通过ROM代替比较器的VLD的ASIC解决方案,即在解码时从ROM中依次载入码表的码字同当前码流进行比较,当某个码字命中后,该码字代表的符号值即为解码值。
所述现有技术虽然在一定程度上减小了逻辑的规模,但由于是通过串行进行比较,会大大降低解码的速度,因此在对实时性要求非常高的应用场景里是不可行的。
因此现有技术的缺点是无法在解码速度和硬件逻辑规模之间获得了很好的平衡。
发明内容
本发明要解决的问题是提供一种变长解码方法及其装置,用于控制VLD的解码效率和硬件规模。
为达到上述目的,本发明实施例的技术方案提出一种变长解码方法,包括以下步骤:接收码流,将当前码流与前缀进行匹配;当所述当前码流与所述前缀匹配成功后,根据与匹配的前缀对应的后缀的长度截取剩余码流中对应长度的码值,所述前缀和后缀为根据原始协议码表划分得到;根据所述匹配以及所述截取的码值的前缀得到对应的解码值:以截取的码值为索引地址、以所述匹配的前缀为段地址在原始协议码表中查找对应的解码值。
为达到上述目的,本发明实施例的技术方案还提出一种变长解码芯片,包括前缀存储模块、后缀存储模块、前缀匹配模块和结果索引模块,所述前缀存储模块用于存储前缀;所述后缀存储模块用于存储原始协议码表和后缀,所述前缀和后缀为根据原始协议码表划分得到;所述前缀匹配模块用于接收码流,并将当前码流与所述前缀存储模块中存储的前缀进行匹配;所述结果索引模块用于在所述当前码流与所述前缀匹配成功后,根据与匹配的前缀对应的后缀的长度截取剩余码流中的对应长度的码值,并根据截取的码值以及所述匹配的前缀从所述原始协议码表中索引到解码值:以截取的码值为索引地址、以所述匹配的前缀为段地址在原始协议码表中查找对应的解码值。
本发明实施例的技术方案还提出包括变长解码芯片和外部处理器,所述变长解码芯片用于接收码流,并按照根据原始协议码表划分的前缀对当前码流进行匹配,在所述当前码流与所述前缀匹配成功后,根据与匹配的前缀对应的后缀的长度截取剩余码流中对应长度的码值,根据所述截取的码值以及所述匹配的前缀得到对应的解码值:以截取的码值为索引地址、以所述匹配的前缀为段地址在原始协议码表中查找对应的解码值;所述外部处理器用于根据原始协议码表划分所述前缀和所述后缀并将划分好的所述前缀和所述后缀及所述原始协议码表导入所述变长解码芯片。
通过本发明实施例,只需在前缀匹配时通过比较器进行比较,前缀长度越大则解码速度越快而硬件逻辑规模越大,前缀长度越小则解码速度越慢而硬件逻辑规模越小,因此通过前缀和后缀的划分,可以控制解码速度和硬件逻辑规模,以在解码速度和硬件逻辑规模之间获得了很好的平衡。
附图说明
图1为本发明实施例变长解码芯片结构图;
图2为本发明实施例变长解码装置结构图;
图3为本发明实施例变长解码方法的基本原理图;
图4本发明实施例变长解码方法的流程图;
图5为本发明实施例利用有效后缀长度实现前后缀划分的方法以及变长解码方法的流程图;
图6本发明实施例一种划分前缀和后缀方法的流程图;
图7本发明实施例另一种划分前缀和后缀方法的流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述:
如图1所示,为本发明实施例变长解码芯片结构图,该变长解码芯片1包括前缀存储模块11、后缀存储模块12、前缀匹配模块13和结果索引模块14。前缀存储模块11用于存储前缀的划分结果,该前缀和后缀的长度可以根据原始码型进行划分,如果原始码型的前缀较短则增大1拍匹配的前缀个数,如果原始码型的前缀较长则减小1拍匹配的前缀个数,这样可以在保证解码效率的同时又可以减小电路规模;后缀存储模块12用于存储所述原始协议码表和后缀的划分结果,用户可以根据前缀和后缀的匹配结果从原始协议码表中查询解码值;前缀匹配模块13用于将当前变长解码芯片1接收的码流依次与前缀存储模块中划分好的前缀进行匹配;结果索引模块14用于在当前码流与前缀匹配成功后,根据该前缀对应的后缀的长度截取剩余码流中对应长度的码流,并根据截取的码值以及前缀从后缀存储模块中索引到解码值。
其中,变长解码芯片1还包括寄存器模块15,用于存储前缀存储模块中的前缀,供前缀匹配模块13进行匹配。在解码过程中,可以首次将变长解码芯片1内部前缀存储模块11中存储的划分好的前缀加载到寄存器模块15,通过寄存器模块15进行前缀匹配,提高匹配速度。
其中,变长解码芯片1还包括解码错误上报模块16,用于在前缀匹配模块13未找到与当前码流匹配的前缀或结果索引模块14未得到解码值时,发出解码错误的报告。
其中,结果索引模块14还包括有效后缀长度匹配子模块141和码值返回子模块142,有效后缀长度匹配子模块141,用于在截取码值的位数大于有效后缀长度时,按照有效后缀的长度进行匹配;码值返回子模块142,用于将截取的码值超出有效后缀长度的码值返回给剩余码流。
通过该变长解码芯片“前缀匹配,后缀索引查表”的方式解码,从而达到解码效率和逻辑规模的均衡控制。
本发明实施例还提出了一种采用上述变长解码芯片1的变长解码装置,如图2所示。该变长解码装置包括变长解码芯片1和外部处理器2,变长解码芯片1用于按照划分的前缀和后缀及原始协议码表对码流进行解码,该原始协议码表可以是原始变长编码VLC码表;外部处理器2用于划分前后缀并将划分好的前缀和后缀及原始协议码表导入变长解码芯片1,外部处理器2可以对不同解码协议和码表进行动态加载和前后缀的划分,实现解码的灵活性,在不更改变长解码芯片1的前提下支持协议码表和语法元素的切换。首先将外部处理器2上配置划分好的前缀和后缀,以及当前协议码表和帧属性加载到变长解码芯片1,变长解码芯片1根据加载内容进行解码。
其中,外部处理器2包括原始码表存储模块21和前后缀划分模块22,原始码表存储模块21用于存储原始协议码表;前后缀划分模块22用于对原始协议码表划分前缀和后缀,该前缀和后缀的长度可以根据原始码表的码型进行划分,如果原始码型的前缀较短则增大1拍匹配的前缀个数,如果原始码型的前缀较长则减小1拍匹配的前缀个数,这样可以在保证解码效率的同时又可以减小电路规模。
本发明实施例的变长解码装置不仅实现解码效率和逻辑规模的均衡控制,而且通过外部处理器支持协议码表和语法元素的切换。
本发明实施例还公开了外部处理器2中前后缀模块的一种可能的内部结构,该前后缀划分模块22包括后缀长度存储子模块221、前后缀组合生成子模块222和前后缀组合选择子模块223。
后缀长度存储子模块221用于存储配置的最大后缀长度,该最大后缀长度可由用户配置,对于不同的协议码型可设置不同的最大后缀长度;
前后缀组合生成子模块222用于根据后缀长度存储子模块221存储的最大后缀长度生成所有可能的前后缀组合,该生成过程如下:首先对原始协议码表根据码长进行排序,例如该原始协议码表可以为原始变长编码VLC码表,则可对原始变长编码VLC码表根据VLC码长进行排序;再从最长的码字开始按照最长前缀进行划分,直至划分结束,该最长前缀为最长码字减去最大后缀长度,然后对剩余的码字按照上述方式进行划分,得到一种前后缀组合方式;将该最大后缀长度逐渐减小后,并按照减小后的最大后缀长度重新对原始协议码表进行前后缀划分,得到所有的前后缀组合方式。例如最大后缀长度为10,则按照最大后缀长度为10对原始协议码表进行前后缀划分,得到一种前后缀组合方式,将最大后缀长度原始值按1逐次递减,分别对原始协议码表进行前后缀划分,直至最大后缀长度减为0,这样可以得到至少10种前后缀组合方式。如果最大后缀长度值非常大,则可以支持将逐次递减的值增大,如逐次减2或减5,可由用户根据情况设定。
前后缀组合选择子模块223对前后缀组合生成子模块222生成的所有前后缀组合方式进行选择,选择一种适合的前后缀划分组合提供给变长解码芯片1,选择标准可以根据变长解码芯片1中内部的存储器和寄存器面积参数进行选择,因为如果前缀较短时,变长解码芯片1中的寄存器规模会相应减小,但后缀的增加会导致存储器的面积增大,同样前缀较长时,寄存器规模会相应增大,存储器的面积相应减小。因此前后缀组合选择子模块223会运行计算脚本根据存储器和寄存器面积参数计算最佳的组合方式,并将前后缀组合生成子模块222生成的所有前后缀组合方式进行循环遍历,对其对应的方案面积进行评判,选择最小的前后缀组合方案提供给变长解码芯片1。前后缀组合选择子模块223也可根据原始协议码型对前后缀组合方案进行选择。
如图2所示,本发明实施例还提出了一种前后缀划分模块可能的内部结构,即在前后缀组合生成子模块222划分前后缀之前,对短码和长码进行分辨,对于短码直接解析,前后缀组合生成子模块222只对长码进行前后缀的划分,进一步提高了前后缀的划分效率。其中,该前后缀划分模块22还包括长短码分辨子模块224、短码表子模块225和长码表子模块226,长短码分辨子模块224用于根据设置的短码长度区分原始协议码表中的长码和短码,并将短码导入短码表子模块225,将长码导入长码表子模块226;短码表子模块225用于保存长短码分辨子模块224区分的短码,并在导入变长解码芯片1时,通知变长解码芯片1对短码直接解析;长码表子模块226,用于保存长短码分辨子模块224区分的长码,由前后缀划分模块22对长码进行前后缀划分。
通过该实施例不仅实现解码效率和逻辑规模的均衡控制,而且通过外部处理器支持协议码表和语法元素的切换,还可以针对硬件的参数设置前后缀的划分原则,实现硬件逻辑规模的最小化。
本发明实施例变长解码方法的基本原理图如图3所示,首先按照原始协议码表将每个码字划分成前缀和后缀两个部分,如图所示前缀为0101000部分,后缀为XXX部分;对当前码表进行解码时,首先将当前码流依次与划分好的前缀进行匹配,可以通过比较器进行前缀的匹配;当当前码流和某一前缀匹配成功后,根据该前缀对应的后缀长度在剩余的码流中截取对应的码流,所截取的码值即为索引地址,该索引地址与上述匹配的前缀配合就可将其对应的解码值在原始协议码表中找到。例如当前码流为010100011000……,与划分好的前缀匹配时,前缀0101000与该当前码流匹配成功,因为前缀0101000对应的后缀长度为3,因此截取当前码流010100011000中剩余码流的前三位,即110就是所截取的码值,因此根据前缀0101000+截取码值110(最终的码字0101000110)就可以从原始协议码表中找到对应的解码值,即以前缀0101000对应的值为段地址,以截取码值110对应的值为索引地址。因此通过本实施例只需要对前缀部分进行匹配即可完成解码,减小了硬件的逻辑规模。
如图4所示,为本发明实施例变长解码方法的流程图,包括以下步骤:
步骤S401:根据原始协议码表划分对应的前缀和后缀。
根据对应的原始协议码表划分前缀和后缀,其中该原始协议码表可以是原始变长编码VLC码表,并且VLC采用的码表与VLD采用的码表相同,前缀与后缀相互对应。该前后缀的划分标准可根据硬件内部参数或者原始协议码型确定,例如根据硬件内部参数确定,前缀和后缀的组合划分会影响到硬件内部的寄存器和存储器面积和容量,因为如果前缀较短,则硬件中的寄存器规模会相应减小,但后缀的增加会导致存储器的面积增大,同样如果前缀较长,则寄存器规模会相应增大,而存储器的面积相应减小。并且原始协议的码型也会影响到前后缀的划分,因为如果前缀过大,则解码效率会提高而硬件逻辑会增大;如果前缀过小则会影响到解码效率,因此应当根据不同长度的原始协议码型设置不同的前缀个数,如对前缀较短的原始协议码型增大1拍匹配的前缀个数,对前缀较长的原始协议码型减小1拍匹配的前缀个数。其中,根据原始协议码表划分对应的前缀和后缀只需在首次执行该方法时划分,并非是每次执行该变长解码方法都必须执行的,对于非首次的执行只需调取已划分的前后缀就可以了。
步骤S402:接收码流,并将当前码流与前缀进行匹配。
接收码流,将当前的码流依次与划分好的前缀进行匹配,如果匹配成功则执行步骤S403,例如当前码流为010100011000……与划分好的前缀匹配;如果当前的码流依次与划分好的前缀匹配后,没有得到能匹配的前缀则说明该当前码流发生了误码,应及时发出解码错误的报告。
步骤S403:当前码流与某一前缀匹配成功后,根据与该匹配成功的前缀对应的后缀的长度截取剩余码流中对应长度的码值。
例如前缀0101000与该当前码流匹配成功,且该前缀0101000对应的后缀的长度为3,则截取当前码流010100011000中剩余码流的前三位,即110就是所截取的码值。该实施例还提出一种在前缀中设置后缀长度的方法,即前缀包括前缀本身和前缀信息两个部分,其中前缀信息中存储着该前缀对应的后缀长度,在当前码流与某个前缀匹配成功后,根据该前缀的前缀信息就可以得到该前缀对应的后缀长度,以便截取剩余码流中的对应长度的码值。
步骤S404:以截取的码值为索引,并根据前缀得到对应的解码值。
根据前后缀的划分原则,在没有出现误码的时候,根据匹配的前缀所截取的码值就应当是该前缀所对应的后缀,因此根据该前缀和该前缀所对应的后缀就可以在原始协议码表查找到对应的解码值。例如根据前缀0101000截取码值110,此时该截取的码值就是该前缀对应的后缀,此时前缀+后缀得到的最终码字就为0101000110,如果在原始协议码表中该码字0101000110对应的值为a,则a就是对应的解码值。如果截取的码值与前缀组合并没有得到解码值,则也说明当前码流发生了误码,应及时发出解码错误的报告。
本发明实施例还提出一种得到对应的解码值的方法,将解码值存储在存储器中,前缀对应该解码值的段地址,后缀对应该解码值的索引地址,在本实施例中,通过前缀匹配得到该前缀对应的段地址,以截取的码值对应的后缀得到该后缀对应的索引地址,这样通过段地址+索引地址就能够在存储器中找到相应的解码值,实现变长解码。
通过该变长解码方法的“前缀匹配,后缀索引查表”的方式解码,从而达到解码效率和逻辑规模的均衡控制。
如图5所示,为本发明实施例利用有效后缀长度实现前后缀划分的方法以及变长解码方法的流程图,包括以下步骤:
步骤S501:根据原始协议码表划分对应的前缀和后缀,其中该原始协议码表可以为原始变长编码VLC码表。将前缀相同的,后缀长度不同的码字尽可能的集中起来,并将该前缀对应的最长的后缀长度设为前缀信息,对应的解码值存储在片内解码值存储器中,其中前缀对应片内解码值存储器中的段地址,后缀对应片内解码值存储器中的索引地址。
例如下表所示的前后缀细合:
前缀0101000对应的后缀有长度为2的后缀11和10,也有长度为1的后缀0x,其中,0x中0是该前缀0101000对应的后缀,x添加位,因此x为1或为0均可。根据原始协议码表的原理在上述原始协议码表中后缀不会出现1,后缀也不会同时出现0、01或00,例如在上述前后缀组合中如果出现后缀为1的情况,则对于当前码流010100011则无法区分,无法区分后缀是1还是11或是10。因此现有前后缀组合中后缀11的有效后缀长度为2,后缀0x的有效后缀长度为1,因此如果前缀信息中的长度与实际的后缀长度不同时,则在该前后缀组合对应的片内解码值存储器内设置该后缀的有效后缀长度,即在存储器中前缀0101000和后缀0x地址对应的片内解码值存储器内还包括该后缀的有效后缀长度1
步骤S502:接收码流,并将当前码流与前缀进行匹配。
接收码流,将当前的码流依次与划分好的前缀进行匹配,如果匹配成功则执行步骤S503,例如当前码流为010100001000……与步骤S501中划分好的前后缀表匹配,该前缀匹配可采用比较器匹配的方法;如果当前的码流依次与划分好的前缀匹配后,没有得到能匹配的前缀则说明该当前码流发生了误码,应及时发出解码错误的报告。
步骤S503:当前码流与某一前缀匹配成功后,根据与该匹配成功的前缀信息截取剩余码流中对应长度的码值。
其中前缀包括前缀本身和前缀信息两个部分,前缀信息中存储着该前缀对应的后缀长度,在当前码流与某个前缀匹配成功后,根据该前缀的前缀信息就可以得到该前缀对应的后缀长度,以便截取剩余码流中的对应长度的码值。例如前缀0101000与该当前码流匹配成功,且该前缀0101000对应的前缀信息为2,则截取当前码流010100001000中除去前缀的剩余码流的前2位,即01就是所截取的码值。
步骤S504:以截取的码值为索引与该匹配的前缀对应的后缀进行比对。
以截取的全部码值与该匹配的前缀对应的后缀进行比对,例如如果截取的码值为01,经过比对发现该截取的码值为01与后缀0x对应,因为x为1或为0均可。但是如果经过上述方法的比对,没有发现与截取的码值对应的后缀则说明该当前码流发生了误码,应及时发出解码错误的报告。
步骤S505:根据匹配的前后缀得到对应的解码值,并将实际截取码值的长度超出部分返回给剩余码流。
根据前缀对应片内解码值存储器中的段地址和后缀对应解码值存储器中的索引地址,从片内解码值存储器中查找对应的解码值,以及该后缀的有效后缀长度,如果实际截取码值的长度大于有效后缀长度,则将实际截取码值的长度超出部分返回给剩余码流。例如根据前缀0101000对应的段地址和后缀0x对应的索引地址,就可以从存储器中找到对应的解码值以及有效后缀长度,该后缀0x对应的有效后缀长度为1,因此将截取的码值01的最后一位1返回给剩余码流。
本发明实施例还提出了一种检测解码错误的方法,在存储器中放置原始码表中不存在的解码值,并给予相应的段地址和索引地址,如果将该不存在的解码值解析出来,则也说明当前码流发生了误码,应及时发出解码错误的报告。
通过该变长解码方法的“前缀匹配,后缀索引查表”的方式解码,从而达到解码效率和逻辑规模的均衡控制。并且通过本发明实施例的有效后缀长度将前缀相同的后缀尽可能的集中在一起,这样就减少了前缀的个数,因此进一步降低了逻辑规模。
本发明实施例还公开了一种划分前缀和后缀的方法,其流程图如图6所示,包括以下步骤:
步骤S601:对原始协议码表根据码长进行排序,其中该原始协议码表可以为原始变长编码VLC码表,则可根据VLC码长对原始变长编码VLC码表进行排序。
步骤S602:设置最大后缀长度。该最大后缀长度可由用户配置,对于不同的协议码型可设置不同的最大后缀长度。
步骤S603:对排列后的原始协议码表进行划分,得到所有的前后缀组合方式。
对排列后的原始协议码表进行划分,首先从最长的码字开始按照最长前缀进行划分,该最长前缀为最长码字减去最大后缀长度,然后对剩余的码字按照上述方式进行划分,得到一种前后缀组合方式;将该最大后缀长度逐渐减小后,并按照减小后的最大后缀长度重新对原始协议码表进行前后缀划分,得到所有的前后缀组合方式。例如最大后缀长度为10,则按照最大后转长度为10对原始协议码表进行前后缀划分,得到一种前后缀组合方式,将最大后缀长度原始值按1逐次递减,分别对原始协议码表进行前后缀划分,直至最大后缀长度减为0,这样可以得到至少10种前后缀组合方式。如果最大后缀长度值非常大,则可以支持将逐次递减的值增大,如逐次减2或逐次减5,可由用户根据情况设定。
步骤S604:选择出一种适合的前后缀组合方式。
选择一种适合的前后缀划分组合方式提供给硬件,选择标准可以根据硬件中内部的存储器和寄存器面积参数来进行选择,因为如果前缀较短时,硬件中的寄存器规模会相应减小,但后缀的增加会导致存储器的面积增大,同样前缀较长时,寄存器规模会相应增大,存储器的面积相应减小。因此会运行计算脚本根据硬件存储器和寄存器面积参数计算最佳的组合方式,并将所有前后缀组合方式进行循环遍历,对其对应的方案面积进行评判,选择最小的前后缀组合方案提供给硬件。或者根据原始协议码型对前后缀的划分组合进行选择,因为如果前缀过大,则解码效率会提高而硬件逻辑会增大;如果前缀过小则会影响到解码效率,因此应当根据不同长度的原始协议码型设置不同的前缀个数,如对前缀较短的原始协议码型增大1拍匹配的前缀个数,对前缀较长的原始协议码型减小1拍匹配的前缀个数。用户可以根据需要按照上述两种方法对前后缀组合方式进行选择,选择出一个适合的前后缀组合方式提供给硬件。
通过该实施例针对硬件规模的前后缀划分原则实现了硬件逻辑规模消耗的最小,并且还可通过原始协议码型的前后缀划分原则实现硬件逻辑规模与解码速度的动态调整。
如图7所示,为本发明实施例另一种划分前缀和后缀的方法,通过区分短码和长码,对短码直接解析,只对长码进行前缀和后缀的划分,提高了前后缀的划分效率。该实施例包括以下步骤:
步骤S701:对原始协议码表根据码长进行排序,其中该原始协议码表可以为原始变长编码VLC码表。
步骤S702:对短码和长码进行分辨。根据短码长度对排序后的码字进行筛选,将码长小于短码长度的码字直接输出到短码表中,将码长大于短码长度的码字直接输出到长码表中。其中,短码长度是可配置的。
步骤S703:对于短码直接解析,只对长码进行前后缀的划分。对短码表中的码字不划分前后缀,直接进行解析,对长码表中的码字进行前后缀划分。
步骤S704:设置最大后缀长度。该最大后缀长度可由用户配置,对于不同的协议码型可设置不同的最大后缀长度。
步骤S705:对长码表中的码字进行划分,得到所有的前后缀组合方式。
对排列后的原始协议码表进行划分,首先从最长的码字开始按照最长前缀进行划分,该最长前缀为最长码字减去最大后缀长度,然后对剩余的码字按照上述方式进行划分,得到一种前后缀组合方式;将该最大后缀长度逐渐减小后,并按照减小后的最大后缀长度重新对原始协议码表进行前后缀划分,得到所有的前后缀组合方式。例如最大后缀长度为10,则按照最大后转长度为10对原始协议码表进行前后缀划分,得到一种前后缀组合方式,将最大后缀长度原始值按1逐次递减,分别对原始协议码表进行前后缀划分,直至最大后缀长度减为0,这样可以得到至少10种前后缀组合方式。如果最大后缀长度值非常大,则可以支持将逐次递减的值增大,如逐次减2或减5,可由用户根据情况设定。
步骤S706:选择出一种适合的前后缀组合方式。
选择一种适合的前后缀划分组合方式提供给硬件,选择标准可以根据硬件中内部的存储器和寄存器面积参数来进行选择,因为如果前缀较短时,硬件中的寄存器规模会相应减小,但后缀的增加会导致存储器的面积增大,同样前缀较长时,寄存器规模会相应增大,存储器的面积相应减小。因此会运行计算脚本根据硬件存储器和寄存器面积参数计算最佳的组合方式,并将所有前后缀组合方式进行循环遍历,对其对应的方案面积进行评判,选择最小的前后缀组合方案提供给硬件。或者根据原始协议码型对前后缀的划分组合进行选择,因为如果前缀过大,则解码效率会提高而硬件逻辑会增大;如果前缀过小则会影响到解码效率,因此应当根据不同长度的原始协议码型设置不同的前缀个数,如对前缀较短的原始协议码型增大1拍匹配的前缀个数,对前缀较长的原始协议码型减小1拍匹配的前缀个数。用户可以根据需要按照上述两种方法对前后缀组合方式进行选择,选择出一个适合的前后缀组合方式提供给硬件。
通过该实施例针对硬件规模的前后缀划分原则实现了硬件逻辑规模消耗的最小,并且还可通过原始协议码型的前后缀划分原则实现硬件逻辑规模与解码速度的动态调整。特别是通过短码和长码的分辨,提高了前后缀的划分效率。本发明实施例提出的变长解码方法不仅能够由ASIC电路实现,还可以由软件,DSP和FPGA实现,因此基于上述实现变长解码的方法均应为本发明实施例保护范围所涵盖。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (19)
1.一种变长解码方法,其特征在于,包括以下步骤:
接收码流,将当前码流与前缀进行匹配;
当所述当前码流与所述前缀匹配成功后,根据与匹配的前缀对应的后缀的长度截取剩余码流中对应长度的码值,所述前缀和后缀为根据原始协议码表划分得到;
根据所述匹配的前缀以及所述截取的码值得到对应的解码值:以截取的码值为索引地址、以所述匹配的前缀为段地址在原始协议码表中查找对应的解码值。
2.如权利要求1所述变长解码方法,其特征在于,在所述接收码流,将当前码流与前缀进行匹配之前,还包括以下步骤:
设置所述前缀的前缀信息,所述前缀信息为所述前缀对应的最大后缀长度;
所述根据与所述前缀对应的后缀的长度截取剩余码流中的对应长度的码值具体包括:根据所述前缀信息截取剩余码流中的对应长度的码值。
3.如权利要求1所述变长解码方法,其特征在于,在所述以截取的码值为索引地址、以所述匹配的前缀为段地址在原始协议码表中查找对应的解码值之后还包括:
以截取的码值和所述匹配的前缀得到有效后缀长度;
如果所述截取的码值的位数大于所述有效后缀长度,则将所述截取的码值超出所述有效后缀长度的码值返回给剩余码流。
4.如权利要求1所述变长解码方法,其特征在于,所述前缀和后缀具体通过以下步骤得到:
对原始协议码表根据码长进行排序;
对所述排序后的原始协议码表进行前缀和后缀划分,并根据所述划分结果设置前后缀组合方式。
5.如权利要求4所述变长解码方法,其特征在于,所述对所述排序后的原始协议码表进行前缀和后缀划分,具体包括以下步骤:
设置最大后缀长度;
按照最大后缀长度对所述原始协议码表进行前后缀划分,得到一种前后缀组合方式;
将所述最大后缀长度逐渐减小,并按照减小后的最大后缀长度重新对所述原始协议码表进行前后缀划分,得到所有的前后缀组合方式。
6.如权利要求5所述变长解码方法,其特征在于,在所述得到所有的前后缀组合方式之后,还包括以下步骤:
根据所述前缀对应的参数和所述后缀对应的参数选择一种前后缀组合方式。
7.如权利要求5所述变长解码方法,其特征在于,在所述得到所有的前后缀组合方式之后,还包括以下步骤:
根据原始协议码表的码型选择一种前后缀组合方式。
8.如权利要求4所述变长解码方法,其特征在于,在对原始协议码表根据码长进行排序之后,还包括以下步骤:
将码长小于短码长度的码字设置到短码表中,对所述短码表中的码字不进行前后缀划分,直接进行解析。
9.一种变长解码芯片,其特征在于,包括前缀存储模块、后缀存储模块、前缀匹配模块和结果索引模块,
所述前缀存储模块用于存储前缀;
所述后缀存储模块用于存储原始协议码表和后缀,所述前缀和后缀为根据原始协议码表划分得到;
所述前缀匹配模块用于接收码流,并将当前码流与所述前缀存储模块中存储的前缀进行匹配;
所述结果索引模块用于在所述当前码流与所述前缀匹配成功后,根据与匹配的前缀对应的后缀的长度截取剩余码流中的对应长度的码值,并根据截取的码值以及所述匹配的前缀从所述原始协议码表中索引到解码值:以截取的码值为索引地址、以所述匹配的前缀为段地址在原始协议码表中查找对应的解码值。
10.如权利要求9所述变长解码芯片,其特征在于,还包括寄存器模块,用于存储所述前缀存储模块中的前缀,供所述前缀匹配模块进行匹配。
11.如权利要求9所述变长解码芯片,其特征在于,还包括解码错误上报模块,用于在所述前缀匹配模块未找到与当前码流匹配的前缀或结果索引模块未得到解码值时,发出解码错误的报告。
12.如权利要求9所述变长解码芯片,其特征在于,所述结果索引模块还包括有效后缀长度匹配子模块和码值返回子模块,
所述有效后缀长度匹配子模块,用于在所述截取的码值的位数大于有效后缀长度时,按照有效后缀的长度进行匹配;
所述码值返回子模块,用于将所述截取的码值超出所述有效后缀长度的码值返回给剩余码流。
13.一种变长解码装置,其特征在于,包括变长解码芯片和外部处理器,
所述变长解码芯片用于接收码流,并按照根据原始协议码表划分的前缀对当前码流进行匹配,在所述当前码流与所述前缀匹配成功后,根据与匹配的前缀对应的后缀的长度截取剩余码流中对应长度的码值,根据所述截取的码值以及所述匹配的前缀得到对应的解码值:以截取的码值为索引地址、以所述匹配的前缀为段地址在原始协议码表中查找对应的解码值;
所述外部处理器用于根据原始协议码表划分所述前缀和所述后缀并将划分好的所述前缀和所述后缀及所述原始协议码表导入所述变长解码芯片。
14.如权利要求13所述变长解码装置,其特征在于,所述变长解码芯片包括前缀存储模块、后缀存储模块、前缀匹配模块和结果索引模块,
所述前缀存储模块用于存储所述前缀的划分结果;
所述后缀存储模块用于存储所述原始协议码表和所述后缀的划分结果;
所述前缀匹配模块用于接收码流,并将当前码流与所述前缀存储模块中存储的前缀进行匹配;
所述结果索引模块用于在所述当前码流与所述前缀匹配成功后,根据与匹配的前缀对应的后缀的长度截取剩余码流中的对应长度的码值,并根据截取的码值以及所述匹配的前缀从所述后缀存储模块中索引到解码值。
15.如权利要求14所述变长解码装置,其特征在于,所述变长解码芯片还包括寄存器模块,用于存储所述前缀存储模块中的前缀,供所述前缀匹配模块进行匹配。
16.如权利要求14所述变长解码装置,其特征在于,所述结果索引模块还包括有效后缀长度匹配子模块和码值返回子模块,
所述有效后缀长度匹配子模块,用于在所述截取的码值的位数大于有效后缀长度时,按照有效后缀的长度进行匹配;
所述码值返回子模块,用于将所述结果索引模块截取的码值超出所述有效后缀长度的部分返回给剩余码流。
17.如权利要求13所述变长解码装置,其特征在于,所述外部处理器包括原始码表存储模块和前后缀划分模块,
所述原始码表存储模块用于存储原始协议码表;
所述前后缀划分模块用于对所述原始协议码表划分所述前缀和后缀。
18.如权利要求17所述变长解码装置,其特征在于,所述前后缀划分模块包括后缀长度存储子模块、前后缀组合生成子模块和前后缀组合选择子模块,
所述后缀长度存储子模块用于存储配置的最大后缀长度;
所述前后缀组合生成子模块用于根据所述配置的最大后缀长度生成所有的前后缀组合;
所述前后缀组合选择子模块用于根据所述前缀对应的参数和后缀对应的参数,或原始协议码表的码型从所述前后缀组合中选择一种前后缀组合方式。
19.如权利要求17所述变长解码装置,其特征在于,所述前后缀划分模块还包括长短码分辨子模块、短码表子模块和长码表子模块,
所述长短码分辨子模块用于根据设置的短码长度区分原始协议码表中的长码和短码,并将所述短码导入所述短码表子模块,将所述长码导入所述长码表子模块;
所述短码表子模块,用于保存所述长短码分辨子模块区分的短码,并在导入所述变长解码芯片时,通知所述变长解码芯片对短码直接解析;
所述长码表子模块,用于保存所述长短码分辨子模块区分的长码,由所述前后缀划分模块对所述长码进行前后缀划分。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101109726A CN101072034B (zh) | 2007-06-12 | 2007-06-12 | 一种变长解码方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101109726A CN101072034B (zh) | 2007-06-12 | 2007-06-12 | 一种变长解码方法及其装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101072034A CN101072034A (zh) | 2007-11-14 |
CN101072034B true CN101072034B (zh) | 2010-06-02 |
Family
ID=38899054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101109726A Active CN101072034B (zh) | 2007-06-12 | 2007-06-12 | 一种变长解码方法及其装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101072034B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102355578B (zh) * | 2011-05-25 | 2016-12-07 | 深圳市云宙多媒体技术有限公司 | 一种熵解码方法、装置 |
KR101843087B1 (ko) * | 2012-03-05 | 2018-03-28 | 삼성전자주식회사 | 디코딩 장치 및 방법 |
WO2015027401A1 (zh) | 2013-08-28 | 2015-03-05 | 华为技术有限公司 | 报文处理方法、设备及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1441555A (zh) * | 2002-02-28 | 2003-09-10 | 三星电子株式会社 | 改进的哈夫曼译码方法和装置 |
CN1251414C (zh) * | 2000-03-03 | 2006-04-12 | 德克萨斯仪器股份有限公司 | 可变长度解码系统和方法 |
-
2007
- 2007-06-12 CN CN2007101109726A patent/CN101072034B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1251414C (zh) * | 2000-03-03 | 2006-04-12 | 德克萨斯仪器股份有限公司 | 可变长度解码系统和方法 |
CN1441555A (zh) * | 2002-02-28 | 2003-09-10 | 三星电子株式会社 | 改进的哈夫曼译码方法和装置 |
Non-Patent Citations (4)
Title |
---|
Cheng-Teh Hsieh et al..A concurrent memory-efficient VLC decoder forMPEGapplications.IEEE Trans. on Consumer Electronics42 3.1996,42(3),439-446. |
Cheng-Teh Hsieh et al..A concurrent memory-efficient VLC decoder forMPEGapplications.IEEE Trans. on Consumer Electronics42 3.1996,42(3),439-446. * |
JP特开2006-254225A 2006.09.21 |
JP特开2007-60199A 2007.03.08 |
Also Published As
Publication number | Publication date |
---|---|
CN101072034A (zh) | 2007-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7650429B2 (en) | Preventing aliasing of compressed keys across multiple hash tables | |
EP2807838B1 (en) | Techniques for improved multicast content delivery | |
CN102687404B (zh) | 用于数据压缩的数据值出现信息 | |
US10091137B2 (en) | Apparatus and method for scalable and flexible wildcard matching in a network switch | |
CN100525450C (zh) | 一种实现霍夫曼译码的方法和装置 | |
US8311124B2 (en) | Decoding method and apparatus | |
US6919828B2 (en) | Variable length coding and decoding methods and apparatuses using plural mapping tables | |
US5999111A (en) | Variable length encoding/decoding apparatus using re-association of symbol-codeword for variable length code table | |
US8094048B2 (en) | Method of decoding syntax element in context-based adaptive binary arithmetic coding decoder and decoding device therefor | |
CN101072034B (zh) | 一种变长解码方法及其装置 | |
US8306108B2 (en) | Adaptive canonical Huffman decoder and method thereof and video decoder | |
US8799239B2 (en) | Method, apparatus and computer program product for performing a query using a decision diagram | |
US10218643B2 (en) | Apparatus and method for scalable and flexible access control list lookup in a network switch | |
WO2017171611A1 (en) | Variable-sized symbol entropy-based data compression | |
US20100014516A1 (en) | Table lookup mechanism for address resolution | |
US20090070357A1 (en) | Data compression apparatus and method | |
US6891976B2 (en) | Method to decode variable length codes with regular bit pattern prefixes | |
US20100040136A1 (en) | Method for performing binarization using a lookup table | |
Hassanzadeh et al. | Correlation-aware distributed caching and coded delivery | |
US9779320B2 (en) | Image processing apparatus and method for encoding an image descriptor based on a gradient histogram | |
EP1041721A2 (en) | Decoding device for Huffman-encoded data | |
US5825315A (en) | Data coding apparatus and data decoding apparatus and methods thereof | |
CN106851640A (zh) | 密码同步方法和装置 | |
US11139829B1 (en) | Data compression techniques using partitions and extraneous bit elimination | |
CN102158582A (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 |