<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Apr 9, 2015 at 12:09 AM, 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 04/08, <a href="mailto:aarthi@multicorewareinc.com">aarthi@multicorewareinc.com</a> wrote:<br>
> # HG changeset patch<br>
> # User Aarthi Thirumalai<br>
> # Date 1426487738 -19800<br>
> #      Mon Mar 16 12:05:38 2015 +0530<br>
> # Node ID b4646bdaf2202748d3a3b159b9bc8e3cfcd272de<br>
> # Parent  6f159ec858f4eec484d722916c41911e3e4540f9<br>
> rc: tune initial predictor values for better frame size predictions in vbv lookahead<br>
><br>
> an overall improvement in ssim of around .05-.1 db can be seen.<br>
> Also, improves visual quality at the start of the encode.<br>
><br>
> SteamLocomotiveTrain_2560x1600_60_10bit_crop.yuv --bitrate 9000 --vbv-bufsize 9000 --strict-cbr<br>
><br>
>        Bitrate         Y PSNR  U PSNR  V PSNR  Global PSNR     SSIM    SSIM (dB)<br>
> before  9168.43 39.689  45.096 45.152   41.048         0.93176  11.66<br>
> after   9106.16  39.864 45.169        45.199    41.194         0.93518  11.883<br>
<br>
</span>do these pair of commits belong on stable?<br></blockquote><div>Yes, they belong on the stable </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><div class="h5"><br>
> diff -r 6f159ec858f4 -r b4646bdaf220 source/encoder/ratecontrol.cpp<br>
> --- a/source/encoder/ratecontrol.cpp  Tue Mar 31 22:16:21 2015 +0530<br>
> +++ b/source/encoder/ratecontrol.cpp  Mon Mar 16 12:05:38 2015 +0530<br>
> @@ -372,12 +372,17 @@<br>
>      /* Frame Predictors and Row predictors used in vbv */<br>
>      for (int i = 0; i < 4; i++)<br>
>      {<br>
> -        m_pred[i].coeff = 1.5;<br>
> +        m_pred[i].coeff = 1.0;<br>
>          m_pred[i].count = 1.0;<br>
>          m_pred[i].decay = 0.5;<br>
>          m_pred[i].offset = 0.0;<br>
>      }<br>
> -    m_pred[0].coeff = 1.0;<br>
> +    m_pred[0].coeff = m_pred[3].coeff = 0.75;<br>
> +    if (m_param->rc.qCompress >= 0.8) // when tuned for grain<br>
> +    {<br>
> +        m_pred[1].coeff = 0.75;<br>
> +        m_pred[0].coeff = m_pred[3].coeff = 0.50;<br>
> +    }<br>
>      if (!m_statFileOut && (m_param->rc.bStatWrite || m_param->rc.bStatRead))<br>
>      {<br>
>          /* If the user hasn't defined the stat filename, use the default value */<br>
> @@ -1797,8 +1802,11 @@<br>
>          double pbits = predictSize(&m_pred[m_predType], q, (double)m_currentSatd);<br>
>          if (pbits > rce->frameSizeMaximum)<br>
>              q *= pbits / rce->frameSizeMaximum;<br>
> -<br>
> -        if (!m_isCbr || (m_isAbr && m_currentSatd >= rce->movingAvgSum && q <= q0 / 2))<br>
> +        /* To detect frames that are more complex in SATD costs compared to prev window, yet<br>
> +         * lookahead vbv reduces its qscale by half its value. Be on safer side and avoid drastic<br>
> +         * qscale reductions for frames high in complexity */<br>
> +        bool mispredCheck = rce->movingAvgSum && m_currentSatd >= rce->movingAvgSum && q <= q0 / 2;<br>
> +        if (!m_isCbr || (m_isAbr && mispredCheck))<br>
>              q = X265_MAX(q0, q);<br>
><br>
>          if (m_rateFactorMaxIncrement)<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></div>