[x265] [PATCH] Introducing cli/param to signal content light level SEI

Aruna Matheswaran aruna at multicorewareinc.com
Tue Jun 4 10:47:38 CEST 2019


@Dinesh Kumar Reddy - Looks like the patch sent for internal review has
been pushed by mistake instead of this. Please find the fix here
<https://mailman.videolan.org/pipermail/x265-devel/2019-June/012551.html>.

Thanks,
Aruna

On Fri, May 24, 2019 at 11:33 AM Dinesh Kumar Reddy <
dinesh at multicorewareinc.com> wrote:

> # HG changeset patch
> # User Aruna Matheswaran
> # Date 1558620527 -19800
> #      Thu May 23 19:38:47 2019 +0530
> # Node ID b57fe10e387942335fb88bc49e9d746a5d7503f3
> # Parent  220cdb4328a1e2c7419546b50c4d07e652ae1537
> Introducing cli/param to signal content light level SEI.
>
> Pushed to x265 default repo.
>
> Thanks & Regards,
> Dinesh
>
> On Fri, May 24, 2019 at 10:10 AM <aruna at multicorewareinc.com> wrote:
>
>> # HG changeset patch
>> # User Aruna Matheswaran
>> # Date 1558620527 -19800
>> #      Thu May 23 19:38:47 2019 +0530
>> # Node ID b57fe10e387942335fb88bc49e9d746a5d7503f3
>> # Parent  220cdb4328a1e2c7419546b50c4d07e652ae1537
>> Introducing cli/param to signal content light level SEI.
>>
>> This patch also fixes indentation issues.
>>
>> diff -r 220cdb4328a1 -r b57fe10e3879 doc/reST/cli.rst
>> --- a/doc/reST/cli.rst  Thu May 23 11:28:44 2019 +0800
>> +++ b/doc/reST/cli.rst  Thu May 23 19:38:47 2019 +0530
>> @@ -2154,6 +2154,12 @@
>>         Note that this string value will need to be escaped or quoted to
>>         protect against shell expansion on many platforms. No default.
>>
>> +.. option:: --cll, --no-cll
>> +
>> +    Emit content light level SEI. Enabled automatically when
>> :option:`--dolby-vision-profile` 8.1
>> +    is specified. When enabled, signals max-cll and max-fall as 0 if
>> :option:`max-cll` is unspecified.
>> +    Default enabled.
>> +
>>  .. option:: --hdr, --no-hdr
>>
>>         Force signalling of HDR parameters in SEI packets. Enabled
>> diff -r 220cdb4328a1 -r b57fe10e3879 source/CMakeLists.txt
>> --- a/source/CMakeLists.txt     Thu May 23 11:28:44 2019 +0800
>> +++ b/source/CMakeLists.txt     Thu May 23 19:38:47 2019 +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 175)
>> +set(X265_BUILD 176)
>>  configure_file("${PROJECT_SOURCE_DIR}/x265.def.in"
>>                 "${PROJECT_BINARY_DIR}/x265.def")
>>  configure_file("${PROJECT_SOURCE_DIR}/x265_config.h.in"
>> diff -r 220cdb4328a1 -r b57fe10e3879 source/common/param.cpp
>> --- a/source/common/param.cpp   Thu May 23 11:28:44 2019 +0800
>> +++ b/source/common/param.cpp   Thu May 23 19:38:47 2019 +0530
>> @@ -332,6 +332,7 @@
>>      /* SEI messages */
>>      param->preferredTransferCharacteristics = -1;
>>      param->pictureStructure = -1;
>> +    param->bEmitCLL = 1;
>>
>>      /* SVT Hevc Encoder specific params */
>>      param->bEnableSvtHevc = 0;
>> @@ -573,10 +574,10 @@
>>              param->deblockingFilterBetaOffset = 1;
>>              param->deblockingFilterTCOffset = 1;
>>          }
>> -               else if (!strcmp(tune, "vmaf"))  /*Adding vmaf for x265 +
>> SVT-HEVC integration support*/
>> -               {
>> -                       /*vmaf is under development, currently x265 won't
>> support vmaf*/
>> -               }
>> +        else if (!strcmp(tune, "vmaf"))  /*Adding vmaf for x265 +
>> SVT-HEVC integration support*/
>> +        {
>> +            /*vmaf is under development, currently x265 won't support
>> vmaf*/
>> +        }
>>          else
>>              return -1;
>>      }
>> @@ -1269,6 +1270,7 @@
>>  #endif
>>          OPT("fades") p->bEnableFades = atobool(value);
>>          OPT("field") p->bField = atobool( value );
>> +        OPT("cll") p->bEmitCLL = atobool(value);
>>          else
>>              return X265_PARAM_BAD_NAME;
>>      }
>> @@ -2016,7 +2018,8 @@
>>          p->vui.defDispWinRightOffset, p->vui.defDispWinBottomOffset);
>>      if (p->masteringDisplayColorVolume)
>>          s += sprintf(s, " master-display=%s",
>> p->masteringDisplayColorVolume);
>> -    s += sprintf(s, " max-cll=%hu,%hu", p->maxCLL, p->maxFALL);
>> +    if (p->bEmitCLL)
>> +        s += sprintf(s, "cll=%hu,%hu", p->maxCLL, p->maxFALL);
>>      s += sprintf(s, " min-luma=%hu", p->minLuma);
>>      s += sprintf(s, " max-luma=%hu", p->maxLuma);
>>      s += sprintf(s, " log2-max-poc-lsb=%d", p->log2MaxPocLsb);
>> @@ -2314,6 +2317,7 @@
>>      else dst->masteringDisplayColorVolume = NULL;
>>      dst->maxLuma = src->maxLuma;
>>      dst->minLuma = src->minLuma;
>> +    dst->bEmitCLL = src->bEmitCLL;
>>      dst->maxCLL = src->maxCLL;
>>      dst->maxFALL = src->maxFALL;
>>      dst->log2MaxPocLsb = src->log2MaxPocLsb;
>> @@ -2439,7 +2443,7 @@
>>      svtHevcParam->frameRateNumerator = 0;
>>      svtHevcParam->frameRateDenominator = 0;
>>      svtHevcParam->encoderBitDepth = 8;
>> -       svtHevcParam->encoderColorFormat = EB_YUV420;
>> +    svtHevcParam->encoderColorFormat = EB_YUV420;
>>      svtHevcParam->compressedTenBitFormat = 0;
>>      svtHevcParam->rateControlMode = 0;
>>      svtHevcParam->sceneChangeDetection = 1;
>> @@ -2477,11 +2481,11 @@
>>      svtHevcParam->maxCLL = 0;
>>      svtHevcParam->maxFALL = 0;
>>      svtHevcParam->useMasteringDisplayColorVolume = 0;
>> -       svtHevcParam->useNaluFile = 0;
>> -       svtHevcParam->whitePointX = 0;
>> -       svtHevcParam->whitePointY = 0;
>> -       svtHevcParam->maxDisplayMasteringLuminance = 0;
>> -       svtHevcParam->minDisplayMasteringLuminance = 0;
>> +    svtHevcParam->useNaluFile = 0;
>> +    svtHevcParam->whitePointX = 0;
>> +    svtHevcParam->whitePointY = 0;
>> +    svtHevcParam->maxDisplayMasteringLuminance = 0;
>> +    svtHevcParam->minDisplayMasteringLuminance = 0;
>>      svtHevcParam->dolbyVisionProfile = 0;
>>      svtHevcParam->targetSocket = -1;
>>      svtHevcParam->logicalProcessors = 0;
>> @@ -2513,7 +2517,7 @@
>>          else if (!strcmp(tune, "ssim")) svtHevcParam->tune = 1;
>>          else if (!strcmp(tune, "grain")) svtHevcParam->tune = 0;
>>          else if (!strcmp(tune, "animation")) svtHevcParam->tune = 0;
>> -               else if (!strcmp(tune, "vmaf")) svtHevcParam->tune = 2;
>> +        else if (!strcmp(tune, "vmaf")) svtHevcParam->tune = 2;
>>          else if (!strcmp(tune, "zero-latency") || !strcmp(tune,
>> "zerolatency")) svtHevcParam->latencyMode = 1;
>>          else  return -1;
>>      }
>> diff -r 220cdb4328a1 -r b57fe10e3879 source/encoder/encoder.cpp
>> --- a/source/encoder/encoder.cpp        Thu May 23 11:28:44 2019 +0800
>> +++ b/source/encoder/encoder.cpp        Thu May 23 19:38:47 2019 +0530
>> @@ -444,8 +444,6 @@
>>
>>      m_nalList.m_annexB = !!m_param->bAnnexB;
>>
>> -    m_emitCLLSEI = p->maxCLL || p->maxFALL || (p->dolbyProfile == 81);
>> -
>>      if (m_param->naluFile)
>>      {
>>          m_naluFile = x265_fopen(m_param->naluFile, "r");
>> @@ -2462,10 +2460,13 @@
>>
>>      if (m_param->bEmitHDRSEI)
>>      {
>> -        SEIContentLightLevel cllsei;
>> -        cllsei.max_content_light_level = m_param->maxCLL;
>> -        cllsei.max_pic_average_light_level = m_param->maxFALL;
>> -        cllsei.writeSEImessages(bs, m_sps, NAL_UNIT_PREFIX_SEI, list,
>> m_param->bSingleSeiNal);
>> +        if (m_param->bEmitCLL)
>> +        {
>> +            SEIContentLightLevel cllsei;
>> +            cllsei.max_content_light_level = m_param->maxCLL;
>> +            cllsei.max_pic_average_light_level = m_param->maxFALL;
>> +            cllsei.writeSEImessages(bs, m_sps, NAL_UNIT_PREFIX_SEI,
>> list, m_param->bSingleSeiNal);
>> +        }
>>
>>          if (m_param->masteringDisplayColorVolume)
>>          {
>> @@ -2711,7 +2712,7 @@
>>      p->vui.matrixCoeffs = dovi[doviProfile].matrixCoeffs;
>>
>>      if (dovi[doviProfile].doviProfileId == 81)
>> -        p->bEmitHDRSEI = 1;
>> +        p->bEmitHDRSEI = p->bEmitCLL = 1;
>>
>>      if (dovi[doviProfile].doviProfileId == 50)
>>          p->crQpOffset = 3;
>> diff -r 220cdb4328a1 -r b57fe10e3879 source/encoder/encoder.h
>> --- a/source/encoder/encoder.h  Thu May 23 11:28:44 2019 +0800
>> +++ b/source/encoder/encoder.h  Thu May 23 19:38:47 2019 +0530
>> @@ -203,7 +203,6 @@
>>      ScalingList        m_scalingList;      // quantization matrix
>> information
>>      Window             m_conformanceWindow;
>>
>> -    bool               m_emitCLLSEI;
>>      bool               m_bZeroLatency;     // x265_encoder_encode()
>> returns NALs for the input picture, zero lag
>>      bool               m_aborted;          // fatal error detected
>>      bool               m_reconfigure;      // Encoder reconfigure in
>> progress
>> diff -r 220cdb4328a1 -r b57fe10e3879 source/x265.h
>> --- a/source/x265.h     Thu May 23 11:28:44 2019 +0800
>> +++ b/source/x265.h     Thu May 23 19:38:47 2019 +0530
>> @@ -1780,6 +1780,9 @@
>>
>>      /* Enable field coding */
>>      int bField;
>> +
>> +    /*Emit content light level info SEI*/
>> +    int         bEmitCLL;
>>  } x265_param;
>>  /* x265_param_alloc:
>>   *  Allocates an x265_param instance. The returned param structure is not
>> diff -r 220cdb4328a1 -r b57fe10e3879 source/x265cli.h
>> --- a/source/x265cli.h  Thu May 23 11:28:44 2019 +0800
>> +++ b/source/x265cli.h  Thu May 23 19:38:47 2019 +0530
>> @@ -336,6 +336,8 @@
>>      { "svt-fps-in-vps",  no_argument  , NULL, 0 },
>>      { "no-svt-fps-in-vps",  no_argument  , NULL, 0 },
>>  #endif
>> +    { "cll", no_argument, NULL, 0 },
>> +    { "no-cll", no_argument, NULL, 0 },
>>      { 0, 0, 0, 0 },
>>      { 0, 0, 0, 0 },
>>      { 0, 0, 0, 0 },
>> @@ -602,7 +604,8 @@
>>      H1("   --chromaloc <integer>         Specify chroma sample location
>> (0 to 5). Default of %d\n", param->vui.chromaSampleLocTypeTopField);
>>      H0("   --master-display <string>     SMPTE ST 2086 master display
>> color volume info SEI (HDR)\n");
>>      H0("                                    format:
>> G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)\n");
>> -    H0("   --max-cll <string>            Emit content light level info
>> SEI as \"cll,fall\" (HDR)\n");
>> +    H0("   --max-cll <string>            Specify content light level
>> info SEI as \"cll,fall\" (HDR).\n");
>> +    H0("   --[no-]cll                    Emit content light level info
>> SEI. Default %s\n", OPT(param->bEmitCLL));
>>      H0("   --[no-]hdr                    Control dumping of HDR SEI
>> packet. If max-cll or master-display has non-zero values, this is enabled.
>> Default %s\n", OPT(param->bEmitHDRSEI));
>>      H0("   --[no-]hdr-opt                Add luma and chroma offsets for
>> HDR/WCG content. Default %s\n", OPT(param->bHDROpt));
>>      H0("   --min-luma <integer>          Minimum luma plane value of
>> input source picture\n");
>> _______________________________________________
>> x265-devel mailing list
>> x265-devel at videolan.org
>> https://mailman.videolan.org/listinfo/x265-devel
>>
> _______________________________________________
> 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/20190604/483bc7c1/attachment-0001.html>


More information about the x265-devel mailing list