专利名称:算术编码电路和算术编码控制方法
技术领域:
本发明涉及视频处理中的算术编码技术,特别涉及一种算术编码电路河一种算术编码控制方法。
背景技术:
基于H.264视频编解码标准的算术编码为一种基于上下文的自适应二进制算术编码,其编码对象是视频信号中的语法元素(SE),分为残差SE和非残差SE。
其中,残差SE包括表示当前块是否有非零系数的CBF、表示当前位置上的非0系数的绝对值减1的CALM、表示当前位置上的系数是否为0的SCF、表示当前位置上的系数是否为最后一个非0系数的LSCF等类别的数据等,每种残差SE又分为5个子类别(Cat);非残差SE包括表示前后向预测的参考图像索引的refIdx、表示当前亮度和色度块的直流和交流分量的非零情况的CBP、等类别的数据,通常仅表示为一个数值。
上述算术编码首先需要对SE进行二进制化和上下文建模处理,得到该SE所属SE类别对应的每个比特的概率模型序号。其中,一个概率模型对应一个序号;对于残差SE来说,SE类别是指某一类别下的一个子类别。然后调用并调整得到的序号对应的概率模型。
图1为现有技术中算术编码电路的结构示意图。如图1所示,现有算术编码电路包括概率模型存储单元101和概率空间更新单元102。
概率模型存储单元101,存储所有概率模型。
概率空间更新单元102,接收SE经二进制化和上下文建模得到的每个比特及每个比特对应的概率模型序号;根据预设的不同概率模型序号与存储地址的映射关系,向概率模型存储单元101输出读访问信号以及与当前比特对应的概率模型序号所对应的存储地址,接收概率模型存储单元101返回的对应的概率模型,并根据接收到的概率模型更新当前比特的概率空间;向概率模型存储单元101输出写访问信号、与当前比特对应的概率模型序号所对应的存储地址、以及更新后的概率模型。
其中,概率空间更新单元102将编码后的比特输出给外部的码流生成单元。
实际应用中,概率模型存储单元101通常为随机存储器,其访问机制为在当前单元时间接收读访问信号和存储地址,下一单元时间才返回存储在该存储地址对应的概率模型。
因此,在采用流水线方式更新概率空间时,就需要如图2所示的四级流水线,每一级依次为接收一个比特、向概率模型存储单元101输出读访问和地址信号、接收概率模型存储单元101返回的概率模型更新概率空间,并将概率空间更新后得到的概率模型写回概率模型存储单元101、输出对该比特进行编码后的码流,从而至少需要两个连续单元时间才能完成一个比特的概率空间更新,至少需要四个连续单元时间才能完成对一个比特的编码,占用了较多的单元时间,降低了编码效率。
而且,连续两个比特对应的概率模型可能相同,也就是需要连续访问概率模型存储单元101的同一存储地址。这种情况下,由于存储器需要在接收写访问信号和存储地址以及待存储的概率模型的下一单元时间,才将待存储的概率模型存储到对应的存储地址,因此,只有等待上一比特对应的概率模型写回概率模型存储单元101稳定存储之后,即额外再等待一个单元时间后,才能访问概率模型存储单元101读取下一比特对应的概率模型,进一步降低了编码效率。
可见,现有技术中由于对存储概率模型的存储器进行读写操作占用较多的单元时间,从而使得算术编码的效率不高。
发明内容
有鉴于此,本发明的一个主要目的在于,提供一种算术编码电路,能够提高算术编码的效率。
本发明的另一个主要目的在于,提供一种算术编码控制方法,能够提高算术编码的效率。
根据上述的一个主要目的,本发明提供了一种算术编码电路,包括概率模型存储单元和概率空间更新单元,其特征在于,该电路进一步包括寄存器组和控制单元,其中,所述控制单元,根据预设的概率模型与存储地址的映射关系,将所述概率模型存储单元中,与当前语法元素SE对应的概率模型分别存储到所述寄存器组中的对应寄存器中,并将概率模型与寄存器的映射关系输出给所述概率空间更新单元;在接收到所述概率空间更新单元输出的表示当前SE的概率空间更新已完成的信号后,根据概率模型与寄存器的映射关系、以及概率模型与存储地址的映射关系,将所述寄存器组中存储的概率模型存储到所述概率模型存储单元中;所述寄存器组中的每个寄存器,分别存储接收到的概率模型;所述概率空间更新单元,顺序接收当前SE经二进制化和上下文建模得到的每个比特及每个比特对应的概率模型序号;根据控制单元输出的所述概率模型与寄存器的映射关系、以及接收到的比特及其对应的概率模型序号,从所述寄存器组中读取对应的概率模型,根据读取的概率模型更新当前接收到的比特对应的概率空间,并将概率空间更新后得到的概率模型写入到所述寄存器组中对应的寄存器中;在完成对当前SE的所有比特的概率空间更新后,向所述控制单元输出所述表示当前SE的概率空间更新已完成的信号。
所述控制单元与外部二进制化和上下文建模单元的输入端相连,接收输入的SE并判断当前的SE对应的概率模型。
所述当前SE经二进制化和上下文建模得到的每个比特中,包括一个标志位,表示该比特在当前SE的所有比特构成的比特串中的位置;所述概率空间更新单元根据所述标志位,判断是否完成对当前SE的所有比特的概率空间更新。
该电路进一步包括缓存器,对所述当前SE经二进制化和上下文建模得到的每个比特及每个比特对应的概率模型序号进行缓存,并输出给所述概率空间更新单元。
所述寄存器组为两个;所述控制单元交替将连续的两个不同SE对应的所有概率模型分别存储到所述两个寄存器组中的一个。
根据上述的另一个主要目的,本发明提供了一种算术编码控制方法,包括根据预设的概率模型与存储地址的映射关系,将概率模型存储单元存储的所有概率模型中,与当前语法元素SE对应的概率模型存储到寄存器组中的对应寄存器中,并将概率模型与寄存器的映射关系输出给概率空间更新单元;在概率空间更新单元完成当前SE对应的概率空间更新后,根据概率模型与寄存器的映射关系、以及概率模型与存储地址的映射关系,将寄存器组中存储的概率模型存储到概率模型存储单元中。
所述将概率模型存储单元存储的所有概率模型中,与当前语法元素SE对应的概率模型存储到寄存器组中的对应寄存器中之前,该方法进一步包括接收外部输入的SE,判断当前的SE对应的所有概率模型。
所述寄存器组为两个;所述两个寄存器组中的任意一个存储着当前SE对应的概率模型;在概率空间更新单元完成当前SE对应的概率空间更新之前,该方法进一步包括根据预设的概率模型与存储地址的映射关系,将概率模型存储单元存储的所有概率模型中,与下一个SE对应的概率模型存储到另一个寄存器组中的对应寄存器中;
在概率空间更新单元完成当前SE对应的概率空间更新后,该方法进一步包括将下一个SE对应的概率模型与寄存器的映射关系输出给概率空间更新单元。
由上述技术方案可见,本发明在对每一个SE进行编码开始之前,先将存储器中存储的所有概率模型中,与当前SE的所有比特对应的概率模型写入到寄存器组中,并在更新概率空间的过程中,在一个单元时间内从寄存器组中调用每个比特对应的概率模型,将更新后的概率模型存储到寄存器组中,然后在结束对当前SE的所有比特的概率空间更新后,再在一个单元时间内将寄存器组中的概率模型存储到存器中的对应位置。由于从寄存器中读取数据、向寄存器中写数据均能够在一个单元时间内完成,从而减少了更新概率空间所占用的单元时间数量,进而能够提高算术编码的效率。
而且,寄存器的成本低,从而使得本发明的实现成本较低,易于推广。
本发明还可以设置两个寄存器组,并通过交替使用两个寄存器组,消除在连续的两个不同SE编码过程之间的等待时间,进一步提高了算术编码的效率。
图1为现有技术中算术编码电路的结构示意图。
图2为现有技术中基于流水线方式更新概率空间的过程示意图。
图3为本发明中算术编码电路的结构示意图。
图4为本发明中基于流水线方式更新概率空间的过程示意图。
图5为本发明中算术编码控制方法的流程示意图。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
本发明实施例中,在对每一个SE进行编码开始之前,先将存储器中存储的所有概率模型中,与当前SE的所有比特对应的概率模型写入到寄存器组中,并在更新概率空间的过程中,从寄存器组中调用每个比特对应的概率模型,将更新后的概率模型存储到寄存器组中,然后在结束对当前SE的所有比特的概率空间更新后,再将寄存器组中的概率模型存储到存器中的对应位置。这样,由于从寄存器中读取数据、向寄存器中写数据均能够在一个单元时间内完成,从而减少了更新概率空间所占用的单元时间数量,进而能够提高算术编码的效率。
图3为本发明中算术编码电路的结构示意图。如图3所示,本发明实施例中的算术编码电路包括概率模型存储单元101、概率空间更新单元102、控制单元303和寄存器组304。
概率模型存储单元101,存储所有概率模型。
控制单元303,根据预设的概率模型与存储地址的映射关系,将概率模型存储单元101存储的所有概率模型中,与当前SE对应的所有概率模型分别存储到寄存器组304中的对应寄存器中,并将概率模型与寄存器的映射关系输出给概率空间更新单元102;在接收到概率空间更新单元102输出的表示当前SE的对应的概率空间更新已完成的信号后,根据概率模型与寄存器的映射关系、以及概率模型与存储地址的映射关系,将寄存器组304中存储的概率模型存储到概率模型存储单元101中。
其中,控制单元303可以与外部二进制化和上下文建模单元的输入端相连,接收输入的SE,从而能够判断当前的SE所属类别及其对应的所有概率模型。
实际应用中,控制单元303可先将与当前语法元素SE对应的概率模型从概率模型存储单元101中读出,再写入到寄存器组304对应的寄存器中,即实现概率模型的中继传输;控制单元303也可以控制概率模型存储单元101将与当前语法元素SE对应的概率模型直接输出到寄存器组304对应的寄存器中。同理,在将寄存器组304中的概率模型存储到概率模型存储单元101时,也可以采用中继传输的方式或者控制寄存器组304直接输出到概率模型存储单元101的方式来实现。
寄存器组304中的每个寄存器,分别存储接收到的概率模型。
概率空间更新单元102,顺序接收当前SE经二进制化和上下文建模得到的每个比特及每个比特对应的概率模型序号;根据控制单元303输出的概率模型序号与寄存器的映射关系、以及接收到的比特及其对应的概率模型序号,从寄存器组304中对应的寄存器中读取对应的概率模型,并根据读取的概率模型更新当前比特的概率空间,再将概率空间更新后得到的概率模型写入到寄存器组304中对应的寄存器中;在完成对当前SE的所有比特的概率空间更新后,向控制单元303输出表示当前SE的概率空间更新已完成的信号。
其中,由于当前SE经二进制化和上下文建模得到的所有比特中,都具有一个标志位,表示该比特是当前SE中所有比特的第几个,即该比特在当前SE的所有比特构成的比特串中的位置,因此,概率空间更新单元102能够判断出当前SE中所有比特的最后一个,从而在更新了最后一个比特的概率空间后,能够判断出已完成对当前SE的所有比特的概率空间更新,并向控制单元303输出表示当前SE的概率空间更新已完成的信号;概率空间更新单元102将编码后的比特输出给外部的码流生成单元。
上述算术编码电路中还可以包括缓存器305,对外部二进制化和上下文建模单元输出的每个比特及每个比特对应的概率模型序号进行缓存,并输出给概率空间更新单元102。
这样,由于从寄存器中读取概率模型只需要一个单元时间。因此,在采用流水线方式更新概率空间时,就只需要如图4所示的三级流水线,每一级依次为接收一个比特、从寄存器组304中读取对应的概率模型更新概率空间并将更新后的概率模型写回寄存器组304、输出对该比特进行编码后的码流,从而只需要一个单元时间即可完成一个比特的概率空间更新,且只需要三个连续单元时间即可完成对一个比特的编码,相比于现有技术减少了占用的单元时间,提高了算术编码的效率。
而且,由于向寄存器中写入概率模型也只需要一个单元时间,因此,即便连续两个比特对应的概率模型相同,也就是需要连续访问寄存器组304中的同一寄存器,也不需要额外再等待一个单元时间,而是能够直接再次读取,进一步提高了算术编码的效率。
在实际应用中,控制单元303需在将寄存器组304中存储的概率模型存储到概率模型存储单元101中之后,再将下一个SE对应的所有概率模型从概率模型存储单元101中写入到寄存器组304中,这就使得在对每个SE的所有比特对应的概率模型之后,均有一定的等待时间。
但该等待时间一般只包括四个单元时间向概率模型存储单元102输出写信号和存储地址以及待存储的概率模型所占用的一个单元时间、概率模型存储单元102将接收到的概率模型存储到对应存储地址所占用的一个单元时间、向概率模型存储单元102输出读信号和存储地址所占用的一个单元时间、将概率模型存储单元102返回的概率模型存储到寄存器组304所占用的一个单元时间。
对于每个SE来说,在二进制化和上下文建模之后得到的所有比特,通常包括远远多于四个,而对每个比特的编码均能够减少一个单元时间,即对每个SE的编码过程能够减少远远多于四个的单元时间。因此,上述的等待时间远远小于实际在编码过程中所减少的时间。
如果需要消除上述的等待时间,可以设置两个寄存器组,例如第一寄存器组和第二寄存器组。当前SE对应的所有概率模型存储在第一寄存器组中,在对当前SE的所有比特进行编码的过程中,将下一个SE对应的所有概率模型存储到第二寄存器组中。这样,在完成当前SE的所有比特对应的概率空间更新后,即可立即将概率模型与第二寄存器组中的寄存器的映射关系输出给概率空间更新单元102,开始对下一个SE的所有比特对应的概率模型进行更新;在对下一个SE的所有比特进行编码的过程中,再将第一寄存器组中存储的所有概率模型写入到概率模型存储单元101中。
可见,通过交替使用两个寄存器组,即可消除在连续的两个不同SE编码过程之间的等待时间,进一步提高了算术编码的效率。
以上是对本发明中算术编码电路的说明,下面,再对本发明中的算术编码控制方法进行详细说明。
图5为本发明中算术编码控制方法的流程示意图。如图5所示,本发明实施例中的算术编码控制方法包括步骤501,接收外部输入的SE,判断当前的SE对应的所有概率模型。
步骤502,根据预设的概率模型与存储地址的映射关系,将概率模型存储单元存储的所有概率模型中,与当前SE对应的所有概率模型分别存储到寄存器组中的对应寄存器中,并将概率模型与寄存器的映射关系输出给概率空间更新单元。
步骤503,在完成当前SE的所有比特对应的概率空间更新后,根据概率模型与寄存器的映射关系、以及概率模型与存储地址的映射关系,将寄存器组中存储的概率模型存储到概率模型存储单元中。
至此,本流程结束。
这样,由于从寄存器中读取概率模型只需要一个单元时间。因此,只需要一个单元时间即可完成一个比特的概率空间更新,且只需要三个连续单元时间即可完成对一个比特的编码,相比于现有技术减少了占用的单元时间,提高了算术编码的效率。
而且,由于向寄存器中写入概率模型也只需要一个单元时间,因此,即便连续两个比特对应的概率模型相同,也就是需要连续访问寄存器组中的同一寄存器,也不需要额外再等待一个单元时间,而是能够直接再次读取,进一步提高了算术编码的效率。
上述流程为一个循环执行的流程,在对多个SE进行算术编码的过程中,即可循环执行多个上述流程。如果寄存器组为两个,则可以交替使用两个寄存器组,即在执行当前流程的步骤503的同时,即可开始执行下一个流程的步骤501。也就是说,在完成当前SE的所有比特对应的概率空间更新之前,根据预设的概率模型与存储地址的映射关系,将概率模型存储单元存储的所有概率模型中,与下一个SE对应的所有概率模型分别存储到另一个寄存器组中的对应寄存器中;在完成当前SE的所有比特对应的概率空间更新后,将下一个SE对应的所有概率模型与寄存器的映射关系输出给概率空间更新单元,实现了对时间的复用,从而进一步提高了算术编码的效率。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种算术编码电路,包括概率模型存储单元和概率空间更新单元,其特征在于,该电路进一步包括寄存器组和控制单元,其中,所述控制单元,根据预设的概率模型与存储地址的映射关系,将所述概率模型存储单元中,与当前语法元素SE对应的概率模型分别存储到所述寄存器组中的对应寄存器中,并将概率模型与寄存器的映射关系输出给所述概率空间更新单元;在接收到所述概率空间更新单元输出的表示当前SE的概率空间更新已完成的信号后,根据概率模型与寄存器的映射关系、以及概率模型与存储地址的映射关系,将所述寄存器组中存储的概率模型存储到所述概率模型存储单元中;所述寄存器组中的每个寄存器,分别存储接收到的概率模型;所述概率空间更新单元,顺序接收当前SE经二进制化和上下文建模得到的每个比特及每个比特对应的概率模型序号;根据控制单元输出的所述概率模型与寄存器的映射关系、以及接收到的比特及其对应的概率模型序号,从所述寄存器组中读取对应的概率模型,根据读取的概率模型更新当前接收到的比特对应的概率空间,并将概率空间更新后得到的概率模型写入到所述寄存器组中对应的寄存器中;在完成对当前SE的所有比特的概率空间更新后,向所述控制单元输出所述表示当前SE的概率空间更新已完成的信号。
2.如权利要求1所述的电路,其特征在于,所述控制单元与外部二进制化和上下文建模单元的输入端相连,接收输入的SE并判断当前的SE对应的概率模型。
3.如权利要求1所述的电路,其特征在于,所述当前SE经二进制化和上下文建模得到的每个比特中,包括一个标志位,表示该比特在当前SE的所有比特构成的比特串中的位置;所述概率空间更新单元根据所述标志位,判断是否完成对当前SE的所有比特的概率空间更新。
4.如权利要求1所述的电路,其特征在于,该电路进一步包括缓存器,对所述当前SE经二进制化和上下文建模得到的每个比特及每个比特对应的概率模型序号进行缓存,并输出给所述概率空间更新单元。
5.如权利要求1至4中任意一项所述的电路,其特征在于,所述寄存器组为两个;所述控制单元交替将连续的两个不同SE对应的所有概率模型分别存储到所述两个寄存器组中的一个。
6.一种算术编码控制方法,其特征在于,包括根据预设的概率模型与存储地址的映射关系,将概率模型存储单元存储的所有概率模型中,与当前语法元素SE对应的概率模型存储到寄存器组中的对应寄存器中,并将概率模型与寄存器的映射关系输出给概率空间更新单元;在概率空间更新单元完成当前SE对应的概率空间更新后,根据概率模型与寄存器的映射关系、以及概率模型与存储地址的映射关系,将寄存器组中存储的概率模型存储到概率模型存储单元中。
7.如权利要求6所述的方法,其特征在于,所述将概率模型存储单元存储的所有概率模型中,与当前语法元素SE对应的概率模型存储到寄存器组中的对应寄存器中之前,该方法进一步包括接收外部输入的SE,判断当前的SE对应的所有概率模型。
8.如权利要求7所述的方法,其特征在于,所述寄存器组为两个;所述两个寄存器组中的任意一个存储着当前SE对应的概率模型;在概率空间更新单元完成当前SE对应的概率空间更新之前,该方法进一步包括根据预设的概率模型与存储地址的映射关系,将概率模型存储单元存储的所有概率模型中,与下一个SE对应的概率模型存储到另一个寄存器组中的对应寄存器中;在概率空间更新单元完成当前SE对应的概率空间更新后,该方法进一步包括将下一个SE对应的概率模型与寄存器的映射关系输出给概率空间更新单元。
全文摘要
本发明公开了一种算术编码电路和一种算术编码控制方法。本发明在对每一个SE进行编码开始之前,先将存储器中存储的所有概率模型中,与当前SE的所有比特对应的概率模型写入到寄存器组中,并在更新概率空间的过程中,从寄存器组中调用每个比特对应的概率模型,将更新后的概率模型存储到寄存器组中,然后在结束对当前SE的所有比特的概率空间更新后,再将寄存器组中的概率模型存储到存器中的对应位置。由于从寄存器中读取数据、向寄存器中写数据均能够在一个单元时间内完成,从而减少了更新概率空间所占用的单元时间数量,进而能够提高算术编码的效率。而且,寄存器的成本低,从而使得本发明的实现成本较低,易于推广。
文档编号H03M7/30GK101087410SQ200710117698
公开日2007年12月12日 申请日期2007年6月21日 优先权日2007年6月21日
发明者刘子熹 申请人:北京中星微电子有限公司