Signed-off-by: Marton Balint <c...@passwd.hu> --- libavformat/concatdec.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index 0180a7e..15094bf 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -285,6 +285,16 @@ static int match_streams(AVFormatContext *avf) return 0; } +static int64_t get_duration(ConcatFile *file, AVFormatContext *avf) +{ + int64_t duration = avf->duration; + if (file->inpoint != AV_NOPTS_VALUE) + duration -= (file->inpoint - file->file_start_time); + if (file->outpoint != AV_NOPTS_VALUE) + duration -= avf->duration - (file->outpoint - file->file_start_time); + return duration; +} + static int open_file(AVFormatContext *avf, unsigned fileno) { ConcatContext *cat = avf->priv_data; @@ -469,13 +479,8 @@ static int open_next_file(AVFormatContext *avf) ConcatContext *cat = avf->priv_data; unsigned fileno = cat->cur_file - cat->files; - if (cat->cur_file->duration == AV_NOPTS_VALUE) { - cat->cur_file->duration = cat->avf->duration; - if (cat->cur_file->inpoint != AV_NOPTS_VALUE) - cat->cur_file->duration -= (cat->cur_file->inpoint - cat->cur_file->file_start_time); - if (cat->cur_file->outpoint != AV_NOPTS_VALUE) - cat->cur_file->duration -= cat->avf->duration - (cat->cur_file->outpoint - cat->cur_file->file_start_time); - } + if (cat->cur_file->duration == AV_NOPTS_VALUE) + cat->cur_file->duration = get_duration(cat->cur_file, cat->avf); if (++fileno >= cat->nb_files) { cat->eof = 1; -- 2.1.4 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel