aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2019-07-30 13:21:46 -0300
committerJames Almer <jamrial@gmail.com>2019-08-05 15:02:55 -0300
commit35e9d9cbf73877e638eac27d4ff3e058653f4da1 (patch)
treed21a9dd22581f0d10472f64728dd2fbcf9a4ad83
parentd1c81070bce261329b641b648efe42062b699cd3 (diff)
downloadffmpeg-35e9d9cbf73877e638eac27d4ff3e058653f4da1.tar.gz
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 <jamrial@gmail.com> (cherry picked from commit 1cf2f040e34bbfedde60ff3d91b2f7b770aca85b)
-rw-r--r--libavformat/dashenc.c16
1 files changed, 16 insertions, 0 deletions
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);
}
}