关于level

    技术2022-05-11  55

    今天看到init_dpb()时有这么一行代码dpb.size= getDpbSize(); 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;   } 看到这里,我想大家应该有两个疑问: 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 依此类推.......  

    最新回复(0)