diff mbox series

[FFmpeg-devel,5/7] ffplay: add filter_jobs arg

Message ID 20220920175021.60790-6-rcombs@rcombs.me
State New
Headers show
Series [FFmpeg-devel,1/7] lavu/cpu: add av_cpu_job_count() | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/configure_x86 warning Failed to run configure

Commit Message

rcombs Sept. 20, 2022, 5:50 p.m. UTC
This is similar to filter_threads, but controls job count.
---
 doc/ffplay.texi  | 5 +++++
 fftools/ffplay.c | 4 ++++
 2 files changed, 9 insertions(+)
diff mbox series

Patch

diff --git a/doc/ffplay.texi b/doc/ffplay.texi
index 5dd860b846..abc857013f 100644
--- a/doc/ffplay.texi
+++ b/doc/ffplay.texi
@@ -196,6 +196,11 @@  will produce a thread pool with this many threads available for parallel
 processing. The default is 0 which means that the thread count will be
 determined by the number of available CPUs.
 
+@item -filter_jobs @var{nb_jobs}
+Defines how many distinct jobs a filter pipeline will break frames into.
+The default is 0 which means that the thread count will be determined
+by the CPU topology.
+
 @end table
 
 @section While playing
diff --git a/fftools/ffplay.c b/fftools/ffplay.c
index bcc00afe31..bce1d20c49 100644
--- a/fftools/ffplay.c
+++ b/fftools/ffplay.c
@@ -355,6 +355,7 @@  static char *afilters = NULL;
 static int autorotate = 1;
 static int find_stream_info = 1;
 static int filter_nbthreads = 0;
+static int filter_nbjobs = 0;
 
 /* current context */
 static int is_full_screen;
@@ -1963,6 +1964,7 @@  static int configure_audio_filters(VideoState *is, const char *afilters, int for
     if (!(is->agraph = avfilter_graph_alloc()))
         return AVERROR(ENOMEM);
     is->agraph->nb_threads = filter_nbthreads;
+    is->agraph->nb_jobs = filter_nbjobs;
 
     av_bprint_init(&bp, 0, AV_BPRINT_SIZE_AUTOMATIC);
 
@@ -2168,6 +2170,7 @@  static int video_thread(void *arg)
                 goto the_end;
             }
             graph->nb_threads = filter_nbthreads;
+            graph->nb_jobs = filter_nbjobs;
             if ((ret = configure_video_filters(graph, is, vfilters_list ? vfilters_list[is->vfilter_idx] : NULL, frame)) < 0) {
                 SDL_Event event;
                 event.type = FF_QUIT_EVENT;
@@ -3615,6 +3618,7 @@  static const OptionDef options[] = {
     { "find_stream_info", OPT_BOOL | OPT_INPUT | OPT_EXPERT, { &find_stream_info },
         "read and decode the streams to fill missing information with heuristics" },
     { "filter_threads", HAS_ARG | OPT_INT | OPT_EXPERT, { &filter_nbthreads }, "number of filter threads per graph" },
+    { "filter_jobs", HAS_ARG | OPT_INT | OPT_EXPERT, { &filter_nbjobs }, "number of filter jobs per graph" },
     { NULL, },
 };