[FFmpeg-devel] [PATCH 1/4] avcodec/cbs_{h2645, sei}: add support for Ambient Viewing Environment SEI
James Almer
jamrial at gmail.com
Tue Jan 10 23:34:41 EET 2023
On 1/10/2023 6:19 PM, Jan Ekström wrote:
> Defined by H.274, this SEI message is utilized by iPhones to save
> the nominal ambient viewing environment for the display of recorded
> HDR content.
> ---
> libavcodec/cbs_h2645.c | 6 ++++++
> libavcodec/cbs_sei.h | 6 ++++++
> libavcodec/cbs_sei_syntax_template.c | 17 +++++++++++++++++
> 3 files changed, 29 insertions(+)
>
> diff --git a/libavcodec/cbs_h2645.c b/libavcodec/cbs_h2645.c
> index 4ee06003c3..80e48829af 100644
> --- a/libavcodec/cbs_h2645.c
> +++ b/libavcodec/cbs_h2645.c
> @@ -1500,6 +1500,12 @@ static const SEIMessageTypeDescriptor cbs_sei_common_types[] = {
> sizeof(SEIRawAlternativeTransferCharacteristics),
> SEI_MESSAGE_RW(sei, alternative_transfer_characteristics),
> },
> + {
> + SEI_TYPE_AMBIENT_VIEWING_ENVIRONMENT,
> + 1, 0,
> + sizeof(SEIRawAmbientViewingEnvironment),
> + SEI_MESSAGE_RW(sei, ambient_viewing_environment),
> + },
> SEI_MESSAGE_TYPE_END,
> };
>
> diff --git a/libavcodec/cbs_sei.h b/libavcodec/cbs_sei.h
> index c7a7a95be0..1c327a4689 100644
> --- a/libavcodec/cbs_sei.h
> +++ b/libavcodec/cbs_sei.h
> @@ -65,6 +65,12 @@ typedef struct SEIRawAlternativeTransferCharacteristics {
> uint8_t preferred_transfer_characteristics;
> } SEIRawAlternativeTransferCharacteristics;
>
> +typedef struct SEIRawAmbientViewingEnvironment {
> + uint32_t ambient_illuminance;
> + uint16_t ambient_light_x;
> + uint16_t ambient_light_y;
> +} SEIRawAmbientViewingEnvironment;
> +
> typedef struct SEIRawMessage {
> uint32_t payload_type;
> uint32_t payload_size;
> diff --git a/libavcodec/cbs_sei_syntax_template.c b/libavcodec/cbs_sei_syntax_template.c
> index 0ef7b42ed9..6a7cc36dda 100644
> --- a/libavcodec/cbs_sei_syntax_template.c
> +++ b/libavcodec/cbs_sei_syntax_template.c
> @@ -144,6 +144,23 @@ static int FUNC(alternative_transfer_characteristics)
> return 0;
> }
>
> +static int FUNC(ambient_viewing_environment)
> + (CodedBitstreamContext *ctx, RWContext *rw,
> + SEIRawAmbientViewingEnvironment *current,
> + SEIMessageState *state)
> +{
> + static const uint16_t max_ambient_light_value = 50000;
> + int err;
> +
> + HEADER("Ambient Viewing Environment");
> +
> + u(32, ambient_illuminance, 1, MAX_UINT_BITS(32));
> + u(16, ambient_light_x, 0, max_ambient_light_value);
> + u(16, ambient_light_y, 0, max_ambient_light_value);
> +
> + return 0;
> +}
> +
> static int FUNC(message)(CodedBitstreamContext *ctx, RWContext *rw,
> SEIRawMessage *current)
> {
Should be ok.
More information about the ffmpeg-devel
mailing list