[x265] [PATCH] rc: Use RcStats information if available from pic_in

Pradeep Ramachandran pradeep at multicorewareinc.com
Thu May 18 10:23:08 CEST 2017


On Wed, May 17, 2017 at 6:45 PM, <gopi.satykrishna at multicorewareinc.com>
wrote:

> # HG changeset patch
> # User Gopi Satykrishna Akisetty <gopi.satykrishna at multicorewareinc.com>
> # Date 1495026531 -19800
> #      Wed May 17 18:38:51 2017 +0530
> # Node ID 64cd721100d78b9425d7587445290b74715b3a54
> # Parent  4b846d3bac97134b8a91e3569bcb9f981b47ccc0
> rc: Use RcStats information if available from pic_in
>
> diff -r 4b846d3bac97 -r 64cd721100d7 source/CMakeLists.txt
> --- a/source/CMakeLists.txt     Wed May 17 17:27:41 2017 +0530
> +++ b/source/CMakeLists.txt     Wed May 17 18:38:51 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 117)
> +set(X265_BUILD 118)
>  configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
>                 "${PROJECT_BINARY_DIR}/x265.def")
>  configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
> diff -r 4b846d3bac97 -r 64cd721100d7 source/common/param.cpp
> --- a/source/common/param.cpp   Wed May 17 17:27:41 2017 +0530
> +++ b/source/common/param.cpp   Wed May 17 18:38:51 2017 +0530
> @@ -276,6 +276,7 @@
>      param->toneMapFile = NULL;
>      param->bDhdr10opt = 0;
>      param->bCTUInfo = 0;
> +    param->bUseRcStats = 0;
>  }
>
>  int x265_param_default_preset(x265_param* param, const char* preset,
> const char* tune)
> diff -r 4b846d3bac97 -r 64cd721100d7 source/encoder/encoder.cpp
> --- a/source/encoder/encoder.cpp        Wed May 17 17:27:41 2017 +0530
> +++ b/source/encoder/encoder.cpp        Wed May 17 18:38:51 2017 +0530
> @@ -772,6 +772,32 @@
>              inFrame->m_lowres.bScenecut = !!inFrame->m_analysisData.
> bScenecut;
>              inFrame->m_lowres.satdCost = inFrame->m_analysisData.
> satdCost;
>          }
> +        if (m_param->bUseRcStats)
>

Would be good to also check that pic_in->rcData is valid before casting and
using it.


> +        {
> +            RcStats* rc = (RcStats*)pic_in->rcData;
> +            m_rateControl->m_accumPQp = rc->cumulativePQp;
> +            m_rateControl->m_accumPNorm = rc->cumulativePNorm;
> +            m_rateControl->m_isNextGop = true;
> +            for (int j = 0; j < 3; j++)
> +                m_rateControl->m_lastQScaleFor[j] = rc->lastQScaleFor[j];
> +            m_rateControl->m_wantedBitsWindow = rc->wantedBitsWindow;
> +            m_rateControl->m_cplxrSum = rc->cplxrSum;
> +            m_rateControl->m_totalBits = rc->totalBits;
> +            m_rateControl->m_encodedBits = rc->encodedBits;
> +            m_rateControl->m_shortTermCplxSum = rc->shortTermCplxSum;
> +            m_rateControl->m_shortTermCplxCount = rc->shortTermCplxCount;
> +            if (m_rateControl->m_isVbv)
> +            {
> +                m_rateControl->m_bufferFillFinal = rc->bufferFillFinal;
> +                for (int i = 0; i < 4; i++)
> +                {
> +                    m_rateControl->m_pred[i].coeff = rc->coeff[i];
> +                    m_rateControl->m_pred[i].count = rc->count[i];
> +                    m_rateControl->m_pred[i].offset = rc->offset[i];
> +                }
> +            }
> +            m_param->bUseRcStats = 0;
> +        }
>          if (m_reconfigureRc)
>              inFrame->m_reconfigureRc = true;
>
> diff -r 4b846d3bac97 -r 64cd721100d7 source/x265.h
> --- a/source/x265.h     Wed May 17 17:27:41 2017 +0530
> +++ b/source/x265.h     Wed May 17 18:38:51 2017 +0530
> @@ -1408,6 +1408,9 @@
>
>      /* Determine how x265 react to the content information recieved
> through the API */
>      int       bCTUInfo;
> +
> +    /* Use ratecontrol statistics from pic_in, if available*/
> +    int       bUseRcStats;
>  } x265_param;
>  /* x265_param_alloc:
>   *  Allocates an x265_param instance. The returned param structure is not
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20170518/6f92778f/attachment.html>


More information about the x265-devel mailing list