基于DSP的AVS视频编码算法优化与实现(13)
时间:2025-01-20
时间:2025-01-20
AVS
华北电力人学硕士学位论文
因为在8×8块中,如果只有一个非零系数那么编码的总开销一般会达到lO.12bit,从率失真的角度来考虑的话为了提高失真度而付出的码率代价太大,而且还会增加对该系数编码的时间。AVS中编码系数为二维(Run和Level),系数丌销与这两个值都有关系,本算法中对8×8块门限设定为3,这表示在一个8×8块中:(1)如果只有一个系数,且(Run,level)=(0,1),则该系数被丢弃。(2)如果有两个系数,(Run,level)=(1,1)或(4,1),则系数也被丢弃。同时,设定帧问编码的宏块系数门限为5。整个宏块的总系数丌销如果小于或等于5,则该宏块所有的非零系数都被丢弃,重构块等于预测块。
2.2.5熵编码
AVS熵编码采用自适应变长编码技术,所有的语法元素和残差数据都是以指数哥伦布码的形式映射成二进制比特流,可以很好的发挥指数哥伦伟码硬件复杂度低,可由闭合公式直接解析的优点。对预测残差的块变换系数,经扫描形成(Ievel、11ln)对串,进行二维联合编码.并可以根据当前level、mn的不同概率分布趋势,自适应改变指数哥伦布码的阶数【8】。
AVS定义了4种由指数哥伦布码映射到码流的方式。ue(v)为无符号整数语法元素,宏块类型mb_type、预测模式pred_mode以及一些运行标志等变量属于此类语法元素,其语法元素直接映射为要编码的值;se(v)是有符号整数语法元素,包括运动矢量、量化参数增量等;me(v)包括了4:2:O和4:2:2两种Yuv图像格式下的宏块CBP标志cbp和cbp422对应的宏块编码模式,代码中采用了直接查表方式获得要编码的值。ue(v),se(v)和me(v)描述的语法元素均使用O阶指数哥伦布码编码,在本代码中的实现函数是egwrite(int32CodeNum,Bitstream%itstream),其中第一个参数是待编码的值:第二个参数足编码比特流。ce(v)是对预测残差的块变换系数专门设定的映射规则,其描述的变长编码语法元素采用0阶、l阶、2阶或3阶指数哥伦布码,实现函数定义为blocklumaintra2Dvlc(AVSsyntaxelement宰se,int32j木leVel,in缁一t木run),blocK_luma-inter_2DVlc(AVS—syntaxelement se,int32一t}leVel,int8_t宰nln),和bloCK—chroma_2DVlc(AVS—syntaxelement幸se,int32j幸leVel,int8j木mn),入口参数分别是保存编码系数和元素值的全局变量、经扫描得到的残差块非零系数的幅值(1evel)和游程(run)。Level和run不是相互独立的事件,从扫描得到的数据能够观察到run随着level的逐渐减小而逐渐增大,因此二者之间存在着9