diff options
author | Marton Balint <cus@passwd.hu> | 2018-06-27 22:27:01 +0200 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2018-07-08 12:52:49 +0200 |
commit | acb7907319837f47803351e4ccf6a5ae90d71a7c (patch) | |
tree | e1b72e57e1708eb8847e25361afcfdf14f2080af | |
parent | 2c138c2d8c343219bd7a10151039ca8a53ca8cae (diff) | |
download | ffmpeg-acb7907319837f47803351e4ccf6a5ae90d71a7c.tar.gz |
ffmpeg: fix -stream_loop with multiple inputs
The input thread needs to be properly cleaned up and re-initalized before we
can start reading again in threaded mode. (Threaded input reading is used when
there is mode than one input file).
Fixes ticket #6121 and #7043.
Signed-off-by: Marton Balint <cus@passwd.hu>
(cherry picked from commit da36bcbeb78c78e493d18d3cd3ac92ea401e7031)
-rw-r--r-- | fftools/ffmpeg.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index be1680dac3..c0214c42d8 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -4213,7 +4213,7 @@ static int process_input(int file_index) AVFormatContext *is; InputStream *ist; AVPacket pkt; - int ret, i, j; + int ret, thread_ret, i, j; int64_t duration; int64_t pkt_dts; @@ -4236,7 +4236,15 @@ static int process_input(int file_index) avcodec_flush_buffers(avctx); } } +#if HAVE_THREADS + free_input_thread(file_index); +#endif ret = seek_to_start(ifile, is); +#if HAVE_THREADS + thread_ret = init_input_thread(file_index); + if (thread_ret < 0) + return thread_ret; +#endif if (ret < 0) av_log(NULL, AV_LOG_WARNING, "Seek to start failed.\n"); else |