今天看到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
依此类推.......
转载请注明原文地址: https://ibbs.8miu.com/read-22567.html