Cavlc解码方法

文档序号:7507110阅读:189来源:国知局
专利名称:Cavlc解码方法
技术领域
本发明是关于H.264/AVC视频解码器的可变长编码方面的发明,具体地说,是关于快速参照H.264/AVC规格里规定的CAVLC表格的方法的发明。
背景技术
DMB(Digital Multimedia Broadcasting数据多媒体广播)视频规格遵循H.264/AVC(Advanced Video Coding先进的视频编码)标准。
上述视频规格是关于视频比特流有序排列(syntax)及解码器(decoder)的规格,遵循这一规格的DMB视频编码器为了高效地分配数据比特流,使用两种可变长编码(Variable Length Coding可变长度编码)方式。
根据这一规格,对于除了变换的影像数据系数以外的数据,使用UVLC(UniVersal Variable Length Coding通用的可变长度编码)方式,对于变换的影像数据使用CAVLC(Context-ba sed Adapt iveVariable Length Coding自适应可变长度编码)方式。
所谓可变长编码方式,指的是利用信号的统计特性,即,根据信号产生频率的统计特性,在各个信号的符号里,分割相互不同长度的比特数的方式,是在现存影像压缩方式里一直使用的方式。
H.264/AVC标准规格规定的上述CAVLC方式采用使用变换的影像数据系数的特性的TotalCoeff,TrailingOnes,total_zero,run_before等变量相关的表格,对信号进行编码的方式。
从操作这种可变长编码的现存方式来看,其是使用从比特流读取上述可变长编码表格定义的编码的长度相应程度的编码,将其与上述可变长编码表格的编码进行比较的方式。
为了使用这一方式,在最坏的情况下,由于需要比较表格的所有编码值,需要持续访问比特流存储器的过程。因此,存在由于这种非效率的处理过程导致的解码器处理速度低下的问题。

发明内容
本发明为了解决上述问题,其目的是为使用者提供一种在适用H.264/AVC标准里规定的视频解码方式的所有系统中,参照CAVLC表格的方式,能够解决计算复杂问题的CAVLC解码方法。
为了实现上述目的,本发明CAVLC解码方法包括以下几个阶段从已设定、输入的上述CAVLC代码字长度表格重新排列的表格中,选择希望解码的变量对应的表格的阶段;在上述选择的表格内,从参考列的第一个代码字长度开始,按顺序读出上述代码字长度的比特流的阶段;在上述CAVLC代码字长度表格内部,在与上述参考列一致的列里,将具有与上述读出比特流阶段的代码字长度一致的代码字长度的CAVLC代码字值表格的值与上述读出的比特流值进行比较的阶段;当上述比较结果是两值一致时,存储那时的变量值的阶段。
CAVLC解码方法的特征是上述重新排列的表格是将上述CAVLC代码字长度表格按照代码字长度顺序进行重新排列列的表格。
CAVLC解码方法的特征是上述参考列是从上述比特流信息包的报头部分里包含的信息和解码的邻近区域的信息选择的列。
CAVLC解码方法还包括以下阶段当上述读出的比特流值是0或者上述比较结果是两值不一致时,在上述重新排列的表格上的参考列里,读出比较值的下一个值对应的代码字长度的比特流的阶段。
本发明CAVLC解码方法达到如下效果。
第一,由于按顺序读出本发明重新排列的表格指示长度的比特流上的数据,所以,达到减少存储器访问时间的效果。
第二,由于与本发明重新排列的表格的长度对应的长度的代码字表格值进行比较,达到减少比较处理量的效果。
第三,由于将本发明的方法使用到DMB系统的应用领域的编码处理过程,具有实现解码器的简单化和提高处理速度的效果。
第四,具有能够将其它H.264/AVC标准规格应用到所有应用领域的效果。


图1是普通的二元搜索树的示意图。
图2是本发明包含Total_Coeff的total_zeros的CAVLC表格及其二元树构造的示意图。
图3是本发明包含重新排列的Total_Coeff的total_zeros的CAVLC代码字长度表格的示意图。
图4a到4d是根据本发明,重新排列的H.264/AVC使用的CAVLC变量各自的代码字长度表格的示意图。
图5是为了说明本发明CAVLC解码方法,根据H.264/AVC规格,包含Total_Coeff的Total_zeros的CAVLC代码字长度表格的示意图。
图6是为了说明本发明CAVLC解码方法,根据H.264/AVC规格,包含Total_Coeff的Total_zeros的CAVLC代码字值表格的示意图。
图7是本发明CAVLC解码过程的流程图。
具体实施例方式
以下,将参照附图对本发明CAVLC解码方法实施例的结构和作用加以说明。
可变长编码(VLCVariable Length Coding)的基本概念是根据数据产生的统计特性,对于统计特性大的信号符号,分配少数比特,对于统计特性小的信号符号,分配多数比特,对产生的信号进行编码,减少平均的编码信号的比特分配长度。
关于这种方式的基本原理可以通过哈夫曼方式进行简单地说明。由于这一编码方式和执行编码方式的过程受到二元树构造的影响,所以,本发明提出了使用二元树进行检索的方法。
图1是普通的二元搜索树的示意图。
如图1所示,二元搜索树(Binary Search Tree)具有对称构造,母树有两个子树(母树上位节点,子树下位节点),左子树是1,右子树是0。
利用二元搜索树,将N个值进行比较,能够处理log2N阶段计算的复杂度。尽管这一方式是利用阶层的数据构造,能够迅速检索的算法,但是,由于每次都要构成新的二元搜索树,存在处理过程复杂的缺点。
但是,如果通过视频编码器规定的CAVLC编码表格的长度单位进行处理,很容易求得具有类似上述阶层构造的表格。
因此,为了运行可变长编码方式,根据本发明,应该参照容易构成具有阶层构造的CAVLC编码表格,为了与现存的CAVLC编码表格进行比较,通过从检索所有情况下的树的方式中脱离,快速地检索预想的编码,提高编码器的处理速度及改善编码器的负荷。下面,参照附图,对其进行详细说明。
图2显示了本发明CAVLC表格及其二元树构造的示意图。
尤其是,图2的表格是包含Total_Coeff的total_zeros的CAVLC表格。上述表格显示了将第一个列变换成二元树构造的示意图。
上述表格的横轴是Total_Coeff(coeff_token),即,显示了在影像的编码过程中DCT(Discrete Cosine Transform离散余弦变换),量子化(Quantization)的数据中,系数不是0的个数。竖轴是total_zero,即,显示了在上述数据中系数是0的个数,在上述横轴和竖轴内部,显示代码字值。上述代码字值是遵循H.264/AVC CAVLC规格的值。
如图2所示,从表格的第一个列开始,将表现的代码字值向二元树变换,这跟前面提到的二元树使用的方式一样,使用左子树是1,右子树是0的方法。
即,将表格的第一个代码字值---1比特表现的1通过二元树第一个水平的左子树表现,由于右子树在上述CAVLC代码字表格里不具有用1比特表现的0代码字,不表现,然后,由于存在3比特的值,将右子树扩张,各自分配第三个水平的值。
按照上述方法,最后的子树分配最长的编码,右边的最下面的子树分配代码字值是0的代码字。在图2中,由于在二元树里对应的表格的代码字中,不存在值是0的代码字,右边子树最好是空的子树。
同样,如果按照相同的方法,将其它表格的代码字也向二元树变换,能够看出CAVLC表格具有阶层构造,能够按照发生概率高低顺序进行排列。
即,跟前面提到的一样,由于VLC算法上将发生概率高的信号分配长度短的比特,能够按照发生概率高低顺序进行(代码字长度短的顺序)排列。
而且,二元树的深度与检索值的计算复杂度有密切的关系。即,二元树的深度越深,二元树的构造越不对称,检索计算越复杂。
为了构成上述二元树,正如上面提到的那样,应该将各个代码字分配到二元树的深度(水平)中,各个代码字的二元树的水平和代码字长度相关。
因此,为了便于构成二元树,为了以代码字的长度为基准,构成代码字,进行比较,需要重新构成排列各个表格的代码字长度的表格。下面,参照图3对其进行说明。
图3是本发明包含重新排列的Total_Coeff的total_zeros的CAVLC代码字长度表格的示意图。
如图3所示,新构成的表格根据图2的二元树水平,按照发生概率(代码字长度顺序)高低顺序进行重新排列列。但是,在CAVLC表格的相同列里,当由0构成的代码字的长度并不是最长的长度时,即,当不是二元树的最下面的水平时,最后排列。
另一方面,参照图4a到4d,对按照相同的方法,根据本发明,重新排列的H.264/AVC使用的CAVLC变量各自的代码字长度表格进行说明。
即,图4a显示的4×4区域是根据各个代码字的长度重新排列包含Total_Coeff的Total_Zeros的示意图。图4b是根据各个代码字的长度重新排列包含Chroma DC的Total_Coeff的Total_Zeros的示意图。图4c是根据各个代码字的长度重新排列CAVLC的run_before变量的示意图。图4d是根据各个代码字的长度重新排列Total_Coeff和TrailingOnes变量的示意图。图4e是根据各个代码字的长度重新排列Chroma的Total_Coeff和TrailingOnes变量的示意图。
上述图4e的表格的代码字长度是7时,全部由0构成(0000 000),这一表格代码字长度是8的‘0000 0011’和‘0000 0010’的两种情况以后进行比较。
即,像前面说明的那样,在CAVLC表格的相同列里,当由0构成的代码字的长度不是最长的长度时,由于需要进行分配,最后进行比较。
继续,如果出现0,由于比较下一个长度分配的代码字,所以,为了查找上述‘0000 000’的代码字,变换比较的代码字长度顺序。
同样,对H.264/AVC规格的CAVLC各个变量分配的表格进行重新排列时,通过将其应用到解码(decoding)过程中,不重复读出比特的过程,按照发生概率高的顺序依次进行比较。下面,参照附图对这种解码过程进行详细说明。
图5和图6是根据普通的H.264/AVC CAVLC规格打开的表格。图5是为了说明本发明CAVLC解码方法,根据H.264/AVC规格,包含Total_Coeff的Total_zeros的CAVLC代码字长度表格的示意图。图6是为了说明本发明CAVLC解码方法,根据H.264/AVC规格,包含Total_Coeff的Total_zeros的CAVLC代码字值表格的示意图。
即,当按照普通的CAVLC方法对编码的数据进行解码时,首先,通过包含在传送信息包的报头里的信息和解码的邻近区域的信息,获得参考CAVLC表格的第几列的信息后,从存储器中读出在上述图5中显示的代码字长度的表格中,从相应列的第一个值开始依次分配的长度比特流(传送的信息包的数据)。
将上述读出的值对应的代码字值与图6中显示的代码字值的表格进行比较,当两个值一致时,获得那时的Total_Coeff值和total_zero值,对于其它变量,使用同样的方法,获得相应的值,进行解码。
但是,此时,如图4的表格所示,我们可以知道,普通的CAVLC规格的表格内的代码字长度没有按照一定的顺序排列。因此,需要将已经读出的比特再次读出。这是一种效率非常低的方法。
因此,本发明通过使用图3的表格,不重复读出比特的过程,按照发生概率高低顺序进行比较。图7是本发明CAVLC解码过程的流程图。下面,参照图7对本发明CAVLC解码方法的流程图进行详细说明。(为了便于说明,存储器里输入的比特流从010l011…开始,以包含图3、图5及图6的TotalCoeff的total_zeros变量为例进行说明。而且,假定信息包报头里包含的信息和解码的邻近区域的信息参考CAVLC表格的第一个列)最初,从重新排列的表格中选择希望解码的变量对应的表格(S10)。由于本发明中以包含TotalCoeff的total_zeros变量为例,选择图3的表格。
在上述选择的表格里,K=0。即,读出第一个值对应的长度的比特流(S20,S30)。即,由于图3中第一个列的第一个值是1,读出1比特长度,从上述例示的比特流中读出0。
确认上述读出的值是否是0(S40),如果是0,将K值增加一(S60),如果不是0,将CAVLC表格与编码值进行比较。(S50)按照上述例子,由于读出的值是0,将K值增加一。此时,当增加的K值对应的表格的代码字值是0时,结束处理过程,当不是0时,进入上述S30阶段。(S70)即,在图3的表格中,由于没有涉及数字的区域是0,代表着不能够读出其它代码字,结束处理过程。
因此,按照上述例子,由于增加的K值里对应的图3表格里的值是3,(由于不是0,不结束处理过程),读出3比特长度的比特流(S30)上述读出的值是010,由于其不是0,将其与CAVLC表格进行比较。(S50)此时,根据图4的表格,当代码字长度是3时,存在total_zeros是l和total_zeros是2两种情况。
首先,当total_zeros是1时,通过图5的表格,确认代码字值,由于这一值是3,可以知道,与从上述比特流中读出的010代表的2值不一致。(如果将上述010变换成为10进数是2)。
将上述与当total_zeros是2时进行比较,由于图5的表格的代码字值是2,可以知道与从上述比特流中读出的010代表的2值一致。
因此,存储此时的Total_Coeff值与total_zeros值(S80),结束,进入下一个解码阶段。
为了更进一步提高使用上述方法的本发明CAVLC解码方法的效率,这次,存储器输入的比特流从110101…开始,以包括图3、图5及图6的TotalCoeff的total_zeros变量为例进行说明,假设信息包报头里包含的信息和解码的邻近区域的信息参照CAVLC表格的第四列进行说明。
最初,通过图3的表格,可以知道第四列的第一个值是3。
因此,在图4的表格里,第四列中,查找代码字长度是3,total_zeros可能是1,4,5,6,8。
首先,当total_zeros是1时,在图5的表格里,代码字值是7,这代表着与上述代码字长度3比特流读出的二元树的110值代表的6不一致。
因此,当下一个total_zeros是4时,在图5的表格中,代码字值是6,由于这代表着与上述代码字长度3比特流读出的二元树的110值代表的6一致,存储此时的变量值,进入下一个解码阶段。
如果按照现存方法查找上述这些值,至少需要5次以上的比较过程,但是,通过使用本发明的方法,只需要两次比较过程,就能够获得需要的值。
通过上述的说明内容,相关专业人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。
因此,本项发明的技术性范围并不局限于说明书上的内容,必须要根据权利范围来确定其技术性范围。
权利要求
1.一种CAVLC解码方法,根据H.264/AVC规格,利用具有各自变量的CAVLC代码字长度表格和CAVLC代码字值表格,对编码的比特流进行解码,其特征包括以下阶段从已设定、输入的上述CAVLC代码字长度表格重新排列的表格中,选择希望解码的变量对应的表格的阶段;在上述选择的表格内,从参考列的第一个代码字长度开始,按顺序读出上述代码字长度的比特流的阶段;在上述CAVLC代码字长度表格内部,在与上述参考列一致的列里,将具有与上述读出比特流阶段的代码字长度一致的代码字长度的CAVLC代码字值表格的值与上述读出的比特流值进行比较的阶段;当上述比较结果是两值一致时,存储那时的变量值的阶段。
2.如权利要求1所述CAVLC解码方法,其特征为上述重新排列的表格将上述CAVLC代码字长度表格按照代码字长度顺序进行重新排列。
3.如权利要求1所述CAVLC解码方法,其特征为上述参考列是从上述比特流信息包的报头部分里包含的信息和解码的邻近区域的信息选择的列。
4.如权利要求项1所述的CAVLC解码方法,包括以下阶段为特征当上述读出的比特流值是0或者上述比较结果是两值不一致时,在上述重新排列的表格上的参考列里,读出比较值的下一个值对应的代码字长度的比特流的阶段。
全文摘要
本发明涉及到CAVLC解码方法,根据H.264/AVC规格,利用具有各自变量的CAVLC代码字长度表格和CAVLC代码字值表格,对编码的比特流进行解码,其包括从已设定输入的CAVLC代码字长度表格重新排列的表格中,选择希望解码的变量对应表格;在选择的表格内,从参考列的第一个代码字长度开始,按顺序读出代码字长度的比特流;在CAVLC代码字长度表格内部,在与参考列一致的列,将具有与读出比特流阶段的代码字长度一致的代码字长度的CAVLC代码字值表格的值与读出的比特流值比较;当比较结果两值一致时,存储变量值。根据重新排列的表格指示的长度依次读出比特流上的数据,能减少存储器访问时间,可减少将CAVLC代码字进行比较的复杂计算。
文档编号H03M7/40GK1780398SQ200410084328
公开日2006年5月31日 申请日期2004年11月18日 优先权日2004年11月18日
发明者吴浚焕 申请人:上海乐金广电电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1