# HG changeset patch # User Aarthi Thirumalai # Date 1406899062 -19800 # Fri Aug 01 18:47:42 2014 +0530 # Node ID fc35093c609f35efab5f62cad43e5567a6127735 # Parent 1e6f57c1d2fae37f1bbb813c0a01091195117e98 rc: add slow first pass as a cli. set turbo(faster) first pass as default in 2 pass.
diff -r 1e6f57c1d2fa -r fc35093c609f source/CMakeLists.txt --- a/source/CMakeLists.txt Fri Aug 01 18:45:57 2014 +0530 +++ b/source/CMakeLists.txt Fri Aug 01 18:47:42 2014 +0530 @@ -19,7 +19,7 @@ include(CheckCXXCompilerFlag) # X265_BUILD must be incremented each time the public API is changed -set(X265_BUILD 29) +set(X265_BUILD 30) configure_file("${PROJECT_SOURCE_DIR}/x265.def.in" "${PROJECT_BINARY_DIR}/x265.def") configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in" diff -r 1e6f57c1d2fa -r fc35093c609f source/common/param.cpp --- a/source/common/param.cpp Fri Aug 01 18:45:57 2014 +0530 +++ b/source/common/param.cpp Fri Aug 01 18:47:42 2014 +0530 @@ -191,6 +191,7 @@ param->rc.statFileName = NULL; param->rc.complexityBlur = 20; param->rc.qblur = 0.5; + param->rc.bEnableSlowFirstPass = 0; /* Quality Measurement Metrics */ param->bEnablePsnr = 0; @@ -351,6 +352,7 @@ param->searchMethod = X265_STAR_SEARCH; param->bEnableTransformSkip = 1; param->maxNumReferences = 5; + param->rc.bEnableSlowFirstPass = 1; // TODO: optimized esa } else @@ -640,6 +642,7 @@ OPT("input-csp") p->internalCsp = parseName(value, x265_source_csp_names, bError); OPT("me") p->searchMethod = parseName(value, x265_motion_est_names, bError); OPT("cutree") p->rc.cuTree = atobool(value); + OPT("slow-firstpass") p->rc.bEnableSlowFirstPass = atobool(value); OPT("sar") { p->vui.aspectRatioIdc = parseName(value, x265_sar_names, bError); @@ -1020,6 +1023,21 @@ return check_failed; } +void x265_param_apply_fastfirstpass(x265_param* param) +{ + /* Set faster options in case of turbo firstpass. */ + if (param->rc.bStatWrite && !param->rc.bStatRead) + { + param->maxNumReferences = 1; + param-> bEnableRectInter = 0; + param->bEnableAMP = 0; + param->searchMethod = X265_DIA_SEARCH; + param->subpelRefine = X265_MIN(2, param->subpelRefine); + param->bEnableEarlySkip = 1; + } + +} + int x265_set_globals(x265_param *param) { uint32_t maxCUDepth = (uint32_t)g_convertToBit[param->maxCUSize]; diff -r 1e6f57c1d2fa -r fc35093c609f source/common/param.h --- a/source/common/param.h Fri Aug 01 18:45:57 2014 +0530 +++ b/source/common/param.h Fri Aug 01 18:47:42 2014 +0530 @@ -34,6 +34,7 @@ void setParamAspectRatio(x265_param *p, int width, int height); void getParamAspectRatio(x265_param *p, int& width, int& height); bool parseLambdaFile(x265_param *param); +void x265_param_apply_fastfirstpass(x265_param *p); /* this table is kept internal to avoid confusion, since log level indices start at -1 */ static const char * const logLevelNames[] = { "none", "error", "warning", "info", "debug", "full", 0 }; diff -r 1e6f57c1d2fa -r fc35093c609f source/x265.cpp --- a/source/x265.cpp Fri Aug 01 18:45:57 2014 +0530 +++ b/source/x265.cpp Fri Aug 01 18:47:42 2014 +0530 @@ -198,6 +198,7 @@ { "nr", required_argument, NULL, 0 }, { "stats", required_argument, NULL, 0 }, { "pass", required_argument, NULL, 0 }, + { "slow-firstpass", no_argument, NULL,0 }, { 0, 0, 0, 0 } }; @@ -426,6 +427,7 @@ " - 1 : First pass, cretes stats file\n" " - 2 : Last pass, does not overwrite stats file\n" " - 3 : Nth pass, overwrites stats file\n"); + H0(" --[no-]slow-firstpass Enable a slow first pass in a multipass rate control mode. Default %s\n", OPT(param->rc.bEnableSlowFirstPass)); H0(" --scaling-list <string> Specify a file containing HM style quant scaling lists or 'default' or 'off'. Default: off\n"); H0(" --lambda-file <string> Specify a file containing replacement values for the lambda tables\n"); H0(" MAX_MAX_QP+1 floats for lambda table, then again for lambda2 table\n"); @@ -719,7 +721,8 @@ x265_log(NULL, X265_LOG_ERROR, "failed to open bitstream file <%s> for writing\n", bitstreamfn); return true; } - + if (!param->rc.bEnableSlowFirstPass) + x265_param_apply_fastfirstpass(param); return false; } diff -r 1e6f57c1d2fa -r fc35093c609f source/x265.h --- a/source/x265.h Fri Aug 01 18:45:57 2014 +0530 +++ b/source/x265.h Fri Aug 01 18:47:42 2014 +0530 @@ -798,6 +798,9 @@ /* temporally blur complexity */ double complexityBlur; + /* Enable slow and a more detailed first pass encode in multi pass rate control */ + int bEnableSlowFirstPass; + /* specify a text file which contains MAX_MAX_QP + 1 floating point * values to be copied into x265_lambda_tab and a second set of * MAX_MAX_QP + 1 floating point values for x265_lambda2_tab. All values _______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel