一种实现H.264CAVLC解码容错功能的方法及解码器技术

技术编号:15008371 阅读:95 留言:0更新日期:2017-04-04 14:28
本发明专利技术公开了一种实现H.264CAVLC解码容错功能的方法及解码器,解决了现有容错技术增加了设计工作量、成本等缺陷。该实现H.264CAVLC解码容错功能的方法是在解码器的码流输入模块中设置一个二选一电路MUX,该二选一电路MUX有两个输入端,其中一个输入端接收上位机输入的码流,另一个输入端接码流全“1…1”的固定值;正常解码:码流输入模块将上位机输入的码流输出给各解码模块进行解码;容错:当码流输入模块收到码流错误信号时,码流输入模块丢弃剩余码流并将码流全“1…1”的固定值输出给各解码模块进行解码。在简化了码流容错处理的算法的同时,有效的节约了硬件设计的资源,而且对于H.264解码器的产品化的应用有实际的价值。

【技术实现步骤摘要】

本专利技术涉及数字视频压缩编解码
,具体涉及H.264数字视频解码中的CAVLC(基于上下文自适应变长编码)在解码时的容错技术。
技术介绍
H.264/AVC视频压缩编码标准是ITU-T组织于2003年颁布的视频压缩标准,虽然新一代的视频压缩标准HEVC已于2013年问世,但是由于HEVC实现的复杂度高,使得目前市场上视频压缩编解码方案大多数仍然采用的是H.264编码标准。H.264在熵编码采用了两种方式:一种是CABAC(基于上下文自适应的二进制算数编码)和CAVLC(基于上下文自适应的可变长编码)。H.264码流内容包括头信息,预测信息和残差信息。H.264CAVLC解码的过程表现为两种情况:一种是语法元素(syntaxelement)根据其对应的描述符(descriptor)在码流中摘取一定长度的码字作为该语法元素的解码值,另一种还需要把摘取的码字在对应的查找表中找到相应的值作为解码值。基于上述可知,解码出错无解的情况表现为对应的两种:一种是解码值超出了取值范围,另一种则是码字在查找表找不到对应的值。下面对H.264CAVLC预测信息和残差信息需要解码的语法元素作简要分类说明:如表1所示,表1中有10个存在“取值范围限制”的语法元素(syntaxelement),如mb_skip_run等;另外还有8个需要“查表”的语法元素(syntaxelement),如mb_type等,它们都可能会出现码流无解的情况。<br>表1.H.264CAVLC的预测信息和残差信息需解码语法元素说明:码流无解的后果:会导致解码中断,解码显示的图像停止。一个健壮的解码器需要具备容错功能,即在码流出错以后,解码不中断,仍然输出某个语法元素的值,直到这一帧解码完成为止;与此同时,解码图像虽然出现花屏但是图像仍能够连续显示。现有技术中,常规的容错方案即在码流无解的时候仍然给对应的语法元素人为的赋一个特定的值,直到解完这一帧,但需要解码的语法元素众多,而且前后语法元素可能存在相关性,这就导致了目前的容错方案非常复杂,同时也会占用相当的设计资源,增加设计成本。
技术实现思路
本专利技术的目的在于克服上述缺陷,提供一种简洁有效、使用硬件资源少的实现H.264CAVLC解码容错功能的方法。为了实现上述目的,本专利技术采用的技术方案如下:一种实现H.264CAVLC解码容错功能的方法,其特征在于,在某一帧的解码过程中,当码流无解时,码流输入模块丢弃剩余码流,然后将码流全“1…1”的固定值输出至解码模块进行解码,直到该帧解码完成为止。实现H.264CAVLC解码容错功能的方法的解码器,包括:主控状态机模块,负责控制解码模块的解码流程;码流输入模块,向解码模块输入码流;解码模块,执行解码;其中,在所述码流输入模块中设置有一个二选一电路MUX,所述二选一电路MUX其中一个输入端接收上位机输入的码流,另一个输入端接码流全“1…1”的固定值。进一步的,解码模块包括:片层数据模块,宏块层模块,宏块预测模块,子宏块预测模块,残差数据模块。进一步的,所述片层数据模块,宏块层模块,宏块预测模块,子宏块预测模块和残差数据模块均包含有若干语法元素解码模块,在所述语法元素解码模块中设置有解码电路和检查电路。解码模块的实现方法,其中,解码模块内部设有若干个负责解码每个语法元素的语法元素解码模块,每个语法元素解码模块内部包括有解码电路和检测电路,包括以下步骤:(1)当某语法元素解码模块内的解码电路遇到码流无解的情况时,其内部检测电路输出解码出错信号和重新解码信号;(2)该语法元素解码模块内部的解码电路收到重新解码信号,丢弃当前错误的解码码字,重置解码状态为等待新的码流输入解码;(3)当码流输入模块接收到解码出错信号后,通过内部码流二选一电路,将码流输出从真实码流切换为全“1…1”的值;(4)语法元素解码模块内部的解码电路重新收到“1…1”码流,解出对应的值,并将解码完成信号传递给所在的解码模块;(5)解码模块将解码完成信息传递给主控状态机,主控状态机则按解码顺序启动下一个解码模块解码,直到该帧码流解码完成为止。本专利技术申请的设计原理如下:H.264在熵编码采用了两种方式:一种是CABAC(基于上下文自适应的二进制算数编码)和CAVLC(基于上下文自适应的可变长编码)。本专利技术申请仅涉及CAVLC编码方式。H.264码流内容包括头信息,预测信息和残差信息。本专利技术申请仅涉及去了头信息的解码码流。经过研究发现,本专利技术申请需解的语法元素对应的描述符有四类:1.定长码:f(n),u(n);2.哥伦布编码ue(v);3.由哥伦布编码衍生的编码如:me(v),se(v),te(v);4.上下文自适应变长熵编码:ce(v);其中,对于1类描述符由表1可知不存在无解情况;对于2类哥伦布编码在码流为“1”时,解码值(codenum)等于0;对于3类描述符在码流为“1”时即解码值(codenum)等于0时,均有对应的语法元素值(syntaxelementvalue);对于4类描述符ce(v)均用于残差解码,由查表得到,经过观察发现,当码字为全“1…1”时,均可以查表得到对应的语法元素值。这个发现为h264的CAVLC解码容错提供了一个简洁有效的方法:某个语法元素(syntaxelement)解码出错无解时,将这一帧剩余的码流包括该语法元素(syntaxelement)对应的码字全部替换为“1…1”,这样即保证后面所有的语法元素(syntaxelement)可解。同时,由于熵编码消除了数据间相关性的特点,采用这种方法不会出现解码语法元素前后矛盾的结果。与现有技术相比,本专利技术具有以下有益效果:本专利技术基于码流全“1…1”时,码流可解的原则,在码流出错的时候将码流替换为全“1…1”的固定值,而其它的解码模块基本上不改变原有的设计架构,即可实现解码容错功能,在简化了码流容错处理的算法的同时,有效的节约了硬件设计的资源,而且对于H.264解码器的产品化的应用有实际的价值。附图说明图1为本专利技术的原理框图。图2为片层数据解码模块的原理框图。图3为宏块层解码模块的原理框图。图4为宏块预测解码模块的原理框图。图5为子宏块预测解码模块的原理框图。图6为残差数据解码模块的原理框图。图7为语法元素解码模块的原理框图。图8为码流输入模块的原理框图。具体实施方式下面结合实施例对本专利技术作进本文档来自技高网
...

