二进制算术编码器及其编码方法技术

技术编号:13392423 阅读:101 留言:0更新日期:2016-07-22 17:49
本发明专利技术提供了一种编码区间更新与归一化模块、编码下限更新与归一化模块、码流提取模块、二进制算术编码器及其编码方法。所述二进制算术编码器包括编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块,所述编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块形成并行的三级流水结构,码流提取模块可以在一个时钟周期内处理一个或多个编码符号,实现了完全并行,解决了现有技术中并行差的问题;另外,通过选择器实现不同编码模式的共用,提高了电路的复用性,减少了硬件成本;此外,所述码流提取方法的码流提取操作简单,无须额外的FIFO资源。

【技术实现步骤摘要】
二进制算术编码器及其编码方法
本专利技术涉及视频编码
,特别涉及一种编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块,还涉及一种包含所述编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块的二进制算术编码器及其编码方法。
技术介绍
二进制算术编码器(Context-basedAdaptiveBinaryArithmeticCoder,简称CABAC)是根据二进制算术编码原理设计的编码器,CABAC中的二进制算术编码技术是基于区间的递归划分原理的。CABAC的编码过程包括:二进制化、上下文建模和算术编码。其中,二进制化是将语法元素进行简单变长映射成一串二进制位,算术编码是对每一位进行编码得到H.264/AVC的输出码流,算术编码包括区间细分和区间归一化。目前,H.264/AVC标准的二进制算术编码有三种模式,分别是常规编码模式、等概率编码模式(bypass编码模式)和截止编码模式。以常规编码模式为例,编码区间(range)分成两个子间隔,即小概率字符(LPS)的区间和大概率字符(MPS)的区间。其中,小概率字符的区间长度用rLPS表示,大概率字符的区间长度用rMPS表示,rMPS=range-rLPS。区间划分时为了减少计算量,二进制算术编码器中通过查表的方式得到rLPS。新的编码区间(range)是根据当前的编码符号(bin)是小概率字符(LPS)还是大概率字符(MPS)来确定的。为了使编码区间(range)保持在一定的范围内,需要对编码区间(range)进行归一化。在常规编码模式中,编码区间(range)的取值范围在28到29之间。若新的编码区间(range)超出了该取值范围,就需要对该编码区间(range)进行归一化,使其保持在28到29之间。归一化过程中还包括对编码下限(low)进行调整,使其与归一化后的编码区间相匹配。对于等概率编码模式而言,编码区间(range)是固定不变的。当编码符号(bin)为“0”时,编码下限(low)为2*low。当编码符号(bin)为“1”时,编码下限(low)则为2*low+range。对于截止编码模式而言,小概率字符的区间长度(rLPS)固定为2,其他操作与常规编码模式相同。可见,三种编码模式各有差异,传统的二进制算术编码器中若要同时处理三种编码模式,必须要设置专门的逻辑控制电路,增加额外的硬件成本。并且,二进制算术编码是串行编码,并行性差,完成当前编码符号(bin)一般需要多次迭代,后续编码符号(bin)的编码依赖于当前编码符号(bin)的迭代结果。而且,在归一化过程中还需要不断调整编码下限(low)的范围,归一化的计算非常复杂。目前,有些二进制算术编码器只能实现部分并行化,还有些二进制算术编码器虽然能够实现完全并行化,但是无法统一处理常规编码模式、等概率编码模式和截止编码模式这三种编码模式,即三种编码模式分开处理,重用性差。此外,目前码流提取的技术也比较落后,一般需要多个时钟周期才能完成一个编码符号(bin)的码流提取操作,为此需要依靠加数据FIFO的方式来解决码流提取操作和归一化操作之间的时间差。
技术实现思路
本专利技术的目的在于提供一种二进制算术编码器及其编码方法,以解决现有的二进制算术编码并行性差的问题。本专利技术的另一目的在于解决现有技术中二进制算术编码重用性差的问题。本专利技术的又一目的在于解决现有技术中码流提取操作复杂的问题。为解决上述技术问题,本专利技术提供一种二进制算术编码器,用于输出多种编码模式的二进制算术编码的码流,包括编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块,所述编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块形成并行的三级流水结构;所述编码区间更新与归一化模块,作为第一级流水引擎,用于提取编码状态、编码模式以及编码符号,更新编码区间和完成编码区间的归一化,并输出编码区间归一化的迭代次数以及编码区间至所述编码下限更新与归一化模块;所述编码下限更新与归一化模块,作为第二级流水引擎,用于提取编码符号、编码模式、编码区间归一化的迭代次数以及编码区间,更新编码下限和完成编码下限的归一化,并输出编码下限的溢出位以及编码下限归一化的迭代次数至码流提取模块;所述码流提取模块,作为第三级流水引擎,用于提取所述编码下限归一化的迭代次数和编码下限的溢出位,输出变长码流以及码流长度。优选的,所述的二进制算术编码器中,所述编码区间更新与归一化模块还输出大概率字符的区间长度至所述编码下限更新与归一化模块。优选的,所述的二进制算术编码器中,通过选择器实现模式复用。优选的,所述的二进制算术编码器中,所述编码模式包括常规编码模式、等概率编码模式和截止编码模式。优选的,所述的二进制算术编码器中,模式复用时,所述编码区间更新与归一化模块包括第一选择器、第一减法器、第二选择器、首1检测电路、第一移位器和第一D触发器;其中,第一选择器,用于根据提取的编码模式获得当前编码模式下的小概率字符的区间长度;第一减法器,用于根据当前的编码区间和当前编码模式下的小概率字符的区间长度,获得当前编码模式下的大概率字符的区间长度;第二选择器,用于根据当前编码模式和当前编码符号从当前的编码区间、当前编码模式下的小概率字符的区间长度和当前编码模式下的大概率字符的区间长度中择一作为归一化前的编码区间进行输出;首1检测电路,用于对所述归一化前的编码区间进行前导0计数,得到编码区间归一化的迭代次数;第一移位器,用于根据所述编码区间归一化的迭代次数对归一化前的编码区间进行左移输出归一化后的编码区间,归一化后的编码区间经所述第一D触发器后输出编码区间待下一周期备用。优选的,所述的二进制算术编码器中,当所述编码模式是等概率编码模式时,所述编码区间更新与归一化模块包括第一触发器,编码区间直接输出作为归一化后的编码区间,归一化后的编码区间经所述第一D触发器后输出编码区间待下一周期备用。优选的,所述的二进制算术编码器中,当所述编码模式是截止编码模式时,所述编码区间更新与归一化模块包括第一减法器、第二选择器、首1检测电路、第一移位器和第一D触发器;其中,第一减法器,用于根据当前的编码区间和当前编码模式下的小概率字符的区间长度,获得当前编码模式下的大概率字符的区间长度;第二选择器,用于根据当前编码模式和当前编码符号,从所述当前编码模式下的小概率字符的区间长度或当前编码模式下的大概率字符的区间长度中择一作为归一化前的编码区间进行输出;首1检测电路,用于对所述归一化前的编码区间进行前导0计数,得到编码区间归一化的迭代次数;第一移位器,用于根据所述编码区间归一化的迭代次数对归一化前的编码区间进行左移输出归一化后的编码区间,归一化后的编码区间经所述第一D触发器后输出编码区间待下一周期备用。优选的,所述的二进制算术编码器中,模式复用时,所述编码下限更新与归一化模块包括第三选择器、第四选择器、第一加法器、第五选择器、第二移位器、第三移位器、第四移位器、第一比较器和第二D触发器;其中,第三选择器,用于根据当前编码模式和当前编码符号,从所述当前的编码区间、当前编码模式下的大概率字符的区间长度和编码下限的默认值中择一作为输出;第四选择器,用于根据当前编码模式从编码下限或2本文档来自技高网
...

