This is my patch which has stuck waiting for premoderation. ----- Forwarded message from Andrey Utkin <andrey.ut...@pb.com> -----
From: Andrey Utkin <andrey.ut...@pb.com> To: ffmpeg-devel@ffmpeg.org CC: andrey_ut...@fastmail.com, Carl Eugen Hoyos <ceho...@ag.or.at>, Andrey Utkin <andrey.ut...@pb.com> Date: Sun, 24 Apr 2016 16:28:38 +0300 Subject: [PATCH] concatdec: Fix handling of H.264 in MP4 in case of "-auto_convert 0" Bug ticket: http://trac.ffmpeg.org/ticket/5461 This fix enables back the ability to concat appropriately encoded (with "-x264opts stitchable=1") MP4 files in less time, without conversion to mpegts and back. ---8<--- Fixes regression bug #5461. --- libavformat/concatdec.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/libavformat/concatdec.c b/libavformat/concatdec.c index e3418e1..7ae4030 100644 --- a/libavformat/concatdec.c +++ b/libavformat/concatdec.c @@ -161,7 +161,8 @@ fail: return ret; } -static int copy_stream_props(AVStream *st, AVStream *source_st) +static int copy_stream_props(ConcatContext *cat, AVStream *st, + AVStream *source_st) { int ret; @@ -182,8 +183,8 @@ static int copy_stream_props(AVStream *st, AVStream *source_st) } if ((ret = avcodec_parameters_copy(st->codecpar, source_st->codecpar)) < 0) return ret; - /* We don't want to carry around MP4-style extradata, since we are usoign a bsf anyway. */ - if (st->codecpar->codec_id == AV_CODEC_ID_H264) { + if (cat->auto_convert && st->codecpar->codec_id == AV_CODEC_ID_H264) { + /* We don't want to carry around MP4-style extradata, since we are using a bsf anyway. */ av_freep(&st->codecpar->extradata); st->codecpar->extradata_size = 0; } @@ -242,7 +243,7 @@ static int match_streams_one_to_one(AVFormatContext *avf) if (!(st = avformat_new_stream(avf, NULL))) return AVERROR(ENOMEM); } - if ((ret = copy_stream_props(st, cat->avf->streams[i])) < 0) + if ((ret = copy_stream_props(cat, st, cat->avf->streams[i])) < 0) return ret; cat->cur_file->streams[i].out_stream_index = i; } @@ -262,7 +263,7 @@ static int match_streams_exact_id(AVFormatContext *avf) av_log(avf, AV_LOG_VERBOSE, "Match slave stream #%d with stream #%d id 0x%x\n", i, j, st->id); - if ((ret = copy_stream_props(avf->streams[j], st)) < 0) + if ((ret = copy_stream_props(cat, avf->streams[j], st)) < 0) return ret; cat->cur_file->streams[i].out_stream_index = j; } -- 2.8.1 ________________________________ ----- End forwarded message ----- _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel