1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-02-20 07:48:15 +02:00

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)
This commit is contained in:
Marton Balint 2018-06-27 22:27:01 +02:00
parent 2c138c2d8c
commit acb7907319

View File

@ -4213,7 +4213,7 @@ static int process_input(int file_index)
AVFormatContext *is; AVFormatContext *is;
InputStream *ist; InputStream *ist;
AVPacket pkt; AVPacket pkt;
int ret, i, j; int ret, thread_ret, i, j;
int64_t duration; int64_t duration;
int64_t pkt_dts; int64_t pkt_dts;
@ -4236,7 +4236,15 @@ static int process_input(int file_index)
avcodec_flush_buffers(avctx); avcodec_flush_buffers(avctx);
} }
} }
#if HAVE_THREADS
free_input_thread(file_index);
#endif
ret = seek_to_start(ifile, is); 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) if (ret < 0)
av_log(NULL, AV_LOG_WARNING, "Seek to start failed.\n"); av_log(NULL, AV_LOG_WARNING, "Seek to start failed.\n");
else else