今天看到init_dpb()时有这么一行代码dpb.size= getDpbSize();
dpb.size表示什么含义我想大家都明白,这里我们关键看getDpbSize();
getDpbSize()函数一上来给pic_size赋值,这个仔细看应该也不难,接着就是我要讲的重点拉。
代码如下:
看到这里,我想大家应该有两个疑问:
1。这个case 10 11 20等值是怎么来的?
2。后面跟着size= 152064又是什么?
这部分要在 毕厚杰的书277页的附表3.1中找到
解答
1。大家注意:表的第一列级数1 1.1 1.2 1.3。。。。有没有跟case那边联系起来了
对的,1=10 1.1=11 1.2=12 1.3=13
2=20 2.1=21 2.2=22
3=30 3.1=31 3.2=32
4=40 4.1=41 4.2=42
5=50 5.1=51
2。大家看第四列最大解码缓冲区尺寸MaxDPB
152064=148.5*1024
345600=337.5*1024
依此类推.......
dpb.size表示什么含义我想大家都明白,这里我们关键看getDpbSize();
getDpbSize()函数一上来给pic_size赋值,这个仔细看应该也不难,接着就是我要讲的重点拉。
代码如下:
switch
(active_sps
->
level_idc)
//
第一帧IDR,这边是30
{
case 10 :
size = 152064 ;
break ;
case 11 :
size = 345600 ;
break ;
case 12 :
size = 912384 ;
break ;
case 13 :
size = 912384 ;
break ;
case 20 :
size = 912384 ;
break ;
case 21 :
size = 1824768 ;
break ;
case 22 :
size = 3110400 ;
break ;
case 30 :
size = 3110400 ;
break ;
case 31 :
size = 6912000 ;
break ;
case 32 :
size = 7864320 ;
break ;
case 40 :
size = 12582912 ;
break ;
case 41 :
size = 12582912 ;
break ;
case 42 :
size = 12582912 ;
break ;
case 50 :
size = 42393600 ;
break ;
case 51 :
size = 70778880 ;
break ;
default :
error ( " undefined level " , 500 );
break ;
}
{
case 10 :
size = 152064 ;
break ;
case 11 :
size = 345600 ;
break ;
case 12 :
size = 912384 ;
break ;
case 13 :
size = 912384 ;
break ;
case 20 :
size = 912384 ;
break ;
case 21 :
size = 1824768 ;
break ;
case 22 :
size = 3110400 ;
break ;
case 30 :
size = 3110400 ;
break ;
case 31 :
size = 6912000 ;
break ;
case 32 :
size = 7864320 ;
break ;
case 40 :
size = 12582912 ;
break ;
case 41 :
size = 12582912 ;
break ;
case 42 :
size = 12582912 ;
break ;
case 50 :
size = 42393600 ;
break ;
case 51 :
size = 70778880 ;
break ;
default :
error ( " undefined level " , 500 );
break ;
}
看到这里,我想大家应该有两个疑问:
1。这个case 10 11 20等值是怎么来的?
2。后面跟着size= 152064又是什么?
这部分要在 毕厚杰的书277页的附表3.1中找到
解答
1。大家注意:表的第一列级数1 1.1 1.2 1.3。。。。有没有跟case那边联系起来了
对的,1=10 1.1=11 1.2=12 1.3=13
2=20 2.1=21 2.2=22
3=30 3.1=31 3.2=32
4=40 4.1=41 4.2=42
5=50 5.1=51
2。大家看第四列最大解码缓冲区尺寸MaxDPB
152064=148.5*1024
345600=337.5*1024
依此类推.......