CN102740066B - Cavlc解码方法和系统 - Google Patents
Cavlc解码方法和系统 Download PDFInfo
- Publication number
- CN102740066B CN102740066B CN201110089253.7A CN201110089253A CN102740066B CN 102740066 B CN102740066 B CN 102740066B CN 201110089253 A CN201110089253 A CN 201110089253A CN 102740066 B CN102740066 B CN 102740066B
- Authority
- CN
- China
- Prior art keywords
- syntactic element
- level
- code
- run
- decoding
- 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
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
公开了一种CAVLC解码方法和系统。该方法通过以下处理在一个时钟周期内完成对两个连续的Level语法元素的解码:利用用于语法元素Level的查找表找出第(2n-1)个Level语法元素的前缀长度和前缀码,利用第(2n-1)个Level语法元素的前缀码、后缀码和后缀长度获取第(2n-1)个Level语法元素的幅值代码,根据第(2n-1)个Level语法元素的幅值代码获取第(2n-1)个Level语法元素所对应的系数幅值;利用第(2n-1)个Level语法元素的前缀长度和后缀实际长度找出第2n个Level语法元素的代码起始位置,利用用于语法元素Level的查找表找出第2n个Level语法元素的前缀长度和前缀码,根据第2n个Level语法元素的前缀码,后缀码和后缀长度获取第2n个Level语法元素的幅值代码,根据第2n个Level语法元素的幅值代码获取第2n个Level语法元素所对应的系数幅值。
Description
技术领域
本发明涉及视频处理领域,更具体地涉及CAVLC解码方法和系统。
背景技术
CAVLC(上下文自适应变长编码)是一种用于降低比特率并充分利用统计冗余的熵编码技术,被广泛地应用在诸如H.264之类的视频标准中。在CAVLC编码过程中,通常会涉及以下五种语法元素的编码处理:Coeff_token、Trailing_ones_sign(为了简单,记为T1)、Levels、Total_zeros、以及Run_before。这五种语法元素与作为编码对象的色度/亮度系数块的相关统计信息的对应关系如下:
在CAVLC解码过程中,输入比特流中的符号之间的依赖性以及每个码字的码长在该码字被解码之前的未知性对完成整个CAVLC解码过程所需的时间会产生很大影响。目前,很多加快CAVLC解码过程的工作都集中在改善CAVLC解码效率从而加快解码速度上,并且提出了以下三种不同的方案:
1)基于模式搜索的CAVLC解码方法。在该方法中,分析比特模式和系数块之间的相互关系,并在解码之前进行模式搜索操作;如果某个比特模式与预先定义的查找表(该查找表存储了比特模式和系数块之间的对应关系,即根据该查找表可以找出与特定比特模式相对应的系数块)中的一个比特模式相匹配,则可以跳过CAVLD解码过程而直接从上述查找表中查找得出与该比特模式相对应的系数块。该方法的问题在于,预先定义的查找表中并不能穷尽地存储比特模式和系数块之间的对应关系(这导致不能保证一定能在该查找表中找出与某比特模式相对应的系数块),所以解码性能只能改进10%。
2)基于关键路径的CAVLC解码方法。在该方法中,对CAVLC解码器中的关键路径(即,CAVLC解码器中耗时最长的解码处理)进行分析,并且通过自适应地检测输入比特流中的连续符号来减少CAVLC解码器中的关键路径所花费的时间。在CAVLC解码器中的关键路径所花费的时间变短的情况下,CAVLC解码器可以以更高的时钟频率进行操作,从而可以降低CAVLC解码器完成整个解码过程所需要的时间总量。
3)基于两个非零系数之间的零系数的数目的解码方法。在该方法中,识别一串连续的零值的run_before的码字直至紧接着这一串码字的第一个非零值的run_before码字,并在一个时钟周期内将其全部解码。此方法在整个系数块中零值系数的个数很少甚至没有时,能有效提升run_before语法元素的解码速度;但当量化参数(QP)增大时,即零值系数的个数增加时,该算法的提速效果降低;并且对于色度DC(直流系数)块来说,该方法效率也不高。
发明内容
鉴于以上所述的问题,本发明提供了一种新颖的CAVLC解码方法和系统。
根据本发明实施例的CAVLC解码方法,包括对输入码流中的语法元素Coeff_token、Trailing_ones_sign、Level、Total_zeros、以及Run_before进行解码,其中,通过以下处理在一个时钟周期内完成对两个连续的Level语法元素的解码:利用用于语法元素Level的查找表找出第(2n-1)个Level语法元素的前缀长度和前缀码,利用第(2n-1)个Level语法元素的前缀码、后缀码和后缀长度获取第(2n-1)个Level语法元素的幅值代码,并且根据第(2n-1)个Level语法元素的幅值代码获取第(2n-1)个Level语法元素所对应的系数幅值,其中,第(2n-1)个Level语法元素的后缀长度是根据第2(n-1)个Level语法元素所对应的系数幅值的绝对值、以及第2(n-1)个Level语法元素的后缀长度计算得出的,n为不小于1的整数;以及利用第(2n-1)个Level语法元素的前缀长度和后缀实际长度找出第2n个Level语法元素的代码起始位置,利用用于语法元素Level的查找表找出第2n个Level语法元素的前缀长度和前缀码,根据第2n个Level语法元素的前缀码、后缀码和后缀长度获取第2n个Level语法元素的幅值代码,并且根据第2n个Level语法元素的幅值代码获取第2n个Level语法元素所对应的系数幅值,其中,第2n个Level语法元素的后缀长度是根据第(2n-1)个Level语法元素所对应的系数幅值的绝对值、以及第(2n-1)个Level语法元素的后缀长度计算得出的。
根据本发明实施例的CAVLC解码系统,用于对输入码流中的语法元素Coeff_token、Trailing_ones_sign、Level、Total_zeros、以及Run_before进行解码。该解码系统包括双Level解码单元,用于在一个时钟周期内完成对两个连续的Level语法元素的解码。该双Level解码单元包括:第一Level解码模块,被配置为利用用于语法元素Level的查找表找出第(2n-1)个Level语法元素的前缀长度和前缀码,利用第(2n-1)个Level语法元素的前缀码、后缀码和后缀长度获取第(2n-1)个Level语法元素的幅值代码,并且根据第(2n-1)个Level语法元素的幅值代码获取第(2n-1)个Level语法元素所对应的系数幅值,其中,第(2n-1)个Level语法元素的后缀长度是根据第2(n-1)个Level语法元素所对应的系数幅值的绝对值、以及第2(n-1)个Level语法元素的后缀长度计算得出的,n为不小于1的整数;以及第二Level解码模块,被配置为利用第(2n-1)个Level语法元素的前缀长度和后缀实际长度找出第2n个Level语法元素的代码起始位置,利用用于语法元素Level的查找表找出第2n个Level语法元素的前缀长度和前缀码,根据第2n个Level语法元素的前缀码、后缀码和后缀长度获取第2n个Level语法元素的幅值代码,并且根据第2n个Level语法元素的幅值代码获取第2n个Level语法元素所对应的系数幅值,其中,第2n个Level语法元素的后缀长度是根据第(2n-1)个Level语法元素所对应的系数幅值的绝对值、以及第(2n-1)个Level语法元素的后缀长度计算得出的。
根据本发明实施例的CAVLC解码方法和系统相比于传统的CAVLC解码方法和系统,解码速度更快。
附图说明
从下面结合附图对本发明的具体实施方式的描述中可以更好地理解本发明,其中:
图1示出了传统的CAVLC解码系统的框图;
图2示出了根据本发明实施例的CAVLC解码系统的框图;
图3示出了双level解码单元203的框图;
图4示出了Run_before解码单元210对Run_before语法元素的解码过程;
图5示出了重排序单元116对Run_before解码示例执行的重排序操作;以及
图6示出了根据本发明实施例的CAVLC解码方法和传统的CAVLC解码方法的测试结果。
具体实施方式
下面将详细描述本发明各个方面的特征和示例性实施例。下面的描述涵盖了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说显而易见的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更清楚的理解。本发明绝不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了相关元素、部件和算法的任何修改、替换和改进。
为了在合理的硬件开销的条件下达到最大压缩比,在最近的H.264/AVC标准中采用了CAVLC编码方法。CAVLC编码方法引入了上下文模型概念以更精确地模拟符号概率,从而使得压缩比进一步提高。然而,由于符号之间的相关性,CAVLC解码方法的处理速度受到了影响。所以,需要一种高速的CAVLC解码方法和系统。
在传统的CAVLC解码方法中,按照固定的顺序对语法元素Coeff_token、Trailing_ones_sign(为了简单,记为T1)、Level、Total_zeros、以及Run_before进行标识,并利用查找表(LUT)对这些语法元素进行解码,从而得出相应的系数块。对每个语法元素进行解码平均需要一个时钟周期的时间。
图1示出了传统的CAVLC解码系统的框图。如图1所示,传统的CAVLC解码系统包括柱式移位器102、Coeff_token解码单元104、T1解码单元106、level解码单元108、Total_zeros解码单元110、Run_before解码单元112、系数缓存器114、重排序单元116、以及控制器118。
传统的CAVLC解码系统中各功能单元的功能如下:柱式位移器102用来控制输入到CAVLC解码系统中的比特数目。Coeff_token解码单元104、T1解码单元106、level解码单元108、Total_zeros解码单元110、和Run_before解码单元112用于依次对语法元素Coeff_token、T1、level、Total_zeros、和Run_before进行解码,并将解码得出的系数存储在系数缓存器114中。重排序单元116用于对系数缓存器114中存储的系数(即,解码得出的系数)进行重新排序,以得出对作为编码对象的系数块进行反之字形扫描获得的一维系数阵列。控制器118用于控制CAVLC解码系统中各功能单元102至116的操作。
图2示出了根据本发明实施例的CAVLC解码系统的框图。如图2所示,根据本发明实施例的CAVLC解码系统包括柱式位移器202、Coeff_token和T1解码单元204、双level解码单元206、Total_zeros解码单元208、Run_before解码单元210、Total_zeros和Run_before解码单元212、重排序单元214、以及控制器216。
根据本发明实施例的CAVLC解码系统中各功能单元的功能如下:柱式位移器202用于控制输入到CAVLC解码系统中的比特数目。Coeff_token和T1解码单元204用于在一个时钟周期内完成对语法元素Coeff_token和T1的解码。双level解码单元206用于在一个时钟周期内完成对两个level语法元素的解码。Total_zeros解码单元208和Run_before解码单元210用于在语法元素Total_zeros和Run_before对应于4×4系数块的情况下,完成对语法元素Total_zeros和Run_before的解码。Total_zeros和Run_before解码单元212用于在语法元素Total_zeros和Run_before对应于2×2系数块的情况下,在一个时钟周期内完成对语法元素Total_zeros和Run_before的解码。重排序单元214用于对解码单元204至212解码得出的系数进行重新排序,以得出对作为编码对象的系数块进行反之字形扫描获得的一维系数阵列。控制器216用于控制CAVLC解码系统中各功能单元202至214的操作。
下面详细描述根据本发明实施例的CAVLC解码系统中各功能单元的具体操作。
考虑到根据本发明实施例的CAVLC解码系统将在一个时钟周期内对多个语法元素进行解码,所以柱式移位器202的存储宽度较长(例如,64比特)。
Coeff_token和T1解码单元204利用由用于语法元素Coeff_token的查找表和用于语法元素T1的查找表二者结合而成的组合查找表(LUT),在一个时钟周期内完成对语法元素Coeff_token和T1的解码。这里,输入到Coeff_token和T1解码单元204的比特数目将为19比特,其中利用用于语法元素Coeff_token的查找表对前16比特进行解析,同时根据解析得出的语法元素Coeff_token代表的相关信息获取最多三个T1语法元素并对这些T1语法元素进行解码。
双level解码单元206在一个时钟周期内完成对两个level语法元素的解码。根据Coeff_token和T1解码单元204解码得出的语法元素Coeff_token和T1代表的相关信息,双level解码单元206可以获知后缀长度(SuffixLength)的初始值。另外,双level解码单元206每当完成一个level语法元素的解码处理后,都会利用解码得出的level语法元素所对应的系数幅值的绝对值来更新SuffixLength,以供双level解码单元206对下一个level语法元素进行解码的过程中使用。
图3示出了双level解码单元203的框图。如图3所示,双level解码单元203包括前缀码(level_prefix)解析器302和310、后缀实际长度(levelSuffixSize)计算器304和312、幅值代码(levelCode)计算器306和314、幅值(level)计算器308和316、以及后缀长度(suffixLength)更新器318和320。
其中,前缀码(level_prefix)解析器302以已解码码字后的第一个未解码码字为起始位置,利用用于语法元素level的查找表,获取第(2n-1)个level语法元素的前缀码(level_prefix)和前缀长度(PrefixLength);后缀实际长度(levelSuffixSize)计算器304根据由后缀长度(suffixLength)更新器320利用第2(n-1)个level语法元素所对应的系数幅值的绝对值获取的suffixLength和第(2n-1)个level语法元素的PrefixLength,计算第(2n-1)个level语法元素的levelSuffixSize;幅值代码(levelCode)计算器306利用第(2n-1)个level语法元素的前缀码(level_prefix)、后缀码(level_suffix)(该level_suffix可由第(2n-1)个level语法元素的levelSuffixSize得出)、以及由后缀长度(suffixLength)更新器320利用第2(n-1)个level语法元素所对应的系数幅值的绝对值获取的suffixLength,计算第(2n-1)个level语法元素的幅值代码(levelCode);幅值(level)计算器308利用第(2n-1)个level语法元素的levelCode,计算出第(2n-1)个level语法元素所对应的系数幅值;然后,后缀长度(suffixLength)更新器318利用第(2n-1)个level语法元素所对应的系数幅值的绝对值对suffixLength进行更新。同时更新下一个待解码level码字的起始位置。
对于第(2n-1)个level语法元素的解码处理与传统的level解码处理相同,但是在根据本发明实施例的双level解码单元203中,第2n个level语法元素的解码处理被并行进行。如图3中所示,前缀码解析器310利用接收自前缀码解析器302的第(2n-1)个level语法元素的前缀长度(prefix_length)和接收自后缀实际长度计算器304的第(2n-1)个level语法元素的后缀实际长度,获取第2n个level语法元素的代码起始位置,并利用用于语法元素level的查找表,获取第2n个level语法元素的前缀码和前缀长度;后缀实际长度计算器312利用由后缀长度(suffixLength)更新器318更新后的suffix_length和前缀码解析器310获取的第2n个level语法元素的前缀长度(prefix_length),计算第2n个level语法元素的levelSuffixSize。幅值代码(levelCode)计算器314利用第2n个level语法元素的level_prefix和后缀码(level_suffix)(由第2n个level语法元素的levelSuffixSize得出)、以及由后缀长度(suffixLength)更新器318利用第(2n-1)个level语法元素所对应的系数幅值的绝对值获取的suffixLength,计算第2n个level语法元素的幅值代码(levelCode);然后,幅值(level)计算器316利用第2n个level语法元素的levelCode,计算出第2n个level语法元素所对应的系数幅值。当第2n个level语法元素的suffixLength被输出到suffixLength更新器320时,suffixLength更新器320将更新并输出suffixLength。
根据系数块的大小,选择不同的解码单元对Total_zeros语法元素和Run_before语法元素进行解码。具体地,如果系数块为4×4系数块,则Total_zeros解码单元208将通过与传统的CAVLC解码方法相同的方法对Total_zeros语法元素进行解码,并且Run_before解码单元210将在一个时钟周期中完成对至少两个Run_before语法元素的解码。如果系数块为2×2系数块(即,系数块为色度直流系数块),则Total_zeros和Run_before解码单元212将利用由用于语法元素Total_zeros的查找表和用于语法元素Run_before的查找表二者结合而成的组合查找表,在一个时钟周期中完成对Total_zeros语法元素以及所有Run_before语法元素的解码。
图4示出了Run_before解码单元210对Run_before语法元素的解码过程。Run_before解码单元210将在一个时钟周期内完成对至少两个Run_before语法元素的解码,具体解码过程如下:
在初始化步骤402中,用对4×4系数块进行反之字形扫描得到的一维系数阵列中最后一个非零系数前的0系数的总数目(Totalzeros)对zeroLeft(代表上述一维系数阵列中的当前非零系数前的0系数的数目)进行初始化,并且利用TotalCoeffs的值对level的数目进行初始化;同时NL和ZL分别代表level和zeroLeft的数目。另外,根据zeroLeft的值获取当前zeroLeft对应的零值Run_before的编码(“1”、“11”、或“111”),并且用符号“z”来表示比特“1”的数目。
在零值Run_before识别步骤404中,用符号“c”来表示输入码字中的连续“1”比特的数目,并且将c与z的值相比较。如果c≥z,则意味着输入码字中至少存在一个零值Run_before,转到跳过零解码步骤406。如果c<z,则意味着当前已经解码的Run_before语法元素具有非零值,转到双Run_before解码步骤408。
在跳过零解码步骤(skip-zero decoding step)406中,直接跳过连续的零值Run_before语法元素,直到在连续“1”比特字符串的末端识别出第一个非零值Run_before语法元素。然后,在同一个时钟周期中对该非零值Run_before语法元素进行解码。
在双Run_before解码步骤408中,对当前的Run_before语法元素进行解码,并对ZL(Zeroleft)和NL(Non-zeroCoefficientLeft)进行更新。如果终止条件(ZL=0或者NL=1)没有达到,则在同一个时钟周期内对下一个Run_before语法元素进行解码。
在Run_before解码步骤之后,ZL和NL等参数被更新,并判断终止条件是否满足。一旦判定终止条件满足,则终止解码。
表1示出了在跳过零解码步骤406中对Run_before语法元素进行解码所用的查找表(LUT)。NL的输入码字、连续零值Run_befores以及拖尾的非零值Run_before是根据该LUT解码的,同时拖尾的非零值Run_before“m”的值是基于NL的值从子查找表得出的。
表1
下面给出了一个示例,以说明当应用根据本发明实施例的Run_before解码机制时每个时钟周期之后的Run_before语法元素的解码结果。
假设从低频到高频顺序的将要编码的原始系数为:
0,3,0,-1,0,1,0,8,1,4,0,-2,0,0,3,1
将以该顺序进行编码的语法元素Run_before为:
(zeroLeft,Runbefore)=(7,0),(7,2),(5,1),(4,0),(4,0),(4,1)(3,1),(2,1)
然后,编码后的Run_before语法元素的码字为
111101101111101001。
表2示出了每个时钟周期之后的Run_before语法元素的解码结果,相应数目的零系数被解码出来。所以,仅通过4个时钟周期就得到了整个解码后的系数序列(传统方法需要至少8个时钟周期)。
表2
也就是说,在输入码流是对应于4×4系数块的码流的情况下,Run_before解码单元210通过以下处理对run_before语法元素进行解码:
判断是否存在与m+1个连续的非零系数相对应的run_before语法元素,其中,第k(即,当前的非零系数)至k+m-1个连续的非零系数之间不存在零系数,并且第k+m-1个非零系数与紧随第k+m-1个非零系数之后被编码的第k+m个非零系数之间存在零系数;
如果存在,则在一个时钟周期内完成对与第k至k+m个非零系数相对应的run_before语法元素的解码,否则在一个时钟周期内完成对与第k和k+1个非零系数所对应的run_before语法元素的解码,
在下一个时钟周期内,重复以上所述的判断以及解码操作,直至完成对于所有run_before语法元素的解码。
表3示出了用于2×2系数块(即,色度直流系数块)的组合查找表(用于语法元素Total_zeros和Run_before的查找表)。由于色度直流系数块的最大系数数目为4,所以利用表3,Total_zeros和Run_before解码单元212可以仅在一个时钟周期中解码语法元素Total_zeros和所有的Run_before语法元素。输入码字的最大长度为4。
表3
当Run_before语法元素解码处理被执行的同时,重排序引擎单元116将存储解码后的非零系数(即,level语法元素所对应的系数),并且通过移位以及重置操作对它们重新排序。
图5示出了重排序单元116对以上描述的Run_before解码示例执行的重排序操作。由于在根据本发明实施例的CAVLC解码系统中,在每个时钟周期内对至少两个Run_before语法元素进行解码,并且在对Run_before语法元素进行解码的同时并行地进行重排序操作以提高速度,所以重排序单元116需要将多个系数条目放入正确的位置。如图5中所示,只有一个16条目的系数缓冲器被用来存储解码得出的非零系数和零系数。在每个时钟周期期间,当解码得出多个Run_before语法元素时,重排序单元116进对相应的非零系数条目与零系数条目相互交换,这种重排序操作仅仅在系数缓存器中对系数条目进行移位,所以避免了使用两个系数缓存器(在传统的CAVLC解码系统中,通常使用两个系数缓存器来分别存储非零系数和排序后的系数)。
图6示出了根据本发明实施例的CAVLC解码方法和传统的CAVLC解码方法的测试结果,其中测试流为QCIF(四分之一通用中间格式)格式的。如图6中所示,在量化参数较低的情况下,根据本发明实施例的CAVLC解码方法相对于传统的CAVLC解码方法解码性能实现了90%的改进。并且随着量化参数的增大(QP≥3)(这意味着一个系数块的编码后的语法元素数目减少),解码性能将得到40%的改善。
以上已经参考本发明的具体实施例来描述了本发明,但是本领域技术人员均了解,可以对这些具体实施例进行各种修改、组合和变更,而不会脱离由所附权利要求或其等同物限定的本发明的精神和范围。
根据需要可以用硬件或软件来执行步骤。注意,在不脱离本发明范围的前提下,可向本说明书中给出的流程图添加步骤、从中去除步骤或修改其中的步骤。一般来说,流程图只是用来指示用于实现功能的基本操作的一种可能的序列。
本发明的实施例可利用编程的通用数字计算机、利用专用集成电路、可编程逻辑器件、现场可编程门阵列、光的、化学的、生物的、量子的或纳米工程的系统、组件和机构来实现。一般来说,本发明的功能可由本领域已知的任何手段来实现。可以使用分布式或联网系统、组件和电路。数据的通信或传送可以是有线的、无线的或者通过任何其他手段。
还将意识到,根据特定应用的需要,附图中示出的要素中的一个或多个可以按更分离或更集成的方式来实现,或者甚至在某些情况下被去除或被停用。实现可存储在机器可读介质中的程序或代码以允许计算机执行上述任何方法,也在本发明的精神和范围之内。
此外,附图中的任何信号箭头应当被认为仅是示例性的,而不是限制性的,除非另有具体指示。当术语被预见为使分离或组合的能力不清楚时,组件或者步骤的组合也将被认为是已经记载了。
Claims (7)
1.一种CAVLC解码方法,包括对输入码流中的语法元素Coeff_token、Trailing_ones_sign、Level、Total_zeros、以及Run_before进行解码,其中,通过以下处理在一个时钟周期内完成对两个连续的Level语法元素的解码:
利用用于语法元素Level的查找表找出第(2n-1)个Level语法元素的前缀长度和前缀码,利用第(2n-1)个Level语法元素的前缀码、后缀码和后缀长度获取第(2n-1)个Level语法元素的幅值代码,并且根据第(2n-1)个Level语法元素的幅值代码获取第(2n-1)个Level语法元素所对应的系数幅值,其中,第(2n-1)个Level语法元素的后缀长度是根据第2(n-1)个Level语法元素所对应的系数幅值的绝对值、以及第2(n-1)个Level语法元素的后缀长度计算得出的,n为不小于1的整数;以及
利用第(2n-1)个Level语法元素的前缀长度和后缀实际长度找出第2n个Level语法元素的代码起始位置,利用用于语法元素Level的查找表找出第2n个Level语法元素的前缀长度和前缀码,根据第2n个Level语法元素的前缀码、后缀码和后缀长度获取第2n个Level语法元素的幅值代码,并且根据第2n个Level语法元素的幅值代码获取第2n个Level语法元素所对应的系数幅值,其中,第2n个Level语法元素的后缀长度是根据第(2n-1)个Level语法元素所对应的系数幅值的绝对值、以及第(2n-1)个Level语法元素的后缀长度计算得出的,其中
在输入码流是对2×2系数块进行CAVLC编码得出的码流的情况下,利用由用于语法元素Total_zeros的查找表和用于语法元素Run_before的查找表组合而成的第二组合查找表,在一个时钟周期中完成对语法元素Total_zeros以及所有Run_before语法元素的解码,
在输入码流是对4×4系数块进行CAVLC编码得出的码流的情况下,分别对语法元素Total_zeros和语法元素Run_before进行解码。
2.根据权利要求1所述的CAVLC解码方法,其特征在于,在对语法元素Level进行解码之前,利用由用于语法元素Coeff_token的查找表和用于语法元素Trailing_ones_sign的查找表组合而成的第一组合查找表,在一个时钟周期内完成对语法元素Coeff_token和所有Trailing_ones_sign语法元素的解码。
3.根据权利要求1所述的CAVLC解码方法,其特征在于,在输入码流是对4×4系数块进行CAVLC编码得出的码流的情况下,通过以下处理完成对语法元素run_before的解码:
判断是否存在与m+1个连续的非零系数相对应的run_before语法元素,其中,第k至k+m-1个连续的非零系数之间不存在零系数,并且第k+m-1个非零系数与紧随第k+m-1个非零系数之后的第k+m个非零系数之间存在零系数,其中,k和m均为大于0的整数;
如果存在,则在一个时钟周期内完成对与所述第k至k+m个非零系数相对应的run_before语法元素的解码,否则在一个时钟周期内完成对所述第k和k+1个非零系数所对应的run_before语法元素的解码,
在下一个时钟周期内,重复以上所述的判断以及解码操作,直至所有run_before语法元素解码完成。
4.根据权利要求1所述的CAVLC解码方法,其特征在于,在输入码流是对4×4系数块进行CAVLC编码得出的码流的情况下,在对语法元素Run_before进行解码之前,利用用于语法元素Total_zeros的查找表,在一个时钟周期内完成对语法元素Total_zeros的解码。
5.一种CAVLC解码系统,用于对输入码流中的语法元素Coeff_token、Trailing_ones_sign、Level、Total_zeros、以及Run_before进行解码,所述解码系统包括双Level解码单元,用于在一个时钟周期内完成对两个连续的Level语法元素的解码,所述双Level解码单元包括:
第一Level解码模块,被配置为利用用于语法元素Level的查找表找出第(2n-1)个Level语法元素的前缀长度和前缀码,利用第(2n-1)个Level语法元素的前缀码、后缀码和后缀长度获取第(2n-1)个Level语法元素的幅值代码,并且根据第(2n-1)个Level语法元素的幅值代码获取第(2n-1)个Level语法元素所对应的系数幅值,其中,第(2n-1)个Level语法元素的后缀长度是根据第2(n-1)个Level语法元素所对应的系数幅值的绝对值、以及第2(n-1)个Level语法元素的后缀长度计算得出的,n为不小于1的整数;以及
第二Level解码模块,被配置为利用第(2n-1)个Level语法元素的前缀长度和后缀实际长度找出第2n个Level语法元素的代码起始位置,利用用于语法元素Level的查找表找出第2n个Level语法元素的前缀长度和前缀码,根据第2n个Level语法元素的前缀码、后缀码和后缀长度获取第2n个Level语法元素的幅值代码,并且根据第2n个Level语法元素的幅值代码获取第2n个Level语法元素所对应的系数幅值,其中,第2n个Level语法元素的后缀长度是根据第(2n-1)个Level语法元素所对应的系数幅值的绝对值、以及第(2n-1)个Level语法元素的后缀长度计算得出的;其中
所述CAVLC解码系统还包括:
Total_zeros和Run_before解码单元,被配置为在输入码流是对2×2系数块进行CAVLC编码得出的码流的情况下,利用由用于语法元素Total_zeros的查找表和用于语法元素Run_before的查找表组合而成的第二组合查找表,在一个时钟周期中完成对语法元素Total_zeros以及所有Run_before语法元素的解码;
run_before解码单元,用于在输入码流是对4×4系数块进行CAVLC编码得出的码流的情况下,对语法元素run_before的解码:
Total_zeros解码单元,被配置为在输入码流是对4×4系数块进行CAVLC编码得出的码流的情况下,在所述run_before解码单元对语法元素Run_before进行解码之前,利用用于语法元素Total_zeros的查找表,在一个时钟周期内完成对语法元素Total_zeros的解码。
6.根据权利要求5所述的CAVLC解码系统,其特征在于,还包括:
Coeff_token和Trailing_ones_sign解码单元,用于在所述双Level解码单元对语法元素Level进行解码之前,利用由用于语法元素Coeff_token的查找表和用于语法元素Trailing_ones_sign的查找表组合而成的第一组合查找表,在一个时钟周期内完成对语法元素Coeff_token和所有Trailing_ones_sign语法元素的解码。
7.根据权利要求5所述的CAVLC解码系统,其特征在于,还包括:所述run_before解码单元,通过以下处理完成对语法元素run_before的解码:
判断是否存在与m+1个连续的非零系数相对应的run_before语法元素,其中,第k至k+m-1个连续的非零系数之间不存在零系数,并且第k+m-1个非零系数与紧随第k+m-1个非零系数之后的第k+m个非零系数之间存在零系数,其中,k和m均为大于0的整数;
如果存在,则在一个时钟周期内完成对与所述第k至k+m个非零系数相对应的run_before语法元素的解码,否则在一个时钟周期内完成对所述第k和k+1个非零系数所对应的run_before语法元素的解码,
在下一个时钟周期内,重复以上所述的判断以及解码操作,直至所有run_before语法元素解码完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110089253.7A CN102740066B (zh) | 2011-04-01 | 2011-04-01 | Cavlc解码方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110089253.7A CN102740066B (zh) | 2011-04-01 | 2011-04-01 | Cavlc解码方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102740066A CN102740066A (zh) | 2012-10-17 |
CN102740066B true CN102740066B (zh) | 2015-06-17 |
Family
ID=46994750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110089253.7A Expired - Fee Related CN102740066B (zh) | 2011-04-01 | 2011-04-01 | Cavlc解码方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102740066B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2932715B1 (en) * | 2014-01-03 | 2016-12-21 | GE Video Compression, LLC | Wedgelet-based coding concept |
CN104301725A (zh) * | 2014-07-14 | 2015-01-21 | 广东工业大学 | 一种基于索引查找cavld方法 |
CN104486624B (zh) * | 2014-12-18 | 2018-05-15 | 北京思朗科技有限责任公司 | 一种cavlc熵解码器 |
EP3499888A4 (en) * | 2016-08-10 | 2019-06-19 | Panasonic Intellectual Property Corporation of America | CODING DEVICE, DECODING DEVICE, CODING METHOD AND DECODING METHOD |
CN112449188B (zh) * | 2019-08-28 | 2021-08-20 | 腾讯科技(深圳)有限公司 | 视频解码方法、编码方法、装置、介质及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1171699A (zh) * | 1996-03-29 | 1998-01-28 | 松下电器产业株式会社 | 用于在每个时钟周期对两个代码进行解码的可变长解码器及其方法 |
CN1925332A (zh) * | 2005-08-31 | 2007-03-07 | 中国科学院微电子研究所 | 基于关键字的变长解码器及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7602850B2 (en) * | 2003-12-19 | 2009-10-13 | Intel Corporation | Content adaptive variable length coding (CAVLC) decoding |
-
2011
- 2011-04-01 CN CN201110089253.7A patent/CN102740066B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1171699A (zh) * | 1996-03-29 | 1998-01-28 | 松下电器产业株式会社 | 用于在每个时钟周期对两个代码进行解码的可变长解码器及其方法 |
CN1925332A (zh) * | 2005-08-31 | 2007-03-07 | 中国科学院微电子研究所 | 基于关键字的变长解码器及方法 |
Non-Patent Citations (2)
Title |
---|
A HYBRID CAVLD ARCHITECTURE DESIGN WITH LOW COMPLEXITY AND LOW POWER CONSIDERATIONS;Tsung-Han Tsa,et all;《ICME2007》;20071231;正文摘要、第1节-第4节、图1-图8 * |
A Novel Design of CAVLC Decoder with Low Power and High Throughput Considerations;Tsung-Han Tsa,et all;《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》;20110331;第21卷(第3期);摘要、第1至第4部分 * |
Also Published As
Publication number | Publication date |
---|---|
CN102740066A (zh) | 2012-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200304795A1 (en) | Context and bypass encoding video | |
US5471207A (en) | Compression of palettized images and binarization for bitwise coding of M-ary alphabets therefor | |
US7385535B2 (en) | Decoding system and method based on context-based adaptive binary arithmetic coding | |
US7982641B1 (en) | Context-based adaptive binary arithmetic coding engine | |
KR100955418B1 (ko) | 컨텍스트 기반 적응형 이진 산술 인코딩 및 디코딩을 위한 시스템 및 방법 | |
CN102740066B (zh) | Cavlc解码方法和系统 | |
US7564384B2 (en) | Binarizing method and device thereof | |
US7501964B2 (en) | Entropy coding for digital codecs | |
US7764202B2 (en) | Lossless data compression with separated index values and literal values in output stream | |
CN107333141A (zh) | 熵编码中的上下文初始化 | |
CN104054342A (zh) | 针对于hevc中的cabac的高吞吐量编码 | |
KR102381999B1 (ko) | 가변 길이 코딩된 입력을 디코딩하는 방법 및 시스템, 그리고 코드북을 변경하는 방법 | |
EP2594024A1 (en) | Methods and devices for data compression using context-based coding order | |
GB2538218A (en) | System and method for compressing data using asymmetric numeral systems with probability distributions | |
CN100471279C (zh) | 一种基于上下文自适应变长解码的方法 | |
US10127913B1 (en) | Method of encoding of data stream, method of decoding of data stream, and devices for implementation of said methods | |
Yu et al. | A zero-skipping multi-symbol CAVLC decoder for MPEG-4 AVC/H. 264 | |
US11431978B2 (en) | Video decoding method and video decoding device for improving decoding efficiency | |
US20080252498A1 (en) | Coding data using different coding alphabets | |
CN104980749B (zh) | 算术编码的解码装置及方法 | |
CN1108014C (zh) | 具有字节校准单元的可变长度码编码及分段装置 | |
GB2319689A (en) | An entropy encoder using context modelling with data reordering | |
Lin et al. | A branch selection multi-symbol high throughput CABAC decoder architecture for H. 264/AVC | |
CN115913246A (zh) | 基于自适应瞬时熵的无损数据压缩算法 | |
US7750826B2 (en) | Data structure management for lossless data compression |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
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: 20150617 Termination date: 20180401 |
|
CF01 | Termination of patent right due to non-payment of annual fee |