[FFmpeg-cvslog] ffmpeg: fix -stream_loop with multiple inputs

Marton Balint git at videolan.org
Mon Jul 2 14:43:43 EEST 2018


ffmpeg | branch: master | Marton Balint <cus at passwd.hu> | Wed Jun 27 22:27:01 2018 +0200| [da36bcbeb78c78e493d18d3cd3ac92ea401e7031] | committer: Marton Balint

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 at passwd.hu>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=da36bcbeb78c78e493d18d3cd3ac92ea401e7031
---

 fftools/ffmpeg.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index c743af2ae8..55faec8ede 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -4251,7 +4251,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;
 
@@ -4274,7 +4274,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



More information about the ffmpeg-cvslog mailing list