Commit a76390d1 authored by Michael Niedermayer's avatar Michael Niedermayer

Merge commit '6c786765'

* commit '6c786765':
  movenc: Allow chapters to be written in trailer

Conflicts:
	libavformat/movenc.c
Merged-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parents 8d63aaed 6c786765
......@@ -3628,7 +3628,9 @@ static int mov_write_header(AVFormatContext *s)
mov->nb_streams += mov->nb_meta_tmcd;
}
mov->tracks = av_mallocz(mov->nb_streams * sizeof(*mov->tracks));
// Reserve an extra stream for chapters for the case where chapters
// are written in the trailer
mov->tracks = av_mallocz((mov->nb_streams + 1) * sizeof(*mov->tracks));
if (!mov->tracks)
return AVERROR(ENOMEM);
......@@ -3897,9 +3899,9 @@ static int mov_write_trailer(AVFormatContext *s)
{
MOVMuxContext *mov = s->priv_data;
AVIOContext *pb = s->pb;
int64_t moov_pos;
int res = 0;
int i;
int64_t moov_pos;
/*
* Before actually writing the trailer, make sure that there are no
......@@ -3914,6 +3916,16 @@ static int mov_write_trailer(AVFormatContext *s)
}
}
// If there were no chapters when the header was written, but there
// are chapters now, write them in the trailer. This only works
// when we are not doing fragments.
if (!mov->chapter_track && !(mov->flags & FF_MOV_FLAG_FRAGMENT)) {
if (mov->mode & (MODE_MP4|MODE_MOV|MODE_IPOD) && s->nb_chapters) {
mov->chapter_track = mov->nb_streams++;
mov_create_chapter_track(s, mov->chapter_track);
}
}
moov_pos = avio_tell(pb);
if (!(mov->flags & FF_MOV_FLAG_FRAGMENT)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment