[FFmpeg-devel] [PATCH 11/24] fftools/ffmpeg_filter: try to configure filtergraphs earlier
Anton Khirnov
anton at khirnov.net
Sun May 28 12:14:03 EEST 2023
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.
---
fftools/ffmpeg_filter.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c
index 3f6b906468..3bf1862ab6 100644
--- a/fftools/ffmpeg_filter.c
+++ b/fftools/ffmpeg_filter.c
@@ -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)
--
2.40.1
More information about the ffmpeg-devel
mailing list