CN102355578B - 一种熵解码方法、装置 - Google Patents

一种熵解码方法、装置 Download PDF

Info

Publication number
CN102355578B
CN102355578B CN201110139078.8A CN201110139078A CN102355578B CN 102355578 B CN102355578 B CN 102355578B CN 201110139078 A CN201110139078 A CN 201110139078A CN 102355578 B CN102355578 B CN 102355578B
Authority
CN
China
Prior art keywords
decoding
suffix
parameter
prefixnum
unit
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
CN201110139078.8A
Other languages
English (en)
Other versions
CN102355578A (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.)
Shenzhen Yunzhou Multimedia Technology Co., Ltd.
Original Assignee
SHENZHEN YUNZHOU MULTIMEDIA TECHNOLOGY Co Ltd
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 SHENZHEN YUNZHOU MULTIMEDIA TECHNOLOGY Co Ltd filed Critical SHENZHEN YUNZHOU MULTIMEDIA TECHNOLOGY Co Ltd
Priority to CN201110139078.8A priority Critical patent/CN102355578B/zh
Priority to PCT/CN2011/076357 priority patent/WO2012159295A1/zh
Publication of CN102355578A publication Critical patent/CN102355578A/zh
Application granted granted Critical
Publication of CN102355578B publication Critical patent/CN102355578B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开一种熵解码方法,所述的方法包括为:获取二进制比特流;获取第一变量;根据第一变量的范围确定当前码字的类型;根据当前码字的类型采用相应的解码方法进行解码。本发明还公开一种熵解码装置,所述的装置包括:获取单元、码字类型确定单元、解码单元。本发明通过分析语法元素的概率分布情况,对码字规则和码表排列顺序进行全新设计,根据码字规则计算出码表中码字的顺序索引,对码表中的语法元素进行索引排序,进而实现快速解码操作。

Description

