[x265] [PATCH 2 of 2] rc: change the predictors update algorithm

Deepthi Nandakumar deepthi at multicorewareinc.com
Tue Nov 17 11:19:17 CET 2015


Hmm, queued. But interesting that these 2 patches do not change outputs.

On Thu, Nov 12, 2015 at 2:45 PM, <aarthi at multicorewareinc.com> wrote:

> # HG changeset patch
> # User Aarthi Thirumalai
> # Date 1447240285 -19800
> #      Wed Nov 11 16:41:25 2015 +0530
> # Node ID 44c08c1f5d3c88cf9cb3dd85cd9e2c4904cebb16
> # Parent  ca5137a54613304a6351a31c022806686898a52a
> rc: change the predictors update algorithm
>
> diff -r ca5137a54613 -r 44c08c1f5d3c source/encoder/ratecontrol.cpp
> --- a/source/encoder/ratecontrol.cpp    Wed Nov 11 16:24:10 2015 +0530
> +++ b/source/encoder/ratecontrol.cpp    Wed Nov 11 16:41:25 2015 +0530
> @@ -928,16 +928,20 @@
>      /* Frame Predictors used in vbv */
>      for (int i = 0; i < 4; i++)
>      {
> +        m_pred[i].coeffMin = 1.0 / 4;
>          m_pred[i].coeff = 1.0;
>          m_pred[i].count = 1.0;
>          m_pred[i].decay = 0.5;
>          m_pred[i].offset = 0.0;
>      }
>      m_pred[0].coeff = m_pred[3].coeff = 0.75;
> +    m_pred[0].coeffMin = m_pred[3].coeffMin = 0.75 / 4;
>      if (m_param->rc.qCompress >= 0.8) // when tuned for grain
>      {
> +        m_pred[1].coeffMin = 0.75 / 4;
>          m_pred[1].coeff = 0.75;
> -        m_pred[0].coeff = m_pred[3].coeff = 0.50;
> +        m_pred[0].coeff = m_pred[3].coeff = 0.5;
> +        m_pred[0].coeffMin = m_pred[3].coeffMin = 0.5 / 4;
>      }
>  }
>
> @@ -997,6 +1001,7 @@
>              {
>                  for (int j = 0; j < 2; j++)
>                  {
> +                    rce->rowPreds[i][j].coeffMin = 0.25 / 4;
>                      rce->rowPreds[i][j].coeff = 0.25;
>                      rce->rowPreds[i][j].count = 1.0;
>                      rce->rowPreds[i][j].decay = 0.5;
> @@ -2149,7 +2154,8 @@
>          return;
>      const double range = 2;
>      double old_coeff = p->coeff / p->count;
> -    double new_coeff = bits * q / var;
> +    double old_offset = p->offset / p->count;
> +    double new_coeff = X265_MAX((bits * q - old_offset) / var,
> p->coeffMin );
>      double new_coeff_clipped = x265_clip3(old_coeff / range, old_coeff *
> range, new_coeff);
>      double new_offset = bits * q - new_coeff_clipped * var;
>      if (new_offset >= 0)
> diff -r ca5137a54613 -r 44c08c1f5d3c source/encoder/ratecontrol.h
> --- a/source/encoder/ratecontrol.h      Wed Nov 11 16:24:10 2015 +0530
> +++ b/source/encoder/ratecontrol.h      Wed Nov 11 16:41:25 2015 +0530
> @@ -48,6 +48,7 @@
>
>  struct Predictor
>  {
> +    double coeffMin;
>      double coeff;
>      double count;
>      double decay;
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>



-- 
Deepthi Nandakumar
Engineering Manager, x265
Multicoreware, Inc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20151117/f8f6b630/attachment.html>


More information about the x265-devel mailing list