<div dir="ltr"><div># HG changeset patch</div><div># User Aarthi Thirumalai</div><div># Date 1419332550 -19800</div><div>#      Tue Dec 23 16:32:30 2014 +0530</div><div># Node ID d55fed4ebcd22823f8ffb878fa898b5d288cbb6a</div><div># Parent  1924c460d1304d9ce775f35864712dd98f758f9f</div><div>cli: remove tune cbr and introduce strict-cbr as a param option instead</div><div><br></div><div>strict-cbr can be enabled in CBR mode, enforces stricter checks for bitrate adhearance and</div><div>lesser tolerance for bitrate deviance from the target.</div><div><br></div><div>diff -r 1924c460d130 -r d55fed4ebcd2 doc/reST/cli.rst</div><div>--- a/doc/reST/cli.rst<span class="" style="white-space:pre">  </span>Fri Jan 09 11:35:26 2015 +0530</div><div>+++ b/doc/reST/cli.rst<span class="" style="white-space:pre">       </span>Tue Dec 23 16:32:30 2014 +0530</div><div>@@ -209,7 +209,7 @@</div><div> <span class="" style="white-space:pre"> </span>be applied after :option:`--preset` but before all other parameters. Default none.</div><div> <span class="" style="white-space:pre">       </span>See :ref:`tunings <tunings>` for more detail.</div><div> </div><div>-<span class="" style="white-space:pre">      </span>**Values:** psnr, ssim, grain, zero-latency, fast-decode, cbr.</div><div>+<span class="" style="white-space:pre">    </span>**Values:** psnr, ssim, grain, zero-latency, fast-decode.</div><div> </div><div> Input/Output File Options</div><div> =========================</div><div>@@ -992,6 +992,12 @@</div><div> <span class="" style="white-space:pre">        </span>* :option:`--subme` = MIN(2, :option:`--subme`)</div><div> <span class="" style="white-space:pre">  </span>* :option:`--rd` = MIN(2, :option:`--rd`)</div><div> </div><div>+.. option:: --strict-cbr, --no-strict-cbr</div><div>+<span class="" style="white-space:pre">       </span></div><div>+<span class="" style="white-space:pre">  </span>Enables stricter conditions to control bitrate</div><div>+<span class="" style="white-space:pre">    </span>deviance from the target in CBR mode. Bitrate adhearance is prioritised</div><div>+<span class="" style="white-space:pre">   </span>over quality. Rate tolerance is set to 50%. Default disabled</div><div>+<span class="" style="white-space:pre">      </span></div><div> .. option:: --cbqpoffs <integer></div><div> </div><div> <span class="" style="white-space:pre"> </span>Offset of Cb chroma QP from the luma QP selected by rate control.</div><div>diff -r 1924c460d130 -r d55fed4ebcd2 doc/reST/presets.rst</div><div>--- a/doc/reST/presets.rst<span class="" style="white-space:pre">        </span>Fri Jan 09 11:35:26 2015 +0530</div><div>+++ b/doc/reST/presets.rst<span class="" style="white-space:pre">   </span>Tue Dec 23 16:32:30 2014 +0530</div><div>@@ -105,8 +105,7 @@</div><div> +--------------+-----------------------------------------------------+</div><div> | zerolatency  | no lookahead, no B frames, no cutree                |</div><div> +--------------+-----------------------------------------------------+</div><div>-| cbr          | --pbratio 1.0 --ratetol 0.5                         |</div><div>-+--------------+-----------------------------------------------------+</div><div>+</div><div> </div><div> </div><div> Film Grain Retention</div><div>diff -r 1924c460d130 -r d55fed4ebcd2 source/CMakeLists.txt</div><div>--- a/source/CMakeLists.txt<span class="" style="white-space:pre">     </span>Fri Jan 09 11:35:26 2015 +0530</div><div>+++ b/source/CMakeLists.txt<span class="" style="white-space:pre">  </span>Tue Dec 23 16:32:30 2014 +0530</div><div>@@ -21,7 +21,7 @@</div><div> include(CheckCXXCompilerFlag)</div><div> </div><div> # X265_BUILD must be incremented each time the public API is changed</div><div>-set(X265_BUILD 40)</div><div>+set(X265_BUILD 41)</div><div> configure_file("${PROJECT_SOURCE_DIR}/<a href="http://x265.def.in">x265.def.in</a>"</div><div>                "${PROJECT_BINARY_DIR}/x265.def")</div><div> configure_file("${PROJECT_SOURCE_DIR}/<a href="http://x265_config.h.in">x265_config.h.in</a>"</div><div>diff -r 1924c460d130 -r d55fed4ebcd2 source/common/param.cpp</div><div>--- a/source/common/param.cpp<span class="" style="white-space:pre"> </span>Fri Jan 09 11:35:26 2015 +0530</div><div>+++ b/source/common/param.cpp<span class="" style="white-space:pre">        </span>Tue Dec 23 16:32:30 2014 +0530</div><div>@@ -206,6 +206,7 @@</div><div>     param->rc.complexityBlur = 20;</div><div>     param->rc.qblur = 0.5;</div><div>     param->rc.bEnableSlowFirstPass = 0;</div><div>+    param->rc.bStrictCbr = 0;</div><div> </div><div>     /* Video Usability Information (VUI) */</div><div>     param->vui.aspectRatioIdc = 0;</div><div>@@ -421,11 +422,6 @@</div><div>             param->rc.aqStrength = 0.3;</div><div>             param->rc.qCompress = 0.8;</div><div>         }</div><div>-        else if (!strcmp(tune, "cbr"))</div><div>-        {</div><div>-            param->rc.pbFactor = 1.0;</div><div>-            param->rc.rateTolerance = 0.5;</div><div>-        }</div><div>         else</div><div>             return -1;</div><div>     }</div><div>@@ -699,6 +695,12 @@</div><div>     OPT("me")        p->searchMethod = parseName(value, x265_motion_est_names, bError);</div><div>     OPT("cutree")    p->rc.cuTree = atobool(value);</div><div>     OPT("slow-firstpass") p->rc.bEnableSlowFirstPass = atobool(value);</div><div>+    OPT("strict-cbr")</div><div>+    {</div><div>+        p->rc.bStrictCbr = atobool(value);</div><div>+        p->rc.pbFactor = 1.0;</div><div>+        p->rc.rateTolerance = 0.5;</div><div>+    }</div><div>     OPT("analysis-mode") p->analysisMode = parseName(value, x265_analysis_names, bError);</div><div>     OPT("sar")</div><div>     {</div><div>@@ -1087,6 +1089,8 @@</div><div>           "Constant rate-factor is incompatible with 2pass");</div><div>     CHECK(param->rc.rateControlMode == X265_RC_CQP && param->rc.bStatRead,</div><div>           "Constant QP is incompatible with 2pass");</div><div>+    CHECK(param->rc.bStrictCbr && (param->rc.bitrate <= 0 || param->rc.vbvBufferSize <=0),</div><div>+          "Strict-cbr cannot be applied without specifying target bitrate or vbv bufsize");</div><div>     return check_failed;</div><div> }</div><div> </div><div>diff -r 1924c460d130 -r d55fed4ebcd2 source/encoder/ratecontrol.cpp</div><div>--- a/source/encoder/ratecontrol.cpp<span class="" style="white-space:pre">   </span>Fri Jan 09 11:35:26 2015 +0530</div><div>+++ b/source/encoder/ratecontrol.cpp<span class="" style="white-space:pre"> </span>Tue Dec 23 16:32:30 2014 +0530</div><div>@@ -324,10 +324,6 @@</div><div>     m_numEntries = 0;</div><div>     m_amortizeFraction = 0.85;</div><div>     m_amortizeFrames = 75;</div><div>-    if (m_param->totalFrames <= 2 * m_fps)</div><div>-    {</div><div>-        m_amortizeFraction = m_amortizeFrames = 0;</div><div>-    }</div><div>     if (m_param->rc.rateControlMode == X265_RC_CRF)</div><div>     {</div><div>         m_param->rc.qp = (int)m_param->rc.rfConstant;</div><div>@@ -396,6 +392,11 @@</div><div>             x265_log(m_param, X265_LOG_WARNING, "max bitrate less than average bitrate, assuming CBR\n");</div><div>             m_param->rc.bitrate = m_param->rc.vbvMaxBitrate;</div><div>         }</div><div>+        if (m_param->rc.bStrictCbr && m_param->rc.vbvMaxBitrate != m_param->rc.bitrate)</div><div>+        {</div><div>+            x265_log(m_param, X265_LOG_WARNING, "strict CBR set without CBR mode, ignored\n");</div><div>+            m_param->rc.bStrictCbr = 0;</div><div>+        }</div><div>     }</div><div>     else if (m_param->rc.vbvMaxBitrate)</div><div>     {</div><div>@@ -408,7 +409,11 @@</div><div>         x265_log(m_param, X265_LOG_WARNING, "NAL HRD parameters require VBV parameters, ignored\n");</div><div>         m_param->bEmitHRDSEI = 0;</div><div>     }</div><div>-</div><div>+    if (m_param->totalFrames <= 2 * m_fps && m_param->rc.bStrictCbr)</div><div>+    {</div><div>+        m_amortizeFraction = 0;</div><div>+        m_amortizeFrames = 0;</div><div>+    }</div><div>     m_isCbr = m_param->rc.rateControlMode == X265_RC_ABR && m_isVbv && !m_2pass && m_param->rc.vbvMaxBitrate <= m_param->rc.bitrate;</div><div>     m_leadingBframes = m_param->bframes;</div><div>     m_bframeBits = 0;</div><div>diff -r 1924c460d130 -r d55fed4ebcd2 source/x265.cpp</div><div>--- a/source/x265.cpp<span class="" style="white-space:pre">       </span>Fri Jan 09 11:35:26 2015 +0530</div><div>+++ b/source/x265.cpp<span class="" style="white-space:pre">        </span>Tue Dec 23 16:32:30 2014 +0530</div><div>@@ -217,6 +217,7 @@</div><div>     { "no-slow-firstpass",    no_argument, NULL, 0 },</div><div>     { "analysis-mode",  required_argument, NULL, 0 },</div><div>     { "analysis-file",  required_argument, NULL, 0 },</div><div>+    { "strict-cbr",           no_argument, NULL, 0 },</div><div>     { 0, 0, 0, 0 }</div><div> };</div><div> </div><div>@@ -389,7 +390,7 @@</div><div>     H0("-p/--preset <string>             Trade off performance for compression efficiency. Default medium\n");</div><div>     H0("                                 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, or placebo\n");</div><div>     H0("-t/--tune <string>               Tune the settings for a particular type of source or situation:\n");</div><div>-    H0("                                 psnr, ssim, grain, zerolatency, fastdecode or cbr\n");</div><div>+    H0("                                 psnr, ssim, grain, zerolatency, fastdecode\n");</div><div>     H0("\nQuad-Tree size and depth:\n");</div><div>     H0("-s/--ctu <64|32|16>              Maximum CU size (WxH). Default %d\n", param->maxCUSize);</div><div>     H0("   --tu-intra-depth <integer>    Max TU recursive depth for intra CUs. Default %d\n", param->tuQTMaxIntraDepth);</div><div>@@ -457,6 +458,7 @@</div><div>        "                                   - 3 : Nth pass, overwrites stats file\n");</div><div>     H0("   --stats                       Filename for stats file in multipass pass rate control. Default x265_2pass.log\n");</div><div>     H0("   --[no-]slow-firstpass         Enable a slow first pass in a multipass rate control mode. Default %s\n", OPT(param->rc.bEnableSlowFirstPass));</div><div>+    H0("   --[no-]strict-cbr             Enable stricter conditions and tolerance for bitrate deviations in CBR mode. Default %s\n", OPT(param->rc.bStrictCbr));</div><div>     H0("   --analysis-mode <string|int>  save - Dump analysis info into file, load - Load analysis buffers from the file. Default %d\n", param->analysisMode);</div><div>     H0("   --analysis-file <filename>    Specify file name used for either dumping or reading analysis data.\n");</div><div>     H0("   --aq-mode <integer>           Mode for Adaptive Quantization - 0:none 1:uniform AQ 2:auto variance. Default %d\n", param->rc.aqMode);</div><div>diff -r 1924c460d130 -r d55fed4ebcd2 source/x265.h</div><div>--- a/source/x265.h<span class="" style="white-space:pre"> </span>Fri Jan 09 11:35:26 2015 +0530</div><div>+++ b/source/x265.h<span class="" style="white-space:pre">  </span>Tue Dec 23 16:32:30 2014 +0530</div><div>@@ -875,6 +875,10 @@</div><div>          * ignored. The lambda tables are process-global, so these new lambda</div><div>          * values will affect all encoders in the same process */</div><div>         const char* lambdaFileName;</div><div>+</div><div>+        /* Enable stricter conditions to check bitrate deviations in CBR mode. May compromise </div><div>+           quality to maintain bitrate adhearance */</div><div>+        int bStrictCbr;</div><div>     } rc;</div><div> </div><div>     /*== Video Usability Information ==*/</div><div>@@ -1032,7 +1036,7 @@</div><div>  *      100 times faster than placebo!</div><div>  *</div><div>  *      Currently available tunings are: */</div><div>-static const char * const x265_tune_names[] = { "psnr", "ssim", "grain", "zerolatency", "fastdecode", "cbr", 0 };</div><div>+static const char * const x265_tune_names[] = { "psnr", "ssim", "grain", "zerolatency", "fastdecode", 0 };</div><div> </div><div> /*      returns 0 on success, negative on failure (e.g. invalid preset/tune name). */</div><div> int x265_param_default_preset(x265_param *, const char *preset, const char *tune);</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 8, 2015 at 8:00 PM, Steve Borho <span dir="ltr"><<a href="mailto:steve@borho.org" target="_blank">steve@borho.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On 01/07, <a href="mailto:aarthi@multicorewareinc.com">aarthi@multicorewareinc.com</a> wrote:<br>
> # HG changeset patch<br>
> # User Aarthi Thirumalai<br>
> # Date 1419332550 -19800<br>
> #      Tue Dec 23 16:32:30 2014 +0530<br>
> # Node ID 9b30c4b16dfc4c673b57ee4c567fa8956a41e2fc<br>
> # Parent  32ed3f21039a5b93a54da8961442825e4db69d88<br>
> cli: remove tune cbr and introduce strict-cbr as a param option instead<br>
><br>
> strict-cbr can be enabled in CBR mode, enforces stricter checks for bitrate adhearance and<br>
> lesser tolerance for bitrate deviance from the target.<br>
><br>
> diff -r 32ed3f21039a -r 9b30c4b16dfc doc/reST/cli.rst<br>
> --- a/doc/reST/cli.rst        Mon Dec 29 13:49:02 2014 +0530<br>
> +++ b/doc/reST/cli.rst        Tue Dec 23 16:32:30 2014 +0530<br>
> @@ -209,7 +209,7 @@<br>
>       be applied after :option:`--preset` but before all other parameters. Default none.<br>
>       See :ref:`tunings <tunings>` for more detail.<br>
><br>
> -     **Values:** psnr, ssim, grain, zero-latency, fast-decode, cbr.<br>
> +     **Values:** psnr, ssim, grain, zero-latency, fast-decode.<br>
<br>
</span>preset.rst also needs updating, as well as cli help for --tune. this can<br>
be a follow-up patch<br>
<div><div class="h5"><br>
>  Input/Output File Options<br>
>  =========================<br>
> @@ -992,6 +992,12 @@<br>
>       * :option:`--subme` = MIN(2, :option:`--subme`)<br>
>       * :option:`--rd` = MIN(2, :option:`--rd`)<br>
><br>
> +.. option:: --strict-cbr, --no-strict-cbr<br>
> +<br>
> +     Enables stricter conditions to control bitrate<br>
> +     deviance from the target in CBR mode. Bitrate adhearance is prioritised<br>
> +     over quality. Rate tolerance is set to 50%. Default disabled<br>
> +<br>
>  .. option:: --cbqpoffs <integer><br>
><br>
>       Offset of Cb chroma QP from the luma QP selected by rate control.<br>
> diff -r 32ed3f21039a -r 9b30c4b16dfc source/CMakeLists.txt<br>
> --- a/source/CMakeLists.txt   Mon Dec 29 13:49:02 2014 +0530<br>
> +++ b/source/CMakeLists.txt   Tue Dec 23 16:32:30 2014 +0530<br>
> @@ -21,7 +21,7 @@<br>
>  include(CheckCXXCompilerFlag)<br>
><br>
>  # X265_BUILD must be incremented each time the public API is changed<br>
> -set(X265_BUILD 40)<br>
> +set(X265_BUILD 41)<br>
>  configure_file("${PROJECT_SOURCE_DIR}/<a href="http://x265.def.in" target="_blank">x265.def.in</a>"<br>
>                 "${PROJECT_BINARY_DIR}/x265.def")<br>
>  configure_file("${PROJECT_SOURCE_DIR}/<a href="http://x265_config.h.in" target="_blank">x265_config.h.in</a>"<br>
> diff -r 32ed3f21039a -r 9b30c4b16dfc source/common/param.cpp<br>
> --- a/source/common/param.cpp Mon Dec 29 13:49:02 2014 +0530<br>
> +++ b/source/common/param.cpp Tue Dec 23 16:32:30 2014 +0530<br>
> @@ -206,6 +206,7 @@<br>
>      param->rc.complexityBlur = 20;<br>
>      param->rc.qblur = 0.5;<br>
>      param->rc.bEnableSlowFirstPass = 0;<br>
> +    param->rc.bStrictCbr = 0;<br>
><br>
>      /* Video Usability Information (VUI) */<br>
>      param->vui.aspectRatioIdc = 0;<br>
> @@ -421,11 +422,6 @@<br>
>              param->rc.aqStrength = 0.3;<br>
>              param->rc.qCompress = 0.8;<br>
>          }<br>
> -        else if (!strcmp(tune, "cbr"))<br>
> -        {<br>
> -            param->rc.pbFactor = 1.0;<br>
> -            param->rc.rateTolerance = 0.5;<br>
> -        }<br>
>          else<br>
>              return -1;<br>
>      }<br>
> @@ -699,6 +695,12 @@<br>
>      OPT("me")        p->searchMethod = parseName(value, x265_motion_est_names, bError);<br>
>      OPT("cutree")    p->rc.cuTree = atobool(value);<br>
>      OPT("slow-firstpass") p->rc.bEnableSlowFirstPass = atobool(value);<br>
> +    OPT("strict-cbr")<br>
> +    {<br>
> +        p->rc.bStrictCbr = atobool(value);<br>
> +        p->rc.pbFactor = 1.0;<br>
> +        p->rc.rateTolerance = 0.5;<br>
> +    }<br>
>      OPT("analysis-mode") p->analysisMode = parseName(value, x265_analysis_names, bError);<br>
>      OPT("sar")<br>
>      {<br>
> @@ -1087,6 +1089,8 @@<br>
>            "Constant rate-factor is incompatible with 2pass");<br>
>      CHECK(param->rc.rateControlMode == X265_RC_CQP && param->rc.bStatRead,<br>
>            "Constant QP is incompatible with 2pass");<br>
> +    CHECK(param->rc.bStrictCbr && (param->rc.bitrate <= 0 || param->rc.vbvBufferSize <=0),<br>
> +          "Strict-cbr cannot be applied without specifying target bitrate or vbv bufsize");<br>
>      return check_failed;<br>
>  }<br>
><br>
> diff -r 32ed3f21039a -r 9b30c4b16dfc source/encoder/ratecontrol.cpp<br>
> --- a/source/encoder/ratecontrol.cpp  Mon Dec 29 13:49:02 2014 +0530<br>
> +++ b/source/encoder/ratecontrol.cpp  Tue Dec 23 16:32:30 2014 +0530<br>
> @@ -324,10 +324,6 @@<br>
>      m_numEntries = 0;<br>
>      m_amortizeFraction = 0.85;<br>
>      m_amortizeFrames = 75;<br>
> -    if (m_param->totalFrames <= 2 * m_fps)<br>
> -    {<br>
> -        m_amortizeFraction = m_amortizeFrames = 0;<br>
> -    }<br>
>      if (m_param->rc.rateControlMode == X265_RC_CRF)<br>
>      {<br>
>          m_param->rc.qp = (int)m_param->rc.rfConstant;<br>
> @@ -396,6 +392,11 @@<br>
>              x265_log(m_param, X265_LOG_WARNING, "max bitrate less than average bitrate, assuming CBR\n");<br>
>              m_param->rc.bitrate = m_param->rc.vbvMaxBitrate;<br>
>          }<br>
> +        if (m_param->rc.bStrictCbr && m_param->rc.vbvMaxBitrate != m_param->rc.bitrate)<br>
> +        {<br>
> +            x265_log(m_param, X265_LOG_WARNING, "strict CBR set without CBR mode, ignored\n");<br>
> +            m_param->rc.bStrictCbr = 0;<br>
> +        }<br>
>      }<br>
>      else if (m_param->rc.vbvMaxBitrate)<br>
>      {<br>
> @@ -408,7 +409,11 @@<br>
>          x265_log(m_param, X265_LOG_WARNING, "NAL HRD parameters require VBV parameters, ignored\n");<br>
>          m_param->bEmitHRDSEI = 0;<br>
>      }<br>
> -<br>
> +    if (m_param->totalFrames <= 2 * m_fps && m_param->rc.bStrictCbr)<br>
> +    {<br>
> +        m_amortizeFraction = 0;<br>
> +        m_amortizeFrames = 0;<br>
> +    }<br>
>      m_isCbr = m_param->rc.rateControlMode == X265_RC_ABR && m_isVbv && !m_2pass && m_param->rc.vbvMaxBitrate <= m_param->rc.bitrate;<br>
>      m_leadingBframes = m_param->bframes;<br>
>      m_bframeBits = 0;<br>
> diff -r 32ed3f21039a -r 9b30c4b16dfc source/x265.cpp<br>
> --- a/source/x265.cpp Mon Dec 29 13:49:02 2014 +0530<br>
> +++ b/source/x265.cpp Tue Dec 23 16:32:30 2014 +0530<br>
> @@ -217,6 +217,7 @@<br>
>      { "no-slow-firstpass",    no_argument, NULL, 0 },<br>
>      { "analysis-mode",  required_argument, NULL, 0 },<br>
>      { "analysis-file",  required_argument, NULL, 0 },<br>
> +    { "strict-cbr",           no_argument, NULL, 0 },<br>
>      { 0, 0, 0, 0 }<br>
>  };<br>
><br>
> @@ -457,6 +458,7 @@<br>
>         "                                   - 3 : Nth pass, overwrites stats file\n");<br>
>      H0("   --stats                       Filename for stats file in multipass pass rate control. Default x265_2pass.log\n");<br>
>      H0("   --[no-]slow-firstpass         Enable a slow first pass in a multipass rate control mode. Default %s\n", OPT(param->rc.bEnableSlowFirstPass));<br>
> +    H0("   --[no-]strict-cbr             Enable stricter conditions and tolerance for bitrate deviations in CBR mode. Default %s\n", OPT(param->rc.bStrictCbr));<br>
>      H0("   --analysis-mode <string|int>  save - Dump analysis info into file, load - Load analysis buffers from the file. Default %d\n", param->analysisMode);<br>
>      H0("   --analysis-file <filename>    Specify file name used for either dumping or reading analysis data.\n");<br>
>      H0("   --aq-mode <integer>           Mode for Adaptive Quantization - 0:none 1:uniform AQ 2:auto variance. Default %d\n", param->rc.aqMode);<br>
> diff -r 32ed3f21039a -r 9b30c4b16dfc source/x265.h<br>
> --- a/source/x265.h   Mon Dec 29 13:49:02 2014 +0530<br>
> +++ b/source/x265.h   Tue Dec 23 16:32:30 2014 +0530<br>
> @@ -875,6 +875,10 @@<br>
>           * ignored. The lambda tables are process-global, so these new lambda<br>
>           * values will affect all encoders in the same process */<br>
>          const char* lambdaFileName;<br>
> +<br>
> +        /* Enable stricter conditions to check bitrate deviations in CBR mode. May compromise<br>
> +           quality to maintain bitrate adhearance */<br>
> +        int bStrictCbr;<br>
>      } rc;<br>
><br>
>      /*== Video Usability Information ==*/<br>
> @@ -1032,7 +1036,7 @@<br>
>   *      100 times faster than placebo!<br>
>   *<br>
>   *      Currently available tunings are: */<br>
> -static const char * const x265_tune_names[] = { "psnr", "ssim", "grain", "zerolatency", "fastdecode", "cbr", 0 };<br>
> +static const char * const x265_tune_names[] = { "psnr", "ssim", "grain", "zerolatency", "fastdecode", 0 };<br>
><br>
>  /*      returns 0 on success, negative on failure (e.g. invalid preset/tune name). */<br>
>  int x265_param_default_preset(x265_param *, const char *preset, const char *tune);<br>
</div></div>> _______________________________________________<br>
> x265-devel mailing list<br>
> <a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
> <a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Steve Borho<br>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</font></span></blockquote></div><br></div>