MPEG2代码分析Part2 编码前的初始化与序列头的格式

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

Rate Control

rc_init_seq()

关于Reaction Parameter:

Reaction Parameter帮助编码器动态调整编码时的QP值。对于图像复杂度小的图像来说,使用更大的reaction parameter,这时会有更小的QP值,这样编码的时候更为细节化,如果reaction parameter小,那么QP值较大,这时编码就会比较粗糙。

关于average activity

对于一个宏块来说,它的activity值为4个8x8块中的activity中的最小值。它本身是用在最近编码块的归一化过程中的。

关于global complexity

global complexity是用来对不同的帧类型(I,P,B)进行全局复杂度计量而设定的一些权重(Xi,Xp,Xb),I帧给的权重最大,B帧的权重最小,

在rc初始化之后,开始写序列头,头格式从头向下:

内容 长度(位) 值

序列开始码 32 0x1B3L

水平长度 12

垂直长度 12

aspect ratio 4

帧率码 4

码率值 18

标志位 1 1

vbv缓冲大小 10

强制参数标志 1

之下,如有intra量化表和非intra量化表的话,把量化矩阵写在码流头中。

如非mpeg1码流的话,写入extension码流部分

内容 长度(位) 值

EXT开始码 32 0x1B5L

SEQ_ID 4 1

profile&level 8

prog序列标识 1

chroma格式 2

水平大小扩展 2

垂直大小扩展 2

码率扩展 12

标记位 1

vbv缓冲扩展 8

low_delay 1

帧率扩展_n 2

帧率扩展_d 5

写入显示扩展属性

内容 长度(位) 值

EXT开始码 32 0x1B5L

DISP_ID 4 2

视频格式 3

色描述 1

colourprimaries 8

传输特性 8

矩阵系数 8

显示水平大小 14

标记位 1

显示垂直大小 14

写入用户数据

内容 长度(位) 值

USER_START_CODE 32 0x1B2L

写出用户ID串

至此序列头写出完毕。

之后开始对源数据流中的所有的帧开始编码。

编码阶段首先取得当前GOP中的最小的帧号,初始在par文件中指定一个GOP中的帧数N和I与P帧之间的距离M.那么当前GOP中的最小帧号为 N*((curr_frame_no+(M-1))/N)-(M-1).

之后的过程下回来说.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航