一种熵解码方法及装置与流程

文档序号:16201945发布日期:2018-12-08 06:41阅读:171来源:国知局
一种熵解码方法及装置与流程

本发明涉及视频压缩与编解码领域,尤其涉及一种熵解码方法及装置。

背景技术

随着高清、超高清视频应用的发展,视频压缩技术面临了越来越大的挑战。hevc(highefficiencyvideocoding,高效视频编码)是jct-vc在2013年发布的新一代视频编码标准。cabac(context-basedadaptivebinaryarithmeticcoding,基于上下文的自适应二进制算术编码)是h.265/hevc标准的熵编码方法,包括3个基本步骤:二值化,上下文模型选择,二进制算术编码。

在hevc解码器端,熵解码过程需要在二进制算术解码后,才能进行相关模型的更新操作,然后再进行下一次算术解码。上述两个步骤具有顺序性和数据依赖性,很难采用并行的方式提高吞吐率,成为解码器性能瓶颈。

目前,可以使用专用集成电路实现hevc解码器,现有熵解码技术采用组合逻辑电路在一个时钟周期内可以完成一个二进制符号的算法解码,上下文模型的更新。当比特流码率较高时,如果要求在一个时钟周期内完成多个二进制符号的恢复,则需要在一个时钟周期内串行完成二进制符号bin0的算术解码,上下文模型更新,二进制符号bin1的算术解码,上下文模型更新,会造成严重的时序违例。

由此可见,现有技术由于数据的依赖性,串行实现二进制算术解码和上下文模型更新,两级组合电路的时序违例很大,无法在一个时钟周期内恢复两个二进制符号,无法实现高吞吐率的cabac解码。



技术实现要素:

本申请提供一种熵解码方法及装置,可以提高解码吞吐率。

本申请实施例提供如下技术方案。

一种熵解码方法,包括:

对二进制符号进行二进制算术解码;对于预定的语法元素,在进行二进制算术解码的同时,预测所述二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;

根据二进制算术解码得到的所述二进制符号的数值,从所预测的结果中选择相应的上下文模型。

其中,所述预定的语法元素可以包括以下一项或多项:

残差编码语法元素、运动矢量差值语法元素。

其中,所述对二进制符号进行二进制算术解码可以包括:

如果当前区间与偏移值的差小于或等于最小概率符号lps的区间大小,则当前二进制符号等于lps;如果当前区间r与偏移值offset的差大于lps的区间大小,则当前二进制符号等于最大概率符号mps。

其中,对一个时钟周期内解析的两个二进制符号,可以分别采用第一二进制算术解码单元和第二二进制算术解码单元进行二进制算术解码,可以分别采用第一上下文模型选择单元和第二上下文模型选择单元,预测二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型。

其中,所述根据二进制算术解码得到的所述二进制符号的数值,从预测得到的结果中选择相应的上下文模型可以包括:

将预测所述二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型分别作为选择器的输入信号;将根据二进制算术解码得到的所述二进制符号的数值作为所述选择器的控制信号;所述选择器的输出信号为所选择的上下文模型。

一种熵解码装置,包括:

解析模块,用于对二进制符号进行二进制算术解码;对于预定的语法元素,在进行二进制算术解码的同时,预测所述二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;

选择模块,用于根据二进制算术解码得到的所述二进制符号的数值,从所预测的结果中选择相应的上下文模型。

其中,所述预定的语法元素可以包括以下一项或多项:

残差编码语法元素、运动矢量差值语法元素。

其中,所述对二进制符号进行二进制算术解码可以包括:

如果当前区间与偏移值的差小于或等于最小概率符号lps的区间大小,则当前二进制符号等于lps;如果当前区间r与偏移值offset的差大于lps的区间大小,则当前二进制符号等于最大概率符号mps。

其中,所述解析模块可以包括:

第一二进制算术解码单元、第一上下文模型选择单元、第二二进制算术解码单元、第二上下文模型选择单元;

所述第一二进制算术解码单元和第二二进制算术解码单元,可以分别用于对一个时钟周期内解析的两个二进制符号进行二进制算术解码;

所述第一上下文模型选择单元和第二上下文模型选择单元,可以分别用于对一个时钟周期内解析的两个二进制符号,预测分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型。

其中,所述选择模块可以包括:

第一选择器、第二选择器;

所述第一选择器的输入信号可以为所述第一上下文模型选择单元所预测的二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;控制信号可以为所述第一二进制算术解码单元得到的二进制符号的数值;输出信号可以为所选择的第一上下文模型,输入给所述第二二进制算术解码单元;

