[FFmpeg-devel] [PATCH] Configure graph filters with more than one output
Vitor Sessak
vitor1001
Sun May 31 16:47:57 CEST 2009
Stefano Sabatini wrote:
> On date Saturday 2009-05-30 20:56:16 +0200, Vitor Sessak encoded:
>> Stefano Sabatini wrote:
>>> Hi all,
>>>
>>> I'm experimenting with a graph chain of this kind:
>>> ffplay in.avi -vfilters "split [out] [select], [select] select='eq(mod(N, 10), 0)', snapshot"
>> I suppose you mean
>>
>> ffplay in.avi -vfilters "split [out] [select]; [select] select='eq(mod(N, 10), 0)', snapshot"
>>
>> (note the ';')
>
> It's equivalent to the previous syntax in this specific case.
>
>> or
>>
>> ffplay in.avi -vfilters "split [out] select='eq(mod(N, 10), 0)', snapshot"
>
> This is wrong syntax.
Indeed, 100l. I meant
"split [out], select='eq(mod(N, 10), 0)', snapshot"
> stefano at geppetto ~/s/l/ffmpeg> ffplay in.avi -vfilters "split [out] select='eq(mod(N, 10), 0)', snapshot"
> FFplay version SVN-r18854, Copyright (c) 2003-2009 Fabrice Bellard, et al.
> [...]
> Unable to parse graph description substring: "select='eq(mod(N, 10), 0)', snapshot"
>
>> ?
>>
>>> the problem is that the config_props of the snapshot is never called,
>>> since the code which do the configuration:
>>>
>>> if(avfilter_config_links(filt_out)) goto the_end;
>>>
>>> only configure the part of the graph from the application output
>>> filers towards the beginning.
>>>
>>> Suggested function call avfilter_config_links(filt_out) on all the
>>> output filters of a graph (that is filters which one input and no
>>> output).
>>> +int avfilter_graph_config_links(AVFilterGraph *graph, AVClass *log_ctx)
>>> +{
>>> + AVFilterContext *filt;
>>> + int i, ret;
>>> +
>>> + for (i=0; i < graph->filter_count; i++) {
>>> + filt = graph->filters[i];
>>> +
>>> + if (!filt->output_count) {
>>> + if ((ret = avfilter_config_links(filt)))
>>> + return ret;
>>> + }
>>> + }
>> Hmmm... I'm fine with the patch, but I think this makes the
>> recursiveness of avfilter_config_links() useless.
>
> Why?
>
> avfilter_config_list() recursiveness works in the direction from an
> output link towards all the connected sources in input, but you need
> to call it on each output if you have a graph with more than one
> output.
For what could such a function be useful? I imagine that one wants
either to configure the whole graph or a single link, but what is the
use of configuring a specific subgraph of the whole chain?
>> Since it doesn't work for the example you've given, I'd say it
>> should be removed (but it can be another patch).
>
> I really cannot understand this, should we keep it or should we remove
> it, what is not working?
I think the initial idea of this function was of recursively initialize
the whole graph. Of course, it does not do that right now, as your
example shows. So my opinion is that the recursion should be removed.
-Vitor
More information about the ffmpeg-devel
mailing list