Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18104
  • 博文数量: 5
  • 博客积分: 286
  • 博客等级: 二等列兵
  • 技术积分: 40
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-05 22:20
文章分类

全部博文(5)

文章存档

2010年(5)

我的朋友
最近访客

分类:

2010-08-22 17:15:27

 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/linweig/archive/2009/12/22/5054019.aspx

首先解释一下cli_opt_t的这个_t代表结构图可能是type的意思。同时还有很多i_ b_等作为前缀的变量,其中的I_表示int类型的变量 b表示bool类型的。依次类推。
正式进入主题。
typedef struct {
    int b_progress;
    int i_seek;
    hnd_t hin;
    hnd_t hout;
    FILE *qpfile;
} cli_opt_t;
此结构体是记录一些与编码关系较小的设置信息的opt=option。结构体内部的变量都可以通过读取main()的参数获得。也就是argv。
b_progress表示一个bool类型的变量,看参数帮助 也就是x264--help你会知道,他是用来控制是否显示编码进度的一个东西。取值为0,1.
 
I_seek 整数类型 表示开始从哪一帧编码。因为不一定从这个文件的第一帧开始编码,这是可以控制的。
 
Hnd_t(hnd=handle)是一个空指针, void *在C语言里空指针是有几个特性的,他是一个一般化指针,可以指向任何一种类型,但却不能解引用,需要解引用的时候,需要进行强制转换。采用空指针的策略,应该是为了声明变量的简便和统一。
Hin 指向输入yuv文件的指针。
Hout 指向编码过后生成的文件的指针。
 
Qpfile 是一个指向文件类型的指针,他是文本文件,其每一行的格式是framenum frametype QP
用于强制指定某些帧或者全部帧的帧类型和QP(quant param量化参数)的值。
 
x264_param_default( ¶m );
这部分设置编码参数的缺省值
附结构体param中部分变量的意义:
    param->i_csp          = X264_CSP_I420; // 设置输入的视频采样的格式
param->vui.i_sar_width = 0;  //VUI:video usability information
    param->i_fps_num       = 10; //帧率
    param->i_fps_den       = 1;  //用两个整型的数的比值,来表示帧率
 
    /* Encoder parameters */
    param->i_frame_reference = 1; //参考帧的最大帧数。
    param->i_bframe = 0;          //两个参考帧之间的B帧数目。
    param->b_deblocking_filter = 1; //去块效应相关
 
    param->b_cabac = 0;            //cabac的开关
    param->i_cabac_init_idc = -1;
 
    param->rc.b_cbr = 1;           //constant bitrate 恒定码率控制模式
    param->rc.i_bitrate = 0;       //默认的码率
    param->rc.i_rc_buffer_size = 0;   //buffer的大小
    param->rc.i_rc_init_buffer = 0;   //
param->rc.i_rc_sens = 100;       ///* rate control sensitivity
 
param->rc.i_rc_method = X264_RC_NONE;  //码率控制,CQP(恒定质量)、//CRF(恒定码率)、ABR(平均码率)
param->rc.i_qp_constant = 26; //qp的初始值,最大最小的qp值,
    param->rc.i_qp_min = 10;           //最小的qp值
    param->rc.i_qp_max = 51;          //最大的qp值
param->rc.i_qp_step = 4;       //qp[步长step。
    param->rc.f_ip_factor = 1.4;  //ip--i帧p帧的qp的差值
    param->rc.f_pb_factor = 1.3;  //pb--p帧b帧的qp的差值
 
/* Log */ //整个param的一个log文件
 
    /*analyse */
param->analyse.intra = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8; 
//桢内分析
param->analyse.inter = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8                           |X264_ANALYSE_PSUB16x16 | X264_ANALYSE_BSUB16x16;
//桢间分析
param->analyse.i_direct_mv_pred = X264_DIRECT_PRED_SPATIAL;
//预测模式
param->analyse.i_me_method = X264_ME_HEX;      //运动估计模式
param->analyse.i_me_range = 16;              //运动估计范围
    param->analyse.i_subpel_refine = 5;
    param->analyse.b_chroma_me = 1;
    param->analyse.i_mv_range_thread = -1;
    param->analyse.i_mv_range = -1; // set from level_idc
    param->analyse.i_direct_8x8_inference = -1; // set from level_idc
    param->analyse.i_chroma_qp_offset = 0;
    param->analyse.b_fast_pskip = 1;
    param->analyse.b_dct_decimate = 1;
    param->analyse.i_luma_deadzone[0] = 21;
    param->analyse.i_luma_deadzone[1] = 11;
    param->analyse.b_psnr = 1;
    param->analyse.b_ssim = 1;
 
    param->i_cqm_preset = X264_CQM_FLAT;  //自定义量化矩阵(CQM),初始化量化模式为flat
 
 typedef struct
{
    /* In: force picture type (if not auto)
     *     If x264 encoding parameters are violated in the forcing of picture types,
     *     x264 will correct the input picture type and log a warning.
     *     The quality of frametype decisions may suffer if a great deal of fine-grained
     *     mixing of auto and forced frametypes is done.
     * Out: type of the picture encoded */
    int     i_type;
    /* In: force quantizer for > 0 */
    int     i_qpplus1;
    /* In: user pts, Out: pts of encoded picture (user)*/
    int64_t i_pts;
 
    /* In: raw data */
    x264_image_t img;
} x264_picture_t;
具体的含义理解参考了read_frame_yuv()x264_picture_alloc();
I_type 指明被编码图像的类型,有X264_TYPE_AUTO X264_TYPE_IDR         X264_TYPE_I X264_TYPE_P X264_TYPE_BREF X264_TYPE_B可供选择,初始化为AUTO,说明由x264在编码过程中自行控制。
I_qpplus1 :此参数减1代表当前画面的量化参数值。
I_pts :program time stamp 程序时间戳,指示这幅画面编码的时间戳。
Img :存放真正一副图像的原始数据。
 
typedef struct
{
    int     i_csp;
    int     i_plane;
    int     i_stride[4];
    uint8_t *plane[4];
} x264_image_t;
 
Csp: color space parameter 色彩空间参数 X264只支持I420
i_Plane 代表色彩空间的个数。一般为3,YUV,初始化为
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/linweig/archive/2009/12/22/5054019.aspx
阅读(833) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~