Main(int argc,char *argv[]);
为了方便起见,不妨改写为:
Main(void){
......
int argc=5;
char *argv[]={
"main","-o","test.264","foreman.yuv","352x288"
};
......
}
====================================
1.x264_param_default( ¶m );
这部分设置编码参数的缺省值
附部分变量的意义:
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; //用两个整型的数的比值,来表示帧率
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; // //整个param的一个log文件
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