x264设置默认参数
来源:互联网 发布:王者荣耀代练接单软件 编辑:程序博客网 时间:2024/05/19 23:58
x264通过代码设置默认参数
void x264_param_default( x264_param_t *param ){ /* */ memset( param, 0, sizeof( x264_param_t ) ); /* CPU autodetect */ /* 自动检测cpu的数量 */ param->cpu = x264_cpu_detect(); /* 自动设置线程的数量 */ param->i_threads = X264_THREADS_AUTO; /* 自动设置向前看线程的数量 */ param->i_lookahead_threads = X264_THREADS_AUTO; /* 使用与cpu相关的非确定性优化 */ param->b_deterministic = 1; /* 前向缓存的帧的数量 */ param->i_sync_lookahead = X264_SYNC_LOOKAHEAD_AUTO; /* Video properties */ /* 默认是I420(YUV420) */ param->i_csp = X264_CHROMA_FORMAT ? X264_CHROMA_FORMAT : X264_CSP_I420; param->i_width = 0; param->i_height = 0; param->vui.i_sar_width = 0; param->vui.i_sar_height= 0; /* 过扫描未定义 */ param->vui.i_overscan = 0; /* undef */ param->vui.i_vidformat = 5; /* undef */ param->vui.b_fullrange = -1; /* default depends on input */ param->vui.i_colorprim = 2; /* undef */ param->vui.i_transfer = 2; /* undef */ param->vui.i_colmatrix = -1; /* default depends on input */ param->vui.i_chroma_loc= 0; /* left center */ /* fps默认是25 */ param->i_fps_num = 25; param->i_fps_den = 1; param->i_level_idc = -1; /* 默认不使用slice(即一个frame只有一个slice) */ param->i_slice_max_size = 0; param->i_slice_max_mbs = 0; param->i_slice_count = 0; /* Encoder parameters */ /* 默认参考帧的数量 3 */ param->i_frame_reference = 3; /* GOPsize的大小 250 */ param->i_keyint_max = 250; /* keyint_min 默认是0 */ param->i_keyint_min = X264_KEYINT_MIN_AUTO; /* 默认B帧数量 3 */ param->i_bframe = 3; /* 判断场景切换的阈值:40 */ param->i_scenecut_threshold = 40; /* 自适应的B帧判断:true */ param->i_bframe_adaptive = X264_B_ADAPT_FAST; /* B帧代替P帧的概率(从-100到100),默认是0,表示比较平衡 */ param->i_bframe_bias = 0; /* 是否允许B帧也做为参考帧:normal(不允许) */ param->i_bframe_pyramid = X264_B_PYRAMID_NORMAL; /* 不使用场编码,只使用帧编码 */ param->b_interlaced = 0; /* 不强迫进行帧内预测 */ param->b_constrained_intra = 0; /* 使用去方块滤波 */ param->b_deblocking_filter = 1; /* 去方块滤波的参数都是0 */ param->i_deblocking_filter_alphac0 = 0; param->i_deblocking_filter_beta = 0; /* 使用cabac作为熵编码算法 */ param->b_cabac = 1; param->i_cabac_init_idc = 0; /* 使用CRF作为默认的熵编码算法 */ param->rc.i_rc_method = X264_RC_CRF; /* 比特率,这里没有设置 */ param->rc.i_bitrate = 0; /* 允许的平均码率误差 */ param->rc.f_rate_tolerance = 1.0; /* 平均码率下,最大的瞬时码率 */ param->rc.i_vbv_max_bitrate = 0; /* 码率控制缓冲区的大小 */ param->rc.i_vbv_buffer_size = 0; /* 设置码率控制缓冲区(VBV)缓冲达到多满(百分比),才开始播放,0.9 */ param->rc.f_vbv_buffer_init = 0.9; /* P帧的量化值 */ param->rc.i_qp_constant = 23 + QP_BD_OFFSET; /* 实际的质量 */ param->rc.f_rf_constant = 23; param->rc.i_qp_min = 0; param->rc.i_qp_max = QP_MAX; /* 量化步长,相邻两帧的量化值的最大差值,4 */ param->rc.i_qp_step = 4; /* I帧P帧间的量化因子比值 */ param->rc.f_ip_factor = 1.4; /* P帧和B帧间的量化因子的比值 */ param->rc.f_pb_factor = 1.3; /* 自适应的量化模式,开启 */ param->rc.i_aq_mode = X264_AQ_VARIANCE; /* 自适应量化的强度 1.0 */ param->rc.f_aq_strength = 1.0; /* 决定mbtree向前预测的帧数 40 */ param->rc.i_lookahead = 40; param->rc.b_stat_write = 0; param->rc.psz_stat_out = "x264_2pass.log"; param->rc.b_stat_read = 0; param->rc.psz_stat_in = "x264_2pass.log"; /* 量化曲线压缩参数,会影响mbtree的强度,0.0表示恒定比特率,1.0表示恒定QP * 更高的值表示更弱的mbtree,qcomp=1.0时,mbtree=0 * 默认是0.6 */ param->rc.f_qcompress = 0.6; /* 时间上模糊量化,减少QP的波动 * 默认0.5,仅用于2pass的第二遍 */ param->rc.f_qblur = 0.5; /* 把给定的值作为高斯模糊的半径,应用到量化曲线上,这意味着分配给帧的QP会被它附近的帧的QP平均掉 * 这样会达到限制QP波动的效果 * 默认是20,仅用于2pass的第二遍 */ param->rc.f_complexity_blur = 20; param->rc.i_zones = 0; /* 默认开启mbtree */ param->rc.b_mb_tree = 1; /* Log */ param->pf_log = x264_log_default; param->p_log_private = NULL; param->i_log_level = X264_LOG_INFO; /* */ /* 帧内分析:4x4、8x8 */ param->analyse.intra = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8; /*帧间分析:4x4、8x8,P16x16,B16x16 */ param->analyse.inter = X264_ANALYSE_I4x4 | X264_ANALYSE_I8x8 | X264_ANALYSE_PSUB16x16 | X264_ANALYSE_BSUB16x16; /* 默认使用空间的direct mv预测 */ param->analyse.i_direct_mv_pred = X264_DIRECT_PRED_SPATIAL; /* 默认使用HEX作为运动搜索算法 */ param->analyse.i_me_method = X264_ME_HEX; /* Psy优化强度,可以增强细节 * 默认是1.0 */ param->analyse.f_psy_rd = 1.0; /* 使用Psy优化 */ param->analyse.b_psy = 1; /* Psy Trellis强度。默认是0 */ param->analyse.f_psy_trellis = 0; /* 运动搜索的范围,默认16 */ param->analyse.i_me_range = 16; /* 亚像素运动估计的质量(精度) */ param->analyse.i_subpel_refine = 7; /* 是否允许每个宏块的分区有自己的参考编号,允许 */ param->analyse.b_mixed_references = 1; /* 使用 亚像素色度运动估计和P帧的模式选择 */ param->analyse.b_chroma_me = 1; /* 线程之间的最小运动向量缓存,编码器自动设置 */ param->analyse.i_mv_range_thread = -1; /* 运动向量的取值范围,由level决定 */ param->analyse.i_mv_range = -1; // set from level_idc /* 色度量化步长的偏移量,0 */ param->analyse.i_chroma_qp_offset = 0; /* 快速P帧跳过检测,开启 */ param->analyse.b_fast_pskip = 1; /* B帧的权值是隐式的还是显示的,隐式的 */ param->analyse.b_weighted_bipred = 1; /* 权重预测中,P帧的权值,2 */ param->analyse.i_weighted_pred = X264_WEIGHTP_SMART; /* P帧变换系数阈值,1 */ param->analyse.b_dct_decimate = 1; /* 使用8x8的DCT变换 */ param->analyse.b_transform_8x8 = 1; /* 使用trellis优化,可以提高图像质量 * Trellis量化提高效率,对每个8x8的块寻找合适的量化值,需要CABAC, * 0 :即关闭 1:只在最后编码时使用 2:在所有模式决策上启用 */ param->analyse.i_trellis = 1; /* 亮度盲区的尺寸 */ param->analyse.i_luma_deadzone[0] = 21; param->analyse.i_luma_deadzone[1] = 11; param->analyse.b_psnr = 0; param->analyse.b_ssim = 0; /* 自定义的量化矩阵,默认是flat */ param->i_cqm_preset = X264_CQM_FLAT; /* 量化矩阵,只有i_cqm_preset是custom时,才有效 */ memset( param->cqm_4iy, 16, sizeof( param->cqm_4iy ) ); memset( param->cqm_4py, 16, sizeof( param->cqm_4py ) ); memset( param->cqm_4ic, 16, sizeof( param->cqm_4ic ) ); memset( param->cqm_4pc, 16, sizeof( param->cqm_4pc ) ); memset( param->cqm_8iy, 16, sizeof( param->cqm_8iy ) ); memset( param->cqm_8py, 16, sizeof( param->cqm_8py ) ); memset( param->cqm_8ic, 16, sizeof( param->cqm_8ic ) ); memset( param->cqm_8pc, 16, sizeof( param->cqm_8pc ) ); /* 是否复制sps和pps放在每个关键帧的前面,默认是true */ param->b_repeat_headers = 1; /* nalu是否符合标准 * 值为true,则NALU之前是4字节前缀码0x00000001;值为false,则NALU之前的4个字节为NALU长度 */ param->b_annexb = 1; /* 是否生成nalu分隔符,不产生 */ param->b_aud = 0; /* VFR输入。1 :时间基和时间戳用于码率控制 0 :仅帧率用于码率控制 */ param->b_vfr_input = 1; /* 验编码器产生的符合该标准的NAL单元流或字节流的偏差值。蓝光视频、电视广播及其它特殊领域有此要求 */ param->i_nal_hrd = X264_NAL_HRD_NONE; param->b_tff = 1; /* 强制在Picture Timing SEI传送pic_struct. 默认是未开启 */ param->b_pic_struct = 0; /* 将视频流标记为交错(隔行),哪怕并非为交错式编码。可用于编码蓝光兼容的25p和30p视频。默认是未开启 */ param->b_fake_interlaced = 0; /* 编码3D视频时,此参数在码流中插入一个标志,告知解码器此3D视频是如何封装的 */ param->i_frame_packing = -1; param->b_opencl = 0; param->i_opencl_device = 0; param->opencl_device_id = NULL; param->psz_clbin_file = NULL;}
阅读全文
0 0
- x264设置默认参数
- x264参数
- 设置COM接口默认参数
- vc6下x264设置工作目录和程序参数
- 函数调用时设置默认参数
- Lua 之 奇葩的默认参数 设置
- firefox设置Accept参数和默认字符集
- js 函数设置默认参数值
- matplotlib设置默认参数和属性cycle
- x264命令行参数解释
- x264命令行参数解释
- x264命令行参数解释
- x264命令行参数解释
- x264命令行参数解释
- x264参数解释
- x264参数解释
- x264参数解释
- x264参数解释
- 我们为什么要使用 AOP
- 作业3
- <转>idear中解决SpringMVC开发过程中的中文乱码问题
- VRTK 瞬移
- mysql】count(*),count(1)与count(column)区别
- x264设置默认参数
- rtabmap_ros 下使用kinect xbox360 测试(一)
- ZF-学习笔记(2)
- git使用小结
- ligerui 实现二级联动代码简单
- 饥饿的奶牛
- iOS8新特性Self Sizing Cells,使用estimatedRowHeight自适应cell
- Struts2 将对象推入到值栈
- Software 2 parking Application