[x265] [PATCH] Add ambient viewing enviroment sei.
Damiano Galassi
damiog at gmail.com
Mon May 27 16:23:42 UTC 2024
Ping
On Fri, Dec 1, 2023 at 10:10 AM Damiano Galassi <damiog at gmail.com> wrote:
> ---
> source/common/param.cpp | 6 ++++++
> source/encoder/encoder.cpp | 9 +++++++++
> source/encoder/sei.h | 19 +++++++++++++++++++
> source/x265.h | 9 +++++++++
> 4 files changed, 43 insertions(+)
>
> diff --git a/source/common/param.cpp b/source/common/param.cpp
> index 1a4df4cdc..d63c36786 100755
> --- a/source/common/param.cpp
> +++ b/source/common/param.cpp
> @@ -378,6 +378,7 @@ void x265_param_default(x265_param* param)
> param->preferredTransferCharacteristics = -1;
> param->pictureStructure = -1;
> param->bEmitCLL = 1;
> + param->bEmitAmbientViewingEnvironment = 0;
>
> param->bEnableFrameDuplication = 0;
> param->dupThreshold = 70;
> @@ -1880,6 +1881,7 @@ int x265_check_params(x265_param* param)
> || param->bEmitIDRRecoverySEI
> || !!param->interlaceMode
> || param->preferredTransferCharacteristics > 1
> + || param->bEmitAmbientViewingEnvironment
> || param->toneMapFile
> || param->naluFile);
>
> @@ -2768,6 +2770,10 @@ void x265_copy_params(x265_param* dst, x265_param*
> src)
> dst->bEmitCLL = src->bEmitCLL;
> dst->maxCLL = src->maxCLL;
> dst->maxFALL = src->maxFALL;
> + dst->ambientIlluminance = src->ambientIlluminance;
> + dst->ambientLightX = src->ambientLightX;
> + dst->ambientLightY = src->ambientLightY;
> + dst->bEmitAmbientViewingEnvironment =
> src->bEmitAmbientViewingEnvironment;
> dst->log2MaxPocLsb = src->log2MaxPocLsb;
> dst->bEmitVUIHRDInfo = src->bEmitVUIHRDInfo;
> dst->bEmitVUITimingInfo = src->bEmitVUITimingInfo;
> diff --git a/source/encoder/encoder.cpp b/source/encoder/encoder.cpp
> index 8ec01bebe..c5043341e 100644
> --- a/source/encoder/encoder.cpp
> +++ b/source/encoder/encoder.cpp
> @@ -3276,6 +3276,15 @@ void Encoder::getStreamHeaders(NALList& list,
> Entropy& sbacCoder, Bitstream& bs)
> }
> }
>
> + if (m_param->bEmitAmbientViewingEnvironment)
> + {
> + SEIAmbientViewingEnvironment ambientsei;
> + ambientsei.ambientIlluminance = m_param->ambientIlluminance;
> + ambientsei.ambientLightX = m_param->ambientLightX;
> + ambientsei.ambientLightY = m_param->ambientLightY;
> + ambientsei.writeSEImessages(bs, m_sps, NAL_UNIT_PREFIX_SEI, list,
> m_param->bSingleSeiNal);
> + }
> +
> if (m_param->bEmitInfoSEI)
> {
> char *opts = x265_param2string(m_param,
> m_sps.conformanceWindow.rightOffset, m_sps.conformanceWindow.bottomOffset);
> diff --git a/source/encoder/sei.h b/source/encoder/sei.h
> index 03e210639..712e4efb4 100644
> --- a/source/encoder/sei.h
> +++ b/source/encoder/sei.h
> @@ -242,6 +242,25 @@ public:
> }
> };
>
> +class SEIAmbientViewingEnvironment : public SEI
> +{
> +public:
> + SEIAmbientViewingEnvironment()
> + {
> + m_payloadType = AMBIENT_VIEWING_ENVIRONMENT;
> + m_payloadSize = 8;
> + }
> + uint32_t ambientIlluminance;
> + uint16_t ambientLightX;
> + uint16_t ambientLightY;
> + void writeSEI(const SPS&)
> + {
> + WRITE_CODE(ambientIlluminance, 32, "ambient_illuminance");
> + WRITE_CODE(ambientLightX, 16, "ambient_light_x");
> + WRITE_CODE(ambientLightY, 16, "ambient_light_y");
> + }
> +};
> +
> class SEIDecodedPictureHash : public SEI
> {
> public:
> diff --git a/source/x265.h b/source/x265.h
> index fb1a5dca7..86d68bd7a 100644
> --- a/source/x265.h
> +++ b/source/x265.h
> @@ -371,6 +371,7 @@ typedef enum
> MASTERING_DISPLAY_INFO = 137,
> CONTENT_LIGHT_LEVEL_INFO = 144,
> ALTERNATIVE_TRANSFER_CHARACTERISTICS = 147,
> + AMBIENT_VIEWING_ENVIRONMENT = 148,
> } SEIPayloadType;
>
> typedef struct x265_sei_payload
> @@ -1906,6 +1907,11 @@ typedef struct x265_param
> * value to that value. */
> uint16_t maxLuma;
>
> + /* ISO/IEC 23008-2:2017, D.2.39 ambient viewing environment SEI
> message */
> + uint32_t ambientIlluminance;
> + uint16_t ambientLightX;
> + uint16_t ambientLightY;
> +
> /* Maximum of the picture order count */
> int log2MaxPocLsb;
>
> @@ -2117,6 +2123,9 @@ typedef struct x265_param
> /*Emit content light level info SEI*/
> int bEmitCLL;
>
> + /* Emit ambient viewing environment SEI */
> + int bEmitAmbientViewingEnvironment;
> +
> /*
> * Signals picture structure SEI timing message for every frame
> * picture structure 7 is signalled for frame doubling
> --
> 2.39.3 (Apple Git-145)
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/x265-devel/attachments/20240527/e757c6ba/attachment.htm>
More information about the x265-devel
mailing list