【技术保护点】
一种二进制算术编码器,用于输出多种编码模式的二进制算术编码的码流,其特征在于,包括编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块,所述编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块形成并行的三级流水结构;所述编码区间更新与归一化模块,作为第一级流水引擎,用于提取编码状态、编码模式以及编码符号,更新编码区间和完成编码区间的归一化,并输出编码区间归一化的迭代次数以及编码区间至所述编码下限更新与归一化模块;所述编码下限更新与归一化模块,作为第二级流水引擎,用于提取编码符号、编码模式、编码区间归一化的迭代次数以及编码区间,更新编码下限和完成编码下限的归一化,并输出编码下限的溢出位以及编码下限归一化的迭代次数至码流提取模块;所述码流提取模块,作为第三级流水引擎,用于提取所述编码下限归一化的迭代次数和编码下限的溢出位,输出变长码流以及码流长度。

【技术特征摘要】
1.一种二进制算术编码器,用于输出多种编码模式的二进制算术编码的码流,其特征在于,包括编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块,所述编码区间更新与归一化模块、编码下限更新与归一化模块和码流提取模块形成并行的三级流水结构;所述编码区间更新与归一化模块,作为第一级流水引擎,用于提取编码状态、编码模式以及编码符号,更新编码区间和完成编码区间的归一化,并输出编码区间归一化的迭代次数以及编码区间至所述编码下限更新与归一化模块;所述编码下限更新与归一化模块,作为第二级流水引擎,用于提取编码符号、编码模式、编码区间归一化的迭代次数以及编码区间,更新编码下限和完成编码下限的归一化,并输出编码下限的溢出位以及编码下限归一化的迭代次数至码流提取模块;所述编码区间更新与归一化模块还输出大概率字符的区间长度至编码下限更新与归一化模块;所述码流提取模块,作为第三级流水引擎,用于提取所述编码下限归一化的迭代次数和编码下限的溢出位,输出变长码流以及码流长度;所述二进制算术编码器通过选择器实现模式复用;所述编码模式包括常规编码模式、等概率编码模式和截止编码模式;模式复用时,所述编码下限更新与归一化模块包括第三选择器、第四选择器、第一加法器、第五选择器、第二移位器、第三移位器、第四移位器、第一比较器和第二D触发器;其中,第三选择器,用于根据当前编码模式和当前编码符号,从所述当前的编码区间、当前编码模式下的大概率字符的区间长度和编码下限的默认值中择一作为输出;第四选择器,用于根据当前编码模式从编码下限或2倍的编码下限中择一作为输出;第一加法器,用于根据所述第三选择器和第四选择器获得归一化前的编码下限;第五选择器,用于根据所述编码模式从所述编码区间归一化的迭代次数和编码下限归一化的迭代次数的默认值中择一作为编码下限归一化的迭代次数进行输出;第二移位器,用于根据编码下限归一化的迭代次数将归一化前的编码下限左移,取低9位,得到归一化后的编码下限的低9位;第三移位器,用于将所述第二移位器所得结果右移9位得到编码下限的溢出位;第四移位器,用于根据编码下限归一化的迭代次数将常数0x1ff右移,常数0x1ff右移后与归一化前的编码下限按位或操作的结果通过第一比较器与常数0x3ff进行比较,根据比较结果得到归一化后的编码下限的最高位,归一化后的编码下限经过所述第二D触发器后,输出编码下限待下一周期备用。2.如权利要求1所述的二进制算术编码器,其特征在于,模式复用时,所述编码区间更新与归一化模块包括第一选择器、第一减法器、第二选择器、首1检测电路、第一移位器和第一D触发器;其中,第一选择器,用于根据提取的编码模式获得当前编码模式下的小概率字符的区间长度;第一减法器,用于根据当前的编码区间和当前编码模式下的小概率字符的区间长度,获得当前编码模式下的大概率字符的区间长度;第二选择器,用于根据当前编码模式和当前编码符号从当前的编码区间、当前编码模式下的小概率字符的区间长度和当前编码模式下的大概率字符的区间长度中择一作为归一化前的编码区间进行输出;首1检测电路,用于对所述归一化前的编码区间进行前导0计数,得到编码区间归一化的迭代次数;第一移位器,用于根据所述编码区间归一化的迭代次数对归一化前的编码区间进行左移输出归一化后的编码区间,归一化后的编码区间经所述第一D触发器后输出编码区间待下一周期备用。3.如权利要求2所述的二进制算术编码器,其特征在于,当前编码模式为常规编码模式或等概率编码模式时,查表得到4个小概率字符的区间长度初始值,所述第一选择器选择4个小概率字符的区间长度初始值的其中一个作为当前编码模式下的小概率字符的区间长度;当前编码模式为截止编码模式时,所述小概率字符的区间长度等于2。4.如权利要求2所述的二进制算术编码器,其特征在于,当前编码模式为等概率编码模式时,所述第二选择器选择当前的编码区间为输出;当前编码模式为截止编码模式且当前编码符号为1,或当前编码模式为常规编码模式下且当前编码符号为0时,所述第二选择器选择当前编码模式下的小概率字符的区间长度为输出;其他情况所述第二选择器选择当前编码模式下的大概率字符的区间长度为输出。5.如权利要求1所述的二进制算术编码器,其特征在于,当所述编码模式是常规编码模式时,所述编码区间更新与归一化模块包括第一减法器、第二选择器、首1检测电路、第一移位器和第一D触发器;其中,第一减法器,用于根据当前的编码区间和当前编码模式下的小概率字符的区间长度,获得当前编码模式下的大概率字符的区间长度;第二选择器,用于根据当前编码模式和当前编码符号,从所述当前编码模式下的小概率字符的区间长度或当前编码模式下的大概率字符的区间长度中择一作为归一化前的编码区间进行输出;首1检测电路,用于对所述归一化前的编码区间进行前导0计数,得到编码区间归一化的迭代次数;第一移位器,用于根据所述编码区间归一化的迭代次数对归一化前的编码区间进行左移输出归一化后的编码区间,归一化后的编码区间经所述第一D触发器后输出编码区间待下一周期备用。6.如权利要求1所述的二进制算术编码器,其特征在于,当所述编码模式是等概率编码模式时,所述编码区间更新与归一化模块包括第一D触发器,编码区间直接输出作为归一化后的编码区间,归一化后的编码区间经所述第一D触发器后输出编码区间待下一周期备用。7.如权利要求1所述的二进制算术编码器,其特征在于,当所述编码模式是截止编码模式时,所述编码区间更新与归一化模块包括第一减法器、第二选择器、首1检测电路、第一移位器和第一D触发器;其中,第一减法器,用于根据当前的编码区间和当前编码模式下的小概率字符的区间长度,获得当前编码模式下的大概率字符的区间长度;第二选择器,用于根据当前编码模式和当前编码符号,从所述当前编码模式下的小概率字符的区间长度或当前编码模式下的大概率字符的区间长度中择一作为归一化前的编码区间进行输出;首1检测电路,用于对所述归一化前的编码区间进行前导0计数,得到编码区间归一化的迭代次数;第一移位器,用于根据所述编码区间归一化的迭代次数对归一化前的编码区间进行左移输出归一化后的编码区间,归一化后的编码区间经所述第一D触发器后输出编码区间待下一周期备用。8.如权利要求1所述的二进制算术编码器,其特征在于,当前编码模式为常规编码模式且编码符号为小概率字符的区间长度时,所述第三选择器选择大概率字符的区间长度为输出;当前编码模式为等概率编码模式且编码符号为1时,所述第三选择器选择当前的编码区间为输出;其余情况所述第三选择器选择编码下限的默认值为输出。9.如权利要求1所述的二进制算术编码器,其特征在于,当前编码模式为等概率编码模式时,所述第四选择器选择2倍的编码下限为输出,其他情况选择编码下限为输出。10.如权利要求1所述的二进制算术编码器,其特征在于,当前编码模式为等概率编码模式时,所述第五选择器选择编码下限归一化的迭代次数的默认值为输出,其他情况所述第五选择器选择编码区间归一化的迭代次数为输出。11.如权利要求1所述的二进制算术编码器,其特征在于,所述第四移位器将常数0x1ff右移编码下限归一化的迭代次数位后与归一化前的编码下限按位或输出,所述第一比较器将按位或输出的结果与常数0x3ff进行比较,按位或操作的结果若等于0x3ff,所述归一化后的编码下限的最高位为1,否则为0。12.如权利要求1所述的二进制算术编码器,其特征在于,当所述编码模式是常规编码模式和/或截止编码模式时,所述编码下限更新与归一化模块包括:第三选择器、第一加法器、第五选择器、第二移位器、第三移位器、第四移位器、第一比较器和第二D触发器;其中,第三选择器,用于根据当前编码符号,选择当前编码模式下的大概率字符的区间长度和编码下限的默认值输出;第一加法器,用于根据所述第三选择器编码下限获得归一化前的编码下限;第五选择器,用于根据所述编码模式,选择所述编码区间归一化的迭代次数作为编码下限归一化的迭代次数进行输出;第二移位器,用于根据编码下限归一化的迭代次数将归一化前的编码下限左移,取低9位,得到归一化后的编码下限的低9位;第三移位器,用于将所述第二移位器所得结果右移9位得到编码下限的溢出位;第四移位器,用于根据编码下限归一化的迭代次数将常数0x1ff右移,常数0x1ff右移后与归一化前的编码下限按位或操作的结果通过第一比较器与常数0x3ff进行比较,根据比较结果得到归一化后的编码下限的最高位,归一化后的编码下限经过所述第二D触发器后,输出编码下限待下一周期备用。13.如权利要求1所述的二进制算术编码器,其特征在于,当所述编码模式是等概率编码模式时,所述编码下限更新与归一化模块包括第三选择器、第一加法器、第五选择器、第二移位器、第三移位器、第四移位器、第一比较器和第二D触发器;其中,第三选择器,用于根据当前编码符号,选择所述当前的编码区间和编码下限的默认值作为输出;第一加法器,用于根据所述第三选择器和2倍的编码下限获得归一化前的编码下限;第五选择器,用于根据所述编码模式,选择编码下限归一化的迭代次数的默认值作为编码下限归一化的迭代次数进行输出;第二移位器,用于根据编码下限归一化的迭代次数将归一化前的编码下限左移,取低9位,得到归一化后的编码下限的低9位;第三移位器,用于将所述第二移位器所得结果右移9位得到编码下限的溢出位;第四移位器,用于根据编码下限归一化的迭代次数将常数0x1ff右移,常数0x1ff右移后与归一化前的编码下限按位或操作的结果通过第一比较器与常数0x3ff进行比较,根据比较结果得到归一化后的编码下限的最高位,归一化后的编码下限经过所述第二D触发器后,输出编码下限待下一周期备用。14.如权利要求1所述的二进制算术编码器,其特征在于,所述码流提取模块包括首0检测电路、第六选择器、第三D触发器、第七选择器和码流输出单元;其中,首0检测电路,用于对编码下限的溢出位进行尾部首0检测,输出第一个0之后出现的1的个数,所述第一个0之后出现的1的个数与编码下限归一化的迭代次数进行比较以得到比较结果;第六选择器,用于根据比较结果从所述第一个0之后出现的1的个数、不确定位个数的默认值和编码下限归一化的迭代次数与不确定位个数之和中择一作为不确定位个数进行输...

【专利技术属性】
技术研发人员:刘君敏胡红旗赵光焕胡志卷
申请(专利权)人:杭州士兰微电子股份有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1