diff options
author | James Almer <jamrial@gmail.com> | 2019-12-01 13:11:28 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-12-21 11:57:28 -0300 |
commit | 191df4f2d1adf4f1738f54b37f9e50686ef4ee10 (patch) | |
tree | 894c362880fe77abc9b6fedc89883e4906e77d95 /libavformat | |
parent | 245ace4e2d3f3ecccb5501c7830b05c2cfa6a663 (diff) |
avformat/movenc: use iso6 major brand when signed CTS offsets are used in trun boxes
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/movenc.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 907d0a049f..e422bdd071 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -4757,6 +4757,9 @@ static void mov_write_ftyp_tag_internal(AVIOContext *pb, AVFormatContext *s, minor = has_h264 ? 0x20000 : 0x10000; } else if (mov->mode == MODE_PSP) ffio_wfourcc(pb, "MSNV"); + else if (mov->mode == MODE_MP4 && mov->flags & FF_MOV_FLAG_FRAGMENT && + mov->flags & FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS) + ffio_wfourcc(pb, "iso6"); // Required when using signed CTS offsets in trun boxes else if (mov->mode == MODE_MP4 && mov->flags & FF_MOV_FLAG_DEFAULT_BASE_MOOF) ffio_wfourcc(pb, "iso5"); // Required when using default-base-is-moof else if (mov->mode == MODE_MP4 && mov->flags & FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS) @@ -4807,10 +4810,14 @@ static int mov_write_ftyp_tag(AVIOContext *pb, AVFormatContext *s) ffio_wfourcc(pb, "piff"); } else if (mov->mode != MODE_MOV) { // We add tfdt atoms when fragmenting, signal this with the iso6 compatible - // brand. This is compatible with users that don't understand tfdt. - if (mov->flags & FF_MOV_FLAG_FRAGMENT) - ffio_wfourcc(pb, "iso6"); - if (mov->mode != MODE_MP4) { + // brand, if not already the major brand. This is compatible with users that + // don't understand tfdt. + if (mov->mode == MODE_MP4) { + if (mov->flags & FF_MOV_FLAG_FRAGMENT && !(mov->flags & FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS)) + ffio_wfourcc(pb, "iso6"); + } else { + if (mov->flags & FF_MOV_FLAG_FRAGMENT) + ffio_wfourcc(pb, "iso6"); if (mov->flags & FF_MOV_FLAG_DEFAULT_BASE_MOOF) ffio_wfourcc(pb, "iso5"); else if (mov->flags & FF_MOV_FLAG_NEGATIVE_CTS_OFFSETS) |