aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarton Balint <cus@passwd.hu>2018-06-27 22:27:01 +0200
committerMarton Balint <cus@passwd.hu>2018-07-08 12:52:49 +0200
commitacb7907319837f47803351e4ccf6a5ae90d71a7c (patch)
treee1b72e57e1708eb8847e25361afcfdf14f2080af
parent2c138c2d8c343219bd7a10151039ca8a53ca8cae (diff)
downloadffmpeg-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.c10
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