专利名称:Cabac解码系统及方法
技术领域:
本发明涉及视频编码技术领域,尤其涉及一种CABAC解码系统及方法。
背景技术:
CABAC(基于上下文的自适应算术编码)是最新国际视频编码标准H.264中所采用的两套熵编码方案之一,其与另外一套熵编码方案CAVLC(基于上下文的自适应变长编码器)相比,具有更好的压缩效率。
熵编码器其功能在于依照宏块扫描顺序将每个宏块中所有的语法元素的值按固定次序依次编码到码流中。所述的宏块是视频图像编码的基本单元块。待编码的每幅图像均需要被划分成为若干宏块后再进行编码处理。视频编码标准H.264中支持两种基本的宏块扫描顺序。
CABAC编码过程包括三个主要部分二值化,context(上下文)概率模型的选择和更新以及二值算术编码。
其中,所述的二值化过程是对语法元素进行编码前的预处理过程。每个语法元素的值根据一定的规则映射成为一串0和1组成的二值字符串。所述映射规则因语法元素的不同而不同。
在二值算术编码器中还需要采用待编码bin(CABAC编解码基本的比特位)的概率估计值PLPS进行编码,其中,所述context概率模型即是为计算PLPS而设。具体为在编码每一个bin之前,都要估计其为0和为1的概率,如果其为0的概率大一些,那么MPS(大概率符号标志)就是0,LPS(小概率符号标志)就是1;否则,MPS就是1,LPS就是0。PLPS就是bin的值为LPS的概率估计值,它的取值范围在
之间。CABAC编码过程中需要为每个bin都设置了相对应的context概率模型。每个context概率模型包括一个state(状态)值,一个MPS值,state指示的即PLPS。在编码过程中,会用到已编码完毕的相邻左宏块和上宏块的信息计算编码当前宏块的bin所需要的context概率模型,其计算规则在H.264标准文档[2]中有详细的规定。选择好context概率模型后,即可开始对bin进行二值算术编码。
所述的二值算术编码过程的基本思想是用
中的实数来编码信源。实数的长度和信源字符序列的概率有关。算术编码过程中要用到两个基本的参数,具体为各符号的概率估计值和当前区间。编码的具体方法是首先定义当前区间为
,然后对每个bin做编码或解码,对每个bin的编解码不断重复如下过程a、将当前区间分割成若干子区间,各个子区间的长度正比于各个可能输入的符号的概率估计值;b、将对应实际出现的符号的子区间定义为新的当前区间;上述编码过程中,由于反复分割当前区间越来越小,为了保持计算精度,在步骤b所述过程结束后如果当前区间长度小于0.5时会进行重正化过程,以保证编码下一个符号时候当前区间长度总是不小于0.5。
下面将对重正化的处理过程进行说明1、计算小概率符号的概率值PLPS;2、计算小概率符号LPS和大概率符号MPS对应的编码区间RLPS和RMPS具体如下RLPS=Rangei*PLPS;RMPS=Rangei-RLPS;其中,Rangei是指解码区间值;3、计算新的区间
如果当前输入bin对应的是LPS的值,则Rangei+1=RLPS;Offseti+1=Offseti+RLPS;其中,Offseti是指解码过程中的偏移值;如果当前输入bin对应的是MPS的值,则Rangei+1=RLPS;4、更新小概率符号的概率值RLPS;5、输出解码结果,并重正化编码区间Rangei+1。
CABAC实现过程是全整数精度的运算。当前子区间下界为Offseti,子区间长度为Rangei都保留9比特整数精度。重正化过程保证Rangei的最高比特第8比特始终是1。
从上面的式子中可以看出,在二值算术编码器中需要用到的数值是Rangei*PLPS。在CABAC中为了降低实现复杂度,并不直接计算小概率符号的概率值PLPS和Rangei的乘积,而是直接把计算好的值存储在一张二维表中直接通过查表得到。表的索引包括6比特state值和2比特qCodIRangeIdx值,所述6比特值来源于context概率模型对应PLPS,所述2比特值来源于Rangei的第7比特和第6比特,即除最高第8比特外的最高两比特。6比特state值取值范围0~63,2比特qCodIRangeIdx值取值0~3。
编码完毕后,需要根据当前编码的bin的值对Context概率模型进行更新。而MPS的值仅在编码前state值为0且当前bin是LPS是才翻转,即原来是0则变成1,原来是1则变成0,否则保持不变。
CABAC算法是2003年JVT(ITU-T国际视频组织ISO的MPEG的联合小组)会议上正式成形推出的。迄今为止,相应的CABAC的解码器主要是纯软件解码和软件解码与硬件解码相结合的结构。
目前的一种是纯软件CABAC解码器,纯软件解码是按照算法流程在PC机上执行解码过程。因而,纯软件解码器实际就是CPU单独起全部的CABAC解码任务,解码速度极慢,无法满足实时应用场合的需要。
目前采用的另一种方案中含有软硬件结合的解码器结构,其中,硬件部分包括单bin的解码硬件结构,该结构中,对于每个bin的解码采用one cycleone bin(一个周期一个bin)硬件解码结构。
可以看出,在该方案中采用one cycle one bin硬件加速方法比之第一种实现方式中提供的纯软件的解码方案,解码效率大大提高,然而,相应的编码效率仍然有继续提高的空间。
发明内容
本发明的目的是提供一种CABAC解码系统及方法,从而可以大大提高CABAC解码效率,有效改善CABAC的编解码性能。
本发明的目的是通过以下技术方案实现的本发明提供了一种CABAC解码系统,其结构包括至少一组解码bin的单元;所述的一组解码bin的单元包括至少两个依次串联连接的解码bin的单元,所述的解码bin的单元用于对待解码的比特流中的bin进行解码处理;所述的各解码bin的单元其输入信息分别包括解码bin需要的参数信息以及待解码的比特流,输出信息分别包括更新后的所述参数信息及针对若干个bin的解码结果;所述的各解码bin的单元输入的解码bin需要的输入信息包括与其连接的解码bin的单元的输出信息中的更新后的参数信息。
所述的解码bin的单元包括解码正常编码模式bin的单元和/或解码旁路编码模式的单元。
所述的系统中,当所述的解码bin的单元包括解码正常编码模式bin的单元时,上一级解码正常编码模式bin的单元输出更新后的区间值和偏移值,并作为下一级解码正常编码模式bin的单元的输入区间值和偏移值信息。
所述的系统还包括重正化处理模块,用于对解码正常编码模式的单元的输出的区间值和偏移值进行重正化处理,并将处理后的结果作为下一级解码正常编码模式的单元或解码旁路编码模式的单元的输入区间值和偏移值信息。
所述的系统还包括多路选择器,所述的多路选择器的输入为上一级解码正常编码模式bin的单元输出的更新后的概率模型和新的概率模型,输出为两输入的概率模型中选择的一种。
所述系统中,当所述的解码bin的单元包括解码旁路编码模式bin的单元时,上一级解码旁路编码模式bin的单元或解码正常编码模式bin的单元输出的更新后的区间值和偏移值作为下一级解码旁路编码模式bin的单元的输入区间值和偏移值。
所述的系统还包括输出模块,用于根据控制信号以及解码所得bin值在解码bin的各个单元的输出的重正化后得到的更新的区间值和偏移值信息之间进行选择,由组合逻辑决定最终输出一拍内整个解码过程的更新后的区间值和偏移值。
本发明还提供了一种CABAC解码方法,包括A、在一个时钟周期内,由一组控制信号综合控制至少两个解码bin的单元,控制信号和解码单个bin的单元根据输入的区间值和偏移值对输入的待解码的比特流进行解码处理,完成若干个bin的解码;B、根据控制信号以及解码所得bin值在解码bin的各个单元的输出的重正化后得到的更新的区间值和偏移值信息之间进行选择,并由组合逻辑决定最终输出一拍内整个解码过程的更新后的区间值和偏移值,同时,还输出若干个bin的解码结果。
所述的步骤A包括对正常编码模式bin解码处理和对旁路编码模式bin的解码处理。
所述的步骤A还包括所述的解码bin的单元根据输入的第一控制信号确定当前的解码处理为对正常编码模式bin解码处理还是对旁路编码模式bin的解码处理。
本发明中,当确定所述解码bin的单元解码正常编码模式bin时,所述的步骤A还包括根据引入的第二控制信号确定当前进行解码处理的解码bin的单元。
本发明中,当确定所述解码bin的单元解码正常编码模式bin时,所述的步骤A还包括所述单元根据引入的第三控制信号确定选择上一级单元更新后的概率模型或者新的概率模型进行解码处理。
所述的步骤A包括在上一级解码单元解码的同时并行计算出上一级单元更新后的概率模型的全部可能情况,并根据所述的更新后的概率模型导出概率模型索引得信息,在上一级解码单元解码完毕后在准备好的所有概率模型索引得信息中选择其中之一作为下一级解码单元所需要的更新后的概率模型索引得信息。
本发明中,当确定所述解码bin的单元解码正常编码模式bin时,所述的步骤A还包括所述单元根据引入的第四控制信号确定在当前解码周期内是否需要解码正负号信息。
本发明中,当确定所述解码bin的单元解码旁路编码模式bin时,所述的步骤A还包括根据所述第一控制信号的取值确定对指数哥伦布码的前缀或后缀进行解码处理,且当解码前缀时,解码到旁路编码模式bin值为0时解码结束,当解码后缀时,根据引入的用于确定当前解码拍内需要解码的旁路编码模式bin的数量第五控制信号确定需要解码的旁路编码模式bin的数量。
所述的步骤B还包括在对正常编码模式bin解码处理过程中,如果解码符号位,解码结果还包括符号位信息。
所述的步骤B还包括通过重正化处理模块对更新后的区间值和偏移值信息进行重正化处理,并获得重正化处理后的区间值和偏移值,作为该解码单元的最后更新值,用于同一拍内其它解码bin单元输入或者该拍内最终输出的区间值和偏移值。
由上述本发明提供的技术方案可以看出,本发明与现有技术的一个周期一个bin的解码结构相比具有更高的解码效率。同时,本发明不仅实现了高速解码,而且,本发明还使得解码过程中的硬件资源的消耗保持在一个合理的范围内。因此,本发明提供了一种高效、合理的解码系统。
图1为解码正常编码模式bin的二级树解码结构示意简图;图2为解码旁路模式bin的多级树电路解码结构示意简图;图3为级联两个解码单个正常编码模式bin的二级树结构示意图;图4为级联两个解码单个旁路编码模式bin的二级树结构示意图;图5为控制信号控制两个解码正常编码模式bin的单元以及两个解码旁路编码模式bin的单元的结构示意图;图6为解码过程树状示意图。
具体实施例方式
本发明的核心是利用CABAC解码的特点,提供一种多级bin的CABAC解码硬件结构,使得硬件在一个cycle(周期)中可以完成2个甚至更多的bin的解码,实现算术解码bin单元的并行性。进而使得本发明可以充分发挥硬件解码效率高的优势。
本发明中,为了加快解码速度,设计了一拍内解码多个bin的多级树解码结构。也就是采用多个(至少两个)解码一个bin需要的单元,并在多级解码树结构中将原来解码一个bin的单元级联起来,从而实现一拍内可以解码多个bin,而在现有技术中一拍内解码一个bin的解码结构中仅有一个所述单元。
本发明在实现过程中,至少包括一组解码bin的单元,而且,所述的一组解码bin的单元包括至少两个依次串联连接的解码bin的单元(具体为解码正常编码模式bin的单元和解码旁路编码模式bin的单元中的至少一项),例如,图5中的两个解码正常编码模式bin的单元构成一组解码bin的单元,两个解码旁路编码模式bin的单元构成另一组解码bin的单元,所述的解码bin的单元用于对待解码的比特流中的bin进行解码处理。
所述的各解码bin的单元其输入信息分别包括解码bin需要的参数信息以及待解码的比特流,输出信息分别包括更新后的所述参数信息及针对若干个bin的解码结果;而且,所述的各解码bin的单元输入的解码bin需要的输入信息包括与其连接的解码bin的单元的输出信息中的更新后的参数信息。
在CABAC解码中,需要频繁解码的两种语法元素是mvd(运动矢量)和level(残差系数)以及map_last(位置信息),所以针对这些语法元素的解码是要用硬件加速的重点。
mvd,level的绝对值二值化bin串包括前缀和后缀哥伦布码。前缀是一元码,映射规则是0映射到0,1映射到10,2映射到110,3映射到1110...。后缀哥伦布码包括自己的前缀和后缀部分。哥伦布码的前缀是一元码;其后缀是一个二值化bin串,其长度由哥伦布码的前缀决定,例如mvd的后缀是三阶指数哥伦布码,哥伦布码的后缀长度是前缀长度加2;level的后缀是一阶指数哥伦布码,哥伦布码的后缀长度是前缀长度减1。对非零mvd,其绝对值之后都带有1个bin指示其符号信息;对于所有level(实际上是非零残差系数绝对值减1),其绝对值二值化bin串后都带有1个bin指示其符号信息。
map_last的二值化如下map,last成对出现。它们都是1个bin。map如果是0,则没有last信息;否则,map后带有1个bin的last信息。
为了实现对mvd,level还有map_last的快速解码,本发明提供了两种基本的多级bin解码结构,下面将分别进行说明。
其中,第一种结构如图1所示,该结构仅以一拍内解码两个bin为例,结构中设置有解码两个正常编码模式bin的单元,且每个单元后面都带有解码旁路编码模式bin的单元。更简单的示意图见图6树a。该结构可以用于加速解码mvd,level的前缀和map_last对部分该结构的入口信息包括用于算术编解码的解码区间Rang、偏移值Offset以及待解码的码流信息bits,还有用来表示context信息的state0和state1,分别用来标志两个bin解码过程中可能会用到的上下文信息。
该结构的输出信号有更新的Rang和Offset,即Rang_up和Offset_up,以及更新的context信息,即state_up0和state_up1信息,还有解码所述码流信息得到的两个bin的值bin0、bin1,如果解码符号位,那么输出的还有符号位的信息标志flag。
第二种结构中设置有解码两个旁路编码模式bin的单元,可对mvd,level的后缀部分快速解码。其结构如图2所示,更简单的示意图见图6树b。该结构可以完成功能是采用Golomb(哥伦布码)的方法解码系数,这种解码电路的特点是不需要上下文的维护信息,这是Golomb解码的前缀或后缀的实现电路。电路中包含n个bypass(旁路编码模式)解码电路,所述的n大于等于2,即n的值可以根据需要自由设定,例如可以设定为2、3、4或5等等。
mvd和level二值化后得到的字符串包括前缀和后缀。通常语法元素level和mvd的取值较小,只有前缀,前缀是若干个正常编码模式bin,最后带一个旁路模式编码的bin(正负号)形式编码的,如图1所示的电路结构就能够实现解码功能。
有些情况语法元素level和mvd会有较大的取值,这样解码过程便会带有后缀,所述后缀是若干个旁路编码模式bin,最后也带一个旁路模式的bin(正负号)的形式来编码的,此时,如果解码后缀,则可以采用图2所示的电路结构。
Map_last对可直接用不带解码旁路模式编码bin单元的实现,如采用图1所示的结构实现,这只需要输出时选择解码正常编码模式编码bin单元的输出作为这一拍最终的输出即可。
对于除了mvd,level和map_last之外的其他语法元素二值化后都是一串正常编码模式bin,其在一个宏块内所占的分量很少,因此,其可以无需特别加速,相应的解码过程采用一拍解码一个bin即可。这种情况直接用图1中一个解码正常编码模式bin单元即可。
其中,对于图1所示的结构,如果是同时解码2个bin,而且其中涉及到概率模型的更新,下面详细的说明这部分电路的具体实现及工作原理。
本发明中,小概率符号LPS对应的编码区间rLPS不是直接查二维表2得到的,而是先由6比特的state的值索引得到二维表中一组4个rLPS的值(其中,state取值64种情况,range的2个比特取值4种情况,这样用state和range的2个比特作联合索引一共有256个rLPS值,这里仅用state作第一次索引,得到一组4个rLPS,对应再用range的2个比特作第二次索引时的4个rLPS),这4个值需要在前一拍内需要准备好,记作rlpsg,称为概率模型索引得信息。在当前解码拍直接用range的2个比特在rlpsg中通过多路选择器MUX选出rLPS的值。
相应的级联两个解码单个正常编码模式bin的二级树结构如图3所示。其中,所述的解码bin的单元包括解码正常编码模式bin的单元,即解码第一个正常编码模式bin的单元和解码第二个正常编码模式bin的单元,以及重正化处理模块和多路选择器MUX。
所述的解码正常编码模式bin的单元的输入信息flpsg包含了解码对应bin的context的信息,具体为由6比特的state的值索引通过查表得到的,这个值在前一拍内就可以准备好。可以看到,第一个bin解码完成后,需要对更新的range_new、offset_new进行重正化处理,range、offset更新重正化后获得的值将作为解码第二个bin的输入。
由于解码第二个bin可能用和第一个bin相同的概率模型,也可能用另外的概率模型,因此,在图3中,用一个多路选择器MUX在第一个bin所用概率模型更新并且为第二个bin解码准备的rlpsg和另外的概率模型对应的state_2_rlpsg中选择解码第二个bin解码真正需要的rlpsg。具体选择哪一个rlpsg由控制信号rb2_state_1_ns决定,后面将对该控制信号进行说明。
为了减小延迟,第一个bin所用概率模型更新并且为第二个bin解码准备rlpsg的过程和解码第一个bin同步完成。并不需要第一个bin完全解码完成再对其上下文概率模型更新。预先计算好两组可能的结果一个是第一个bin出现MPS时,state1的更新值state1_ns_ifMPS,以及由此更新值索引得到的4个rLPS值state1_ns_ifMPS_rlpsg,作为一组概率模型索引得信息;另一个是第一个bin出现LPS时,state1的更新值state1_ns_ifLPS,以及由此更新值索引得到的4个rLPS值state1_ns_ifLPS_rlpsg,作为另一组概率模型索引得信息。这个计算过程和解码第一个bin的过程是同时的,所以可以节省关键路径延迟。根据解码出的第一个bin的值直接在state1_ns_ifMPS_rlpsg和state1_ns_ifLPS_rlpsg这两组中选择更新后的rlpsg作为下一级解码单元的入口信息(即第一个bin解码单元的更新后的概率模型索引得信息)即可。如果解码第二个bin和解码第一个bin所用概率模型相同,多路选择器则选择第一个bin解码更新得到的rlpsg作为第二个bin解码所需的rlpsg_2,否则,多路选择器则选择另外一个概率模型准备的state_2_rlpsg作为第二个bin解码所需的rlpsg_2。
下面再以针对两个旁路编码模式bin的解码为例对图2中的旁路编码模式bin的解码处理过程进行说明。相应的级联的两个解码单个旁路编码模式bypass bin的二级树结构如图4所示,该结构中包括两个解码bin的单元,即解码第一个bypass bin的单元和解码第二个bypass bin的单元。旁路模式的解码相对正常编码模式非常简单,其不涉及到概率模型信息,解码时直接比较range和2*offset,如果2*offset>=range,解码得1,否则解码得0。而且,在解码完成后,offset左移一位即完成重正化步骤,range保持原值不变。
本发明中,为了使得所有语法元素的解码可以复用尽可能少的硬件资源,例化了4个解码bin单元(图1所示的两个解码正常编码模式bin的单元,和图2所示的两个解码旁路模式bin的单元,当然,也可能为更多个单元),并且设计了一组控制信号协调这些解码单元之间的工作,并结合解码单元所得解码bin决定最后的输出结果,包括一拍最终输出的区间值和偏移值信息。这样所有语法元素的解码都可以复用这4个单元而完成。
控制信号控制4个解码单元解码的示意图参见图5所示,在所述图5中,包括四个所述的解码bin的单元,具体包括解码第一个正常编码模式bin的单元,解码第二个正常编码模式bin的单元。解码第一个旁路编码模式bin的单元和解码第二个旁路编码模式bin的单元。在图5中信号range,offset是解码拍入口的range,offset值,range_up,offset_up是解码拍出口的range,offset值。Ctx1,Ctx2分别对应两个正常编码模式的bin可能用到的两个概率模型;其中,在两个bin共用一个概率模型的情况Ctx2是闲置不用的;信号Range_new和offset_new分别是解码某个bin之后range和offset的更新值。
信号Regular_bin1,Regular_bin2,Bypass_bin1,Bypass_bin2分别是各个解码单bin模块的解码输出。
所有控制信号包括dec_mode,regbinnum,rb2_state_1_ns,sign1_exist,sign2_exist,dec_bp_num。
下面将分别对所述控制信号的功能和工作方式进行说明(1)dec_mode(解码模式)控制信号,称为第一控制信号这个控制信号2比特,取值00或01或10取值00时,对应当前解码拍需要解码正常编码模式bin;取值01或者10时,对应当前解码拍需要解码mvd和level二值化后得到的后缀EG(指数哥伦布码),即进行旁路编码模式bin的解码,所述的EG还包括自己的前缀和后缀,dec_mode取值01和10分别对应这两种情况的解码。EG的前缀是一元码,也就是若干个1加一个0的码字,解码碰到解出bin为0时结束;EG的后缀中bin的总数目是由EG的前缀中1的个数确定的。
所以在dec_mode取值10时还需要一个信号(即后面的dec_bp_num)来决定当前解码拍内需要解码几个旁路编码模式的bin,而在dec_mode取值01时当前解码拍内解出旁路编码模式的bin的值为0时结束。
(2)regbinnum(解码正常编码模式bin数目)控制信号,称为第二控制信号该控制信号1比特,在dec_mode取值00时有效,regbinnum取1指示当前解码是固定解码一个正常编码模式的bin,调用一拍内解码两个正常编码模式bin的二级树结构的第一分支,regbinnum取0调用整个一拍内解码两个正常编码模式bin的二级树结构的第二个分支,即根据该控制信号确定当前解码的单元;对除了mvd和level以及map_last之外的语法元素,由于解码是一拍一个bin,所以regbinnum取1。对于mvd和level以及map_last,都是解到0自动结束,它们都调用整个一拍内解码两个正常编码模式bin的二级树结构,regbinnum取0。
(3)rb2_state_1_ns(解码第二个正常bin的概率模型选择控制)控制信号,称为第三控制信号这个控制信号1比特,在调用整个一拍内解码两个正常编码模式bin的二级树结构(即dec_mode取值00,regbinnum取值0)时有效,指示解码第二个正常编码模式bin所用的上下文概率模型和解码第一个正常编码模式bin所用的上下文概率模型是否是同一个,取值为1则表示是同一个上下文概率模型。
(4)sign1_exist,sign2_exist(第一个解码正常bin的单元是否级联正负号,第二个解码正常bin的单元是否级联正负号)控制信号,称为第四控制信号这两个控制信号都是1比特,在调用一拍内解码两个正常编码模式bin的二级树结构时指示是否这一拍内还需要解码一个正负号信息在解码mvd和leVel的前缀时是需要解码正负号的,sign1_exist,sign2_exist都置1,解码map_last时无需解码正负号的,sign1_exist,sign2_exist都置0。
(5)dec_bp_num(解码旁路模式bin数目)控制信号,称为第五控制信号该控制信号共1比特,在dec_mode取值10时,即解码EG的后缀时有效,决定当前解码拍内需要解码几个旁路编码模式的bin。
有了以上的一组控制信号,用两个解码正常编码模式bin的单元和两个解码旁路编码模式bin的单元就可以完成所有语法元素的解码。每拍内的解码情况都可以被确定,可以实现在一拍内同时多个bin。
为对本发明有进一步理解,下面对图5中各控制信号和解码bin的单元电路结合可能出现的所有情况作详细说明。
第一种情况为解码level或者mvd的前缀部分这时dec_mode为00,指示当前拍内解码正常编码模式bin。regbinnum为0,指示当前拍调用图6中树a的两个分支。如果第一个分支解码结果出来是0,则不用第二个分支;否则第一个分支的输出range_new,offset_new送入第二个分支的输入口。
如果不是解码mvd的第一拍或者是解码level,那么mvd和level解码完成后都需要带符号信息。这时sign1_exist和sign2_exist都是1,指示解码绝对值结束后需要再附带解码一个bypass bin,即符号信息。
如果是解码mvd的第一拍,那么树a的第一个分支表明mvd解码值为0,不带符号信息,进入第二个分支表明解码值大于0,所以这一拍的控制信号sign1_exist为0,sign2_exist为1。rb2_state_1_ns由当前解码是第几拍(也就是在解码mvd或者level的第几个bin)决定。dec_bp_num这时没有作用。并且这种情况下图6树a的第一个分支的输出作为树b的第一个分支的输入;树a的第二个分支的输出作为树b的第二个分支的输入。
如果是解码mvd的第一拍,输出模块的处理为如果树a第一个分支解码出bin为0,则最终输出的range_new,offset_new是树a第一分支的输出,否则如果树a第二个分支解码出bin为0,则需附带解码一个符号,最终输出的range_new,offset_new是树b第二分支的输出,否则如果如果树a第二个分支解码出bin为1,则下一拍继续解码其绝对值,最终输出的range_new,offset_new是树a第二分支的输出。
如果是解码mvd的其它拍或者解码level,输出模块的处理为如果树a第一个分支解码出bin为0,则需附带解码一个符号,最终输出的range_new,offset_new是树b第一分支的输出,否则如果树a第二个分支解码出bin为0,则需附带解码一个符号,最终输出的range_new,offset_new是树b第二分支的输出,否则,如果如果树a第二个分支解码出bin为1,则下一拍继续解码其绝对值,最终输出的range_new,offset_new是树a第二分支的输出。
第二种情况为解码level或者mvd的后缀哥伦布码的前缀部分这时dec_mode为01,指示当前拍内解码旁路编码模式bin。这时regbinnum,sign1_exist,sign2_exist,rb2_state_1_ns,dec_bp_num都没有作用。并且这种情况下图6树b的第一个分支的输出作为树b的第二个分支的输入。输出模块的处理为如果树b第一个分支解码出bin为0,则最终输出的range_new,offset_new是树b第一分支的输出,否则最终输出的range_new,offset_new是树b第二分支的输出。
第三种情况为解码level或者mvd的后缀哥伦布码的后缀部分这时dec_mode为10,指示当前拍内解码旁路编码模式bin。这时regbinnum,sign1_exist,sign2_exist,rb2_state_1_ns都没有作用。dec_bp_num由当前解码是第几拍(也就是在解码哥伦布码的后缀的第几个bin)决定。输出模块的处理为如果dec_bp_num是0,指示当前拍解码1个旁路bin,则最终输出的range_new,offset_new是树b第一分支的输出,否则最终输出的range_new,offset_new是树b第二分支的输出。
第四种情况为解码map_last对这时dec_mode为00,指示当前拍内解码正常编码模式bin。regbinnum为0,指示当前拍调用图6树a的两个分支。如果第一个分支解码结果出来是0,则不用第二个分支;否则第一个分支的输出range_new,offset_new送入第二个分支的输入口。这种情况和情况1很类似,只是不带符号信息。所以sign1_exist,sign2_exist都是0。这种情况rb2_state_1_ns始终是0,因为last和map所用的概率模型总是不一样的。dec_bp_num没有作用。输出模块的处理为如果树a第一个分支解码出bin为0,则最终输出的range_new,offset_new是树a第一分支的输出,否则最终输出的range_new,offset_new是树a第二分支的输出。
第五种情况为解码其它语法元素的各个bin;所述的其它语法元素的bin都是正常编码模式bin,采用一拍解码一个bin。这时dec_mode为00,指示当前拍内解码正常编码模式bin。regbinnum为1,指示当前拍仅调用图6树a的第一个分支。输出模块的处理为最终输出的range_new,offset_new是树a第一分支的输出。
上述本发明中主要以采用二级树的结构为例进行说明,同样,本发明还可以采用三级树或更高级别的电路设计结构,当然,电路设计结构的级别越高,组合电路的深度也越高,关键路径也就越长。
综上所述,本发明与已有CABAC核心解码实现方案相比可以大大加快CABAC的解码速度。同时,硬件资源消耗也较为合理。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种CABAC解码系统,其特征在于,包括至少一组解码bin的单元;所述的一组解码bin的单元包括至少两个依次串联连接的解码bin的单元,所述的解码bin的单元用于对待解码的比特流中的bin进行解码处理;所述的各解码bin的单元其输入信息分别包括解码bin需要的参数信息以及待解码的比特流,输出信息分别包括更新后的所述参数信息及针对若干个bin的解码结果;所述的各解码bin的单元输入的解码bin需要的输入信息包括与其连接的解码bin的单元的输出信息中的更新后的参数信息。
2.根据权利要求1所述的CABAC解码系统,其特征在于,所述的解码bin的单元包括解码正常编码模式bin的单元和/或解码旁路编码模式bin的单元。
3.根据权利要求2所述的CABAC解码系统,其特征在于,当所述的解码bin的单元包括解码正常编码模式bin的单元时,上一级解码正常编码模式bin的单元输出更新后的区间值和偏移值,并作为下一级解码正常编码模式bin的单元的输入区间值和偏移值信息。
4.根据权利要求3所述的CABAC解码系统,其特征在于,所述的系统还包括重正化处理模块,用于对解码正常编码模式bin的单元的输出的区间值和偏移值进行重正化处理,并将处理后的结果作为下一级解码正常编码模式bin的单元或解码旁路编码模式bin的单元的输入区间值和偏移值信息。
5.根据权利要求3所述的CABAC解码系统,其特征在于,所述的系统还包括多路选择器,所述的多路选择器的输入为上一级解码正常编码模式bin的单元输出的更新后的概率模型和新的概率模型,输出为两输入的概率模型中选择的一种。
6.根据权利要求2所述的CABAC解码系统,其特征在于,当所述的解码bin的单元包括解码旁路编码模式bin的单元时,上一级解码旁路编码模式bin的单元或解码正常编码模式bin的单元输出的更新后的区间值和偏移值作为下一级解码旁路编码模式bin的单元的输入区间值和偏移值。
7.根据权利要求1至6任一项所述的CABAC解码系统,其特征在于,所述的系统还包括输出模块,用于根据控制信号以及解码所得bin值在解码bin的各个单元的输出的重正化后得到的更新的区间值和偏移值信息之间进行选择,由组合逻辑决定最终输出一拍内整个解码过程的更新后的区间值和偏移值。
8.一种CABAC解码方法,其特征在于,包括A、在一个时钟周期内,由一组控制信号综合控制多至少两个解码bin的单元,控制信号和解码bin的单元根据输入的区间值和偏移值对输入的待解码的比特流进行解码处理,完成若干个bin的解码;B、根据控制信号以及解码所得bin值在解码bin的各个单元的输出的重正化后得到的更新的区间值和偏移值信息之间进行选择,并由组合逻辑决定最终输出一拍内整个解码过程的更新后的区间值和偏移值,同时,还输出若干个bin的解码结果。
9.根据权利要求8所述的CABAC解码方法,其特征在于,所述的步骤A包括对正常编码模式bin解码处理和/或对旁路编码模式bin的解码处理。
10.根据权利要求9所述的CABAC解码方法,其特征在于,所述的步骤A还包括所述的解码bin的单元根据输入的第一控制信号确定当前的解码处理为对正常编码模式bin解码处理还是对旁路编码模式bin的解码处理。
11.根据权利要求10所述的CABAC解码方法,其特征在于,当确定所述解码bin的单元解码正常编码模式bin时,所述的步骤A还包括根据引入的第二控制信号确定当前进行解码处理的解码bin的单元。
12.根据权利要求10所述的CABAC解码方法,其特征在于,当确定所述解码bin的单元解码正常编码模式bin时,所述的步骤A还包括所述单元根据引入的第三控制信号确定选择上一级单元更新后的概率模型或者新的概率模型进行解码处理。
13.根据权利要求12所述的CABAC解码方法,其特征在于,所述的步骤A包括在上一级解码单元解码的同时并行计算出上一级单元更新后的概率模型的全部可能情况,并根据所述的更新后的概率模型导出概率模型索引得信息,在上一级解码单元解码完毕后在准备好的所有概率模型索引得信息中选择其中之一作为下一级解码单元所需要的更新后的概率模型索引得信息。
14.根据权利要求10所述的CABAC解码方法,其特征在于,当确定所述解码bin的单元解码正常编码模式bin时,所述的步骤A还包括所述单元根据引入的第四控制信号确定在当前解码周期内是否需要解码正负号信息。
15.根据权利要求10所述的CABAC解码方法,其特征在于,当确定所述解码bin的单元解码旁路编码模式bin时,所述的步骤A还包括根据所述第一控制信号的取值确定对指数哥伦布码的前缀或后缀进行解码处理,且当解码前缀时,解码到旁路编码模式bin值为0时解码结束,当解码后缀时,根据引入的用于确定当前解码拍内需要解码的旁路编码模式bin的数量第五控制信号确定需要解码的旁路编码模式bin的数量。
16.根据权利要求8至15任一项所述的CABAC解码方法,其特征在于,所述的步骤B还包括在对正常编码模式bin解码处理过程中,如果解码符号位,解码结果还包括符号位信息。
17.根据权利要求8至15任一项所述的CABAC解码方法,其特征在于,所述的步骤B还包括通过重正化处理模块对更新后的区间值和偏移值信息进行重正化处理,并获得重正化处理后的区间值和偏移值,作为该解码单元的最后更新值,用于同一拍内其它解码bin单元输入或者该拍内最终输出的区间值和偏移值。
全文摘要
本发明涉及一种CABAC解码系统及方法。本发明主要包括在一个时钟周期内,由级联的至少两个解码bin的单元根据输入的区间值和偏移值对输入的待解码的比特流的若干bin进行解码处理,并输出所述若干个bin的解码结果及更新后的区间值和偏移值信息。本发明不仅实现了高速解码,而且,本发明还使得解码过程中的硬件资源的消耗保持在一个合理的范围内。因此,本发明提供了一种高效、合理的解码方案。
文档编号H04N7/26GK1949873SQ20051011273
公开日2007年4月18日 申请日期2005年10月12日 优先权日2005年10月12日
发明者杨开, 王琳, 林屹, 余微 申请人:华为技术有限公司