You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
Merge commit '6c786765cd5eb794dedd4a0970dfe689b16dfeeb'
* commit '6c786765cd5eb794dedd4a0970dfe689b16dfeeb': movenc: Allow chapters to be written in trailer Conflicts: libavformat/movenc.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -3628,7 +3628,9 @@ static int mov_write_header(AVFormatContext *s)
|
|||||||
mov->nb_streams += mov->nb_meta_tmcd;
|
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)
|
if (!mov->tracks)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
|
|
||||||
@@ -3897,9 +3899,9 @@ static int mov_write_trailer(AVFormatContext *s)
|
|||||||
{
|
{
|
||||||
MOVMuxContext *mov = s->priv_data;
|
MOVMuxContext *mov = s->priv_data;
|
||||||
AVIOContext *pb = s->pb;
|
AVIOContext *pb = s->pb;
|
||||||
int64_t moov_pos;
|
|
||||||
int res = 0;
|
int res = 0;
|
||||||
int i;
|
int i;
|
||||||
|
int64_t moov_pos;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Before actually writing the trailer, make sure that there are no
|
* 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);
|
moov_pos = avio_tell(pb);
|
||||||
|
|
||||||
if (!(mov->flags & FF_MOV_FLAG_FRAGMENT)) {
|
if (!(mov->flags & FF_MOV_FLAG_FRAGMENT)) {
|
||||||
|
Reference in New Issue
Block a user