基于上下文可变长编码介绍.doc_第1页
基于上下文可变长编码介绍.doc_第2页
基于上下文可变长编码介绍.doc_第3页
基于上下文可变长编码介绍.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CAVLC编码过程详解Sunrise编码过程: 假设有一个4*4数据块 0, 3, -1, 0, 0, -1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0 数据重排列:0,3,0,1,-1,-1,0,1,0 1) 初始值设定: 非零系数的数目(TotalCoeffs) = 5; 拖尾系数的数目(TrailingOnes)= 3; 最后一个非零系数前零的数目(Total_zeros) = 3; 变量NC=1; (说明:NC值的确定:色度的直流系数NC=-1;其他系数类型NC值是根据当前块左边4*4块的非零系数数目(NA)当前块上面4*4块的非零系数数目(NB)求得的,见毕厚杰书P120表6.10) suffixLength = 0; i = TotalCoeffs = 5; 2) 编码coeff_token: 查标准(BS ISO/IEC 14496-10:2003)Table 9-5,可得: If (TotalCoeffs = 5 & TrailingOnes = 3 & 0 = NC 2) coeff_token = 0000 100; Code = 0000 100; 3) 编码所有TrailingOnes的符号: 逆序编码,三个拖尾系数的符号依次是(0),(1),(1); 即: TrailingOne signi- = 0; TrailingOne signi- = 1; TrailingOne signi- = 1; Code = 0000 1000 11; 4) 编码除了拖尾系数以外非零系数幅值Levels: 过程如下: (1)将有符号的Level i 转换成无符号的levelCode; 如果Level i 是正的,levelCode = (Level i 1) 2;如果Level i 是负的,levelCode = - (Level i 1) 1; (2)计算level_prefix:level_prefix = levelCode / (1suffixLength); 查表9-6可得所对应的bit string; (3)计算level_suffix:level_suffix = levelCode % (1 (3suffixLength-1) & suffixLength 6) suffixLength+; 回到例子中,依然按照逆序,Leveli- = 1;(此时i = 1) levelCode = 0;level_prefix = 0; 查表9-6,可得level_prefix = 0时对应的bit string = 1; 因为suffixLength初始化为0,故该Level没有后缀; 因为suffixLength = 0,故suffixLength+; Code = 0000 1000 111; 编码下一个Level:Level0 = 3; levelCode = 4;level_prefix = 2;查表得bit string = 001; level_suffix = 0;suffixLength = 1;故码流为0010; Code = 0000 1000 1110 010; i = 0,编码Level结束。 5)编码最后一个非零系数前零的数目(TotalZeros): 查表9-7,当TotalCoeffs = 5,total_zero = 3时,bit string = 111; Code = 0000 1000 1110 0101 11; 6) 对每个非零系数前零的个数(RunBefore)进行编码: i = TotalCoeffs = 5;ZerosLeft = Total_zeros = 3;查表9-10: 依然按照逆序编码 ZerosLeft =3, run_before = 1 run_before4=10; ZerosLeft =2, run_before = 0 run_before3=1; ZerosLeft =2, run_before = 0 run_before2=1; ZerosLeft =2, run_before = 1 run_before1=01; ZerosLeft =1, run_before = 1 run_before0不需要码流来表示 Code = 0000 1000 1110 0101 1110 1101; 编码完毕。 H.264中CAVLC解码过程详解实例解析0 3 -1 0 0 -1 1 0 1 0 0 0 0 0 0 0 NC = 1编码后得到输出码流为:0000 1000 1110 0101 1110 1101解码详细过程如下:1. 根据Coeff_token和NC查表(见标准表9-5),得到非零系数数目TotalCoeffs和拖尾系数数目TrailingOnesNC = 1选择对应的表,Coeff_token为0000100,查表得到TotalCoeffs=5 TrailingOnes=3输出序列:无2. 解析拖尾系数由第一步得到拖尾系数有3个,输入拖尾系数符号编码码流011,得到两个拖尾系数由先到后是1,-1,-1输出序列:1,-1,-13. 解析除拖尾系数外的非零系数的幅值(level)(1) 确定后缀长度SuffixLength(2) 根据码流查表9-6得到前缀LevelPrefix(3) 根据前缀和后缀,得到LevelCode=(levelprefix=TotalCoeffs-TrailingOnes,除拖尾系数外的非零系数解析完毕输出序列:3,1,1,-1,-14. 解析每个非零系数前零的个数根据TotalCoeffs=5和输入码流111查表9-7得到TotalZeros=3初始i=TotalCoeffs-1=4,zeroleft=TotalZeros=3,5个非零系数前零的数目解析如下:i=4,zeroleft=3,根据码流10查表9-10,runbefor=1,输出序列:3,1,1,-1,0,-1i=3,zeroleft=3-1=2,根据码流1查表runbefore=0,输出序列:3,1,1,-1,0,-1i=2,zeroleft=2-0=2,根据码流1查表runbefore=0,输出序列:3,1,1,-1,0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论