所述第二选择器的输入信号可以为所述第二上下文模型选择单元所预测的二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;控制信号可以为所述第二二进制算术解码单元得到的二进制符号的数值;输出信号可以为所选择的第二上下文模型。

一种熵解码装置,包括:处理器和存储器;

所述存储器用于保存进行熵解码的程序;

所述处理器用于执行所述进行熵解码的程序,实现以下操作:

对二进制符号进行二进制算术解码;对于预定的语法元素,在进行二进制算术解码的同时,预测所述二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;

根据二进制算术解码得到的所述二进制符号的数值,从所预测的结果中选择相应的上下文模型。

其中,所述预定的语法元素可以包括以下一项或多项:

残差编码语法元素、运动矢量差值语法元素。

其中,所述对二进制符号进行二进制算术解码可以包括:

如果当前区间与偏移值的差小于或等于最小概率符号lps的区间大小,则当前二进制符号等于lps;如果当前区间r与偏移值offset的差大于lps的区间大小,则当前二进制符号等于最大概率符号mps。

本申请实施例可以减小电路的时序路径,能够大幅提升hevc标准熵解码电路的吞吐率。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

附图用来提供对本申请技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。

图1是实施例一的熵解码的方法的流程图;

图2是实施例一的例子中解码的流程图;

图3是二进制算术解码单元工作示意图;

图4是使用偏移值与最小概率符号比较计算二进制符号的示意图;

图5是实施例二的熵解码的装置的示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,下文中将结合附图对本申请的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

实施例一、一种熵解码方法,如图1所示,包括s110~s120:

s110、对二进制符号进行二进制算术解码;对于预定的语法元素,在进行二进制算术解码的同时,预测所述二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;

s120、根据二进制算术解码得到的所述二进制符号的数值,从所预测的结果中选择相应的上下文模型。

本实施例中,可以实现在一个时钟周期内解析两个二进制符号,缩短电路的时序路径,提高hevc解码器cabac吞吐率。

本实施例中,在解码的同时预测,是指预测和解码是同步进行的,是并行的过程;可以但不限于同一时刻启动对一个二进制符号的解码和预测过程。

本实施例中,所预测的结果包含二进制符号为0这个分支的预测结果,和二进制符号为1这个分支的预测结果;当解码得到二进制符号的数值后,就可以根据数值直接选择相应的预测结果。

可选地,所述预定的语法元素可以但不限于包括以下一项或多项:

残差编码语法元素、运动矢量差值语法元素。

可选地,所述对二进制符号进行二进制算术解码可以包括:

如果当前区间r与偏移值offset的差小于或等于lps的区间大小,则当前二进制符号等于lps;如果当前区间r与偏移值offset的差大于lps的区间大小,则当前二进制符号等于mps。

可选地,对一个时钟周期内解析的两个二进制符号,可以分别采用第一二进制算术解码单元和第二二进制算术解码单元进行二进制算术解码,可以分别采用第一上下文模型选择单元和第二上下文模型选择单元,预测二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型。

可选地,所述根据二进制算术解码得到的所述二进制符号的数值,从预测得到的结果中选择相应的上下文模型可以包括:

将预测所述二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型分别作为选择器的输入信号;将根据二进制算术解码得到的所述二进制符号的数值作为所述选择器的控制信号;所述选择器的输出信号为所选择的上下文模型。

下面用一个cabac解码的例子说明本实施例。

本例子对h.265/hevc标准中两部分语法元素,即:残差编码语法元素和运动矢量差值语法元素,在常规解码流程中,采用预测的方式提前确定上下文模型;在二进制算术解码过程中,采用偏移值与最小概率符号(leastprobablesymbol,lps)的区间大小比较的方式,实现在一个时钟周期内恢复两个二进制符号,缩短了电路的时序路径,从而提高hevc解码器cabac吞吐率。

本例子可以采用软件与硬件协同的方式完成hevc标准中的熵解码功能。软件完成视频层参数集(vps),序列参数集(sps),图像参数集(pps)参数集的解析。硬件电路完成条带头(sliceheader)及以下语法元素的解析。熵解码硬件可以包含状态机控制单元,两套二进制算术解码单元,两套上下文模型选择单元。

本例子按照如下步骤工作,如图2所示,包括如下步骤201~207:

201、读入比特流。软件完成vps,sps,pps参数集的解析,通过高级外围总线(advancedperipheralbus,apb)配置硬件,将解码参数写入硬件寄存器。

202、在解析一个新的条带(slice),新的tile(格)或新的一行编码树单元(codingtreeunit,ctu)时,按照hevc标准所述,进行二进制算术解码器初始化,上下文概率模型初始化。

对于二进制算术解码器,按照如下初始化:

