fftools/ffmpeg_filter: try to configure filtergraphs earlier

When the filtergraph has no inputs, it can be configured immediately
when all its outputs are bound to output streams. This will simplify
treating some corner cases.
This commit is contained in:
Anton Khirnov 2023-05-21 23:18:29 +02:00
parent 7520cd9f07
commit ad4efb9158
1 changed files with 18 additions and 0 deletions

View File

@ -504,6 +504,7 @@ static void set_channel_layout(OutputFilter *f, OutputStream *ost)
void ofilter_bind_ost(OutputFilter *ofilter, OutputStream *ost)
{
FilterGraph *fg = ofilter->graph;
const AVCodec *c = ost->enc_ctx->codec;
ofilter->ost = ost;
@ -538,6 +539,23 @@ void ofilter_bind_ost(OutputFilter *ofilter, OutputStream *ost)
}
break;
}
// if we have all input parameters and all outputs are bound,
// the graph can now be configured
if (ifilter_has_all_input_formats(fg)) {
int ret;
for (int i = 0; i < fg->nb_outputs; i++)
if (!fg->outputs[i]->ost)
return;
ret = configure_filtergraph(fg);
if (ret < 0) {
av_log(NULL, AV_LOG_ERROR, "Error configuring filter graph: %s\n",
av_err2str(ret));
exit_program(1);
}
}
}
static InputFilter *ifilter_alloc(FilterGraph *fg)