CN102231830B - 用于上下文算术编解码的运算单元 - Google Patents

用于上下文算术编解码的运算单元 Download PDF

Info

Publication number
CN102231830B
CN102231830B CN 201010555246 CN201010555246A CN102231830B CN 102231830 B CN102231830 B CN 102231830B CN 201010555246 CN201010555246 CN 201010555246 CN 201010555246 A CN201010555246 A CN 201010555246A CN 102231830 B CN102231830 B CN 102231830B
Authority
CN
China
Prior art keywords
decoding
control
syntactic element
probabilistic model
module
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.)
Expired - Fee Related
Application number
CN 201010555246
Other languages
English (en)
Other versions
CN102231830A (zh
Inventor
严晓浪
朱朋
黄凯
葛海通
陈亮
冉帆
刘仲方
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN 201010555246 priority Critical patent/CN102231830B/zh
Publication of CN102231830A publication Critical patent/CN102231830A/zh
Application granted granted Critical
Publication of CN102231830B publication Critical patent/CN102231830B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

一种用于上下文算术编解码的运算单元,包括:CABAC解码控制模块,用于控制整个CABAC解码;语法元素解码控制模块,用于控制各个语法元素的解码;概率模型缓存模块,用于缓存当前解码所需的概率模型;存储器访问控制模块,用于控制对RAM的访问,控制RAM和概率模型缓存模块之间的数据交互,当概率模型缓存模块中不含有当前解码所需的概率模型时,对概率模型缓存模块中的数据进行保存并对概率模型缓存模块中的数据进行更新;解码引擎模块,用于进行算术解码,并计算在一个bin的解码过程中从码流中读入的bit数。本发明解码速度较快、降低存储器消耗量。

Description

用于上下文算术编解码的运算单元
技术领域
本发明涉及视频解码系统领域,尤其是一种用于上下文算术编解码的运算单元。
背景技术
在视频解码系统中,包括用于上下文算术编解码的运算单元也称作CABAC编解码器,CABAC(Context-based Adaptive Binary Arithmetic Coding,基于上下文的自适应算术编码)是国际视频编码标准H.264采用的一种熵编码方案。CABAC有较高的压缩效率,但是实现起来也较复杂。熵编码器的功能是将每个宏块(MB,micro block)中所有的语法元素的值按照一定的顺序编码到码流中。
一个语法元素在二进制化之后包含一个以上的二进制位,每一个二进制位称为一个bin,CABAC对一个bin的解码流程大致为:
1选择上下文概率模型,读取上下文变量pStateIdx(概率状态索引)和valMPS(大概率符号值)
2根据上下文变量pStateIdx把解码区间codIRange划分为两个子区间:小概率符号区间(用变量codIRangeLPS表示)和大概率符号区间(用变量codIRange表示)。
3根据变量codIOffset(解码偏移)的大小,输出当前解码bin(二进制位)的值,如果codIOffset落在大概率符号区间中,则解码区间更新为大概率符号区间,否则,解码区间更新为小概率符号区间。
4根据当前解码bin的值来自适应的更新上下文变量pStateIdx和valMPS的值。
5对codIRange和codIOffset进行重归一化。
当一个语法元素的所有bin解码完毕,则将这些bin转换成语法元素的值。
以上仅是关于CABAC解码的原理性描述,有关CABAC解码的详细过程可以参考H.264标准,此处不再赘述。
一个CABAC解码器的性能指标主要包含解码速度和存储器消耗量,一个高性能的CABAC解码器应该在消耗尽量少的存储器的情况下获得尽量高的解码速度。限制CABAC解码器性能提高的主要因素也就可以分成两个方面,一方面是限制解码速度提高的因素,一方面是限制存储器消耗量降低的因素。限制解码速度提高的主要因素是解码的窜行性以及对存储器的频繁访问,解码的窜行性体现在当前bin的解码依赖于先前已解码bin的值并且解码过程中用到的变量是逐次传递的,这给流水线的实现造成了困难,于是限制住了解码器的解码速度和吞吐量;对存储器的频繁访问体现在对概率模型和相邻信息的读取。限制存储器消耗量降低的主要因素在于存储上下文概率模型和已解码的相邻宏块信息。
目前已经公开的硬件CABAC解码器往往解码速度不够高,或者存储器消耗量过大,也就是性能还有待于进一步优化。
发明内容
为了克服已有视频解码系统的CABAC编解码器的解码速度较低、存储器消耗量过大的不足,本发明提供一种解码速度较快、降低存储器消耗量的用于上下文算术编解码的运算单元。
本发明解决其技术问题所采用的技术方案是:
一种用于上下文算术编解码的运算单元,所述运算单元包括:
所述CABAC解码控制模块,用于控制整个CABAC解码;
语法元素解码控制模块,用于控制各个语法元素的解码,主要负责计算上下文概率模型的索引和判断各个语法元素解码的结束,并在语法元素解码结束的时候根据解码的bin串得出语法元素的值,以及计算在一个语法元素的解码过程中从码流中读入的bit数;
所述运算单元还包括:
概率模型缓存模块,用于缓存当前解码所需的概率模型;
存储器访问控制模块,用于控制对RAM的访问,控制RAM和概率模型缓存模块之间的数据交互,当概率模型缓存模块中不含有当前解码所需的概率模型时,对概率模型缓存模块中的数据进行保存并对概率模型缓存模块中的数据进行更新;
解码引擎模块,用于进行算术解码,并计算在一个bin的解码过程中从码流中读入的bit数。
进一步,所述解码引擎模块包括:
概率模型更新子模块,用于根据解码bin的值对相应的概率模型进行更新;
解码bin选择子模块,用于从四个解码引擎的解码bin输出中选出有效的位,当前工作的解码引擎的输出bin即为有效的位;
解码引擎选择子模块,用于根据控制信号产生四个解码引擎的使能信号;
重归一化子模块,用于对解码引擎状态变量codIRange和codIOffset进行重归一化;
四个解码引擎子模块,用于进行算术解码,包含一个常规解码引擎、一个结束解码引擎和两个旁路解码引擎,两个旁路解码引擎并行工作,在一个时钟周期中解码出两个bin。
再进一步,所述概率模型缓存模块包含16个7位的寄存器,所述16个寄存器作为一组来进行管理。
更进一步,所述语法元素解码控制模块包括:
一元解码控制子模块,用于控制采用一元二值化的语法元素的解码,包括:ref_idx_l0、ref_idx_l1和mb_qp_delta;
截尾一元解码控制子模块,用于控制采用截尾一元二值化的语法元素的解码,包括:intra_chroma_pred_mode、coded_block_pattern、mvdl0/1[0/1]和coeff_abs_level_minus1;
指数哥伦布解码控制子模块,用于控制采用指数哥伦布二值化的语法元素的解码,包括:mvdl0/1[0/1]和coeff_abs_level_minus1;
固定长度解码控制子模块,用于控制采用固定长度二值化的语法元素的解码,包括:rem_intra_4x4_pred_mode、coded_block_pattern和pre_intra_4x4_pred_mode;
宏块类型解码控制子模块,用于控制语法元素mb_type的解码;
子宏块类型解码控制子模块,用于控制语法元素sub_mb_type的解码;
宏块略过标志解码控制子模块,用于控制语法元素mb_skip_flag的解码,并调用固定长度解码控制子模块;
宏块场解码标志解码控制子模块,用于控制语法元素mb_field_decoding_flag的解码,该并调用固定长度解码控制子模块;
残差解码控制子模块,用于控制和残差相关的语法元素包括:coded_block_flag、significant_coeff_flag、last_significant_coeff_flag、coeff_abs_level_minus1和coeff_sign_flag;
运动矢量解码控制子模块,用于控制语法元素mvd的解码;
编码块类型解码控制子模块,用于控制语法元素coded_block_pattern的解码。
本发明的技术构思为:采用缓存模块保存当前解码需要使用的一组概率模型,以减少对RAM(随机访问存储器)的访问次数;采用两个旁路解码引擎,增强解码的并行性。
本发明的有益效果主要表现在:用全硬件的方式实现了CABAC解码器,同时实现了两个旁路解码引擎,解码速度较快,消耗的存储器较少。
附图说明
图1是本发明提供的CABAC解码器的结构框图。
图2是本发明提供的CABAC解码器中的CABAC解码控制模块的工作流程图。
图3是本发明提供的CABAC解码器中的语法元素解码控制模块的结构框图。
图4是本发明提供的CABAC解码器中的存储器访问控制模块的工作流程图。
图5是本发明提供的CABAC解码器中的概率模型缓存模块的结果框图。
图6是本发明提供的CABAC解码器中的解码引擎模块的结构框图。
图7是存储器访问控制模块的工作流程图。
图8是概率模型缓存模块的结构框图。
图9是解码引擎模块的结构框图。
图10是解码引擎模块的工作流程图。
图11是常规解码的逻辑电路图。
图12是旁路解码引擎核心的结构框图。
图13是实现旁路解码的逻辑电路图。
图14是实现结束解码的逻辑电路图。
具体实施方式
下面结合附图对本发明作进一步描述。
参照图1~图14,一种用于上下文算术编解码的运算单元(CABAC解码器),所述解码器包括五个模块,分别是CABAC解码控制模块、语法元素解码控制模块、存储器访问控制模块、概率模型缓存模块和解码引擎模块。其中:
所述CABAC解码控制模块,用于控制整个CABAC解码,由一个有限状态机来实现。
所述语法元素解码控制模块,用于控制各个语法元素的解码,主要负责计算上下文概率模型的索引和判断各个语法元素解码的结束,并在语法元素解码结束的时候根据解码的bin串得出语法元素的值。该模块的另一个作用是计算在一个语法元素的解码过程中从码流中读入的bit(码流中的一个二进制位)数。
所述存储器访问控制模块,用于控制对RAM的访问,该模块是RAM和概率模型缓存模块之间的桥梁,当概率模型缓存模块中不含有当前解码所需的概率模型时,该模块负责对概率模型缓存模块中的数据进行保存并对概率模型缓存模块中的数据进行更新。
所述概率模型缓存模块,用于缓存当前解码所需的概率模型,以减少对RAM的访问次数,提高解码速度。
所述解码引擎模块,用于进行算术解码,该模块的另一个作用是计算在一个bin的解码过程中从码流中读入的bit数。
所述概率模型缓存模块包含16个7位的寄存器,这16个寄存器作为一组来进行管理。
所述解码引擎模块包含八个模块,分别是:概率模型更新子模块、解码bin选择子模块、解码引擎选择子模块、重归一化子模块和四个解码引擎子模块。其中:
概率模型更新子模块,用于根据解码bin的值对相应的概率模型进行更新。
解码bin选择子模块,用于从四个解码引擎的解码bin输出中选出有效的位,当前工作的解码引擎的输出bin即为有效的位。
解码引擎选择子模块,用于根据控制信号产生四个解码引擎的使能信号。
重归一化子模块,用于对解码引擎状态变量codIRange和codIOffset进行重归一化。
四个解码引擎子模块,用于进行算术解码,这四个解码引擎包含一个常规解码引擎、一个结束解码引擎和两个旁路解码引擎。两个旁路解码引擎在一定的条件下并行工作,同时解码出两个bin,提高解码速度。
所述语法元素解码控制模块包含十一个模块,分别是:一元解码控制子模块、截尾一元解码控制子模块、指数哥伦布解码控制子模块、固定长度解码控制子模块、宏块类型解码控制子模块、子宏块类型解码控制子模块、宏块掠过标志解码控制子模块、宏块场解码标志解码控制子模块、残差解码控制子模块、运动矢量解码控制子模块和编码块类型解码控制子模块。这十一个子模块分别控制相应的一些语法元素的解码,它们都是通过有限状态机来实现。其中:
一元解码控制子模块,用于控制采用一元二值化的语法元素的解码,包括:ref_idx_l0(前向参考索引)、ref_idx_l1(后向参考索引)和mb_qp_delta(宏块量化参数增量)。
截尾一元解码控制子模块,用于控制采用截尾一元二值化的语法元素的解码,包括:intra_chroma_pred_mode(帧内色度预测模式)、coded_block_pattern(编码块模式的后缀)、mvdl0/1[0/1](运动矢量差值的前缀)和coeff_abs_level_minus1(系数绝对值减一的前缀)。
指数哥伦布解码控制子模块,用于控制采用指数哥伦布二值化的语法元素的解码,包括:mvdl0/1[0/1](运动矢量差值的后缀)和coeff_abs_level_minus1(系数绝对值减一的后缀)。
固定长度解码控制子模块,用于控制采用固定长度二值化的语法元素的解码,包括:rem_intra_4x4_pred_mode(推荐的帧内4x4分块预测模式)、coded_block_pattern(编码块模式的前缀)和pre_intra_4x4_pred_mode(前一个帧内4x4分块预测模式)。
宏块类型解码控制子模块,用于控制语法元素mb_type(宏块类型)的解码。
子宏块类型解码控制子模块,用于控制语法元素sub_mb_type(子宏块类型)的解码。
宏块略过标志解码控制子模块,用于控制语法元素mb_skip_flag(宏块略过标志)的解码,该模块在满足一定的条件时调用固定长度解码控制子模块。
宏块场解码标志解码控制子模块,用于控制语法元素mb_field_decoding_flag(宏块场解码标志)的解码,该模块在满足一定的条件时调用固定长度解码控制子模块。
残差解码控制子模块,用于控制和残差相关的语法元素包括:coded_block_flag(编码块标志)、significant_coeff_flag(有效系数标志)、last_significant_coeff_flag(最后有效系数标志)、coeff_abs_level_minus1(系数绝对值减一)和coeff_sign_flag(系数符号标志)。
运动矢量解码控制子模块,用于控制语法元素mvd(运动矢量差值)的解码。
编码块类型解码控制子模块,用于控制语法元素coded_block_pattern(编码块模式)的解码。
图1示出了本发明提供的CABAC解码器的整体结构,描述了各个模块之间的连接关系和信息传递关系。
其中的CABAC解码控制模块用于控制整个CABAC解码,由一个状态机实现(称为CABAC解码控制状态机)。该模块受视频解码系统的控制信息控制,当开始解码宏块层的语法元素时,如果视频的熵编码方式是CABAC,则视频解码系统在此时会给出CABAC解码的使能信号,当CABAC解码控制模块收到使能信号,整个CABAC解码器就开始工作了。该模块的工作流程如图3所示:
步骤一:状态机开始处于空闲状态,解码开始后,首先检查是否需要对上下文概率模型以及解码引擎进行初始化,如果需要进行初始化,则进行步骤二,否则进行步骤三。
步骤二:该步骤状态机处于初始化状态。当一个slice(条带)解码完毕(即语法元素end_of_slice_flag(条带结束标志)的解码值为1)就对上下文概率模型和解码引擎进行初始化;当一个I_PCM(帧内立即刷新)宏块解码完毕(即语法元素mb_type(宏块类型)的解码值为I_PCM)就对解码引擎进行初始化,初始化完毕之后状态机回到空闲状态。
步骤三:该步骤状态机处于解码状态。对一个语法元素进行解码。一个语法元素解码完毕之后,状态机回到空闲状态。
CABAC解码控制状态机为CABAC解码器的顶层控制状态机,在该状态机的各个状态会触发其他模块的子状态机工作。
当CABAC解码控制状态机处于初始化状态时,可能对存储概率模型的RAM和解码引擎中的一个或者两个进行初始化。当对存储概率模型的RAM进行初始化时,需要使用存储在ROM(只读存储器)中的两个变量m和n,以及变量qp(量化参数)的值来进行计算而得出每个概率模型的具体数值。当对解码引擎进行初始化时,则将表示解码引擎状态的两个变量codIRange和codIOffset分别初始化为0x1FE和read_bits(9)(表示从码流中读入9个比特)。
当CABAC解码控制状态机处于解码状态时,CABAC解码控制模块就会给出语法元素解码控制模块的使能信号。使能信号有效之后,语法元素解码控制模块就开始工作了,其工作流程如图5所示:
步骤一:状态机首先处于空闲状态,解码开始后,将变量bin_idx(二进制位索引)设置为0,然后进行步骤二。
步骤二:进行算术解码。如果语法元素的解码没有结束,则进行步骤三,否则进行步骤四。
步骤三:将变量bin_idx增加1,然后进行步骤二。
步骤四:对解码bin串进行反二进制化,然后状态机回到空闲状态。
在步骤二中,根据解码的语法元素的不同,会调用语法元素解码控制模块中的一个或几个子模块来控制语法元素的解码。如果语法元素为ref_idx_l0、ref_idx_l1或者mb_qp_delta,则会调用一元解码控制模块。如果语法元素为intra_chroma_pred_mode、coded_block_pattern(后缀)、mvdl0/1[0/1](前缀)或者coeff_abs_level_minus1(前缀),则会调用截尾一元解码控制模块。如果语法元素为mvdl0/1[0/1](后缀)或者coeff_abs_level_minus1(后缀),则会调用指数哥伦布解码控制模块。如果语法元素为rem_intra_4x4_pred_mode、coded_block_pattern(前缀)、coded_block_flag或者pre_intra_4x4_pred_mode,则会调用固定长度解码控制模块。如果语法元素为mb_type,则会调用宏块类型解码控制模块。如果语法元素为sub_mb_type,则会调用子宏块类型解码控制模块。如果语法元素为mb_skip_flag,则会调用宏块略过标志解码控制模块。如果语法元素为mb_field_decoding_flag,则会调用宏块场解码标志解码控制模块。
有一些语法元素是由前缀和后缀级联而成,包括coded_block_pattern、mvdl0/1[0/1]和coeff_abs_level_minus1,在解码这几个语法元素时,首先会调用这几个语法元素对应的解码控制模块,这些解码控制模块会在解码前缀和后缀时分别调用对应的解码控制模块。
和残差相关的语法元素,包括coded_block_flag、significant_coeff_flag、last_significant_coeff_flag、coeff_abs_level_minus1和coeff_sign_flag,它们是紧密相关的一组语法元素,于是由一个残差解码控制模块在整体上来对它们的解码进行控制,该模块的工作流程如图6所示:
步骤一:状态机首先处于空闲状态,当使能信号、概率模型有效标志和码流有效标志三个信号都有效之后,就开始解码语法元素coded_block_flag。如果语法元素coded_block_flag的值为1,则进行步骤二,否则状态机回到空闲状态。
步骤二:解码语法元素significant_coeff_flag和last_significant_coeff_flag,当这两个语法元素解码完毕,进行步骤三。
步骤三:解码语法元素coeff_abs_level_mimus1和coeff_sign_flag,当这两个语法元素解码完毕,状态机回到空闲状态。
在每个步骤中,残差解码控制模块会调用该步骤解码的语法元素相对应的解码控制模块来控制解码。
语法元素解码控制模块除了用于控制各个语法元素的解码,提供解码控制信号之外,还要负责计算上下文概率模型的索引,这需要根据相邻已解码的宏块信息,或者是当前解码的语法元素的已解码bin的值来确定具体的概率模型的索引。并且,概率模型的索引和概率模型在RAM中的存储形式有关,这会在对存储器访问控制模块进行详细介绍的时候进一步说明。
语法元素解码控制模块的另一个作用是计算在一个语法元素的解码过程中从码流中读入的bit(码流中的一个二进制位)数,这通过累加解码引擎传递过来的bit_num(在一个bin的解码过程中从码流中读入的比特数)来实现。
存储器访问控制模块用于控制对RAM的访问,该模块是RAM和概率模型缓存模块之间的桥梁,当概率模型缓存模块中不含有当前解码所需的概率模型时,该模块负责对概率模型缓存模块中的数据进行保存并对概率模型缓存模块中的数据进行更新。该模块设计的好坏对整个CABAC解码器的解码速度影响很大。只有通过高效的存储器管理,才能使解码过程尽量少的被读写RAM所打断。为了实现这个目的,本发明提供的存储器访问模块对需要使用到的395个概率模型进行了优化的分类,分类的基本原则为:在解码顺序上相邻的语法元素需要使用的概率模型归入同一组,同一个语法元素需要使用的概率模型归入同一组。一组概率模型包含的概率模型个数也需要综合考虑两个因素来选取,一组概率模型包含的概率模型个数越多,则对RAM的读写概率越小,有利于提高解码速度;一组概率模型包含的概率模型个数越少,则对概率模型缓存模块的一次读写所消耗的时间越少,有利于提高解码速度。所以这两个因素是矛盾的,需要折中考虑。本发明中一组概率模型包含的概率模型个数的最大值取16,概率模型的分组如表1所示:
Figure GDA0000070689040000121
Figure GDA0000070689040000131
Figure GDA0000070689040000141
表1
存储器访问控制模块的工作流程如图7所示,说明如下:
首先对两个变量wr_counter(写计数器)和rd_counter(读计数器)进行说明。在更新概率模型缓存模块时,在写回(将概率模型缓存模块中的内容写回到RAM)其中的内容时,不是一次性进行的,而是分两次进行的;在读入(将RAM中的内容读入概率模型缓存模块)其中的内容时,也是一样的情况。变量wr_counter的作用是在写回过程中标志是第一次写回(wr_counter==0)还是第二次写回(wr_counter==1)。变量rd_counter的作用是在读入过程中标志是第一次读入(rd_counter==0)还是第二次读入(rd_counter==1)。
步骤一:首先状态机处于空闲状态,然后检查是否需要对存储概率模型的RAM进行初始化,如果需要进行初始化,则进行步骤二,否则检查是否需要更换概率模型缓存模块中的内容,如果需要更换概率模型缓存模块中的内容,则将两个变量wr_counter和rd_counter置为0,然后进行步骤四,否则状态机维持在空闲状态。
步骤二:状态机处于初始化RAM(INIT_RAM)状态,此时状态机将信号mam_dmac_pbp_init_en驱动为有效,该信号驱动dmac(直接存储器访问控制器)将初始化中需要用的两个变量m和n从ROM中读入,然后进行步骤三。
步骤三:状态机处于初始化等待(INIT_WAIT)状态,此时状态机不断的检查信号dmac_mam_init_ready,当该信号有效时,表示RAM初始化完毕,状态机回到空闲状态,否则状态机维持在初始化等待(INIT_WAIT)状态。
步骤四:状态机处于概率模型写回(CTX_WR)状态,此时状态机将信号mam_mmc_wr_en驱动为有效,该信号驱动mmc(存储器控制器)将概率模型缓存模块中的数据写回到RAM中,然后进行步骤五。
步骤五:状态机处于概率模型写回等待(CTX_WR_WAIT)状态,此时状态机不断的检查信号mmc_mam_wr_ready,当该信号有效时,表示一次写回操作完成。然后检查信号wr_counter是否为1,当该信号为1时,表示一组概率模型已经写回完毕,则进行步骤六,否则将wr_counter加1后进行步骤四。
步骤六:状态机处于概率模型读入(CTX_RD)状态,此时状态机将信号mam_mmc_rd_en驱动为有效,该信号驱动mmc(存储器控制器)将RAM中需要使用的数据读入到概率模型缓存模块中,然后进行步骤七。
步骤七:状态机处于概率模型读入等待(CTX_RD_WAIT)状态,此时状态机不断的检查信号mmc_mam_rd_ready,当该信号有效时,表示一次读入操作完成。然后检查信号rd_counter是否为1,当该信号为1时,表示一组概率模型已经读入完毕,则状态机回到空闲状态,否则将rd_counter加1后进行步骤六。
概率模型缓存模块用于缓存当前解码所需的概率模型,以减少对RAM的访问次数,提高解码速度。该模块包含一组共16个7位的寄存器,其结构如图8所示。该模块的数据来源有两种情况,一种情况是更换整组概率模型时,数据来自存储器访问控制模块;一种情况是一个bin解码之后对相应的那个概率模型进行更新,数据来自解码引擎模块。该模块的数据输出方向对应的也有两种情况,一种情况是更换整组概率模型时,数据经由存储器访问控制模块写入RAM中进行保存;一种情况是在一个bin解码的时候根据语法元素解码控制模块给出的概率模型索引输出相应的那个概率模型。
解码引擎模块用于进行算术解码,该模块的另一个作用是计算在一个bin的解码过程中从码流中读入的bit数。该模块的结构如图9所示。该模块的工作过程如下:
步骤一:解码开始之后,首先检查是否进行解码引擎的初始化,如果不需要初始化,则进行步骤二,否则进行初始化,然后回到空闲状态。
步骤二:通过解码引擎选择模块选择相应的解码引擎。如果选择常规解码引擎,则进行步骤三;如果选择旁路解码引擎1,则进行步骤四;如果同时选择旁路解码引擎1和旁路解码引擎2,则进行步骤五;否则进行步骤六。
步骤三:该步骤进行常规解码,实现常规解码的逻辑电路如图11所示。然后进行步骤七。
步骤四:该步骤使用旁路解码引擎1进行旁路解码,实现旁路解码的逻辑电路如图13所示。图13中的旁路解码引擎核心(bypass decode engine core)的具体结构如图12所示。然后进行步骤八。
步骤五:该步骤同时使用旁路解码引擎1和旁路解码引擎2进行旁路解码,实现旁路解码的逻辑电路如图13所示。然后进行步骤八。
步骤六:该步骤进行结束解码,实现结束解码的逻辑电路如图14所示。然后进行步骤八。
步骤七:该步骤进行概率模型的更新。然后进行步骤八。
步骤八:该步骤进行重归一化。重归一化完毕时,一次算术解码就结束了。
以上说明仅是本发明的一个具体实施例,并不用于限制本发明,凡在本发明的基本思想和原则上所作的修改、替换和改进等,都应该包含在本发明的保护范围之内。

Claims (3)

1.一种用于上下文算术编解码的运算单元,所述运算单元包括:
CABAC解码控制模块,用于控制整个CABAC解码;
语法元素解码控制模块,用于控制各个语法元素的解码,主要负责计算上下文概率模型的索引和判断各个语法元素解码的结束,并在语法元素解码结束的时候根据解码的bin串得出语法元素的值,以及计算在一个语法元素的解码过程中从码流中读入的bit数;
其特征在于:所述运算单元还包括:
概率模型缓存模块,用于缓存当前解码所需的概率模型;
存储器访问控制模块,用于控制对RAM的访问,控制RAM和概率模型缓存模块之间的数据交互,当概率模型缓存模块中不含有当前解码所需的概率模型时,对概率模型缓存模块中的数据进行保存并对概率模型缓存模块中的数据进行更新;
解码引擎模块,用于进行算术解码,并计算在一个bin的解码过程中从码流中读入的bit数。
2.如权利要求1所述的用于上下文算术编解码的运算单元,其特征在于:所述概率模型缓存模块包含16个7位的寄存器,所述16个寄存器作为一组来进行管理。
3.如权利要求1所述的用于上下文算术编解码的运算单元,其特征在于:所述语法元素解码控制模块包括:
一元解码控制子模块,用于控制采用一元二值化的语法元素的解码,包括:前向参考索引、后向参考索引和宏块量化参数增量;
截尾一元解码控制子模块,用于控制采用截尾一元二值化的语法元素的解码,包括:帧内色度预测模式、编码块模式的后缀、运动矢量差值的前缀和系数绝对值减一的前缀;
指数哥伦布解码控制子模块,用于控制采用指数哥伦布二值化的语法元素的解码,包括:运动矢量差值的后缀和系数绝对值减一的后缀;
固定长度解码控制子模块,用于控制采用固定长度二值化的语法元素的解码,包括:推荐的帧内4x4分块预测模式、编码块模式的前缀和前一个帧内4x4分块预测模式;
宏块类型解码控制子模块,用于控制语法元素宏块类型的解码;
子宏块类型解码控制子模块,用于控制语法元素子宏块类型的解码;
宏块略过标志解码控制子模块,用于控制语法元素宏块略过标志的解码,并调用固定长度解码控制子模块;
宏块场解码标志解码控制子模块,用于控制语法元素宏块场解码标志的解码,该并调用固定长度解码控制子模块;
残差解码控制子模块,用于控制和残差相关的语法元素包括:编码块标志、有效系数标志、最后有效系数标志、系数绝对值减一和系数符号标志;
运动矢量解码控制子模块,用于控制语法元素运动矢量差值的解码;
编码块类型解码控制子模块,用于控制语法元素编码块模式的解码。
CN 201010555246 2010-11-23 2010-11-23 用于上下文算术编解码的运算单元 Expired - Fee Related CN102231830B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010555246 CN102231830B (zh) 2010-11-23 2010-11-23 用于上下文算术编解码的运算单元

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010555246 CN102231830B (zh) 2010-11-23 2010-11-23 用于上下文算术编解码的运算单元

Publications (2)

Publication Number Publication Date
CN102231830A CN102231830A (zh) 2011-11-02
CN102231830B true CN102231830B (zh) 2013-04-17

Family

ID=44844357

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010555246 Expired - Fee Related CN102231830B (zh) 2010-11-23 2010-11-23 用于上下文算术编解码的运算单元

Country Status (1)

Country Link
CN (1) CN102231830B (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9088796B2 (en) * 2011-11-07 2015-07-21 Sharp Kabushiki Kaisha Video decoder with enhanced CABAC decoding
US9451287B2 (en) * 2011-11-08 2016-09-20 Qualcomm Incorporated Context reduction for context adaptive binary arithmetic coding
WO2013069991A1 (ko) * 2011-11-08 2013-05-16 삼성전자 주식회사 비디오의 산술 부호화 방법 및 그 장치, 비디오의 산술 복호화 방법 및 그 장치
EP2618578B1 (en) * 2012-01-20 2015-07-15 BlackBerry Limited Methods and devices for context set selection
CN103220509B (zh) * 2012-01-21 2017-12-15 中兴通讯股份有限公司 自适应控制算术编码bin数量的方法、编码器和解码器
WO2013175736A1 (ja) 2012-05-25 2013-11-28 パナソニック株式会社 動画像符号化方法、動画像符号化装置、動画像復号方法、動画像復号装置、および、動画像符号化復号装置
EP2858354B1 (en) 2012-05-25 2022-12-21 Sun Patent Trust Video image coding method, video image decoding method, video image coding device, video image decoding device, and video image coding-decoding device
WO2013177975A1 (en) * 2012-05-29 2013-12-05 Mediatek Inc. Method and apparatus for coding of sample adaptive offset information
JP6288423B2 (ja) 2012-06-04 2018-03-07 サン パテント トラスト 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置
CN103024380B (zh) * 2012-12-10 2016-04-13 浙江大学 一种数据的熵编码方法和装置
GB2513110A (en) * 2013-04-08 2014-10-22 Sony Corp Data encoding and decoding
CN105025296B (zh) * 2014-04-30 2018-02-23 北京大学 一种高级算术编码器及其实现方法
US9930341B2 (en) * 2014-06-20 2018-03-27 Qualcomm Incorporated Block vector coding for intra block copying
US10574993B2 (en) 2015-05-29 2020-02-25 Qualcomm Incorporated Coding data using an enhanced context-adaptive binary arithmetic coding (CABAC) design
CN104918048B (zh) * 2015-06-03 2018-04-03 复旦大学 适用于hevc标准的熵编码上下文概率模型建模模块设计方法
KR102469145B1 (ko) 2015-10-13 2022-11-21 삼성전자주식회사 영상을 부호화 또는 복호화하는 방법 및 장치
CN106911933A (zh) * 2015-12-22 2017-06-30 北京君正集成电路股份有限公司 一种基于h.265的编码单元所占比特数的计算方法及装置
CN106331715B (zh) * 2016-08-24 2019-04-12 上海富瀚微电子股份有限公司 基于视频压缩编码标准h.265的熵编码系统及其编码方法
CN107071494B (zh) * 2017-05-09 2019-10-11 珠海市杰理科技股份有限公司 视频图像帧的二进制语法元素的生成方法和系统
KR102473571B1 (ko) 2018-10-05 2022-12-06 타이사 리서치 엘엘씨 변환 계수 코딩 방법 및 그 장치
KR102388807B1 (ko) * 2018-12-17 2022-04-20 엘지전자 주식회사 고주파 제로잉을 기반으로 변환 계수 스캔 순서를 결정하는 방법 및 장치
CN109889834B (zh) * 2019-01-11 2021-07-13 珠海亿智电子科技有限公司 一种cabac算术解码方法及装置
CN113038140A (zh) 2019-12-24 2021-06-25 扬智电子科技(中国)有限公司 视频解码方法与视频解码装置
CN111818335B (zh) * 2020-07-03 2022-04-26 Tcl华星光电技术有限公司 一种熵编码方法和装置、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1909660A (zh) * 2005-08-05 2007-02-07 上海富瀚微电子有限公司 基于上下文自适应二进制算术解码器
CN101087410A (zh) * 2007-06-21 2007-12-12 北京中星微电子有限公司 算术编码电路和算术编码控制方法
CN101267559A (zh) * 2008-05-08 2008-09-17 上海交通大学 视频解码器的通用熵解码方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7769088B2 (en) * 2003-05-28 2010-08-03 Broadcom Corporation Context adaptive binary arithmetic code decoding engine
US7777654B2 (en) * 2007-10-16 2010-08-17 Industrial Technology Research Institute System and method for context-based adaptive binary arithematic encoding and decoding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1909660A (zh) * 2005-08-05 2007-02-07 上海富瀚微电子有限公司 基于上下文自适应二进制算术解码器
CN101087410A (zh) * 2007-06-21 2007-12-12 北京中星微电子有限公司 算术编码电路和算术编码控制方法
CN101267559A (zh) * 2008-05-08 2008-09-17 上海交通大学 视频解码器的通用熵解码方法及装置

Also Published As

Publication number Publication date
CN102231830A (zh) 2011-11-02

Similar Documents

Publication Publication Date Title
CN102231830B (zh) 用于上下文算术编解码的运算单元
CN101212676B (zh) 高效并行cabac解码方法及其装置
CN100584025C (zh) 一种基于内容自适应的算术解码系统及装置
CN101252694B (zh) 基于块的视频解码的帧存储压缩和地址映射系统
US20110310958A1 (en) System for entropy decoding of h.264 video for real time hdtv applications
KR100644713B1 (ko) 컨텍스트 기반 적응적 이진 산술 코딩 복호기에서 원소구문을 복호화하는 방법 및 이를 위한 복호화 장치
CN102088603B (zh) 用于视频编码器的熵编码器及其实现方法
CN101072353A (zh) 译码系统以及图形处理单元
CN102238387A (zh) 一种视频熵编码、熵解码方法、装置及介质
US20070008197A1 (en) Variable length decoding method and device
US10127913B1 (en) Method of encoding of data stream, method of decoding of data stream, and devices for implementation of said methods
CN101562455A (zh) 内容可适性二元算数编码的译码装置及其译码方法
CN103947211A (zh) 具有已分区比特流的视频编码装置及方法
CN102547294A (zh) 适用于h.264和hevc视频标准的cabac硬件解码器架构
CN103227924A (zh) 一种算术编码器及编码方法
CN100542293C (zh) 变长编解码方法及其编解码器
WO2012097250A1 (en) Method and apparatus for arithmetic coding and termination
CN100593954C (zh) 一种对哥伦布码进行解码的装置及方法
CN100466743C (zh) 一种基于共享存储可编程的熵解码和反量化的方法
CN102355578A (zh) 一种熵解码方法、装置
US8508390B2 (en) Combining transform coefficient decoding with variable length decoding
CN101267559A (zh) 视频解码器的通用熵解码方法及装置
CN103826120A (zh) 一种适用于hevc的码流解析器
CN101090501B (zh) 模型搜寻式的可变长度编解码方法与装置
Kuo et al. Design of a low power architecture for CABAC encoder in H. 264

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Yan Xiaolang

Inventor after: Zhu Peng

Inventor after: Huang Kai

Inventor after: Ge Haitong

Inventor after: Chen Liang

Inventor before: Yan Xiaolang

Inventor before: Zhu Peng

Inventor before: Huang Kai

Inventor before: Ge Haitong

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: YAN XIAOLANG ZHU PENG HUANG KAI GE HAITONG TO: YAN XIAOLANG ZHU PENG HUANG KAI GE HAITONG CHEN LIANG

C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Yan Xiaolang

Inventor after: Zhu Peng

Inventor after: Huang Kai

Inventor after: Ge Haitong

Inventor after: Chen Liang

Inventor after: Ran Fan

Inventor after: Liu Zhongfang

Inventor before: Yan Xiaolang

Inventor before: Zhu Peng

Inventor before: Huang Kai

Inventor before: Ge Haitong

Inventor before: Chen Liang

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: YAN XIAOLANG ZHU PENG HUANG KAI GE HAITONG CHEN LIANG TO: YAN XIAOLANG ZHU PENG HUANG KAI GE HAITONG CHEN LIANG RAN FAN LIU ZHONGFANG

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130417

Termination date: 20151123

CF01 Termination of patent right due to non-payment of annual fee