[x265] [PATCH] api: Introduce param options to toggle PPS bitstream optimizations

Deepthi Nandakumar deepthipnandakumar at gmail.com
Mon Oct 17 13:14:00 CEST 2016


On Mon, Oct 17, 2016 at 2:00 PM, Pradeep Ramachandran <
pradeep at multicorewareinc.com> wrote:

> # HG changeset patch
> # User Pradeep Ramachandran <pradeep at multicorewareinc.com>
> # Date 1476693005 -19800
> #      Mon Oct 17 14:00:05 2016 +0530
> # Node ID 304116f4cd41bc4fd610d5b16c6f447a50b8df02
> # Parent  c97805dad9148ad3cddba10a67ed5596508e8f86
> api: Introduce param options to toggle PPS bitstream optimizations
>
> diff -r c97805dad914 -r 304116f4cd41 source/CMakeLists.txt
> --- a/source/CMakeLists.txt     Thu Oct 13 17:53:48 2016 +0800
> +++ b/source/CMakeLists.txt     Mon Oct 17 14:00:05 2016 +0530
> @@ -30,7 +30,7 @@
>  mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD)
>
>  # X265_BUILD must be incremented each time the public API is changed
> -set(X265_BUILD 97)
> +set(X265_BUILD 98)
>  configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
>                 "${PROJECT_BINARY_DIR}/x265.def")
>  configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
> diff -r c97805dad914 -r 304116f4cd41 source/common/param.cpp
> --- a/source/common/param.cpp   Thu Oct 13 17:53:48 2016 +0800
> +++ b/source/common/param.cpp   Mon Oct 17 14:00:05 2016 +0530
> @@ -230,9 +230,6 @@
>      param->rc.qpMin = 0;
>      param->rc.qpMax = QP_MAX_MAX;
>
> -    param->bEmitVUITimingInfo = 1;
> -    param->bEmitVUIHRDInfo = 1;
> -
>      /* Video Usability Information (VUI) */
>      param->vui.aspectRatioIdc = 0;
>      param->vui.sarWidth = 0;
> @@ -259,6 +256,12 @@
>      param->maxLuma = PIXEL_MAX;
>      param->log2MaxPocLsb = 8;
>      param->maxSlices = 1;
> +
> +    param->bEmitVUITimingInfo   = 1;
> +    param->bEmitVUIHRDInfo      = 1;
> +    param->bOptQpPPS            = 1;
> +    param->bOptRefListLengthPPS = 1;
> +
>  }
>
>  int x265_param_default_preset(x265_param* param, const char* preset,
> const char* tune)
> @@ -910,6 +913,8 @@
>          OPT("vui-hrd-info") p->bEmitVUIHRDInfo = atobool(value);
>          OPT("slices") p->maxSlices = atoi(value);
>          OPT("limit-tu") p->limitTU = atoi(value);
> +        OPT("opt-qp-pps") p->bOptQpPPS = atobool(value);
> +        OPT("opt-ref-list-length-pps") p->bOptRefListLengthPPS =
> atobool(value);
>          else
>              return X265_PARAM_BAD_NAME;
>      }
> diff -r c97805dad914 -r 304116f4cd41 source/encoder/encoder.cpp
> --- a/source/encoder/encoder.cpp        Thu Oct 13 17:53:48 2016 +0800
> +++ b/source/encoder/encoder.cpp        Mon Oct 17 14:00:05 2016 +0530
> @@ -874,7 +874,7 @@
>                  slice->m_endCUAddr = slice->realEndAddress(m_sps.numCUsInFrame
> * NUM_4x4_PARTITIONS);
>              }
>
> -            if( frameEnc->m_lowres.bKeyframe && m_param->bRepeatHeaders )
> +            if( m_param->bOptQpPPS && frameEnc->m_lowres.bKeyframe &&
> m_param->bRepeatHeaders )
>

Lots of whitespace errors in this block, introduced by 43d4754ea627


