原创 H.264中CAVLC解码过程详解

2008-9-8 13:45 4101 2 3 分类: 处理器与DSP

实例解析<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


{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_tokenNC查表(见标准表9-5),得到非零系数数目TotalCoeffs和拖尾系数数目TrailingOnes


NC = 1选择对应的表,Coeff_token0000100,查表得到TotalCoeffs=5 TrailingOnes="3"


输出序列:无


2.       解析拖尾系数


由第一步得到拖尾系数有3个,输入拖尾系数符号编码码流011,得到两个拖尾系数由先到后是1-1-1


输出序列:1-1-1


3.       解析除拖尾系数外的非零系数的幅值(level


(1)       确定后缀长度SuffixLength


(2)       根据码流查表9-6得到前缀LevelPrefix


(3)       根据前缀和后缀,得到LevelCode=(levelprefix<<suffixlength)+levelsuffix


(4)       Levelcode为偶数 level=(level+2)/2


Levelcode为奇数 level=(-level-1)/2


(5)       根据设定的阈值确定是否update Suffixlegth


回到例子中,按照逆序


i=0,Sufixlegth=0,查表9-61对应的前缀levelprefix=0levelcode=0,计算得到level=1,i++


i=1,sufixlegth=1,查表0010对应的前缀levelprefix=2,计算levelcode=4level=3,i++


i=2>=TotalCoeffs-TrailingOnes,除拖尾系数外的非零系数解析完毕


输出序列:311-1-1


4.       解析每个非零系数前零的个数


根据TotalCoeffs=5和输入码流111查表9-7得到TotalZeros=3


初始i=TotalCoeffs-1=4,zeroleft=TotalZeros=3,5个非零系数前零的数目解析如下:


i=4,zeroleft=3,根据码流10查表9-10,runbefor=1,输出序列:311-10-1


i=3,zeroleft=3-1=2,根据码流1查表runbefore=0,输出序列:311-10-1


i=2,zeroleft=2-0=2,根据码流1查表runbefore=0,输出序列:311-10-1


i=1,zeroleft=2-0=2,根据码流01查表runbefore=1,输出序列:3011-10-1


i=0,zeroleft=2-1=1,输出序列:03011-10-1


5.       解码完毕,将剩下的元素用0补齐,反序排列就可以得到4*4矩阵。


 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户461316 2008-9-19 23:15

不太了解这方面的技术哦@@@
相关推荐阅读
用户161194 2008-09-19 20:22
恩智浦宣布大中华区第二届恩智浦杯创新设计大赛复赛选手
恩智浦宣布大中华区第二届恩智浦杯创新设计大赛复赛选手技术分类: EDA工具与服务  | 2008-09-19 EDN China  恩智浦半导体(NXP Semiconductors,由飞利浦创建的独...
用户161194 2008-09-19 20:18
阻止你前进的只有你自己
    刚才去跑了跑,感觉甚爽。大口大口的吸气时,什么烦恼的事情都不会去想了,只感觉到脸颊上的汗珠一滴滴往下滑落。而当最后跑到精疲力尽时,发现在操场上散步是那么享受,这时思路是那么清楚,太美妙了,以后...
用户161194 2008-09-05 14:19
从这里开始我的工程师之路
        很久开通了,发现这里还不错,但大多都是讨论Cotex-M3的。        今天心情也不错,进入了恩智浦创新设计大赛的复赛。马上也要开学,以后多学点东西,踏踏实实做人,勤勤恳恳做事!...
EE直播间
更多
我要评论
1
2
关闭 站长推荐上一条 /3 下一条