关于level_idc

10 篇文章 0 订阅

今天看到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
依此类推.......

参考:http://blog.csdn.net/zhangji1983/article/details/1506603

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值