>              {
>                  ScopedLock qpLock( m_sliceQpLock );
>                  if( m_iFrameNum > 0 )
> diff -r c97805dad914 -r 304116f4cd41 source/encoder/frameencoder.cpp
> --- a/source/encoder/frameencoder.cpp   Thu Oct 13 17:53:48 2016 +0800
> +++ b/source/encoder/frameencoder.cpp   Mon Oct 17 14:00:05 2016 +0530
> @@ -354,6 +354,7 @@
>      }
>      if (m_frame->m_lowres.bKeyframe && m_param->bRepeatHeaders)
>      {
> +        if (m_param->bOptRefListLengthPPS)
>          {
>              ScopedLock refIdxLock(m_top->m_sliceRefIdxLock);
>              m_top->updateRefIdx();
> @@ -467,7 +468,7 @@
>      /* Clip slice QP to 0-51 spec range before encoding */
>      slice->m_sliceQp = x265_clip3(-QP_BD_OFFSET, QP_MAX_SPEC, qp);
>
> -    if( m_param->bRepeatHeaders )
> +    if( m_param->bOptQpPPS && m_param->bRepeatHeaders )
>

And here


>      {
>          ScopedLock qpLock( m_top->m_sliceQpLock );
>          for( int i = 0; i < (QP_MAX_MAX + 1); i++ )
> @@ -861,6 +862,7 @@
>              const uint32_t sliceAddr = nextSliceRow * m_numCols;
>              //CUData* ctu = m_frame->m_encData->getPicCTU(sliceAddr);
>              //const int sliceQp = ctu->m_qp[0];
> +            if (m_param->bOptRefListLengthPPS)
>              {
>                  ScopedLock refIdxLock(m_top->m_sliceRefIdxLock);
>                  m_top->analyseRefIdx(slice->m_numRefIdx);
> @@ -888,6 +890,7 @@
>      }
>      else
>      {
> +        if (m_param->bOptRefListLengthPPS)
>          {
>              ScopedLock refIdxLock(m_top->m_sliceRefIdxLock);
>              m_top->analyseRefIdx(slice->m_numRefIdx);
> diff -r c97805dad914 -r 304116f4cd41 source/x265.h
> --- a/source/x265.h     Thu Oct 13 17:53:48 2016 +0800
> +++ b/source/x265.h     Mon Oct 17 14:00:05 2016 +0530
> @@ -1317,6 +1317,12 @@
>      /* Maximum count of Slices of picture, the value range is [1, maximum
> rows] */
>      unsigned int maxSlices;
>
> +    /* Optimize QP in PPS based on statistics from prevvious GOP*/
> +    int bOptQpPPS;
> +
> +    /* Opitmize ref list length in PPS based on stats from previous GOP*/
> +    int bOptRefListLengthPPS;
> +
>  } x265_param;
>
>  /* x265_param_alloc:
> diff -r c97805dad914 -r 304116f4cd41 source/x265cli.h
> --- a/source/x265cli.h  Thu Oct 13 17:53:48 2016 +0800
> +++ b/source/x265cli.h  Mon Oct 17 14:00:05 2016 +0530
> @@ -213,6 +213,10 @@
>      { "no-vui-timing-info",   no_argument, NULL, 0 },
>      { "vui-hrd-info",         no_argument, NULL, 0 },
>      { "no-vui-hrd-info",      no_argument, NULL, 0 },
> +    { "opt-qp-pps",           no_argument, NULL, 0 },
> +    { "no-opt-qp-pps",        no_argument, NULL, 0 },
> +    { "opt-ref-list-length-pps",         no_argument, NULL, 0 },
> +    { "no-opt-ref-list-length-pps",      no_argument, NULL, 0 },
>      { "no-dither",            no_argument, NULL, 0 },
>      { "dither",               no_argument, NULL, 0 },
>      { "no-repeat-headers",    no_argument, NULL, 0 },
> @@ -452,8 +456,10 @@
>      H0("   --[no-]aud                    Emit access unit delimiters at
> the start of each access unit. Default %s\n", OPT(param->
> bEnableAccessUnitDelimiters));
>      H1("   --hash <integer>              Decoded Picture Hash SEI 0:
> disabled, 1: MD5, 2: CRC, 3: Checksum. Default %d\n",
> param->decodedPictureHashSEI);
>      H0("   --log2-max-poc-lsb <integer>  Maximum of the picture order
> count\n");
> -    H0("   --[no]-vui-timing-info        Discard optional VUI timing
> information from the bistream. Default %s\n", OPT(param->bEmitVUITimingInfo)
> );
> -    H0("   --[no]-vui-hrd-info           Discard optional HRD timing
> information from the bistream. Default %s\n", OPT(param->bEmitVUIHRDInfo));
> +    H0("   --[no-]vui-timing-info        Discard optional VUI timing
> information from the bistream. Default %s\n", OPT(param->bEmitVUITimingInfo)
> );
> +    H0("   --[no-]vui-hrd-info           Discard optional HRD timing
> information from the bistream. Default %s\n", OPT(param->bEmitVUIHRDInfo));
> +    H0("   --[no-]opt-qp-pps             Discard optional HRD timing
> information from the bistream. Default %s\n", OPT(param->bOptQpPPS));
> +    H0("   --[no-]opt-ref-list-length-pps  Discard optional HRD timing
> information from the bistream. Default %s\n", OPT(param->
> bOptRefListLengthPPS));
>      H1("\nReconstructed video options (debugging):\n");
>      H1("-r/--recon <filename>            Reconstructed raw image YUV or
> Y4M output file name\n");
>      H1("   --recon-depth <integer>       Bit-depth of reconstructed raw
> image file. Defaults to input bit depth, or 8 if Y4M\n");
>
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel
>
>


-- 
Deepthi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20161017/43833be2/attachment.html>


More information about the x265-devel mailing list