一种熵解码方法、装置
技术领域
本发明涉及视频编解码领域,尤其涉及一种熵解码方法、装置。
背景技术
视频编码技术作为多媒体通信中最重要的环节之一,有效地解决了海量数字视频数据的编码压缩问题,它是数字信息传输、存储、播放等环节的前提。目前主流的视频压缩国际标准主要有MPEG-x和H.26x等,这些视频编码算法都是基于块的混合编码方法,即通过运动估计和运动补偿消除视频时间冗余,对差值图像进行离散余弦变换变换消除空间冗余,对量化后的系数进行可变长编码消除统计冗余。
2003年,ISO/IEC(动态图像专家组)的运动图像专家组(MPEG MovingPictures Experts Group/Motion Pictures Experts Group)与ITU-T(ITU-T for ITUTelecommunication Standardization Sector国际电信联盟远程通信标准化组织)的视频编码专家组(VCEG)联手制定了最新的视频编码标准H.264/AVC(集合H.263+和MPEG-4的优点联合推出的最新标准),其主要目的是获得更高的编码效率和更好的网络亲和性。在相同重构图象质量下,与H.263+和MPEG-4ASP标准相比,节约50%的码流。H.264的高压缩性能是以高编解码复杂度为代价的。诸多新的编码算法被采用:帧内预测、多参考帧运动补偿、增强的熵编码、去方块滤波等。这导致了视频编解码的复杂性显著增大,庞大的运算量会造成严重的功耗,这些都对嵌入式平台的视频熵解码实现提出挑战。
在H.264/AVC标准中,残差数据经过整数变换、量化后被送往熵编码器进行编码。H.264采用了两大类熵编码方法:算术编码和可变长度编码。可变长编码又分为指数哥伦布编码Exp-Golomb和基于上下文的自适应变长编码CAVLC。指数哥伦布编码采用固定的编码规则对各种语法元素进行编码,如图像序列参数、图像层参数、片层参数、宏块类型、编码块类型等;而预测残差系数的编码需要根据熵编码模式来选择使用基于上下文的CAVLC自适应变长编码(Context-based Adaptive Variable Length Coding,自适应变长编码)或是基于上下文的二进制算术编码(Context-based Adaptive Binary ArithmeticCoding,CABAC)。H.264/AVC视频编码标准的CAVLC熵编码充分利用了上下文信息,通过建立多个码表自适应选择优化,取得了良好的编码效果。H.264/AVC的CABAC熵编码属于算术编码器,算术编码的性能要优于变长编码,而且CABAC通过自适应的概率估计和更新以及二进制算术编码,更加逼近香农定理,编码效果更高,但其算法计算复杂度高,硬件实现要求复杂,是一种以软硬件的复杂度换取编码效率的提高。
对于移动视频等实时视频通信这类应用场合,熵编解码技术一般采用CAVLC编解码和指数哥伦布编解码。CAVLC仍采用了哈夫曼编码的思想依据字符出现概率来构造带权路径长度最小的二叉树从而实现平均码字长度最短,且各个符号编码的字头都是相异的,即任何一个符号的编码都不会成为另一个符号编码的前缀。CAVLC在传统变长编码方法的基础上,通过引入上下文的自适应模型,定义了多组码表,根据编码码字特征,动态的进行码表切换,因此,CAVLC是以目前已发布视频标准中编码效率最高的上下文自适应变长编码技术。
传统的熵解码操作的主要步骤如下:读取接收到的二进制码流,然后逐位遍历查找表匹配码字,这需要反复查询变长码表,确定了完全匹配的码字,从而确定码字,根据码字在码表和相应语法元素的相应关系进行解码,获得相应语法元素的数值。但是,这也导致了CAVLC的解码过程计算量过大。一方面,CAVLC解码必须从连续的比特流中分辨各个长度不定的码字,如采用全搜索算法需要遍历整个二叉树,需要进行多次读取和判断,因此查表过程耗费时间很多;另一方面,由于码字树很稀疏,码表的存储空间随着码字长度的增加成指数增长,但其中的绝大部分是空置的,没有得到有效利用。
具体来看,这里的查找表操作主要涉及两个技术问题:1)如何确定变长的完整码字;2)由码字通过查表间接获得相应的语法元素。显然,要解决这两个技术问题,首先需要内存中保存着复杂的变长码表,其次,逐位遍历查找表匹配码字,反复读写内存操作也会导致功耗的剧增。
综上所述,CAVLC的编码高效率是以众多的码表为代价的,过多的码表意味着编解码操作需要更多的计算资源。熵解码的操作一般可以采用查找表(Look Up Table,LUT)结构实现,查找表模式会通过占用内存空间而获得较好的速度,但是这些方法对于诸如手机、PDA等嵌入式终端而言,内存资源往往是非常有限的,而且解码过程中逐位遍历查找表匹配码字,反复读写内存操作也会导致功耗的剧增,因此有必要提出一种适用于嵌入式平台低资源要求的熵解码实现方法。
发明内容
本发明实施例的目的在于提出一种熵解码方法、装置。
该熵解码方法具体为:
获取二进制比特流,根据所述的二进制比特流获取码字的前缀部分;
获取第一变量;若第一变量在变长码字参数范围内,则确定解码模式为第一至第四解码模式其中之一;若在定长码字参数范围内,则确定当前码字为定长码字;
在所述确定的第一至第四其中之一解码模式下,根据所述前缀判断当前码字是否为特殊短码;若是,根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数;若否则根据所述前缀选择预置相应的解码公式进行解码,获得索引值,根据索引值获得第一参数和第二参数;
当确定当前码字为定长码字时,则设置索引值等于定长码字;根据所述索引值获取第一参数和第二参数。
相应于该方法,本发明实施例还提供了一种熵解码装置,所述装置包括:获取单元、解码模式确定单元、变长码解码单元、定长码解码单元;
获取单元,用于获取二进制比特流,根据所述的二进制比特流获取码字的前缀部分;获取第一变量;
解码模式确定单元,用于在后获取第一变量进行判断;若第一变量在变长码字参数范围内,则确定解码模式为第一至第四解码模式其中之一;若在定长码字参数范围内,则确定当前码字为定长码字;
变长码解码单元,用于在所述确定的第一至第四其中之一解码模式下,根据所述前缀判断当前码字是否为特殊短码;若是根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数;若否则根据所述前缀选择预置相应的解码公式进行解码,获得索引值,根据索引值获得第一参数和第二参数;
定长码解码单元,用于当确定当前码字为定长码字时,则设置索引值等于定长码字;根据所述索引值获取第一参数和第二参数。
本发明实施例的目的在于提供一种熵解码方法、装置。通过分析语法元素的概率分布情况,对码字规则和码表排列顺序进行全新设计,根据码字规则计算出码表中码字的顺序索引,对码表中的语法元素进行索引排序,进而实现快速解码操作。此外,将部分高使用频率的特殊短码字直接简单算术表达式计算出相应的语法元素数值。本发明实施例实施例消除了遍历二叉树的操作和匹配码字的操作,从而极大降低熵编码算法对内存等硬件的要求。
附图说明
图1是本发明实施例1熵解码方法流程图;
图2是本发明实施例1当前宏块与左边、上面宏块位置关系图;
图3是本发明实施例2熵解码装置结构示意图;
图4是本发明实施例2中解码模式确定单元结构示意图;
图5是本发明实施例2中特殊短码解码单元结构图;
图6是本发明实施例2中非特殊短码解码单元结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和实施例,对本发明进行进一步详细说明,为了便于说明,仅示出了与本发明实施例相关的部分。应当理解,此处所描写的具体实施例,仅仅用于解释本发明,并不用以限制本发明。
在视频编码中,宏块是视频编码的基本单元,宏块大小为16×16,每个宏块由4个4×4块组成,每个块由1个4×4亮度块和2个色度块组成。对于图像块而言,预测和量化后的残差系数需要通过扫描获得图像块残差系数的相应的语法元素。这些需要编码的语法元素主要有:Level(非零系数的幅值)、Run(一个非零系数前的连续零系数游程)以及数据结束符等。通常熵编码先对预测变换量化后的系统进行Zigzag扫描进行预处理,把扫描中遇到的非零系数记为Level,一个非零系数前的连续零系数游程记为Run。当然,视频编码的熵编码除了残差系数的语法元素进行编码,还有其他各种辅助信息的语法元素需要进行编码,如运动矢量、图像序列参数、图片层参数、片层参数、宏块类型、编码块类型等。
H.264/AVC视频编码标准的CAVLC在传统变长编码方法的基础上,通过引入上下文的自适应模型,定义了多组码表,根据编码码字特征,动态的进行码表切换,将Level、Run分开进行编码,取得了目前已发布视频标准中最佳编码效率效果。CAVLC的编码基本原理仍然遵循Huffman编码原理,即大概率的符号分配短码字、小概率的符号分配长码字,从而达到平均码长最短的目的。
因此,本发明实施例将遵循H.264/AVC视频编码标准的CAVLC编码方法基本思想和相应的语法元素的统计概率分布,但对码表进行了全新的设计。因此,需要处理的残差系数语法元素主要包括:(a)coeff_token(非零系数个数TotalCoeff和拖尾系数的个数TrailingOnes);(b)拖尾系数的符号trailing_ones_sign_flag;(c)非零系数幅值(Level);(d)total_zeros;(e)run_before。
这些参数系数语法元素的解码操作主要需要两个技术条件:内存资源的要求和逐位遍历查找表的功耗问题,这对嵌入式终端的视频解码设计带来了挑战。本发明实施例通过对码字规则和语法元素的概率分布分析,通过引入码表顺序索引对码字进行了排序,并且将部分高使用频率的特殊短码字直接简单算术表达式计算出相应的语法元素数值,消除了遍历二叉树的操作和匹配码字的操作,从而极大降低熵编码算法对内存等硬件的要求,非常适合于嵌入式终端的熵解码应用的方法和系统。
为了获得高的熵编码下来,每个残差系数的语法元素,设计了多张码表,通过上下文自适应选择。Huffman编码原理,即大概率的符号分配短码字、小概率的符号分配长码字,从而达到平均码长最短的目的。码表中的码字完全依据语法元素出现概率来构造带权路径长度最小的二叉树从而实现平均码字长度最短,且各个符号编码的字头都是相异的,即任何一个语法符号的编码都不会成为另一个语法符号编码的前缀。
实施例1,依据上述思想,本发明实施例提供了一种熵解码方法,
该方法可以是:获取二进制比特流;获取第一变量;
根据第一变量的范围确定当前码字的类型;
根据当前码字的类型采用相应的解码方法进行解码。
其中如果当前码字的类型为变长码字,那么在所述的“根据当前码字的类型采用相应的解码方法进行解码”之前还包括步骤:获取二进制比特流中码字的前缀部分;
“根据当前码字的类型采用相应的解码方法进行解码”可以为:当确定为变长码字时,则确定解码模式为变长码字解码模式;根据所述前缀判断当前码字是否为特殊短码,若是则根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数;若否则则在变长码字解码模式下根据所述前缀选择相应的预置解码公式进行解码,获得索引值,根据所述的索引值获得第一参数和第二参数。
如果当前码字的类型为定长码字,“根据当前码字的类型采用相应的解码方法进行解码”可以为:确定解码模式为定长码字解码模式;设置索引值数值等于定长码字数值,根据所述的索引值至预置的定长码表查询,获取索引值相应的第一参数与第二参数。
参见图1,该方法具体为:
在本发明实施例中,设置第一参数为拖尾系数的个数TrailingOnes,设置第二参数为非零系数个数TotalCoeff;
步骤101:获取第一变量(NC);若第一变量(NC)在变长码字参数范围内,例如可以是-1≤NC<8;则确定解码模式为第一至第四解码模式其中之一;若第一变量(NC)在定长码字参数范围内,例如可以是NC≥8,则确定当前码字为定长码字,执行步骤106;
该步骤中所述的“获取的第一变量(NC)”的方法可以为:
(1)预先计算当前宏块左边4X4宏块的第一非零系数数目(NA)和当前宏块上面4X4宏块的第二非零系数数目(NB);当前宏块与左边、上面宏块位置关系图,参见图2。
当NA和NB都有效时,NC=(NA+NB)/2;当NB有效,NA无效时,NC=NB;当NB无效,NA有效时,NC=NA;
第一变量(NC)的确定如表一所示:
表1NC与NA和NB的相应关系
(2)该步骤中所述的“若-1≤NC<8;则确定解码模式为第一至第四解码模式其中之一”可以为:
例如:若0≤NC<2,则选择第一解码模式(表2,第一变长码表VLC-1)进行解码;
若2≤NC<4,则选择第二解码模式(表3,第二变长码表VLC-2)进行解码;
若5≤NC<8,则选择第三解码模式(表4,第三变长码表VLC-3)进行解码;
若NC=-1,则选择第四解码模式(表5,第四变长码表VLC-4);
(3)该步骤中所述当NC≥8,则确定当前码字为定长码字进行解码;
步骤102:获取二进制比特流,根据所述的二进制比特流获取码字的前缀部分;
例如可以通过首“1”检测器来获取前缀部分;
步骤103:在步骤101中确定的第一至第四解码模式下,根据所述前缀判断当前码字是否为特殊短码;若是则执行步骤104;若否则执行步骤105;
该步骤可以为:将所述前缀部分的“0”的个数赋予中间变量PrefixNum,然后根据所述的中间变量PrefixNum与阈值的关系,来确定码字是否为特殊短码。阈值S可以根据所述的第一变量NC来决定,例如:
当0≤NC<2时为第一解码模式,那么此时阈值S可以设置为3,当PrefixNum<3时,则确定当前码字为特殊短码;
当2≤NC<4时为第二解码模式,那么此时阈值S可以设置为2,当PrefixNum<2时,则确定当前码字为特殊短码;
当5≤NC<8时为第三解码模式,那么此时阈值S可以设置为1,当PrefixNum<1时,则确定当前码字为特殊短码;
当NC=-1时为第四解码模式,那么此时阈值S可以设置为3,当PrefixNum<3时,则确定当前码字为特殊短码;
步骤104:在步骤101中确定的第一至第四其中之一解码模式下根据预置相应的特殊短码解码公式进行解码,获得第一参数TrailingOnes和第二参数TotalCoeff;
例如:(1)当确定0≤NC<2时为第一解码模式:
TrailingOnes=TotalCoeff=PrefixNum
(2)当确定2≤NC<4时为第二解码模式:
第二解码模式下特殊短码时,根据预置的Suffixlength=1读取二进制比特流,获取Suffix;
TrailingOnes=TotalCoeff=(Prefix<<1)+Suffix;
(3)当确定5≤NC<8时为第三解码模式:
第三解码模式下特殊短码时,根据预置的Suffixlength=3读取二进制比特流,获取Suffix;
TotalCoeff=Suffix
TrailingOnes=3×(Suffix/4)+(Suffix%4)×(1-Suffix/4)
或TrailingOnes=3×Suffix[2:2]+suffix[1:0]×(~Suffix[2:2])
其中,获得TrailingOnes的2个公式实际是相同的,前一个是简单计算,后一个是根据位操作;
(4)当确定NC=-1时为第四解码模式,
TrailingOnes=TotalCoeff=2×PrefixNum[1:1]+(~PrefixNum[0:0])×(~PrefixNum[1:1])
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、Prefix为前缀、Suffix为后缀,Suffix[2:0]表示第2位到第0位的3比特二进制数,Suffix[1:0]表示第1位至第0位的2比特二进制数,Suffix[2:2]表示第2位的1比特二进制数。PrefixNum[1:0]表示第1位到第0位的2比特二进制数,PrefixNum[1:1]表示第1为的1比特二进制数,PrefixNum[0:0]表示第0位的1比特二进制数。“/”表示除法运算符,“%”表示取余运算符,“~”表示位取反运算符。
步骤105;在步骤101中确定的第一至第四其中之一解码模式下根据所述前缀选择相应的预置解码公式进行解码,获得索引值,索引值表征了语法元素(第一参数TrailingOnes和第二参数TotalCoeff)的排列顺序,根据索引值获得第一参数TrailingOnes和第二参数TotalCoeff。
该步骤根据确定不同的解码模式、所述前缀选择相应的预置解码公式进行解码,获得索引值可以为:
(1)确定为第一解码模式时,
Suffixlength=(PrefixNum>=9&&PrefixNum<13)?3:2
根据所述的Suffixlength读取二进制比特流,获取Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“&&”表示逻辑与运算符、“?:”表示条件运算符、“<<”表示按位左移运算;
(2)当确定为第二解码模式时,
Suffixlength=(PrefixNum>=7)?3:2
根据所述的Suffixlength读取二进制比特流,获取Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“?:”表示条件运算符“<<”表示按位左移运算。
(3)当确定为第三解码模式时,根据预置的Suffixlength=3读取二进制比特流,获取Suffix;
Index=((PrefixNum-3)<<2)+Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
(4)当确定为第四解码模式时,根据预置的Suffixlength=2读取二进制比特流,获取Suffix;
Index=(PrefixNum-3)<<3)+Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
并且在步骤105中,所述的“获得索引值,根据索引值获得第一参数和第二参数”可以为:获得索引值后,在确定的第一至第四其中之一解码模式下,根据所述索引值查找预置的参数表,获取索引值相应的第一参数与第二参数。其中在第一解码模式时,相应的查找预置的参数表为表2,第一变长码表(VLC-1);在第二解码模式时,相应查找预置的参数表为表3,第二变长码表(VLC-2);其中在第三解码模式时,相应的查找预置的参数表为表4,第三变长码表(VLC-3);在第四解码模式时,相应查找预置的参数表为表5,第四变长码表(VLC-4)。
步骤106:在步骤101中确定的当前码字是定长码字;则设置定长码字长度为预置长度,则设置索引值Index等于定长码字;根据所述索引值获取第一参数和第二参数。
定长码字的预置长度为不低于log2N的整数,N是语法元素取值的个数;本例中预置长度可以为6。
该步骤可以为:当确定当前码字为定长码字时,设置索引值等于定长码字后,根据所述的索引值至预置的定长码表查询,获取索引值相应的第一参数与第二参数。
下面从具体码字的角度来进行描述:
(1)第一解码模式的非特殊短码情况:
根据步骤101的方法,根据宏块情况,获取到当前NC=1,那么根据步骤101中确定解码模式中“若0≤NC<2,则选择第一解码模式(VLC-1码表)进行解码”,可以确定当前解码模式为第一解码模式;
根据步骤102的方法,获取一个二进制比特流0000 0110xxxxx,那么前缀部分为0000 01;
根据步骤103的方法,由于前缀部分为0000 01,那么得到中间变量PrefixNum=5;由于是在第一解码模式下,阈值S=3,那么PrefixNum=5>3,因此该码字不是特殊短码;
根据步骤105的方法,由于确定是第一解码模式;
那么根据预置的公式:Suffixlength=(PrefixNum>=9&&PrefixNum<13)?3:2=(5>=9&&5<13)?3:2=2
PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“&&”表示“与”、“(判断条件)?a:b”表示:当判断条件成立时,则取a,当判断条件不成立时则取b。
根据所述的Suffixlength=2读取二进制比特流0000 0110xxxxx,获取Suffix为“10”;
由于PrefixNum=5,那么根据公式((PrefixNum-3)<<2)+Suffix进行计算,获取索引值Index,那么最后得到Index=(PrefixNumb-3)<<2+Suffix)=((5-3)<<2)+2=10。
然后根据Index=10,至第一变长码表(VLC-1)查表获取第一参数TrailingOnes和第二参数TotalCoeff;那么通过表1-第一变长码表VLC-1以及索引值10可以查找到TrailingOnes为0、TotalCoeff为3。
表2第一变长码表VLC-1
(2)第一解码模式的特殊短码情况:
根据步骤101的方法,根据宏块情况,获取到当前NC=1,那么根据步骤101中确定解码模式中“若0≤NC<2,则选择第一解码模式(VLC-1码表)进行解码”,可以确定当前解码模式为第一解码模式;
根据步骤102的方法,获取一个二进制比特流0010110xxxxx,那么前缀部分为0010110;
根据步骤103的方法,由于前缀部分为0010110,那么得到中间变量PrefixNum=2;由于是在第一解码模式下,阈值S=3,那么PrefixNum=2<3,因此该码字是特殊短码;
根据步骤104中的方法,根据TrailingOnes=TotalCoeff=PrefixNum;可以得知TrailingOnes=TotalCoeff=2。
(3)第二解码模式的非特殊短码情况;
根据步骤102的方法,获取一个二进制比特流0000 01101xxxx,那么前缀部分为0000 01;
根据步骤101的方法,根据宏块情况,获取到当前NC=3,那么根据步骤10x中确定解码模式中“若2≤NC<4,则选择第二解码模式(第二变长码表VLC-2码表)进行解码”,可以确定当前解码模式为第二解码模式;
根据步骤103的方法,由于前缀部分为0000 01,那么得到中间变量PrefixNum=5;由于是在第二解码模式下,阈值S=2,那么PrefixNum=5>2,因此该码字不是特殊短码;
根据步骤105的方法,由于确定是第二解码模式;
那么根据预置的公式:Suffixlength=(PrefixNum>=7)?3:2=(5>=7)?3:2=3;
PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“?:”表示条件运算符。
根据所述的Suffixlength=3读取二进制比特流0000 01101xxxx,获取Suffix为“101”;
由于PrefixNum=5,那么根据公式((PrefixNum-3)<<2)+Suffix进行计算,获取索引值Index,那么最后得到Index=(PrefixNumb-2)<<2+Suffix)=((5-2)<<2)+5=17
然后根据Index=17,至第二变长码表(VLC-2)查表获取第一参数TrailingOnes和第二参数TotalCoeff;那么通过表2-第二变长码表VLC-2以及索引值14可以查找到TrailingOnes为2、TotalCoeff为6。
表3第二变长码表VLC-2
(4)第二解码模式的特殊短码情况:
根据步骤101的方法,根据宏块情况,获取到当前NC=3,那么根据步骤101中确定解码模式中“若2≤NC<4,则选择第二解码模式(VLC-2码表)进行解码”,可以确定当前解码模式为第二解码模式;
根据步骤102的方法,获取一个二进制比特流0110111xxx,那么前缀部分为01;
根据步骤103的方法,由于前缀部分为01,那么得到中间变量PrefixNum=1;由于是在第二解码模式下,阈值S=2,那么PrefixNum=1<2,因此该码字是特殊短码;
根据步骤104中的方法,根据:根据预置的Suffixlength=1读取二进制比特流,获取Suffix=1;
TrailingOnes=TotalCoeff=(Prefix<<1)+Suffix=(1<<1)+1=2+1=3;
(5)第三解码模式的非特殊短码情况:
根据步骤101的方法,根据宏块情况,获取到当前NC=6,那么根据步骤101中确定解码模式中“若5≤NC<8,则选择第三解码模式(VLC-1码表)进行解码”,可以确定当前解码模式为第三解码模式;
根据步骤102的方法,获取一个二进制比特流0000 01101xxxx,那么前缀部分为0000 01;
根据步骤103的方法,由于前缀部分为0000 01,那么得到中间变量PrefixNum=5;由于是在第三解码模式下,阈值S=1,那么PrefixNum=5>1,因此该码字不是特殊短码;
根据步骤105的方法,由于确定是第三解码模式;
那么根据预置的公式:
Index=((PrefixNum-3)<<2)+Suffix
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
其中,在第三解码模式下,由于码字后缀长度预置为3,那么可以根据二进制比特流0000 01101xxxx获取后缀为“101”;因此Index=((5-3)<<2)+5=8+5=13;
那么通过Index=13查找第三变长码表(VCL-3)可以获得TrailingOnes=1、TotalCoeff=7
表4变长码表3(VLC-3)
(6)第三解码模式的特殊短码情况:
根据步骤101的方法,根据宏块情况,获取到当前NC=6,那么根据步骤101中确定解码模式中“若5≤NC<8,则选择第三解码模式进行解码”,可以确定当前解码模式为第三解码模式;
根据步骤102的方法,获取一个二进制比特100111xxx,那么前缀部分为10;
根据步骤103的方法,由于前缀部分为1,那么得到中间变量PrefixNum=0;由于是在第三解码模式下,阈值S=1,因此该码字是特殊短码;
根据步骤104中的方法,根据预置的Suffixlength=3读取二进制比特流,获取Suffix=001;
TotalCoeff=Suffix
TrailingOnes=3×(Suffix/4)+(Suffix%4)×(1-Suffix/4)
或TrailingOnes=3×Suffix[2:2]+suffix[1:0]×(~Suffix[2:2])
其中,在第三解码模式下,由于码字后缀长度预置为3,那么可以根据二进制比特流100111xxx获取后缀为“001”;
其中,获得TrailingOnes的2个公式实际是相同的,前一个是简单计算,后一个是根据位操作;
其中TrailingOnes是第一参数、TotalCoeff是第二参数、Prefix为前缀、Suffix后缀;Suffix[2:0]表示第3位到第0位的3比特二进制数,Suffix[1:0]表示第2为至第0位的3比特二进制数,Suffix[2:2]表示第2位的1比特二进制数。“/”表示除法运算符,“%”表示取余运算符,“~”表示位取反运算符;
那么通过:TrailingOnes=3×Suffix[3:3]+suffix[2:0]×(~Suffix[3:3])=3×0+1×(~0)=0+1×1=1。
(7)第四解码模式的非特殊短码情况:
根据步骤101的方法,根据宏块情况,获取到当前NC=-1,那么根据步骤101中确定解码模式中“NC=-1,则选择第四解码模式(VLC-4码表)进行解码”,可以确定当前解码模式为第四解码模式;
根据步骤102的方法,获取一个二进制比特流0000 01001xxxx,那么前缀部分为0000 01;
根据步骤103的方法,由于前缀部分为0000 01,那么得到中间变量PrefixNum=5;由于是在第四解码模式下,阈值S=3,那么PrefixNum=5>3,因此该码字不是特殊短码;
根据步骤105的方法,由于确定是第四解码模式;
那么根据预置的公式:
Index=((PrexfixNum-3)<<2)+Suffix
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
其中,在第三解码模式下,由于码字后缀长度预置为3,那么可以根据二进制比特流0000 01001xxxx获取后缀为“001”;因此Index=((5-3)<<2)+1=9;
那么通过Index=9;查找第四变长码表(VCL-4)可以获得TrailingOnes=2、TotalCoeff=4。
表5变长码表4(VLC-4)
TrailingOnes TotalCoeff Index
0 1 0
1 2 1
3 3 2
0 2 3
0 3 4
0 4 5
1 3 6
2 3 7
1 4 8
2 4 9
3 4 10
(8)第四解码模式的特殊短码情况:
根据步骤101的方法,根据宏块情况,获取到当前NC=-1,那么根据步骤101中确定解码模式中“NC=-1,则选择第四解码模式进行解码”,可以确定当前解码模式为第四解码模式;
根据步骤102的方法,获取一个二进制比特100111xxx,那么前缀部分为10;
根据步骤103的方法,由于前缀部分为1,那么得到中间变量PrefixNum=0;由于是在第四解码模式下,阈值S=3,因此该码字是特殊短码。
那么根据公式
TrailingOnes=TotalCoeff=2×PrefixNum[1:1]+(~PrefixNum[0:0])×(~PrefixNum[1:1])=2×0+0×1=0
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、PrefixNum[1:0]表示第1位到第0位的2比特二进制数,Suffix[1:1]表示第1为的1比特二进制数,Suffix[0:0]表示第0位的1比特二进制数。“~”表示位取反运算符。
(9)定长码字情况
根据步骤101的方法,根据宏块情况,获取到当前NC=9,那么根据步骤101中确定解码模式中“若第一变量(NC)在定长码字参数范围内NC≥8,则确定当前码字为定长码字”;因此可以确定当前码字为定长码字;
那么根据步骤106的方法,获取一个二进制比特100111xxx,本例中的由于定长码字长度为6,设置索引值Index=定长码字=100111=39,根据Index=39至表五-定长码表获取TrailingOnes=0;TotalCoeff=12。
表6定长码表
在本发明实施例提供的表1至表4中,为了说明方便,能够索引值直接在表中快速找到TrailingOnes和TotalCoeff分别列出了TrailingOnes、TotalCoeff和Index,实际在系统中,表1至表4只有TrailingOnes和TotalCoeff两项。
实施例2,相应于实施例1的熵解码方法,本发明实施例还提供一种熵解码装置,参见图3,该装置包括:获取单元、码字类型确定单元、解码单元;
所述的获取单元,用于获取二进制比特流、获取第一变量;
码字类型确定单元,用于根据第一变量的范围确定当前码字的类型;
解码单元,用于根据当前码字的类型采用相应的解码方法进行解码。
其中,所述的获取单元包括:
比特流获取单元,用于获取二进制比特流;
第一变量获取单元,用于获取第一变量。
其中,所述的第一变量获取单元:用于获取第一变量具体为:
用于预先计算当前宏块左边4X4块的第一非零系数数目和当前宏块上面4X4块的第二非零系数数目;
当第一非零系数数目和第二非零系数数目都有效时,第一变量=(第一非零系数数目+第二非零系数数目)/2;
当第二非零系数数目有效,第一非零系数数目无效时,第一变量=第二非零系数数目;
当第二非零系数数目无效,第一非零系数数目有效时,第一变量=第一非零系数数目。
其中,所述的获取单元进一步包括前缀获取单元,用于根据所述的二进制比特流,获取当前码字的前缀;
所述的码字类型确定单元,用于根据第一变量的范围确定当前码字的类型为变长码字;
所述的解码单元包括:解码模式确定单元、判断单元、特殊短码解码单元;
解码模式确定单元,用于当确定为变长码字时,则确定解码模式为变长码字解码模式;
判断单元,用于当确定解码模式为变长码字解码模式时,根据所述前缀判断当前码字是否为特殊短码;
特殊短码解码单元,用于当确定为特殊短码时,根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数。
其中,所述的码字类型确定单元,用于根据第一变量的范围确定当前码字的类型为变长码字具体为:当0≤第一变量<8时确定为当前码字的类型为变长码字;
所述的解码模式确定单元结构图请参见图4,该单元包括:第一解码模式确定单元、第二解码模式确定单元、第三解码模式确定单元、第四解码模式确定单元;
第一解码模式确定单元,用于判断若0≤第一变量<2,则确定为第一解码模式进行解码;
第二解码模式确定单元,用于判断若2≤第一变量<4,则确定为第二解码模式进行解码;
第三解码模式确定单元,用于判断若5≤第一变量<8,则确定为第三解码模式进行解码;
第四解码模式确定单元,用于判断若第一变量=-1,则确定为第四解码模式进行解码。
其中,所述的解码模式确定单元当确定第一至第四其中之一解码模式进行解码时,
所述的判断单元,用于当确定解码模式为变长码字解码模式时,根据所述前缀判断当前码字是否为特殊短码具体为:
将所述前缀部分的“0”的个数赋予中间变量,在所述第一至第四其中之一的解码模式下,若所述的中间变量小于阈值,则确定当前码字为特殊短码;若中间变量大于或等于阈值,则确定当前码字为非特殊短码;
参见图5,所述的特殊短码解码单元的结构具体为:
所述的特殊短码解码单元包括第一特殊短码解码单元;
所述第一特殊短码解码单元,用于当确定为第一解码模式时,TrailingOnes=TotalCoeff=PrefixNum;
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量。
其中,所述的特殊短码解码单元进一步包括第二特殊短码解码单元;
所述第二特殊短码解码单元,用于根据预置的Suffixlength=1读取二进制比特流,获取Suffix;
TrailingOnes=TotalCoeff=(Prefix<<1)+Suffix;
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、Prefix为前缀、Suffixlength为后缀长度;
其中,所述的特殊短码解码单元进一步包括第三特殊短码解码单元;
所述的第三特殊短码解码单元,用于当确定为第三解码模式时,根据预置的Suffixlength=3读取二进制比特流,获取Suffix;
TotalCoeff=Suffix;TrailingOnes=3×(Suffix/4)+(Suffix%4)×(1-Suffix/4)
或TrailingOnes=3×Suffix[2:2]+suffix[1:0]×(~Suffix[2:2]);
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、Prefix为前缀、Suffix为后缀,Suffix[2:0]表示第2位到第0位的3比特二进制数,Suffix[1:0]表示第1位至第0位的2比特二进制数,Suffix[2:2]表示第2位的1比特二进制数。“/”表示除法运算符,“%”表示取余运算符,“~”表示位取反运算符。
其中,所述的特殊短码解码单元进一步包括第四特殊短码解码单元;
所述的第四特殊短码解码单元,用于当确定为第四解码模式时,
TrailingOnes=TotalCoeff=2×PrefixNum[1:1]+(~PrefixNum[0:0])×(~PrefixNum[1:1])
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、PrefixNum[1:0]表示第1位到第0位的2比特二进制数,PrefixNum[1:1]表示第1为的1比特二进制数,PrefixNum[0:0]表示第0位的1比特二进制数,“~”表示位取反运算符。
其中,所述的解码单元进一步包括:非特殊短码解码单元,用于当不是特殊短码时,则在变长码字解码模式下根据所述前缀选择相应的预置解码公式进行解码,获得索引值,根据所述的索引值获得第一参数和第二参数。
其中,所述的非特殊短码解码单元结构参见图6,包括:第一解码单元;用于Suffixlength=(PrefixNum>=9&&PrefixNum<13)?3:2
根据所述的Suffixlength读取二进制比特流,获取Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“&&”表示逻辑与运算符、“?:”表示条件运算符、“<<”表示按位左移运算。
其中,所述的非特殊短码解码单元进一步包括第二解码单元;用于当确定为第二解码模式时,
Suffixlength=(PrefixNum>=7)?3:2
根据所述的Suffixlength读取二进制比特流,获取Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“?:”表示条件运算符,“<<”表示按位左移运算。
其中,所述的非特殊短码解码单元进一步包括第三解码单元,用于根据预置的Suffixlength=3读取二进制比特流,获取Suffix;
Index=(PrefixNum-3)<<2)+Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
其中,所述的特殊短码解码单元进一步包括第四解码单元,用于当确定为第四解码模式时,根据预置的Suffixlength=2读取二进制比特流,获取Suffix;
Index=(PrefixNum-3)<<3)+Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
在上述的熵解码装置中,所述的特殊短码解码单元中或非特殊短码解码单元中所述的“获得索引值,根据索引值获得第一参数和第二参数”具体为:
获得索引值后,在确定的变长解码模式下,根据所述索引值查找预置的参数表,获取索引值相应的第一参数与第二参数。
其中,所述的解码模式确定单元进一步包括:定长码字解码模式确定单元;
定长码字解码模式确定单元,用于判断若第一变量≥8,则确定为定长码字解码模式进行解码;
所述的解码单元进一步包括:定长码字解码单元,用于确定解码模式为定长码字解码模式;设置索引值数值等于定长码字数值,根据所述的索引值至预置的定长码表查询,获取索引值相应的第一参数与第二参数。
本发明实施例的目的在于提供一种熵解码方法、装置。通过分析语法元素的概率分布情况,对码字规则和码表排列顺序进行全新设计,根据码字规则计算出码表中码字的顺序索引,对码表中的语法元素进行索引排序,进而实现快速解码操作。此外,将部分高使用频率的特殊短码字直接简单算术表达式计算出相应的语法元素数值。本发明实施例消除了遍历二叉树的操作和匹配码字的操作,从而极大降低熵编码算法对内存等硬件的要求。
本领域普通技术人员可以理解实现上述实施例1方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (31)

