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

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).

之后的过程下回来说.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值