[发明专利]一种快速解码CAVLC run_before码字的硬件实现方法有效
申请号: | 201210034976.1 | 申请日: | 2012-02-16 |
公开(公告)号: | CN102572437A | 公开(公告)日: | 2012-07-11 |
发明(设计)人: | 范益波;沈沙;沈蔚炜;曾晓洋 | 申请(专利权)人: | 复旦大学 |
主分类号: | H04N7/26 | 分类号: | H04N7/26 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;盛志范 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 快速 解码 cavlc run_before 码字 硬件 实现 方法 | ||
技术领域
本发明属于数字视频信号编解码技术领域,具体涉及一种解码CAVLC run_before码字的硬件实现方法。
背景技术
H.264/AVC(Advanced Video Coding)由国际电信组织(ITU)和运动图像专家组(MPEG)联合制定而成的国际视频编码标准,目前已经在多媒体音视频领域得到了广泛的应用。H.264/AVC中规定其熵编码可以采用两种方式:下文自适应可变长编码(CAVLC)和上下文自适应算术编码(CABAC)。CABAC具有较高的编码效率,但是编解码的复杂度也大大增加,而CAVLC在编码效率和复杂度上有着较好的均衡。与前一代视频标准如MPEG-1,MPEG-2相比,CAVLC的编码效率有着显著提升。
视频码流中的视频头信息和预测信息一般采用较低复杂度的定长码或指数哥伦布码,而残差系数的信息占据了视频码流的绝大部分,这部分信息的编码需要采用更高效的CAVLC编码方式。CAVLC的码字总共有5类:
1. Coeff_token:本码字代表非零系数的数目和拖尾1的个数(TrailingOnes)。
2. Sign_trail:本码字是拖尾1的符号。每一个符号编码为一比特,0表示正1,1表示负1。
3. Levels:本码字是指TrailingOnes外的其它的非零系数的幅值。
4. Total_zeros:它编码在以反Zig-Zag扫描顺序时第一个非零系数后的总的零系数的个数。
5. Run_before:本码字是指每一个非零系数前的零的个数。
对于硬件解码而言,计算非零系数的幅值和run_before码字是整个CAVLC解码过程中最耗费时间的过程。对于一个长度和高度都为4个像素的图形块,如果采用CAVLC编码方式,有些码字如Coeff_token、sign_trial和Total_zero在解码过程中只需要一次解码,而run_before码字最多可以达14个。为了加快硬件处理的速度,有必要针对run_before码字提出一种快速的解码方法。
发明内容
本发明的目的在于提出一种适用于H.264视频规范所规定的CAVLC解码过程的快速解码run_before码字的硬件实现方法。
本发明提出的快速解码run_before码字的硬件实现方法,可以在一个时钟周期内最多完成两个run_before码字的解码。整个码字解码的硬件框图如图1所示。本方法采用了码表分拆和码字合并这两种方法,在一个时钟周期内最多可以解码14个值为0的run_before码字,或两个值不等于0的run_before码字。输入的视频码流首先经过前导1检测器来检测带解码的run_before码字是否为零,前导1检测器最多一次可以检测14位前导1。如果当前run_before码字的值不为零,我们将当前解码位置之前所包含的0的总个数记为zerosLeft,根据zerosLeft的值可以将run_before码字分为7种类型,即将原标准中规定的run_before码表分解为7个子码表,针对每一种类型分别进行解码。每个时钟周期内最多可以解码2个run_before码字。
CAVLC定义了多种码字,在编码一个4x4残差数据块时,run_before码字最多可出现14次,因此这一硬件实现方法可以大大提高了硬件解码器的数据处理能力。
具体的解码过程分为如下四个步骤:
(1)码表分拆和码字合并。
(2)检测前导1的个数。
(3)根据zerosLeft的值从7个码表的输出选择出正确的值。
(4)更新zerosLeft变量。每次解码完run_before码字后对zerosLeft变量进行更新,在下次解码时需要使用更新后的值。
H.264视频规范中指定了一个用于解码run_before码字的码表,此码表如表1所示。本发明将此码表分解为7个较小的码表,如表2—表8所示,并对其中的5个码表(表3、表4、表5、表6、表7)进行码字合并,使得其能够在一个时钟周期内完成两个码字的解码。
CAVLC定义了6种码字,其中非零系数幅值的码字和run_before码字出现的频率最高,在编码一个4x4残差数据块时run_before码字最多可出现14次,因此这一硬件实现方法可以大大提高硬件解码器的数据处理能力。
本发明的有益效果:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210034976.1/2.html,转载请声明来源钻瓜专利网。