[FFmpeg-devel] [PATCH 15/22] fftools/ffmpeg: move discarding unused programs to ffmpeg_demux

Anton Khirnov anton at khirnov.net
Mon May 8 12:17:31 EEST 2023


This is a more appropriate place for this code.
---
 fftools/ffmpeg.c       | 16 ----------------
 fftools/ffmpeg_demux.c | 17 +++++++++++++++++
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c
index 40e97ad486..725ffca631 100644
--- a/fftools/ffmpeg.c
+++ b/fftools/ffmpeg.c
@@ -1498,22 +1498,6 @@ static int transcode_init(void)
 {
     int ret = 0;
 
-    /* discard unused programs */
-    for (int i = 0; i < nb_input_files; i++) {
-        InputFile *ifile = input_files[i];
-        for (int j = 0; j < ifile->ctx->nb_programs; j++) {
-            AVProgram *p = ifile->ctx->programs[j];
-            int discard  = AVDISCARD_ALL;
-
-            for (int k = 0; k < p->nb_stream_indexes; k++)
-                if (!ifile->streams[p->stream_index[k]]->discard) {
-                    discard = AVDISCARD_DEFAULT;
-                    break;
-                }
-            p->discard = discard;
-        }
-    }
-
     /* dump the stream mapping */
     av_log(NULL, AV_LOG_INFO, "Stream mapping:\n");
     for (InputStream *ist = ist_iter(NULL); ist; ist = ist_iter(ist)) {
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c
index 1f8f3a73bd..1b268719aa 100644
--- a/fftools/ffmpeg_demux.c
+++ b/fftools/ffmpeg_demux.c
@@ -525,6 +525,21 @@ static void readrate_sleep(Demuxer *d)
     }
 }
 
+static void discard_unused_programs(InputFile *ifile)
+{
+        for (int j = 0; j < ifile->ctx->nb_programs; j++) {
+            AVProgram *p = ifile->ctx->programs[j];
+            int discard  = AVDISCARD_ALL;
+
+            for (int k = 0; k < p->nb_stream_indexes; k++)
+                if (!ifile->streams[p->stream_index[k]]->discard) {
+                    discard = AVDISCARD_DEFAULT;
+                    break;
+                }
+            p->discard = discard;
+        }
+}
+
 static void thread_set_name(InputFile *f)
 {
     char name[16];
@@ -548,6 +563,8 @@ static void *input_thread(void *arg)
 
     thread_set_name(f);
 
+    discard_unused_programs(f);
+
     d->wallclock_start = av_gettime_relative();
 
     while (1) {
-- 
2.39.2



More information about the ffmpeg-devel mailing list