You've already forked FFmpeg
							
							
				mirror of
				https://github.com/FFmpeg/FFmpeg.git
				synced 2025-10-30 23:18:11 +02:00 
			
		
		
		
	ffplay: add support for setting the number of filter threads
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
		| @@ -195,6 +195,12 @@ input as soon as possible. Enabled by default for realtime streams, where data | ||||
| may be dropped if not read in time. Use this option to enable infinite buffers | ||||
| for all inputs, use @option{-noinfbuf} to disable it. | ||||
|  | ||||
| @item -filter_threads @var{nb_threads} | ||||
| Defines how many threads are used to process a filter pipeline. Each pipeline | ||||
| 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. | ||||
|  | ||||
| @end table | ||||
|  | ||||
| @section While playing | ||||
|   | ||||
| @@ -353,6 +353,7 @@ static char *afilters = NULL; | ||||
| #endif | ||||
| static int autorotate = 1; | ||||
| static int find_stream_info = 1; | ||||
| static int filter_nbthreads = 0; | ||||
|  | ||||
| /* current context */ | ||||
| static int is_full_screen; | ||||
| @@ -1954,6 +1955,7 @@ static int configure_audio_filters(VideoState *is, const char *afilters, int for | ||||
|     avfilter_graph_free(&is->agraph); | ||||
|     if (!(is->agraph = avfilter_graph_alloc())) | ||||
|         return AVERROR(ENOMEM); | ||||
|     is->agraph->nb_threads = filter_nbthreads; | ||||
|  | ||||
|     while ((e = av_dict_get(swr_opts, "", e, AV_DICT_IGNORE_SUFFIX))) | ||||
|         av_strlcatf(aresample_swr_opts, sizeof(aresample_swr_opts), "%s=%s:", e->key, e->value); | ||||
| @@ -2162,6 +2164,7 @@ static int video_thread(void *arg) | ||||
|                 ret = AVERROR(ENOMEM); | ||||
|                 goto the_end; | ||||
|             } | ||||
|             graph->nb_threads = filter_nbthreads; | ||||
|             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; | ||||
| @@ -3611,6 +3614,7 @@ static const OptionDef options[] = { | ||||
|     { "autorotate", OPT_BOOL, { &autorotate }, "automatically rotate video", "" }, | ||||
|     { "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" }, | ||||
|     { NULL, }, | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user