[FFmpeg-cvslog] lavf/movenc: Write 'dby1' minor brand if Dolby content is being muxed to MP4
Derek Buitenhuis
git at videolan.org
Fri Oct 1 22:56:31 EEST 2021
ffmpeg | branch: master | Derek Buitenhuis <derek.buitenhuis at gmail.com> | Tue Aug 3 17:13:42 2021 +0100| [68815d67919a6975357ad214d8fe8ac4c886e47c] | committer: Derek Buitenhuis
lavf/movenc: Write 'dby1' minor brand if Dolby content is being muxed to MP4
This is as per:
* mp4ra: http://mp4ra.org/#/brands
* Dolby Vision muxing spec (which is public):
https://professional.dolby.com/siteassets/content-creation/dolby-vision-for-content-creators/dolby_vision_bitstreams_within_the_iso_base_media_file_format_dec2017.pdf
Signed-off-by: Derek Buitenhuis <derek.buitenhuis at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=68815d67919a6975357ad214d8fe8ac4c886e47c
---
libavformat/movenc.c | 9 ++++++++-
tests/ref/fate/copy-trac3074 | 4 ++--
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 7650ac5ed3..1a2f24c410 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -4991,7 +4991,7 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s)
{
MOVMuxContext *mov = s->priv_data;
int64_t pos = avio_tell(pb);
- int has_h264 = 0, has_av1 = 0, has_video = 0;
+ int has_h264 = 0, has_av1 = 0, has_video = 0, has_dolby = 0;
int i;
for (i = 0; i < s->nb_streams; i++) {
@@ -5004,6 +5004,11 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s)
has_h264 = 1;
if (st->codecpar->codec_id == AV_CODEC_ID_AV1)
has_av1 = 1;
+ if (st->codecpar->codec_id == AV_CODEC_ID_AC3 ||
+ st->codecpar->codec_id == AV_CODEC_ID_EAC3 ||
+ st->codecpar->codec_id == AV_CODEC_ID_TRUEHD ||
+ av_stream_get_side_data(st, AV_PKT_DATA_DOVI_CONF, NULL))
+ has_dolby = 1;
}
avio_wb32(pb, 0); /* size */
@@ -5029,6 +5034,8 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s)
ffio_wfourcc(pb, "iso6");
if (has_av1)
ffio_wfourcc(pb, "av01");
+ if (has_dolby)
+ ffio_wfourcc(pb, "dby1");
} else {
if (mov->flags & FF_MOV_FLAG_FRAGMENT)
ffio_wfourcc(pb, "iso6");
diff --git a/tests/ref/fate/copy-trac3074 b/tests/ref/fate/copy-trac3074
index e541af03da..4748296c2a 100644
--- a/tests/ref/fate/copy-trac3074
+++ b/tests/ref/fate/copy-trac3074
@@ -1,5 +1,5 @@
-da6122873fb83ce4340cf5d0ab8d475e *tests/data/fate/copy-trac3074.mp4
-334012 tests/data/fate/copy-trac3074.mp4
+452d91e7c6889b787717fef25b6fce43 *tests/data/fate/copy-trac3074.mp4
+334016 tests/data/fate/copy-trac3074.mp4
#tb 0: 1/48000
#media_type 0: audio
#codec_id 0: eac3
More information about the ffmpeg-cvslog
mailing list