From: James Almer Date: Tue, 30 Jul 2019 16:21:46 +0000 (-0300) Subject: avformat/dashenc: fix writing the AV1 codec string in mp4 mode X-Git-Tag: n4.2~1 X-Git-Url: http://git.videolan.org/gitweb.cgi/ffmpeg.git/?p=ffmpeg.git;p=ffmpeg.git;a=commitdiff_plain;h=35e9d9cbf73877e638eac27d4ff3e058653f4da1 avformat/dashenc: fix writing the AV1 codec string in mp4 mode From https://aomediacodec.github.io/av1-isobmff/#codecsparam, the parameters sample entry 4CC, profile, level, tier, and bitDepth are all mandatory fields. All the other fields are optional, mutually inclusive (all or none). Fixes ticket #8049 Signed-off-by: James Almer (cherry picked from commit 1cf2f040e34bbfedde60ff3d91b2f7b770aca85b) --- diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index a1b7b7242f..24d43c34ea 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -35,6 +35,7 @@ #include "libavutil/time.h" #include "libavutil/time_internal.h" +#include "av1.h" #include "avc.h" #include "avformat.h" #include "avio_internal.h" @@ -385,6 +386,21 @@ static void set_codec_str(AVFormatContext *s, AVCodecParameters *par, av_strlcatf(str, size, ".%02x%02x%02x", extradata[1], extradata[2], extradata[3]); av_free(tmpbuf); + } else if (!strcmp(str, "av01")) { + AV1SequenceParameters seq; + if (!par->extradata_size) + return; + if (ff_av1_parse_seq_header(&seq, par->extradata, par->extradata_size) < 0) + return; + + av_strlcatf(str, size, ".%01u.%02u%s.%02u", + seq.profile, seq.level, seq.tier ? "H" : "M", seq.bitdepth); + if (seq.color_description_present_flag) + av_strlcatf(str, size, ".%01u.%01u%01u%01u.%02u.%02u.%02u.%01u", + seq.monochrome, + seq.chroma_subsampling_x, seq.chroma_subsampling_y, seq.chroma_sample_position, + seq.color_primaries, seq.transfer_characteristics, seq.matrix_coefficients, + seq.color_range); } }