用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
jasonme的公告
都是一些自己的学习笔记,翻译文档以及实际项目中的心得,希望跟大家分享,也希望得到大家的指点和指正,欢迎大家联系我。 都是原创文,如果有转载的话,请注明,谢谢! email: jasonme@126.com
文章分类
Link
Jason搬家了,这里空间不再用了.新家点这里
存档

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

之后的过程下回来说.

发表于 @ 2005年08月17日 20:43:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:MPEG2代码分析Part1 初始化过程与外部框架 | 新一篇:数值逼近学习笔记

  • 发表评论
  • 评论内容:
  •  
Copyright © jasonme
Powered by CSDN Blog