[FFmpeg-devel] [PATCH v3] ffmpeg: parameters for filter thread counts

DeHackEd git at dehacked.net
Sun Oct 30 20:39:09 EET 2016


On 10/30/2016 12:09 PM, Paul B Mahol wrote:
> On 10/30/16, DeHackEd <git at dehacked.net> wrote:
>> Enables specifying how many threads are available to each filtergraph.
>> ---
>> v2->v3:
>> - Typos in docs fixed
>>
>> v1->v2:
>> - Reworded documentation
>> - Removed hunk from ffmpeg_filter.c not directly applicable to patch
>>
>>  doc/ffmpeg.texi | 10 ++++++++++
>>  ffmpeg.h        |  3 +++
>>  ffmpeg_filter.c |  7 +++++++
>>  ffmpeg_opt.c    |  4 ++++
>>  4 files changed, 24 insertions(+)
>>
...
>> diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c
>> index 4d25fff..dc94380 100644
>> --- a/ffmpeg_opt.c
>> +++ b/ffmpeg_opt.c
>> @@ -3365,12 +3365,16 @@ const OptionDef options[] = {
>>          "set profile", "profile" },
>>      { "filter",         HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, {
>> .off = OFFSET(filters) },
>>          "set stream filtergraph", "filter_graph" },
>> +    { "filter_threads",  HAS_ARG | OPT_INT,                          {
>> &filter_nbthreads },
>> +        "number of non-complex filter threads" },
>>      { "filter_script",  HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, {
>> .off = OFFSET(filter_scripts) },
>>          "read stream filtergraph description from a file", "filename" },
>>      { "reinit_filter",  HAS_ARG | OPT_INT | OPT_SPEC | OPT_INPUT,    { .off
>> = OFFSET(reinit_filters) },
>>          "reinit filtergraph on input parameter changes", "" },
>>      { "filter_complex", HAS_ARG | OPT_EXPERT,                        {
>> .func_arg = opt_filter_complex },
>>          "create a complex filtergraph", "graph_description" },
>> +    { "filter_complex_threads", HAS_ARG | OPT_INT,                   {
>> &filter_complex_nbthreads },
>> +        "number of threads for -filter_complex" },
>>      { "lavfi",          HAS_ARG | OPT_EXPERT,                        {
>> .func_arg = opt_filter_complex },
>>          "create a complex filtergraph", "graph_description" },
>>      { "filter_complex_script", HAS_ARG | OPT_EXPERT,                 {
>> .func_arg = opt_filter_complex_script },
>> --
>> 1.8.4.1
>>
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel at ffmpeg.org
>> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
> 
> How this plays out with number of threads one can set for each filter instance?

Each individual filter uses MIN(filter_specific_limit, filtergrpah_limit) threads, but regardless the filtergraph will
create filtergraph_limit threads each time. This patch adds user control to the filtergraph_limit.

My main motivation for this parameter is a system I have with 80 CPUs (including hyperthreads). The video filtering
workload does not benefit from so many threads being created or used, and I suffer from a significant ulimit hit and
greater difficulty debugging.

> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 



More information about the ffmpeg-devel mailing list