[x265] [PATCH] vbv:Avoid infinite loop when row re-encode is triggered in vbv- clip qp inside rowDiagonalVbvRateControl()

Steve Borho steve at borho.org
Fri Apr 18 20:51:04 CEST 2014


On Fri, Apr 18, 2014 at 7:25 AM,  <santhoshini at multicorewareinc.com> wrote:
> # HG changeset patch
> # User Santhoshini Sekar <santhoshini at multicorewareinc.com>
> # Date 1397822534 -19800
> #      Fri Apr 18 17:32:14 2014 +0530
> # Node ID 03aa222ff8eb5ffbe65bd5bf522cad6561210024
> # Parent  78c1f43f12f57ba60e63cb79ce567065c700483e
> vbv:Avoid infinite loop when row re-encode is triggered in vbv- clip qp inside rowDiagonalVbvRateControl()

space after the colon
no need to uppercase the summary sentence
keep the summary line 80 chars or under

>
> diff -r 78c1f43f12f5 -r 03aa222ff8eb source/encoder/frameencoder.cpp
> --- a/source/encoder/frameencoder.cpp   Thu Apr 17 16:32:16 2014 -0500
> +++ b/source/encoder/frameencoder.cpp   Fri Apr 18 17:32:14 2014 +0530
> @@ -1141,7 +1141,6 @@
>              {
>                  double qpBase = cu->m_baseQp;
>                  int reEncode = m_top->m_rateControl->rowDiagonalVbvRateControl(m_pic, row, &m_rce, qpBase);
> -                qpBase = Clip3((double)MIN_QP, (double)MAX_MAX_QP, qpBase);
>                  m_pic->m_rowDiagQp[row] = qpBase;
>                  m_pic->m_rowDiagQScale[row] =  x265_qp2qScale(qpBase);
>
> diff -r 78c1f43f12f5 -r 03aa222ff8eb source/encoder/ratecontrol.cpp
> --- a/source/encoder/ratecontrol.cpp    Thu Apr 17 16:32:16 2014 -0500
> +++ b/source/encoder/ratecontrol.cpp    Fri Apr 18 17:32:14 2014 +0530
> @@ -861,6 +861,7 @@
>      double bufferLeftPlanned = rce->bufferFill - rce->frameSizePlanned;
>
>      double maxFrameError = X265_MAX(0.05, 1.0 / pic->getFrameHeightInCU());
> +    int retReencodeFlag = 0;
>
>      if (row < pic->getPicSym()->getFrameHeightInCU() - 1)
>      {
> @@ -922,7 +923,7 @@
>          {
>              /* Bump QP to halfway in between... close enough. */
>              qpVbv = Clip3(prevRowQp + 1.0f, qpMax, (prevRowQp + qpVbv) * 0.5);
> -            return -1;
> +            retReencodeFlag = -1;
>          }
>      }
>      else
> @@ -936,10 +937,11 @@
>               qpVbv < qpMax && canReencodeRow))
>          {
>              qpVbv = qpMax;
> -            return -1;
> +            retReencodeFlag = -1;
>          }
>      }
> -    return 0;
> +    qpVbv = Clip3((double)MIN_QP, (double)MAX_MAX_QP, qpVbv);
> +    return retReencodeFlag;

this all looks a tad magical. How is it actually fixing this problem?

>  }


-- 
Steve Borho


More information about the x265-devel mailing list