1.一种熵解码方法,其特征在于,所述的方法具体为:
获取二进制比特流;获取第一变量;
根据第一变量的范围确定当前码字的类型;
根据当前码字的类型采用相应的解码方法进行解码;
所述的“当前码字的类型”为变长码字;
所述的“根据当前码字的类型采用相应的解码方法进行解码”之前还包括步骤:获取二进制比特流中码字的前缀部分;
“根据当前码字的类型采用相应的解码方法进行解码”具体为:当确定为变长码字时,则确定解码模式为变长码字解码模式;根据所述前缀判断当前码字是否为特殊短码,若是则根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数;
“根据所述前缀判断当前码字是否为特殊短码”具体为:
将所述前缀部分的“0”的个数赋予中间变量,
在变长码字解码模式下,若所述的中间变量小于阈值,则确定当前码字为特殊短码,若否则确定当前码字为非特殊短码。
2.根据权利要求1所述的熵解码方法,其特征在于,所述的“获取第一变量”的方法具体为:预先计算当前宏块左边4X4块的第一非零系数数目和当前宏块上面4X4块的第二非零系数数目;
当第一非零系数数目和第二非零系数数目都有效时,第一变量=(第一非零系数数目+第二非零系数数目)/2;
当第二非零系数数目有效,第一非零系数数目无效时,第一变量=第二非零系数数目;
当第二非零系数数目无效,第一非零系数数目有效时,第一变量=第一非零系数数目。
3.根据权利要求1所述熵解码方法,其特征在于,所述的“确定解码模式为变长码字解码模式”具体为:所述的变长码字解码模式包括第一至第四解码模式;
若0≤第一变量<2,则确定为第一解码模式进行解码;
若2≤第一变量<4,则确定为第二解码模式进行解码;
若5≤第一变量<8,则确定为第三解码模式进行解码;
若第一变量=-1,则确定为第四解码模式进行解码。
4.权利要求1所述的熵解码方法,其特征在于,所述的阈值具体为:
当确定为第一解码模式,所述阈值为3;
当确定为第二解码模式,所述阈值为2;
当确定为第三解码模式,所述阈值为1;
当确定为第四解码模式,所述阈值为3。
5.权利要求4所述的熵解码方法,其特征在于,“根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数”具体为:
当确定为第一解码模式时,TrailingOnes=TotalCoeff=PrefixNum;
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量。
6.权利要求4所述的熵解码方法,其特征在于,“根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数”具体为:
当确定为第二解码模式时,根据预置的Suffixlength=1读取二进制比特流,获取Suffix;
TrailingOnes=TotalCoeff=(Prefix<<1)+Suffix;
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、Prefix为前缀、Suffixlength为后缀长度。
7.权利要求4所述的熵解码方法,其特征在于,“根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数”具体为:
当确定为第三解码模式时,根据预置的Suffixlength=3读取二进制比特流,获取Suffix;
TotalCoeff=Suffix;TrailingOnes=3×(Suffix/4)+(Suffix%4)×(1-Suffix/4)
或TrailingOnes=3×Suffix[2:2]+suffix[1:0]×(~Suffix[2:2]);
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、Prefix为前缀、Suffix为后缀,Suffix[2:0]表示第2位到第0位的3比特二进制数,Suffix[1:0]表示第1位至第0位的2比特二进制数,Suffix[2:2]表示第2位的1比特二进制数。“/”表示除法运算符,“%”表示取余运算符,“~”表示位取反运算符。
8.根据权利要求4所述的熵解码方法,其特征在于,“根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数”具体为:
当确定为第四解码模式时,
TrailingOnes=TotalCoeff=2×PrefixNum[1:1]+(~PrefixNum[0:0])×(~PrefixNum[1:1]);
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、PrefixNum[1:0]表示第1位到第0位的2比特二进制数,PrefixNum[1:1]表示第1为的1比特二进制数,PrefixNum[0:0]表示第0位的1比特二进制数,“~”表示位取反运算符。
9.根据权利要求1所述的熵解码方法,其特征在于,根据所述前缀判断当前码字是否为特殊短码,当不是特殊短码时,则在变长码字解码模式下根据所述前缀选择相应的预置解码公式进行解码,获得索引值,根据所述的索引值获得第一参数和第二参数。
10.根据权利要求9所述的熵解码方法,其特征在于,所述的“在变长码字解码模式下根据所述前缀选择相应的预置解码公式进行解码,获得索引值”具体为:
当确定为第一解码模式时,
Suffixlength=(PrefixNum>=9&&PrefixNum<13)?3:2
根据所述的Suffixlength读取二进制比特流,获取Suffix;
I n d e x = ( ( Pr e f i x N u m - 3 ) < < 2 ) + S u f f i x 3 &le; Pr e f i x N u m < 9 ( ( Pr e f i x N u m - 9 ) < < 3 ) + S u f f i x + 24 9 &le; Pr e f i x N u m < 13 56 + S u f f i x 13 &le; Pr e f i x N u m
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“&&”表示逻辑与运算符、“?:”表示条件运算符、“<<”表示按位左移运算。
11.根据权利要求9所述的熵解码方法,其特征在于,所述的“在变长码字解码模式下根据所述前缀选择相应的预置解码公式进行解码,获得索引值”具体为:
当确定为第二解码模式时,
Suffixlength=(PrefixNum>=7)?3:2
根据所述的Suffixlength读取二进制比特流,获取Suffix;
I n d e x = ( ( Pr e f i x N u m - 2 ) < < 2 ) + S u f f i x 2 &le; Pr e f i x N u m < 7 ( ( Pr e f i x N u m - 7 ) < < 3 ) + S u f f i x + 20 7 &le; Pr e f i x N u m
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“?:”表示条件运算符“<<”表示按位左移运算。
12.根据权利要求9所述的熵解码方法,其特征在于,所述的“在变长码字解码模式下根据所述前缀选择相应的预置解码公式进行解码,获得索引值”具体为:
当确定为第三解码模式时,根据预置的Suffixlength=3读取二进制比特流,获取Suffix;
Index=(PrefixNum-3)<<2)+Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
13.根据权利要求9所述的熵解码方法,其特征在于,所述的“在变长码字解码模式下根据所述前缀选择相应的预置解码公式进行解码,获得索引值”具体为:
当确定为第四解码模式时,根据预置的Suffixlength=2读取二进制比特流,获取Suffix;
Index=(PrefixNum-3)<<3)+Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
14.根据权利要求1所述的熵解码方法,其特征在于,所述的“根据所述的索引值获得第一参数和第二参数”具体为:
获得索引值后,在确定的变长解码模式下,根据所述索引值查找预置的参数表,获取索引值相应的第一参数与第二参数。
15.根据权利要求1所述的熵解码方法,其特征在于,所述的“当前码字的类型”为定长码字;
“根据当前码字的类型采用相应的解码方法进行解码”具体为:确定解码模式为定长码字解码模式;设置索引值数值等于定长码字数值,根据所述的索引值至预置的定长码表查询,获取索引值相应的第一参数与第二参数。
16.根据权利要求15所述的熵解码方法,其特征在于,所述的“确定解码模式为定长解码模式”具体为:若第一变量≥8,则确定当前码字为定长码字,确定解码模式为定长解码模式。
17.一种熵解码装置,其特征在于,所述的装置包括:获取单元、码字类型确定单元、解码单元;
所述的获取单元,用于获取二进制比特流、获取第一变量;
码字类型确定单元,用于根据第一变量的范围确定当前码字的类型;
解码单元,用于根据当前码字的类型采用相应的解码方法进行解码;
所述的获取单元进一步包括前缀获取单元,用于根据所述的二进制比特流,获取当前码字的前缀;
所述的码字类型确定单元,用于根据第一变量的范围确定当前码字的类型为变长码字;
所述的解码单元包括:解码模式确定单元、判断单元、特殊短码解码单元;
解码模式确定单元,用于当确定为变长码字时,则确定解码模式为变长码字解码模式;
判断单元,用于当确定解码模式为变长码字解码模式时,根据所述前缀判断当前码字是否为特殊短码;
特殊短码解码单元,用于当确定为特殊短码时,根据预置相应的特殊短码解码公式进行解码,获得第一参数和第二参数;
所述的解码模式确定单元当确定第一至第四其中之一解码模式进行解码时,
所述的判断单元,用于当确定解码模式为变长码字解码模式时,根据所述前缀判断当前码字是否为特殊短码具体为:
将所述前缀部分的“0”的个数赋予中间变量,在所述第一至第四其中之一的解码模式下,若所述的中间变量小于阈值,则确定当前码字为特殊短码;若中间变量大于或等于阈值,则确定当前码字为非特殊短码。
18.根据权利要求17所述的熵解码装置,其特征在于,所述的获取单元包括:
比特流获取单元,用于获取二进制比特流;
第一变量获取单元,用于获取第一变量。
19.根据权利要求18所述的熵解码装置,其特征在于,所述的第一变量获取单元:用于获取第一变量具体为:
用于预先计算当前宏块左边4X4块的第一非零系数数目和当前宏块上面4X4块的第二非零系数数目;
当第一非零系数数目和第二非零系数数目都有效时,第一变量=(第一非零系数数目+第二非零系数数目)/2;
当第二非零系数数目有效,第一非零系数数目无效时,第一变量=第二非零系数数目;
当第二非零系数数目无效,第一非零系数数目有效时,第一变量=第一非零系数数目。
20.根据权利要求17熵解码装置,其特征在于,所述的码字类型确定单元,用于根据第一变量的范围确定当前码字的类型为变长码字具体为:当0≤第一变量<8时确定为当前码字的类型为变长码字;
所述的解码模式确定单元包括:第一解码模式确定单元、第二解码模式确定单元、第三解码模式确定单元、第四解码模式确定单元;
第一解码模式确定单元,用于判断若0≤第一变量<2,则确定为第一解码模式进行解码;
第二解码模式确定单元,用于判断若2≤第一变量<4,则确定为第二解码模式进行解码;
第三解码模式确定单元,用于判断若5≤第一变量<8,则确定为第三解码模式进行解码;
第四解码模式确定单元,用于判断若第一变量=-1,则确定为第四解码模式进行解码。
21.根据权利要求17所述的熵解码装置,其特征在于,所述的特殊短码解码单元包括第一特殊短码解码单元;
所述第一特殊短码解码单元,用于当确定为第一解码模式时,TrailingOnes=TotalCoeff=PrefixNum;
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量。
22.根据权利要求17所述的熵解码装置,其特征在于,所述的特殊短码解码单元进一步包括第二特殊短码解码单元;
所述第二特殊短码解码单元,用于根据预置的Suffixlength=1读取二进制比特流,获取Suffix;
TrailingOnes=TotalCoeff=(Prefix<<1)+Suffix;
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、Prefix为前缀、Suffixlength为后缀长度。
23.根据权利要求17所述的熵解码装置,其特征在于,所述的特殊短码解码单元进一步包括第三特殊短码解码单元;
所述的第三特殊短码解码单元,用于当确定为第三解码模式时,根据预置的Suffixlength=3读取二进制比特流,获取Suffix;
TotalCoeff=Suffix;TrailingOnes=3×(Suffix/4)+(Suffix%4)×(1-Suffix/4)
或TrailingOnes=3×Suffix[2:2]+suffix[1:0]×(~Suffix[2:2]);
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、Prefix为前缀、Suffix为后缀,Suffix[2:0]表示第2位到第0位的3比特二进制数,Suffix[1:0]表示第1位至第0位的2比特二进制数,Suffix[2:2]表示第2位的1比特二进制数。“/”表示除法运算符,“%”表示取余运算符,“~”表示位取反运算符。
24.根据权利要求17所述的熵解码装置,其特征在于,所述的特殊短码解码单元进一步包括第四特殊短码解码单元;
所述的第四特殊短码解码单元,用于当确定为第四解码模式时,
TrailingOnes=TotalCoeff=2×PrefixNum[1:1]+(~PrefixNum[0:0])×(~PrefixNum[1:1]);
其中TrailingOnes是第一参数、TotalCoeff是第二参数、PrefixNum为中间变量、PrefixNum[1:0]表示第1位到第0位的2比特二进制数,PrefixNum[1:1]表示第1为的1比特二进制数,PrefixNum[0:0]表示第0位的1比特二进制数,“~”表示位取反运算符。
25.根据权利要求17所述的熵解码装置,其特征在于,所述的解码单元进一步包括:非特殊短码解码单元,用于当不是特殊短码时,则在变长码字解码模式下根据所述前缀选择相应的预置解码公式进行解码,获得索引值,根据所述的索引值获得第一参数和第二参数。
26.根据权利要求25所述的熵解码装置,其特征在于,所述的非特殊短码解码单元包括:第一解码单元;用于Suffixlength=(PrefixNum>=9&&PrefixNum<13)?3:2
根据所述的Suffixlength读取二进制比特流,获取Suffix;
I n d e x = ( ( Pr e f i x N u m - 3 ) < < 2 ) + S u f f i x 3 &le; Pr e f i x N u m < 9 ( ( Pr e f i x N u m - 9 ) < < 3 ) + S u f f i x + 24 9 &le; Pr e f i x N u m < 13 56 + S u f f i x 13 &le; Pr e f i x N u m
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“&&”表示逻辑与运算符、“?:”表示条件运算符、“<<”表示按位左移运算。
27.根据权利要求25所述的熵解码装置,其特征在于,所述的非特殊短码解码单元进一步包括第二解码单元;用于当确定为第二解码模式时,
Suffixlength=(PrefixNum>=7)?3:2
根据所述的Suffixlength读取二进制比特流,获取Suffix;
I n d e x = ( ( Pr e f i x N u m - 2 ) < < 2 ) + S u f f i x 2 &le; Pr e f i x N u m < 7 ( ( Pr e f i x N u m - 7 ) < < 3 ) + S u f f i x + 20 7 &le; Pr e f i x N u m
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,Suffixlength为后缀长度,“?:”表示条件运算符,“<<”表示按位左移运算。
28.根据权利要求25所述的熵解码装置,其特征在于,所述的非特殊短码解码单元进一步包括第三解码单元,用于根据预置的Suffixlength=3读取二进制比特流,获取Suffix;
Index=(PrefixNum-3)<<2)+Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
29.根据权利要求25所述的熵解码装置,其特征在于,所述的特殊短码解码单元进一步包括第四解码单元,用于当确定为第四解码模式时,根据预置的Suffixlength=2读取二进制比特流,获取Suffix;
Index=(PrefixNum-3)<<3)+Suffix;
其中Index为索引值、PrefixNum为中间变量、Suffix为后缀,“<<”表示按位左移运算。
30.根据权利要求17或25所述的熵解码装置,其特征在于,所述的特殊短码解码单元中或非特殊短码解码单元中所述的“获得索引值,根据索引值获得第一参数和第二参数”具体为:
获得索引值后,在确定的变长解码模式下,根据所述索引值查找预置的参数表,获取索引值相应的第一参数与第二参数。
31.根据权利要求20所述的熵解码装置,其特征在于,所述的解码模式确定单元进一步包括:定长码字解码模式确定单元;
定长码字解码模式确定单元,用于判断若第一变量≥8,则确定为定长码字解码模式进行解码;
所述的解码单元进一步包括:定长码字解码单元,用于确定解码模式为定长码字解码模式;设置索引值数值等于定长码字数值,根据所述的索引值至预置的定长码表查询,获取索引值相应的第一参数与第二参数。
CN201110139078.8A 2011-05-25 2011-05-25 一种熵解码方法、装置 Expired - Fee Related CN102355578B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110139078.8A CN102355578B (zh) 2011-05-25 2011-05-25 一种熵解码方法、装置
PCT/CN2011/076357 WO2012159295A1 (zh) 2011-05-25 2011-06-25 一种熵解码方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110139078.8A CN102355578B (zh) 2011-05-25 2011-05-25 一种熵解码方法、装置

