[FFmpeg-devel] [PATCH] avformat/mov: don't abort on duplicate Mastering Display Metadata boxes
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Wed Mar 27 02:13:49 EET 2024
James Almer:
> The VP9 spec defines a SmDm box for this information, and the ISOBMFF spec defines a
> mdvc one. If both are present, just ignore one of them.
> This is in line with clli and CoLL boxes.
>
> Fixes ticket #10711.
>
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> libavformat/mov.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index e7aa8d1833..5463f36770 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -6140,8 +6140,10 @@ static int mov_read_smdm(MOVContext *c, AVIOContext *pb, MOVAtom atom)
> av_log(c->fc, AV_LOG_WARNING, "Unsupported Mastering Display Metadata box version %d\n", version);
> return 0;
> }
> - if (sc->mastering)
> - return AVERROR_INVALIDDATA;
> + if (sc->mastering) {
> + av_log(c->fc, AV_LOG_WARNING, "Ignoring duplicate Mastering Display Metadata\n");
If this is expected (and maybe even encouraged/required by some spec),
then why is this a warning?
> + return 0;
> + }
>
> avio_skip(pb, 3); /* flags */
>
> @@ -6178,11 +6180,16 @@ static int mov_read_mdcv(MOVContext *c, AVIOContext *pb, MOVAtom atom)
>
> sc = c->fc->streams[c->fc->nb_streams - 1]->priv_data;
>
> - if (atom.size < 24 || sc->mastering) {
> + if (atom.size < 24) {
> av_log(c->fc, AV_LOG_ERROR, "Invalid Mastering Display Color Volume box\n");
> return AVERROR_INVALIDDATA;
> }
>
> + if (sc->mastering) {
> + av_log(c->fc, AV_LOG_WARNING, "Ignoring duplicate Mastering Display Color Volume\n");
> + return 0;
> + }
> +
> sc->mastering = av_mastering_display_metadata_alloc();
> if (!sc->mastering)
> return AVERROR(ENOMEM);
More information about the ffmpeg-devel
mailing list