新闻  |   论坛  |   博客  |   在线研讨会
关于CAVLC相关码表在JM程序实现的理解(转)
kuul | 2009-12-28 13:06:35    阅读:589   发布文章

在毕书CAVLC共六个表,其中表1.3和1.4是一个表.

 

 

对应JM86有五个函数:

 

 

writeSyntaxElement_NumCoeffTrailingOnes里有lentab[3][4][17] codtab[3][4][17] 对应1.1表

 

 

writeSyntaxElement_NumCoeffTrailingOnesChromaDC里有lentab[4][5] codtab[4][5] 对应1.1

 

 

writeSyntaxElement_TotalZeros里有lentab[TOTRUN_NUM][16] codtab[TOTRUN_NUM][16]对应1.3 1.4表

 

 

writeSyntaxElement_TotalZerosChromaDC里有lentab[3][4] codtab[3][4]对应1.5

 

 

writeSyntaxElement_Run里有lentab[TOTRUN_NUM][16] codtab[TOTRUN_NUM][16]对应1.6

 

 

lentab[3][4][17]对应码表的长度:如下分析

 

 

{ 1, 6, 8, 9,10,11,13,13,13,14,14,15,15,16,16,16,16},//对应trailingones=0,totalcoeff=1---16的长度值

 

 

{ 0, 2, 6, 8, 9,10,11,13,13,14,14,15,15,15,16,16,16},

 

 

{ 0, 0, 3, 7, 8, 9,10,11,13,13,14,14,15,15,16,16,16},

 

 

{ 0, 0, 0, 5, 6, 7, 8, 9,10,11,13,14,14,15,15,16,16},//对应trailingones=3totalcoeff=1---16的长度值

 

 

如此类推...

 

 

codtab[3][4][17]对应码表的实际码值:如下分析

 

 

{ 1, 5, 7, 7, 7, 7,15,11, 8,15,11,15,11,15,11, 7,4}, //对应trailingones=0,totalcoeff=1---16的码值

 

 

{ 0, 1, 4, 6, 6, 6, 6,14,10,14,10,14,10, 1,14,10,6},

 

 

{ 0, 0, 1, 5, 5, 5, 5, 5,13, 9,13, 9,13, 9,13, 9,5},

 

 

{ 0, 0, 0, 3, 3, 4, 4, 4, 4, 4,12,12, 8,12, 8,12,8},//对应trailingones=3totalcoeff=1---16的码值

 

 

如此类推...

 

 

writeSyntaxElement_NumCoeffTrailingOnesChromaDC里有lentab[4][5] codtab[4][5] 对应1.1 表nc=-1的情况.

 

 

同理可推:

 

 

int lentab[TOTRUN_NUM][16] =

 

 

    { 1,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9}, //对应totalcoeff=1,total_zer0=0---15

 

 

    { 3,3,3,3,3,4,4,4,4,5,5,6,6,6,6},  

 

 

    { 4,3,3,3,4,4,3,3,4,5,5,6,5,6},  

 

 

    { 5,3,4,4,3,3,3,4,3,4,5,5,5},  

 

 

    { 4,4,4,3,3,3,3,3,4,5,4,5},  

 

 

    { 6,5,3,3,3,3,3,3,4,3,6},  

 

 

    { 6,5,3,3,3,2,3,4,3,6},  

 

 

    { 6,4,5,3,2,2,3,3,6},  

 

 

    { 6,6,4,2,2,3,2,5},  

 

 

    { 5,5,3,2,2,2,4},  

 

 

    { 4,4,3,3,1,3},  

 

 

    { 4,4,2,1,3},  

 

 

    { 3,3,1,2},  

 

 

    { 2,2,1},  

 

 

{ 1,1},  //对应totalcoeff=15 ,total_zero=0-1

 

 

表1.2很有规律,没必要在这里说了.

 

 

理解的关键是分别看作码字的长度和码字代表的实际值!

 

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客