Publications (2)

Publication Number Publication Date
CN102355578A CN102355578A (zh) 2012-02-15
CN102355578B true CN102355578B (zh) 2016-12-07

Family

ID=45579066

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110139078.8A Expired - Fee Related CN102355578B (zh) 2011-05-25 2011-05-25 一种熵解码方法、装置

Country Status (2)

Country Link
CN (1) CN102355578B (zh)
WO (1) WO2012159295A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103384329A (zh) * 2013-05-07 2013-11-06 广东工业大学 一种基于无码表查找cavlc解码方法
CN103533360B (zh) * 2013-10-19 2016-06-08 山东大学 一种avs编码芯片中优化码表存储的方法
CN106303531B (zh) * 2015-06-09 2019-08-16 富士通株式会社 拷贝信息的编码方法、装置以及图像处理设备
CN107852174B (zh) * 2015-07-03 2022-07-08 基麦提松科技公司 固定长度数据的压缩方法
CN110446047A (zh) * 2019-08-16 2019-11-12 苏州浪潮智能科技有限公司 视频码流的解码方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101072034A (zh) * 2007-06-12 2007-11-14 华为技术有限公司 一种变长解码方法及其装置
CN101198051A (zh) * 2006-12-07 2008-06-11 深圳艾科创新微电子有限公司 基于h.264的熵解码器的实现方法及装置
CN101370138A (zh) * 2007-08-17 2009-02-18 中国科学院计算技术研究所 一种h.264标准cavlc残差系数的解码方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7830963B2 (en) * 2003-07-18 2010-11-09 Microsoft Corporation Decoding jointly coded transform type and subblock pattern information
CN101175210B (zh) * 2006-10-30 2010-08-11 中国科学院计算技术研究所 用于视频预测残差系数解码的熵解码方法及熵解码装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101198051A (zh) * 2006-12-07 2008-06-11 深圳艾科创新微电子有限公司 基于h.264的熵解码器的实现方法及装置
CN101072034A (zh) * 2007-06-12 2007-11-14 华为技术有限公司 一种变长解码方法及其装置
CN101370138A (zh) * 2007-08-17 2009-02-18 中国科学院计算技术研究所 一种h.264标准cavlc残差系数的解码方法

