# HG changeset patch # User Kavitha Sampath # Date 1495595385 -19800 # Wed May 24 08:39:45 2017 +0530 # Node ID 404253434d33e99955aac29480ee16b8e939a64c # Parent f850cdbe381c196758fd445a367487416fef62f9 cli: add option to specify scale-factor
diff -r f850cdbe381c -r 404253434d33 doc/reST/cli.rst --- a/doc/reST/cli.rst Tue May 23 12:42:54 2017 +0530 +++ b/doc/reST/cli.rst Wed May 24 08:39:45 2017 +0530 @@ -855,6 +855,11 @@ +--------+-----------------------------------------+ | 10 | Level 5 + Full CU analysis-info | +--------+-----------------------------------------+ +.. option:: --scale-factor + + Factor by which input video is scaled down for analysis save mode. + This option should be coupled with analysis-mode option, --refine-level 10. + The ctu size of load should be double the size of save. Default 0. Options which affect the transform unit quad-tree, sometimes referred to as the residual quad-tree (RQT). diff -r f850cdbe381c -r 404253434d33 source/CMakeLists.txt --- a/source/CMakeLists.txt Tue May 23 12:42:54 2017 +0530 +++ b/source/CMakeLists.txt Wed May 24 08:39:45 2017 +0530 @@ -29,7 +29,7 @@ option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF) mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD) # X265_BUILD must be incremented each time the public API is changed -set(X265_BUILD 118) +set(X265_BUILD 119) configure_file("${PROJECT_SOURCE_DIR}/x265.def.in" "${PROJECT_BINARY_DIR}/x265.def") configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in" diff -r f850cdbe381c -r 404253434d33 source/common/param.cpp --- a/source/common/param.cpp Tue May 23 12:42:54 2017 +0530 +++ b/source/common/param.cpp Wed May 24 08:39:45 2017 +0530 @@ -277,6 +277,7 @@ param->bDhdr10opt = 0; param->bCTUInfo = 0; param->bUseRcStats = 0; + param->scaleFactor = 0; } int x265_param_default_preset(x265_param* param, const char* preset, const char* tune) @@ -957,6 +958,7 @@ OPT("dhdr10-info") p->toneMapFile = strdup(value); OPT("dhdr10-opt") p->bDhdr10opt = atobool(value); OPT("ctu-info") p->bCTUInfo = atoi(value); + OPT("scale-factor") p->scaleFactor = atoi(value); else return X265_PARAM_BAD_NAME; } @@ -1291,6 +1293,7 @@ "Invalid analysis mode. Analysis mode 0: OFF 1: SAVE : 2 LOAD"); CHECK(param->analysisMode && (param->analysisRefineLevel < 1 || param->analysisRefineLevel > 10), "Invalid analysis refine level. Value must be between 1 and 10 (inclusive)"); + CHECK(param->scaleFactor > 2, "Invalid scale-factor. Supports factor <= 2"); CHECK(param->rc.qpMax < QP_MIN || param->rc.qpMax > QP_MAX_MAX, "qpmax exceeds supported range (0 to 69)"); CHECK(param->rc.qpMin < QP_MIN || param->rc.qpMin > QP_MAX_MAX, @@ -1675,6 +1678,7 @@ BOOL(p->bHDROpt, "hdr-opt"); BOOL(p->bDhdr10opt, "dhdr10-opt"); s += sprintf(s, " refine-level=%d", p->analysisRefineLevel); + s += sprintf(s, " scale-factor=%d", p->scaleFactor); BOOL(p->bLimitSAO, "limit-sao"); s += sprintf(s, " ctu-info=%d", p->bCTUInfo); #undef BOOL diff -r f850cdbe381c -r 404253434d33 source/encoder/encoder.cpp --- a/source/encoder/encoder.cpp Tue May 23 12:42:54 2017 +0530 +++ b/source/encoder/encoder.cpp Wed May 24 08:39:45 2017 +0530 @@ -2273,6 +2273,18 @@ "Disabling Analysis load/save and multi-pass-opt-analysis/multi-pass-opt-distortion\n"); p->analysisMode = p->analysisMultiPassRefine = p->analysisMultiPassDistortion = 0; } + if (p->scaleFactor) + { + if (p->scaleFactor == 1) + { + p->scaleFactor = 0; + } + else if (!p->analysisMode || p->analysisRefineLevel < 10) + { + x265_log(p, X265_LOG_WARNING, "Input scaling works with analysis-mode, refine-level 10. Disabling scale-factor.\n"); + p->scaleFactor = 0; + } + } if ((p->analysisMultiPassRefine || p->analysisMultiPassDistortion) && (p->bDistributeModeAnalysis || p->bDistributeMotionEstimation)) { diff -r f850cdbe381c -r 404253434d33 source/x265.h --- a/source/x265.h Tue May 23 12:42:54 2017 +0530 +++ b/source/x265.h Wed May 24 08:39:45 2017 +0530 @@ -1438,6 +1438,9 @@ /* Use ratecontrol statistics from pic_in, if available*/ int bUseRcStats; + + /* Factor by which input video is scaled down for analysis save mode. Default is 0 */ + int scaleFactor; } x265_param; /* x265_param_alloc: * Allocates an x265_param instance. The returned param structure is not diff -r f850cdbe381c -r 404253434d33 source/x265cli.h --- a/source/x265cli.h Tue May 23 12:42:54 2017 +0530 +++ b/source/x265cli.h Wed May 24 08:39:45 2017 +0530 @@ -251,6 +251,7 @@ { "analysis-mode", required_argument, NULL, 0 }, { "analysis-file", required_argument, NULL, 0 }, { "refine-level", required_argument, NULL, 0 }, + { "scale-factor", required_argument, NULL, 0 }, { "strict-cbr", no_argument, NULL, 0 }, { "temporal-layers", no_argument, NULL, 0 }, { "no-temporal-layers", no_argument, NULL, 0 }, @@ -440,6 +441,7 @@ H0(" --analysis-mode <string|int> save - Dump analysis info into file, load - Load analysis buffers from the file. Default %d\n", param->analysisMode); H0(" --analysis-file <filename> Specify file name used for either dumping or reading analysis data.\n"); H0(" --refine-level <1..10> Level of analysis refinement indicates amount of info stored/reused in save/load mode, 1:least....10:most. Default %d\n", param->analysisRefineLevel); + H0(" --scale-factor <int> Specify factor by which input video is scaled down for analysis save mode. Default %d\n", param->scaleFactor); H0(" --aq-mode <integer> Mode for Adaptive Quantization - 0:none 1:uniform AQ 2:auto variance 3:auto variance with bias to dark scenes. Default %d\n", param->rc.aqMode); H0(" --aq-strength <float> Reduces blocking and blurring in flat and textured areas (0 to 3.0). Default %.2f\n", param->rc.aqStrength); H0(" --[no-]aq-motion Adaptive Quantization based on the relative motion of each CU w.r.t., frame. Default %s\n", OPT(param->bOptCUDeltaQP)); _______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel