[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