Also Published As

Publication number Publication date
WO2012159295A1 (zh) 2012-11-29
CN102355578A (zh) 2012-02-15

Similar Documents

Publication Publication Date Title
US20230247229A1 (en) Video encoding method for encoding division block, video decoding method for decoding division block, and recording medium for implementing the same
CN104221377B (zh) 一种视频译码方法、装置和计算机可读存储媒体
CN107529704B (zh) 解码器、解码和编码视频的方法
CN102238387B (zh) 一种视频熵编码、熵解码方法、装置
CN102316320B (zh) 处理视频图像的方法
US6894628B2 (en) Apparatus and methods for entropy-encoding or entropy-decoding using an initialization of context variables
CN103190147B (zh) 用于视频译码的语法元素的联合译码方法及设备
JP6199311B2 (ja) 映像コード化における係数のコード化
JP6162150B2 (ja) ビデオコーディング用の残差4分木(rqt)コーディング
CN109716774A (zh) 用于视频译码的可变数目的帧内模式
CN105379270A (zh) 颜色分量间残余预测
TW202007169A (zh) 適於相依純量量化之變換係數熵寫碼技術
JP2015508617A5 (zh)
CN106105040A (zh) 视频译码过程中的系数层级译码
KR20080082147A (ko) 컨텍스트 기반 적응적 이진 산술 부호화, 복호화 방법 및장치
MXPA06002496A (es) Codificacion y descodificacion de plano de bit para estado de prediccion ac e informacion de tipo de codificacion de campo/marco de macrobloque.
WO2009029797A1 (en) Architecture for multi-stage decoding of a cabac bitstream
CN102355578B (zh) 一种熵解码方法、装置
CN111988618B (zh) 进行解码、编码的方法、解码端和编码端
CN105791868A (zh) 视频编码的方法和设备
CN107343199B (zh) 用于hevc中样点的快速自适应补偿方法
CN113453002B (zh) 量化与熵编码方法及装置
KR20120038355A (ko) 계층 구조의 영상 처리를 위한 엔트로피 인코딩/디코딩 방법 및 장치와 이를 위한 심볼 인코딩/디코딩 방법 및 장치
CN116982314A (zh) 系数编解码方法、编解码设备、终端及存储介质
CN116998149A (zh) 系数的编解码方法、编码器、解码器及计算机存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SHENZHEN YUNZHOU MULTIMEDIA TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: SHENZHEN TEMOBI SCIENCE + TECHNOLOGY CO., LTD.

Effective date: 20140807

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20140807

Address after: Unit B4 9 building 518057 Guangdong city of Shenzhen province Nanshan District high in the four EVOC Technology Building No. 31

Applicant after: Shenzhen Yunzhou Multimedia Technology Co., Ltd.

Address before: 19, building 18, Changhong technology building, 518057 South twelve Road, South tech Zone, Nanshan District hi tech Zone, Guangdong, Shenzhen

Applicant before: Shenzhen Temobi Science & Tech Development Co.,Ltd.

C53 Correction of patent for invention or patent application
CB02 Change of applicant information

Address after: The central Shenzhen city of Guangdong Province, 518057 Keyuan Road, Nanshan District science and Technology Park No. 15 Science Park Sinovac A Building 1 unit 403, No. 405 unit

Applicant after: Shenzhen Yunzhou Multimedia Technology Co., Ltd.

Address before: Unit B4 9 building 518057 Guangdong city of Shenzhen province Nanshan District high in the four EVOC Technology Building No. 31

Applicant before: Shenzhen Yunzhou Multimedia Technology Co., Ltd.

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

Granted publication date: 20161207

Termination date: 20200525