x264參數配置-preset

x264中preset等級有10個,表示編碼速度的快慢。
相比tune,preset主要調節lookahead長度參考幀列表幀數量可用宏塊劃分模式運動搜索方法運動搜索窗口下采樣質量是否使用B幀是否自適應B幀連續B幀數量權重預測方法direct方法trellis量化是否子塊獨立參考幀

static const char * const x264_preset_names[] = { 
"ultrafast", "superfast",  "veryfast", 
 "faster",  "fast",  "medium",  "slow", 
 "slower",  "veryslow",   "placebo", 0 };

ultrafast

 if( !strcasecmp( preset, "ultrafast" ) )	//特快
    {
        param->i_frame_reference = 1;		//參考幀數量1
        param->i_scenecut_threshold = 0;	//不使用場景切換判斷
        param->b_deblocking_filter = 0;		//關閉環路濾波
        param->b_cabac = 0;					//使用cavlc
        param->i_bframe = 0;				//不適用B幀
        param->analyse.intra = 0;			//不允許intra子塊劃分,只能能有16x16
        param->analyse.inter = 0;			//不允許inter子塊劃分,只能有16x16和skip
        param->analyse.b_transform_8x8 = 0;			//不使用8x8dct
        param->analyse.i_me_method = X264_ME_DIA;	//菱形搜索運動估計
        param->analyse.i_subpel_refine = 0;			//不允許下采樣運動搜索
        param->rc.i_aq_mode = 0;					//不使用adaptive qp
        param->analyse.b_mixed_references = 0;		//不允許宏塊各劃分子塊獨立參考
        param->i_bframe_adaptive = X264_B_ADAPT_NONE;//不使用B幀自適應
        param->rc.b_mb_tree = 0;					//不使用宏塊樹
        param->analyse.i_weighted_pred = X264_WEIGHTP_NONE;//
        param->analyse.b_weighted_bipred = 0;
        param->rc.i_lookahead = 0;					//碼控lookahead隊列大小0
    }

superfast

    else if( !strcasecmp( preset, "superfast" ) )	//超快
    {
		//這間參考只允許intra8x8和intra4x4
        param->analyse.inter = X264_ANALYSE_I8x8|X264_ANALYSE_I4x4;
        param->analyse.i_me_method = X264_ME_DIA;	//鑽石搜索
        param->analyse.i_subpel_refine = 1;			//允許下采樣運動搜索
        param->i_frame_reference = 1;				//參考幀列表1幀
        param->analyse.b_mixed_references = 0;		//不允許宏塊各劃分子塊獨立參考
        param->analyse.i_trellis = 0;				//不適用trellis量化
        param->rc.b_mb_tree = 0;					//不允許宏塊樹
        param->analyse.i_weighted_pred = X264_WEIGHTP_SIMPLE;//P幀權重預測
        param->rc.i_lookahead = 0;					//lookahead隊列長度0
    }

veryfast

    else if( !strcasecmp( preset, "veryfast" ) )
    {
        param->analyse.i_subpel_refine = 2;			//下采樣進度2
        param->i_frame_reference = 1;				//參考幀列表1幀
        param->analyse.b_mixed_references = 0;		//不允許宏塊各劃分子塊獨立參考幀
        param->analyse.i_trellis = 0;				//不適用trellis量化
        param->analyse.i_weighted_pred = X264_WEIGHTP_SIMPLE;//P幀權重預測
        param->rc.i_lookahead = 10;					//lookahead隊列長度10
    }

faster

    else if( !strcasecmp( preset, "faster" ) )
    {
        param->analyse.b_mixed_references = 0;	//不允許宏塊各劃分子塊獨立參考幀
        param->i_frame_reference = 2;			//參考幀列表2幀
        param->analyse.i_subpel_refine = 4;		//下采樣精度4
        param->analyse.i_weighted_pred = X264_WEIGHTP_SIMPLE;//P幀權重預測simple
        param->rc.i_lookahead = 20;			//lookahead隊列長度20
    }

