<div dir="ltr">Pushed to master</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 5, 2021 at 3:36 PM Niranjan Bala <<a href="mailto:niranjan@multicorewareinc.com">niranjan@multicorewareinc.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">From b427cb7a80ef8a09f782e3b0fe9f2bd6ba214a95 Mon Sep 17 00:00:00 2001<br>From: Niranjan <<a href="mailto:niranjan@multicorewareinc.com" target="_blank">niranjan@multicorewareinc.com</a>><br>Date: Fri, 5 Feb 2021 00:24:30 +0530<br>Subject: [PATCH] Add a new param option for simplifying colorimetry parameters<br><br>The new param option covers commonly used combinations of color primaries, transfer characteristics, color matrix, range of luma and chroma signals, and chroma sample location<br>---<br> doc/reST/cli.rst | 75 +++++++++++++++++++++++++<br> source/CMakeLists.txt | 2 +-<br> source/common/param.cpp | 7 +++<br> source/encoder/encoder.cpp | 95 ++++++++++++++++++++++++++++++++<br> source/encoder/encoder.h | 2 +<br> source/test/regression-tests.txt | 1 +<br> source/x265.h | 7 +++<br> source/x265cli.cpp | 24 ++++++++<br> source/x265cli.h | 1 +<br> 9 files changed, 213 insertions(+), 1 deletion(-)<br><br>diff --git a/doc/reST/cli.rst b/doc/reST/cli.rst<br>index f19a28734..1bb90175b 100755<br>--- a/doc/reST/cli.rst<br>+++ b/doc/reST/cli.rst<br>@@ -2386,6 +2386,81 @@ VUI fields must be manually specified.<br> Values in the range 0..12. See D.3.3 of the HEVC spec. for a detailed explanation.<br> Required for HLG (Hybrid Log Gamma) signaling. Not signaled by default.<br> <br>+.. option:: --video-signal-type-preset <string><br>+<br>+ Specify combinations of color primaries, transfer characteristics, color matrix,<br>+ range of luma and chroma signals, and chroma sample location.<br>+ String format: <system-id>[:<color-volume>]<br>+ <br>+ This has higher precedence than individual VUI parameters. If any individual VUI option<br>+ is specified together with this, which changes the values set corresponding to the system-id<br>+ or color-volume, it will be discarded.<br>+<br>+ system-id options and their corresponding values:<br>+ +----------------+---------------------------------------------------------------+<br>+ | system-id | Value |<br>+ +================+===============================================================+<br>+ | BT601_525 | --colorprim smpte170m --transfer smpte170m |<br>+ | | --colormatrix smpte170m --range limited --chromaloc 0 |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT601_626 | --colorprim bt470bg --transfer smpte170m --colormatrix bt470bg|<br>+ | | --range limited --chromaloc 0 |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT709_YCC | --colorprim bt709 --transfer bt709 --colormatrix bt709 |<br>+ | | --range limited --chromaloc 0 |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT709_RGB | --colorprim bt709 --transfer bt709 --colormatrix gbr |<br>+ | | --range limited |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT2020_YCC_NCL | --colorprim bt2020 --transfer bt2020-10 --colormatrix bt709 |<br>+ | | --range limited --chromaloc 2 |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT2020_RGB | --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc|<br>+ | | --range limited |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT2100_PQ_YCC | --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc|<br>+ | | --range limited --chromaloc 2 |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT2100_PQ_ICTCP| --colorprim bt2020 --transfer smpte2084 --colormatrix ictcp |<br>+ | | --range limited --chromaloc 2 |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT2100_PQ_RGB | --colorprim bt2020 --transfer smpte2084 --colormatrix gbr |<br>+ | | --range limited |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT2100_HLG_YCC | --colorprim bt2020 --transfer arib-std-b67 |<br>+ | | --colormatrix bt2020nc --range limited --chromaloc 2 |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT2100_HLG_RGB | --colorprim bt2020 --transfer arib-std-b67 --colormatrix gbr |<br>+ | | --range limited |<br>+ +----------------+---------------------------------------------------------------+<br>+ | FR709_RGB | --colorprim bt709 --transfer bt709 --colormatrix gbr |<br>+ | | --range full |<br>+ +----------------+---------------------------------------------------------------+<br>+ | FR2020_RGB | --colorprim bt2020 --transfer bt2020-10 --colormatrix gbr |<br>+ | | --range full |<br>+ +----------------+---------------------------------------------------------------+<br>+ | FRP3D65_YCC | --colorprim smpte432 --transfer bt709 --colormatrix smpte170m |<br>+ | | --range full --chromaloc 1 |<br>+ +----------------+---------------------------------------------------------------+<br>+<br>+ color-volume options and their corresponding values:<br>+ +----------------+---------------------------------------------------------------+<br>+ | color-volume | Value |<br>+ +================+===============================================================+<br>+ | P3D65x1000n0005| --master-display G(13250,34500)B(7500,3000)R(34000,16000) |<br>+ | | WP(15635,16450)L(10000000,5) |<br>+ +----------------+---------------------------------------------------------------+<br>+ | P3D65x4000n005 | --master-display G(13250,34500)B(7500,3000)R(34000,16000) |<br>+ | | WP(15635,16450)L(40000000,50) |<br>+ +----------------+---------------------------------------------------------------+<br>+ | BT2100x108n0005| --master-display G(8500,39850)B(6550,2300)R(34000,146000) |<br>+ | | WP(15635,16450)L(10000000,1) |<br>+ +----------------+---------------------------------------------------------------+<br>+<br>+ Note: The color-volume options can be used only with the system-id options BT2100_PQ_YCC,<br>+ BT2100_PQ_ICTCP, and BT2100_PQ_RGB. It is incompatible with other options.<br>+<br>+<br> Bitstream options<br> =================<br> <br>diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt<br>index 95218f5dc..a407271b4 100755<br>--- a/source/CMakeLists.txt<br>+++ b/source/CMakeLists.txt<br>@@ -29,7 +29,7 @@ option(NATIVE_BUILD "Target the build CPU" OFF)<br> option(STATIC_LINK_CRT "Statically link C runtime for release builds" OFF)<br> mark_as_advanced(FPROFILE_USE FPROFILE_GENERATE NATIVE_BUILD)<br> # X265_BUILD must be incremented each time the public API is changed<br>-set(X265_BUILD 198)<br>+set(X265_BUILD 199)<br> configure_file("${PROJECT_SOURCE_DIR}/<a href="http://x265.def.in" target="_blank">x265.def.in</a>"<br> "${PROJECT_BINARY_DIR}/x265.def")<br> configure_file("${PROJECT_SOURCE_DIR}/<a href="http://x265_config.h.in" target="_blank">x265_config.h.in</a>"<br>diff --git a/source/common/param.cpp b/source/common/param.cpp<br>index 47a7a7c47..90b80c8a4 100755<br>--- a/source/common/param.cpp<br>+++ b/source/common/param.cpp<br>@@ -318,6 +318,7 @@ void x265_param_default(x265_param* param)<br> param->maxLuma = PIXEL_MAX;<br> param->log2MaxPocLsb = 8;<br> param->maxSlices = 1;<br>+ param->videoSignalTypePreset = NULL;<br> <br> /*Conformance window*/<br> param->confWinRightOffset = 0;<br>@@ -1381,6 +1382,7 @@ int x265_param_parse(x265_param* p, const char* name, const char* value)<br> OPT("vbv-live-multi-pass") p->bliveVBV2pass = atobool(value);<br> OPT("min-vbv-fullness") p->minVbvFullness = atof(value);<br> OPT("max-vbv-fullness") p->maxVbvFullness = atof(value);<br>+ OPT("video-signal-type-preset") p->videoSignalTypePreset = strdup(value);<br> else<br> return X265_PARAM_BAD_NAME;<br> }<br>@@ -2015,6 +2017,8 @@ char *x265_param2string(x265_param* p, int padx, int pady)<br> bufSize += strlen(p->numaPools);<br> if (p->masteringDisplayColorVolume)<br> bufSize += strlen(p->masteringDisplayColorVolume);<br>+ if (p->videoSignalTypePreset)<br>+ bufSize += strlen(p->videoSignalTypePreset);<br> <br> buf = s = X265_MALLOC(char, bufSize);<br> if (!buf)<br>@@ -2616,6 +2620,9 @@ void x265_copy_params(x265_param* dst, x265_param* src)<br> dst->confWinRightOffset = src->confWinRightOffset;<br> dst->confWinBottomOffset = src->confWinBottomOffset;<br> dst->bliveVBV2pass = src->bliveVBV2pass;<br>+<br>+ if (src->videoSignalTypePreset) dst->videoSignalTypePreset = strdup(src->videoSignalTypePreset);<br>+ else dst->videoSignalTypePreset = NULL;<br> #ifdef SVT_HEVC<br> memcpy(dst->svtHevcParam, src->svtHevcParam, sizeof(EB_H265_ENC_CONFIGURATION));<br> #endif<br>diff --git a/source/encoder/encoder.cpp b/source/encoder/encoder.cpp<br>index 1f710e1ce..1dd247124 100644<br>--- a/source/encoder/encoder.cpp<br>+++ b/source/encoder/encoder.cpp<br>@@ -74,6 +74,38 @@ DolbyVisionProfileSpec dovi[] =<br> { 1, 1, 1, 1, 1, 5, 0, 16, 9, 9, 81 },<br> { 1, 1, 1, 1, 1, 5, 0, 1, 1, 1, 82 }<br> };<br>+<br>+typedef struct<br>+{<br>+ int bEnableVideoSignalTypePresentFlag;<br>+ int bEnableColorDescriptionPresentFlag;<br>+ int bEnableChromaLocInfoPresentFlag;<br>+ int colorPrimaries;<br>+ int transferCharacteristics;<br>+ int matrixCoeffs;<br>+ int bEnableVideoFullRangeFlag;<br>+ int chromaSampleLocTypeTopField;<br>+ int chromaSampleLocTypeBottomField;<br>+ const char* systemId;<br>+}VideoSignalTypePresets;<br>+<br>+VideoSignalTypePresets vstPresets[] =<br>+{<br>+ {1, 1, 1, 6, 6, 6, 0, 0, 0, "BT601_525"},<br>+ {1, 1, 1, 5, 6, 5, 0, 0, 0, "BT601_626"},<br>+ {1, 1, 1, 1, 1, 1, 0, 0, 0, "BT709_YCC"},<br>+ {1, 1, 0, 1, 1, 0, 0, 0, 0, "BT709_RGB"},<br>+ {1, 1, 1, 9, 14, 1, 0, 2, 2, "BT2020_YCC_NCL"},<br>+ {1, 1, 0, 9, 16, 9, 0, 0, 0, "BT2020_RGB"},<br>+ {1, 1, 1, 9, 16, 9, 0, 2, 2, "BT2100_PQ_YCC"},<br>+ {1, 1, 1, 9, 16, 14, 0, 2, 2, "BT2100_PQ_ICTCP"},<br>+ {1, 1, 0, 9, 16, 0, 0, 0, 0, "BT2100_PQ_RGB"},<br>+ {1, 1, 1, 9, 18, 9, 0, 2, 2, "BT2100_HLG_YCC"},<br>+ {1, 1, 0, 9, 18, 0, 0, 0, 0, "BT2100_HLG_RGB"},<br>+ {1, 1, 0, 1, 1, 0, 1, 0, 0, "FR709_RGB"},<br>+ {1, 1, 0, 9, 14, 0, 1, 0, 0, "FR2020_RGB"},<br>+ {1, 1, 1, 12, 1, 6, 1, 1, 1, "FRP3D65_YCC"}<br>+};<br> }<br> <br> /* Threshold for motion vection, based on expermental result.<br>@@ -982,6 +1014,7 @@ void Encoder::destroy()<br> free((char*)m_param->toneMapFile);<br> free((char*)m_param->analysisSave);<br> free((char*)m_param->analysisLoad);<br>+ free((char*)m_param->videoSignalTypePreset);<br> PARAM_NS::x265_param_free(m_param);<br> }<br> }<br>@@ -3548,6 +3581,65 @@ void Encoder::configureDolbyVisionParams(x265_param* p)<br> p->crQpOffset = 3;<br> }<br> <br>+void Encoder::configureVideoSignalTypePreset(x265_param* p)<br>+{<br>+ char systemId[20] = {};<br>+ char colorVolume[20] = {};<br>+ sscanf(p->videoSignalTypePreset, "%[^:]:%s", systemId, colorVolume);<br>+ uint32_t sysId = 0;<br>+ while (strcmp(vstPresets[sysId].systemId, systemId))<br>+ {<br>+ if (sysId + 1 == sizeof(vstPresets) / sizeof(vstPresets[0]))<br>+ {<br>+ x265_log(NULL, X265_LOG_ERROR, "Incorrect system-id, aborting\n");<br>+ m_aborted = true;<br>+ break;<br>+ }<br>+ sysId++;<br>+ }<br>+<br>+ p->vui.bEnableVideoSignalTypePresentFlag = vstPresets[sysId].bEnableVideoSignalTypePresentFlag;<br>+ p->vui.bEnableColorDescriptionPresentFlag = vstPresets[sysId].bEnableColorDescriptionPresentFlag;<br>+ p->vui.bEnableChromaLocInfoPresentFlag = vstPresets[sysId].bEnableChromaLocInfoPresentFlag;<br>+ p->vui.colorPrimaries = vstPresets[sysId].colorPrimaries;<br>+ p->vui.transferCharacteristics = vstPresets[sysId].transferCharacteristics;<br>+ p->vui.matrixCoeffs = vstPresets[sysId].matrixCoeffs;<br>+ p->vui.bEnableVideoFullRangeFlag = vstPresets[sysId].bEnableVideoFullRangeFlag;<br>+ p->vui.chromaSampleLocTypeTopField = vstPresets[sysId].chromaSampleLocTypeTopField;<br>+ p->vui.chromaSampleLocTypeBottomField = vstPresets[sysId].chromaSampleLocTypeBottomField;<br>+<br>+ if (colorVolume[0] != '\0')<br>+ {<br>+ if (!strcmp(systemId, "BT2100_PQ_YCC") || !strcmp(systemId, "BT2100_PQ_ICTCP") || !strcmp(systemId, "BT2100_PQ_RGB"))<br>+ {<br>+ p->bEmitHDR10SEI = 1;<br>+ if (!strcmp(colorVolume, "P3D65x1000n0005"))<br>+ {<br>+ p->masteringDisplayColorVolume = strdup("G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,5)");<br>+ }<br>+ else if (!strcmp(colorVolume, "P3D65x4000n005"))<br>+ {<br>+ p->masteringDisplayColorVolume = strdup("G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(40000000,50)");<br>+ }<br>+ else if (!strcmp(colorVolume, "BT2100x108n0005"))<br>+ {<br>+ p->masteringDisplayColorVolume = strdup("G(8500,39850)B(6550,2300)R(34000,146000)WP(15635,16450)L(10000000,1)");<br>+ }<br>+ else<br>+ {<br>+ x265_log(NULL, X265_LOG_ERROR, "Incorrect color-volume, aborting\n");<br>+ m_aborted = true;<br>+ }<br>+ }<br>+ else<br>+ {<br>+ x265_log(NULL, X265_LOG_ERROR, "Color-volume is not supported with the given system-id, aborting\n");<br>+ m_aborted = true;<br>+ }<br>+ }<br>+<br>+}<br>+<br> void Encoder::configure(x265_param *p)<br> {<br> this->m_param = p;<br>@@ -4243,6 +4335,9 @@ void Encoder::configure(x265_param *p)<br> }<br> }<br> <br>+ if (p->videoSignalTypePreset) // Default disabled.<br>+ configureVideoSignalTypePreset(p);<br>+<br> if (m_param->toneMapFile || p->bHDR10Opt || p->bEmitHDR10SEI)<br> {<br> if (!p->bRepeatHeaders)<br>diff --git a/source/encoder/encoder.h b/source/encoder/encoder.h<br>index ecb6e153f..22a886ef4 100644<br>--- a/source/encoder/encoder.h<br>+++ b/source/encoder/encoder.h<br>@@ -387,6 +387,8 @@ public:<br> <br> void configureDolbyVisionParams(x265_param* p);<br> <br>+ void configureVideoSignalTypePreset(x265_param* p);<br>+<br> protected:<br> <br> void initVPS(VPS *vps);<br>diff --git a/source/test/regression-tests.txt b/source/test/regression-tests.txt<br>index 26f6b7ed3..a4fcab87f 100644<br>--- a/source/test/regression-tests.txt<br>+++ b/source/test/regression-tests.txt<br>@@ -165,6 +165,7 @@ crowd_run_1920x1080_50.yuv, --preset faster --ctu 32 --rskip 2 --rskip-edge-thre<br> crowd_run_1920x1080_50.yuv, --preset fast --ctu 64 --rskip 2 --rskip-edge-threshold 5 --aq-mode 4<br> crowd_run_1920x1080_50.yuv, --preset slow --ctu 32 --rskip 2 --rskip-edge-threshold 5 --hist-scenecut --hist-threshold 0.1<br> crowd_run_1920x1080_50.yuv, --preset slower --ctu 16 --rskip 2 --rskip-edge-threshold 5 --hist-scenecut --hist-threshold 0.1 --aq-mode 4<br>+crowd_run_1920x1080_50.yuv, --preset ultrafast --video-signal-type-preset BT2100_PQ_YCC:BT2100x108n0005<br> <br> # Main12 intraCost overflow bug test<br> 720p50_parkrun_ter.y4m,--preset medium<br>diff --git a/source/x265.h b/source/x265.h<br>index f44040ba7..ad02072bf 100644<br>--- a/source/x265.h<br>+++ b/source/x265.h<br>@@ -1932,6 +1932,13 @@ typedef struct x265_param<br> /* Maximum VBV fullness to be maintained. Default 80. Keep the buffer<br> * at max 80% full */<br> double maxVbvFullness;<br>+<br>+ /* Specify combinations of color primaries, transfer characteristics, color matrix,<br>+ * range of luma and chroma signals, and chroma sample location. This has higher <br>+ * precedence than individual VUI parameters. If any individual VUI option is specified <br>+ * together with this, which changes the values set corresponding to the system-id <br>+ * or color-volume, it will be discarded. */<br>+ const char* videoSignalTypePreset;<br> } x265_param;<br> <br> /* x265_param_alloc:<br>diff --git a/source/x265cli.cpp b/source/x265cli.cpp<br>index c28dd7f8c..f2b73f7db 100755<br>--- a/source/x265cli.cpp<br>+++ b/source/x265cli.cpp<br>@@ -313,6 +313,30 @@ namespace X265_NS {<br> H0(" --master-display <string> SMPTE ST 2086 master display color volume info SEI (HDR)\n");<br> H0(" format: G(x,y)B(x,y)R(x,y)WP(x,y)L(max,min)\n");<br> H0(" --max-cll <string> Specify content light level info SEI as \"cll,fall\" (HDR).\n");<br>+ H0(" --video-signal-type-preset <string> Specify combinations of color primaries, transfer characteristics, color matrix, range of luma and chroma signals, and chroma sample location\n");<br>+ H0(" format: <system-id>[:<color-volume>]\n");<br>+ H0(" This has higher precedence than individual VUI parameters. If any individual VUI option is specified together with this,\n");<br>+ H0(" which changes the values set corresponding to the system-id or color-volume, it will be discarded.\n");<br>+ H0(" The color-volume can be used only with the system-id options BT2100_PQ_YCC, BT2100_PQ_ICTCP, and BT2100_PQ_RGB.\n");<br>+ H0(" system-id options and their corresponding values:\n");<br>+ H0(" BT601_525: --colorprim smpte170m --transfer smpte170m --colormatrix smpte170m --range limited --chromaloc 0\n");<br>+ H0(" BT601_626: --colorprim bt470bg --transfer smpte170m --colormatrix bt470bg --range limited --chromaloc 0\n");<br>+ H0(" BT709_YCC: --colorprim bt709 --transfer bt709 --colormatrix bt709 --range limited --chromaloc 0\n");<br>+ H0(" BT709_RGB: --colorprim bt709 --transfer bt709 --colormatrix gbr --range limited\n");<br>+ H0(" BT2020_YCC_NCL: --colorprim bt2020 --transfer bt2020-10 --colormatrix bt709 --range limited --chromaloc 2\n");<br>+ H0(" BT2020_RGB: --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc --range limited\n");<br>+ H0(" BT2100_PQ_YCC: --colorprim bt2020 --transfer smpte2084 --colormatrix bt2020nc --range limited --chromaloc 2\n");<br>+ H0(" BT2100_PQ_ICTCP: --colorprim bt2020 --transfer smpte2084 --colormatrix ictcp --range limited --chromaloc 2\n");<br>+ H0(" BT2100_PQ_RGB: --colorprim bt2020 --transfer smpte2084 --colormatrix gbr --range limited\n");<br>+ H0(" BT2100_HLG_YCC: --colorprim bt2020 --transfer arib-std-b67 --colormatrix bt2020nc --range limited --chromaloc 2\n");<br>+ H0(" BT2100_HLG_RGB: --colorprim bt2020 --transfer arib-std-b67 --colormatrix gbr --range limited\n");<br>+ H0(" FR709_RGB: --colorprim bt709 --transfer bt709 --colormatrix gbr --range full\n");<br>+ H0(" FR2020_RGB: --colorprim bt2020 --transfer bt2020-10 --colormatrix gbr --range full\n");<br>+ H0(" FRP3D65_YCC: --colorprim smpte432 --transfer bt709 --colormatrix smpte170m --range full --chromaloc 1\n");<br>+ H0(" color-volume options and their corresponding values:\n");<br>+ H0(" P3D65x1000n0005: --master-display G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,5)\n");<br>+ H0(" P3D65x4000n005: --master-display G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(40000000,50)\n");<br>+ H0(" BT2100x108n0005: --master-display G(8500,39850)B(6550,2300)R(34000,146000)WP(15635,16450)L(10000000,1)\n");<br> H0(" --[no-]cll Emit content light level info SEI. Default %s\n", OPT(param->bEmitCLL));<br> H0(" --[no-]hdr10 Control dumping of HDR10 SEI packet. If max-cll or master-display has non-zero values, this is enabled. Default %s\n", OPT(param->bEmitHDR10SEI));<br> H0(" --[no-]hdr-opt Add luma and chroma offsets for HDR/WCG content. Default %s. Now deprecated.\n", OPT(param->bHDROpt));<br>diff --git a/source/x265cli.h b/source/x265cli.h<br>index a24d25435..3d2480374 100644<br>--- a/source/x265cli.h<br>+++ b/source/x265cli.h<br>@@ -249,6 +249,7 @@ static const struct option long_options[] =<br> { "crop-rect", required_argument, NULL, 0 }, /* DEPRECATED */<br> { "master-display", required_argument, NULL, 0 },<br> { "max-cll", required_argument, NULL, 0 },<br>+ {"video-signal-type-preset", required_argument, NULL, 0 },<br> { "min-luma", required_argument, NULL, 0 },<br> { "max-luma", required_argument, NULL, 0 },<br> { "log2-max-poc-lsb", required_argument, NULL, 8 },<br>-- <br>2.18.0.windows.1<br><br><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr"><div dir="ltr"><div dir="ltr"><font color="#0c343d" face="verdana, sans-serif"><br></font></div><div dir="ltr"><font color="#0c343d" face="verdana, sans-serif">Thanks & Regards</font><div><font color="#0c343d" face="verdana, sans-serif"><b>Niranjan Kumar B</b></font></div><div><font size="1" color="#0c343d" face="verdana, sans-serif">Video Codec Engineer </font></div><div><font size="1" color="#0c343d" face="verdana, sans-serif">Media & AI Analytics</font></div><div><font face="trebuchet ms, sans-serif" color="#0c343d">+91 958 511 1449</font></div><div><a href="https://multicorewareinc.com/" style="color:rgb(17,85,204)" target="_blank"><img src="https://docs.google.com/uc?export=download&id=1kc3RJu9M8bnIf6Xa5rUw2d-eEVUsPBE5&revid=0B7tw9XJBmynaemR1VUpQUi9DVytRVW5SVkRwVTFjb1hBMUcwPQ"></a></div></div></div></div></div></div></div></div>
_______________________________________________<br>
x265-devel mailing list<br>
<a href="mailto:x265-devel@videolan.org" target="_blank">x265-devel@videolan.org</a><br>
<a href="https://mailman.videolan.org/listinfo/x265-devel" rel="noreferrer" target="_blank">https://mailman.videolan.org/listinfo/x265-devel</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><font face="georgia, serif">Regards,</font><div><b><font face="georgia, serif">Aruna Matheswaran,</font></b></div><div><font face="georgia, serif">Video Codec Engineer,</font></div><div><font face="georgia, serif">Media & AI analytics BU,</font></div><div><span><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"><span style="border:none;display:inline-block;overflow:hidden;width:153px;height:58px"><img src="https://lh5.googleusercontent.com/gjX5cPNIZgwUrhfqkTwQUZWztIKmmo0qs3kbwvkS5H-bDVE2ftte9pMTVnFLSjOcjYWLtfc6_OGpxW4vraLg2r5QAIf1Q3MpldFDgWtzK_gXi8ptw5B3joIbsGL6mxj-JRdjHzT5" width="96" height="36" style="margin-left: 0px; margin-top: 0px;"></span></span></span><font face="georgia, serif"><br></font></div><div><span><span style="font-size:11pt;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"><span style="border:none;display:inline-block;overflow:hidden;width:153px;height:58px"><img src="https://lh5.googleusercontent.com/gjX5cPNIZgwUrhfqkTwQUZWztIKmmo0qs3kbwvkS5H-bDVE2ftte9pMTVnFLSjOcjYWLtfc6_OGpxW4vraLg2r5QAIf1Q3MpldFDgWtzK_gXi8ptw5B3joIbsGL6mxj-JRdjHzT5" style="margin-left: 0px; margin-top: 0px;"></span></span></span><font face="georgia, serif"><br></font></div><div><font face="georgia, serif"><br></font></div></div></div></div></div></div></div></div></div>