diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index ba92b2aa84..c2dafeb46e 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -1882,11 +1882,6 @@ static int transcode_init(void) ifile->streams[j]->start = av_gettime_relative(); } - /* init input streams */ - for (InputStream *ist = ist_iter(NULL); ist; ist = ist_iter(ist)) - if (ist->decoding_needed && (ret = dec_open(ist)) < 0) - goto dump_format; - /* * initialize stream copy and subtitle/data streams. * Encoded AVFrame based streams will get initialized when the first AVFrame diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index c7141abadf..5afb3ff2c8 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -566,6 +566,12 @@ static void ist_use(InputStream *ist, int decoding_needed) ist->discard = 0; ist->st->discard = ist->user_set_discard; ist->decoding_needed |= decoding_needed; + + if (decoding_needed && !avcodec_is_open(ist->dec_ctx)) { + int ret = dec_open(ist); + if (ret < 0) + report_and_exit(ret); + } } void ist_output_add(InputStream *ist, OutputStream *ost)