【技术保护点】
一种实现H.264CAVLC解码容错功能的方法,其特征在于,在某一帧的解码过程中,当码流无解时,码流输入模块丢弃剩余码流,然后将码流全“1…1”的固定值输出至解码模块进行解码,直到该帧解码完成为止。

【技术特征摘要】
1.一种实现H.264CAVLC解码容错功能的方法,其特征在于,在某一帧的解码过程中,当
码流无解时,码流输入模块丢弃剩余码流,然后将码流全“1…1”的固定值输出至解码模块
进行解码,直到该帧解码完成为止。
2.实现如权利要求1所述的实现H.264CAVLC解码容错功能的方法的解码器,其特征在
于,包括:
主控状态机模块,负责控制解码模块的解码流程;
码流输入模块,向解码模块输入码流;
解码模块,执行解码;
其中,在所述码流输入模块中设置有一个二选一电路MUX,所述二选一电路MUX其中一
个输入端接收上位机输入的码流,另一个输入端接码流全“1…1”的固定值。
3.根据权利要求2所述的解码器,其特征在于,所述解码模块包括:片层数据模块,宏块
层模块,宏块预测模块,子宏块预测模块,残差数据模块。
4.根据权利要求3所述的解码器,其特征在于,所述片层数据模块,宏...

【专利技术属性】
技术研发人员:吴琦李煜
申请(专利权)人:成都芯程科技有限责任公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1