fast

    else if( !strcasecmp( preset, "fast" ) )
    {
        param->i_frame_reference = 2;		//參考幀列表2幀
        param->analyse.i_subpel_refine = 6;	//下采樣質量6
        param->analyse.i_weighted_pred = X264_WEIGHTP_SIMPLE;//P幀權重預測simple
        param->rc.i_lookahead = 30;		//lookahead隊列30幀
    }

medium

    else if( !strcasecmp( preset, "medium" ) )
    {
        /* Default is medium 
		   默認即medium */
    }

slow

    else if( !strcasecmp( preset, "slow" ) )
    {
        param->analyse.i_subpel_refine = 8;//下采樣質量8
        param->i_frame_reference = 5;	//參考幀列表最多5幀
        param->analyse.i_direct_mv_pred = X264_DIRECT_PRED_AUTO;//direct預測模式自動
        param->analyse.i_trellis = 2;	//trellis量化 2
        param->rc.i_lookahead = 50;		//lookhead隊列50幀
    }

slower

    else if( !strcasecmp( preset, "slower" ) )
    {
        param->analyse.i_me_method = X264_ME_UMH;	//運動搜索方法爲非對稱十字六邊形網絡搜索
        param->analyse.i_subpel_refine = 9;		//下采樣質量9
        param->i_frame_reference = 8;		//參考幀列表8幀
        param->i_bframe_adaptive = X264_B_ADAPT_TRELLIS;//使用viterbi最優路徑自適應決定B幀
        param->analyse.i_direct_mv_pred = X264_DIRECT_PRED_AUTO;
        param->analyse.inter |= X264_ANALYSE_PSUB8x8;	//允許低於8x8的inter,即8x4,4x8,4x4
        param->analyse.i_trellis = 2;					//trellis量化 2
        param->rc.i_lookahead = 60;				//lookahead隊列60幀
    }

veryslow

    else if( !strcasecmp( preset, "veryslow" ) )
    {
        param->analyse.i_me_method = X264_ME_UMH;//運動搜索方法爲非對稱十字六邊形網絡搜索
        param->analyse.i_subpel_refine = 10;	//下采樣質量10
        param->analyse.i_me_range = 24;		//運動搜索範圍24像素
        param->i_frame_reference = 16;		//參考幀列表16幀
        param->i_bframe_adaptive = X264_B_ADAPT_TRELLIS;	//使用viterbi最優路徑自適應決定B幀
        param->analyse.i_direct_mv_pred = X264_DIRECT_PRED_AUTO;//direct預測模式自動
        param->analyse.inter |= X264_ANALYSE_PSUB8x8;	//允許低於8x8的inter,即8x4,4x8,4x4
        param->analyse.i_trellis = 2;			//trellis量化 2
        param->i_bframe = 8;					//允許最多個連續B幀
        param->rc.i_lookahead = 60;				//lookahead隊列60幀
    }

placebo

    else if( !strcasecmp( preset, "placebo" ) )
    {
        param->analyse.i_me_method = X264_ME_TESA;	//運動估計方法爲TESA
        param->analyse.i_subpel_refine = 11;	//下采樣運動估計質量11
        param->analyse.i_me_range = 24;			//整像素運動搜索範圍
        param->i_frame_reference = 16;			//參考幀數量16
        param->i_bframe_adaptive = X264_B_ADAPT_TRELLIS;	//自適應B幀TRELLIS方法
        param->analyse.i_direct_mv_pred = X264_DIRECT_PRED_AUTO;//direct預測模式自動
        param->analyse.inter |= X264_ANALYSE_PSUB8x8;	//允許低於8x8的inter,即8x4,4x8,4x4
        param->analyse.b_fast_pskip = 0;		//關閉快速pskip決定
        param->analyse.i_trellis = 2;			//trellis量化 2
        param->i_bframe = 16;					//允許最多16個連續B幀
        param->rc.i_lookahead = 60;				//lookahead隊列60幀
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章