(1)当前区间(currange)设置为十进制510;

(2)读取码流起始9比特作为当前区间偏移值(offset)。

对于概率模型,按照hevc标准中描述,初始化各概率模型,包括:

pstateidx和valmps。

203、状态机控制单元根据hevc语法元素选择概率模型,转入对应语法元素的熵解码流程,选择概率模型。例如在解析编码树单元(codingtreeunit,ctu)时,首先解码的语法元素为样本点自适应补偿(sampleadaptiveoffset)。

在本例子中,选择对残差(residual)和运动矢量差值(motionvectordifference)两部分语法元素进行分支预测,提高吞吐率;即:对于残差系数语法元素和运动矢量差值语法元素,采用步骤204到207的操作。对于其他语法元素,则在一个时钟周期解析一个二进制符号。

204、启动二进制算术解码单元bad1解析第一个二进制符号bin0。在启动bad1的同时,启动上下文模型选择单元cm1预测bin0分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型。在二进制算术解码过程中,采用了偏移值与最小概率符号(lps)的区间大小比较的方式。经过区间划分后得到的新区间如果小于256,就需要进行重归一化过程。

本步骤中,当进入到残差语法元素时(进入到运动矢量语法元素时的情况可以类推,这里不再赘述),二进制算术解码单元如图3所示。在时钟周期clk0选择残差系数第一个需解码的二进制符号bin0的上下文模型cm_0。如果bin0的解码方式为常规解码,则在下一个时钟周期clk1,启动bad1解析bin0。在解析bin0时,启动cm1预测bin0分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型,分别记为cm_1_if=0和cm_1_if=1。

在bad1解析过程中,如图4所示,采用了偏移值与lps的区间大小比较的方式。首先计算区间(range)的索引值ρ:

ρ=(r>>6)&3;

其中,r为当前区间的大小。

通过查表得到lps对应的子区间的大小(即lps的区间大小)rlps:

rlps=rangetablps[σ][ρ]

其中,σ为概率状态索引,不同的σ值对应不同的lps的概率,以及不同的概率状态转化结果:当前待编解码的二进制符号为mps,则概率状态将转化为transidxmps[σ],如果当前待编解码的二进制符号为lps,则概率状态将转化为transidxlps[σ];比如σ=0时,lps的概率为0.5,transidxlps[σ]为0,transidxmps[σ]为1。

获取当前最大概率符号(mostprobablesymbol,mps)的子区间的大小rmps:

rmps=r-rlps

使用当前区间r与偏移值offset的差进行判决。如果差值r-offset小于或等于rlps,则当前二进制符号bin等于lps;如果差值r-offset大于rlps,则当前二进制符号bin等于mps。

如果当前二进制符号bin等于mps,则mps的编码区间rmps作为下一个二进制符号的编码区间r(即:r=rmps),区间下限l不变;σ=transidxmps[σ]。

如果当前二进制符号bin等于lps,则lps的区间rlps作为下一个二进制符号的编码区间r(即:r=rlps),区间下限要增加rmps的长度。offset更新为:rlps-(r-offset)。

判断σ是否等于0;如果σ=0即lps的概率和mps的概率相同,而由于目前再次出现lps,因此mps和lps需要互换,即mps=1-mps;然后σ=transidxlps[σ]。σ不等于0则直接σ=transidxlps[σ]。

随后根据当前bin值更新上下文模型。

经过区间划分后得到的新区间如果小于256,就需要进行重归一化过程。

205、根据二进制算术解码单元bad1解析的bin0的数值为0或1,从cm1的预测结果中选择相应的上下文模型cm_1。

如图3所示,可以将bin0的数值作为第一选择器的控制信号,第一选择器的两路输入分别是cm_1_if=0和cm_1_if=1,输出连接bad2的输入端;如果bin0的数值为0,则选择cm_1_if=0作为cm_1输出;如果bin0的数值为1,则选择cm_1_if=1作为cm_1输出。

206、启动二进制算术解码单元bad2解析下一个二进制符号bin1。在启动bad2时,也启动上下文模型选择单元cm2预测bin1分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型,分别记为cm_2_if=0和cm_2_if=1。经过区间划分后得到的新区间如果小于256,就需要进行重归一化过程。

对bin0和bin1进行反二值化,得到对应语法元素的数值。语法元素数量很大,需要较大的存储空间。在本例子中,将语法元素通过高级可扩展接口(advancedextensibleinterface,axi)总线存储到双倍速率同步动态随机存储器(dualdatarate,ddr)中。

