【技术实现步骤摘要】
本专利技术涉及数据传输与处理
,具体涉及一种变长编码方法及装置。
技术介绍
熵编码早在1950年就应用于视频编码,作为整个视频编码框架的最后 一个模块。熵编码的对象是之前所有模块生成的一系列的语法元素,包括 宏块类型、参考帧索引、编码块模板(CBP, Coded Block Pattern)、量化 步长(QP)、运动矢量的残差、变换和量化后的残差系数等。在所有这些 语法元素中,残差系数的信息量及最终编码后的数据量都是最大的,同时它 也是最具编码压缩空间的,因而 一直以来都是熵编码研究的重点。80年代中期出现了一个新的针对离散余弦变换(DCT)系数编码的变 长熵编码:技术即二维变长编码(2D-VLC )才支术,该:技术通过zig-zag扫描 将块系数表示成(run, level)的形式,并采用 一个变长码对该(mn, level) 数对进行编码。为提高块结束符(EOB, End of Block)的编码效率,提出了三维VLC (3D-VLC)技术,该技术对(last, run, level)对进行联合编码,其中,last 表示当前块系数是否为块内的最后一个非零系数。同时出现了针对宏块采用 帧内(intra)预测还是帧间(inter)预测法而设计不同VLC码表的方法。变长熵编码技术是基于上下文的编码技术,主要是将level及run分开, 分别对level和run建立上下文和进行编码,或者基于2D-VLC的上下文进 行编码,该技术的核心是上下文信息的使用及码表切换的方法。图1为现有的H.264标准中提出的变长编码方法的流程图,如图l所示,其具体步骤如下步 ...
【技术保护点】
一种变长编码方法,其特征在于,包括:获得输入数据块的残差系数序列,对该残差系数序列进行游程编码,得到非零系数level序列和出现在非零系数之前的零系数的个数run序列;对level序列和run序列分别进行游程编码,分别得到对 应的游程码字对,对得到的两游程码字对分别进行变长编码。
【技术特征摘要】
1、一种变长编码方法,其特征在于,包括获得输入数据块的残差系数序列,对该残差系数序列进行游程编码,得到非零系数level序列和出现在非零系数之前的零系数的个数run序列;对level序列和run序列分别进行游程编码,分别得到对应的游程码字对,对得到的两游程码字对分别进行变长编码。2、 如权利要求1所述的方法,其特征在于,所述对level序列进行游程编 码包括根据level序列中绝对值为1的level,对level序列进行游程编码。3、 如权利要求1或2所述的方法,其特征在于,所述对run序列进行游程 编码包括根据run序列中为0的run,对run序列进行游程编码。4、 如权利要求2所述的方法,其特征在于,所述根据level序列中绝对值 为1的level,对level序列进行游程编码包括记录level序列中各绝对值非1 的level,以及该level的相邻低频侧连续为1的level的个数levjos,得到(level, level_pos)序歹'J对。5、 如权利要求4所述的方法,其特征在于,所述记录level序列中各绝对 值非1的level,以及该level的相邻低频侧连续为1的level的个数lev_pos为 从level序列的高频端向低频端依次记录。6、 如权利要求3所述的方法,其特征在于,所述根据run序列中为0的run, 对run序列进行游程编码包括记录run序列中各非0的run的run,并记录该 run的相邻高频侧连续为0的run的个数run_pos,得到(run, run_pos)序列对。7、 如权利要求6所述的方法,其特征在于,所述记录各非0的run的run, 并记录该run的相邻高频侧连续为0的run的个数run_pos为从run序列的低 频端向高频端依次记录。8、 如权利要求l所述的方法,其特征在于,所述对level序列和run序 列分别进行游程编码之后、对得到的两游程码字对分别进行变长编码之前进 一步包括对输入数据块中的非零系数的个数进行变长编码。9、 如权利要求8所述的方法,其特征在于,所述对输入数据块中的非 零系数个数进行变长编码包括根据输入数据块的上块和左块中包含的非零 系数个数,对输入数据块中的非零系数个数进行邻块预测,根据该预测值选 择变长编码VCL表,根据该VLC表对输入数据块中的非零系数个数编码。10、 如权利要求8所述的方法,其特征在于,所述对level序列经游程编码 得到的游程码字对进行变长编码包括A1 、根据输入数据块所处的宏块采用的是帧内预测还是帧间预测选取 对应的2DJ/LC表,确定2D—VLC表中的第一张表为默认的初始码表,用 确定的2D—VLC码表对level序列经游程编码得到的当前游程码字对(level, lev_pos)序列对编码;Bl、判断是否所有(level, lev_pos)序列对已编码完毕,若是,用确 定的码表对(level, lev_pos)对的结束标志编码;否则,执行步骤Cl;Cl、根据该刚编码完的(level, lev—pos)序列对中的level的绝对值, 判断编码下一 (level, lev_pos)序列对所用的2D一VLC码表是否需要更新, 若是,根据所述绝对值,确定编码下一 (level, levjos)序列对所用的码表, 对下一 (level, lev_pos)序列对编码,转至步骤Bl;否则,采用与刚编码 完的(level, lev_pos)序列对相同的码表,对下一 (level, levjos)序列对 编码,转至步骤Bl。11、 如权利要求8所述的方法,其特征在于,所述对level序列和run 序列分别进行游程编码之后、对得到的两游程码字对分别进行变长编码之前 进一步包括对level序列的高频端绝对值连续为1的level的个数编码。12、 如权利要求11所述的方法,其特征在于,对level序列的高频端绝 对值连续为1的level的个数编码包括根据输入数据块中的非零系数个数 选择VLC表,根据该VLC表对level序列的高频端绝对值连续为1的level 的个数编码。13、 如权利要求11所述的方法,其特征在于,所述对levd序列经游程 编码得到的游程码字对进行变长编码包括A2、根据输入数据块所处的宏块采用的是帧内预测还是帧间预测选取 对应的2D—VLC表,确定2D一VLC表中的第一张表为默认的初始码表,用 确定的2D一VLC码表对level序列经游程编码得到的当前游程码字对(level, lev_pos)序列对编石马;B2、判断是否所有(level, lev_pos)序列对已编码完毕,若是,确定 (level, lev_pos)序列对编码结束;否则,执行步骤C2;C2、根据该刚编码完的(level, lev_pos )序列对中的level的绝对值, 判断编码下一 (level, lev_pos)序列对所用的2D—VLC码表是否需要更新, 若是,根据所述绝对值,确定编码下一 (level, levj)os)序列对所用的码表, 对下一 (level, lev_pos)序列对编码,转至步骤B2;否则,采用与刚编码 完的(level, lev_pos)序列对相同的码表,对下一 (level, lev_pos )序列对 编码,转至步骤B2。14、 如权利要求1或10或13所述的方法,其特征在于,所述对level 序列和run序列分别进行游程编码之后进一步包括从level序列的高频端 向低频端扫描,对绝对值为1的level的正负符号编码。15、 如权利要求14所述的方法,其特征在于,所述对绝对值为1的level 的正负符号编码包括当绝对值为1的level为正时,确定编码指示位为1; 当绝对值为1的level为负时,确定编码指示位为O。16、 如权利要求1或10或13所述的方法,其特征在于,所述对run序列 经游程编码得到的游程码字对进行变长编码包括A3、根据输入数据块所处的宏块采用的是帧内预测还是帧间预测选取 对应的2D一VLC表,确定2D—VLC表中的第 一 张表为默认的初始码表,用 确定的2D一VLC码表对run序列经游程编码得到的当前游程码字对(run, run_pos)序列对编码;B3、判断是否所有(run, run_pos)序列对已编码完毕,若是,用确定 的码表对(run, run_pos)对的结束标志编码;否则,执行步骤C3;C3、 # 据该刚编码完的(run, run_pos )序列对中的run值,判断编码下一(run, run_pos)序列对所用的2D—VLC码表是否需...
【专利技术属性】
技术研发人员:金欣,崔春晖,熊联欢,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:94[中国|深圳]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。