[FFmpeg-devel] [PATCH v2 1/4] avutil: add ambient viewing environment metadata side data
Anton Khirnov
anton at khirnov.net
Tue Apr 5 12:13:12 EEST 2022
Quoting lance.lmwang at gmail.com (2022-03-28 14:41:08)
> From: Limin Wang <lance.lmwang at gmail.com>
>
> Signed-off-by: Limin Wang <lance.lmwang at gmail.com>
> ---
> libavutil/frame.c | 1 +
> libavutil/frame.h | 6 +++++
> libavutil/mastering_display_metadata.c | 23 +++++++++++++++++
> libavutil/mastering_display_metadata.h | 45 ++++++++++++++++++++++++++++++++++
> 4 files changed, 75 insertions(+)
>
> diff --git a/libavutil/frame.c b/libavutil/frame.c
> index fbb869f..8882da2 100644
> --- a/libavutil/frame.c
> +++ b/libavutil/frame.c
> @@ -815,6 +815,7 @@ const char *av_frame_side_data_name(enum AVFrameSideDataType type)
> case AV_FRAME_DATA_DETECTION_BBOXES: return "Bounding boxes for object detection and classification";
> case AV_FRAME_DATA_DOVI_RPU_BUFFER: return "Dolby Vision RPU Data";
> case AV_FRAME_DATA_DOVI_METADATA: return "Dolby Vision Metadata";
> + case AV_FRAME_DATA_AMBIENT_VIEWING_ENV: return "Ambient Viewing Environment";
> }
> return NULL;
> }
> diff --git a/libavutil/frame.h b/libavutil/frame.h
> index 33fac20..f7b1d4e 100644
> --- a/libavutil/frame.h
> +++ b/libavutil/frame.h
> @@ -209,6 +209,12 @@ enum AVFrameSideDataType {
> * volume transform - CUVA 005.1-2021.
> */
> AV_FRAME_DATA_DYNAMIC_HDR_VIVID,
> +
> + /**
> + * ambient viewing environment for a video frame, as described by
> + * the AVAmbientViewingEnvMetadata.
> + */
> + AV_FRAME_DATA_AMBIENT_VIEWING_ENV,
> };
>
> enum AVActiveFormatDescription {
> diff --git a/libavutil/mastering_display_metadata.c b/libavutil/mastering_display_metadata.c
> index 6069347..ba1c80f 100644
> --- a/libavutil/mastering_display_metadata.c
> +++ b/libavutil/mastering_display_metadata.c
> @@ -64,3 +64,26 @@ AVContentLightMetadata *av_content_light_metadata_create_side_data(AVFrame *fram
>
> return (AVContentLightMetadata *)side_data->data;
> }
> +
> +AVAmbientViewingEnvMetadata *av_ambient_viewing_env_metadata_alloc(size_t *size)
> +{
> + AVAmbientViewingEnvMetadata *metadata = av_mallocz(sizeof(*metadata));
> +
> + if (size)
> + *size = sizeof(*metadata);
> +
> + return metadata;
> +}
> +
> +AVAmbientViewingEnvMetadata *av_ambient_viewing_env_metadata_create_side_data(AVFrame *frame)
> +{
> + AVFrameSideData *side_data = av_frame_new_side_data(frame,
> + AV_FRAME_DATA_AMBIENT_VIEWING_ENV,
> + sizeof(AVAmbientViewingEnvMetadata));
> + if (!side_data)
> + return NULL;
> +
> + memset(side_data->data, 0, sizeof(AVAmbientViewingEnvMetadata));
> +
> + return (AVAmbientViewingEnvMetadata *)side_data->data;
> +}
> diff --git a/libavutil/mastering_display_metadata.h b/libavutil/mastering_display_metadata.h
> index c23b07c..d7598c1 100644
> --- a/libavutil/mastering_display_metadata.h
> +++ b/libavutil/mastering_display_metadata.h
> @@ -125,4 +125,49 @@ AVContentLightMetadata *av_content_light_metadata_alloc(size_t *size);
> */
> AVContentLightMetadata *av_content_light_metadata_create_side_data(AVFrame *frame);
The names are horribly long. I would suggest dropping 'metadata' from
the struct and function names, they'd be shorter and no information is
really lost.
--
Anton Khirnov
More information about the ffmpeg-devel
mailing list