根据bad2解析的bin1的数值为0或1,从cm2的结果中选择相应的上下文模型cm_2。如图3所示,可以将bin1的数值作为第二选择器的控制信号,第二选择器的两路输入分别是cm_2_if=0和cm_2_if=1,输出的是所选择的上下文模型;如果bin1的数值为0,则选择cm_2_if=0作为cm_2;如果bin1的数值为1,则选择cm_2_if=1作为cm_2。

207、下一个时钟周期,重复步骤204到步骤206的操作,直到残差或运动矢量差值语法元素熵解码完成。

h.265/hevc语法元素很多,如果对所有语法元素均做分支预测,熵解码部分的复杂度会大大增加。针对比特流中残差和运动矢量占比较大的情况,本例子中只对残差编码语法元素和运动矢量差值语法元素进行预测,既提高了cabac的吞吐率,又减小了硬件设计的难度。这是本申请的改进点之一。对于其它语法元素,可以按传统方案恢复。

在一个时钟周期完成两个二进制符号bin0和bin1的解析。通常步骤是在bad1和bad2解码后更新上下文模型,使用组合逻辑电路实现时,会引起严重的时序违例。本申请采用分支预测方式,在启动bad1解析bin0的同时,启动第一上下文模型选择单元cm1预测bin0分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型。对于bad2、cm2也进行同样的操作。如图3所示,本申请中在二进制算术解码单元解析二进制符号的同时,采用进行分支预测的上下文模型选择单元预先进行上下文模型的确定,这是本申请的改进点之一。

在进行二进制算术解码时,本申请没有采用hevc标准中偏移值与最大概率符号(mps)比较的方法,而是采用偏移值与最小概率符号(lps)的区间大小比较的方法。减小了硬件电路的时序路径,使一个时钟周期内完成两个二进制符号的解析能够实现。这是本申请的改进点之一。具体如图4所示。

实施例二、一种熵解码装置,如图5所示,包括:

解析模块21,用于对二进制符号进行二进制算术解码;对于预定的语法元素,在进行二进制算术解码的同时,预测所述二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;

选择模块22,用于根据二进制算术解码得到的所述二进制符号的数值,从所预测的结果中选择相应的上下文模型。

可选地,所述预定的语法元素可以包括以下一项或多项:

残差编码语法元素、运动矢量差值语法元素。

可选地,所述对二进制符号进行二进制算术解码可以包括:

如果当前区间与偏移值的差小于或等于最小概率符号lps的区间大小,则当前二进制符号等于lps;如果当前区间r与偏移值offset的差大于lps的区间大小,则当前二进制符号等于最大概率符号mps。

可选地,所述解析模块可以包括:

第一二进制算术解码单元、第一上下文模型选择单元、第二二进制算术解码单元、第二上下文模型选择单元;

所述第一二进制算术解码单元和第二二进制算术解码单元,分别用于对一个时钟周期内解析的两个二进制符号进行二进制算术解码;

所述第一上下文模型选择单元和第二上下文模型选择单元,分别用于对一个时钟周期内解析的两个二进制符号,预测分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型。

可选地,所述选择模块可以包括:

第一选择器、第二选择器;

所述第一选择器的输入信号为所述第一上下文模型选择单元所预测的二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;控制信号为所述第一二进制算术解码单元得到的二进制符号的数值;输出信号为所选择的第一上下文模型,输入给所述第二二进制算术解码单元;

所述第二选择器的输入信号为所述第二上下文模型选择单元所预测的二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;控制信号为所述第二二进制算术解码单元得到的二进制符号的数值;输出信号为所选择的第二上下文模型。

其它实现细节可参见实施例一。

实施例三、一种熵解码装置,包括:处理器和存储器;

所述存储器用于保存进行熵解码的程序;

所述处理器用于执行所述进行熵解码的程序,实现以下操作:

对二进制符号进行二进制算术解码;对于预定的语法元素,在进行二进制算术解码的同时,预测所述二进制符号分别为0和1时,下一个解码的语法元素及二进制符号对应的上下文模型;

根据二进制算术解码得到的所述二进制符号的数值,从所预测的结果中选择相应的上下文模型。

可选地,所述预定的语法元素可以包括以下一项或多项:

残差编码语法元素、运动矢量差值语法元素。

可选地,所述对二进制符号进行二进制算术解码可以包括:

如果当前区间与偏移值的差小于或等于最小概率符号lps的区间大小,则当前二进制符号等于lps;如果当前区间r与偏移值offset的差大于lps的区间大小,则当前二进制符号等于最大概率符号mps。

其它实现细节可参见实施例一。

虽然本申请所揭露的实施方式如上,但所述的内容仅为便于理解本申请而采用的实施方式,并非用以限定本申请。任何本申请所属领域内的技术人员,在不脱离本申请所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本申请的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1