diff mbox series

[FFmpeg-devel,09/10] lavd/lavfi: stop using avfilter_graph_alloc_filter() incorrectly

Message ID 20240925132921.11203-9-anton@khirnov.net
State New
Headers show
Series [FFmpeg-devel,01/10] fftools/ffmpeg_filter: stop using avfilter_graph_alloc_filter() incorrectly | expand

Checks

Context Check Description
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Anton Khirnov Sept. 25, 2024, 1:29 p.m. UTC
See previous commits for details.
---
 libavdevice/lavfi.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)
diff mbox series

Patch

diff --git a/libavdevice/lavfi.c b/libavdevice/lavfi.c
index ce10d61f8a..17657a0638 100644
--- a/libavdevice/lavfi.c
+++ b/libavdevice/lavfi.c
@@ -249,18 +249,24 @@  av_cold static int lavfi_read_header(AVFormatContext *avctx)
                 AV_SAMPLE_FMT_FLT, AV_SAMPLE_FMT_DBL,
             };
 
-            ret = avfilter_graph_create_filter(&sink, abuffersink,
-                                               inout->name, NULL,
-                                               NULL, lavfi->graph);
-            if (ret >= 0)
-                ret = av_opt_set_bin(sink, "sample_fmts", (const uint8_t*)sample_fmts,
-                                     sizeof(sample_fmts), AV_OPT_SEARCH_CHILDREN);
+            sink = avfilter_graph_alloc_filter(lavfi->graph, abuffersink, inout->name);
+            if (!sink) {
+                ret = AVERROR(ENOMEM);
+                goto end;
+            }
+
+            ret = av_opt_set_bin(sink, "sample_fmts", (const uint8_t*)sample_fmts,
+                                 sizeof(sample_fmts), AV_OPT_SEARCH_CHILDREN);
             if (ret < 0)
                 goto end;
             ret = av_opt_set_int(sink, "all_channel_counts", 1,
                                  AV_OPT_SEARCH_CHILDREN);
             if (ret < 0)
                 goto end;
+
+            ret = avfilter_init_dict(sink, NULL);
+            if (ret < 0)
+                goto end;
         } else {
             av_log(avctx,  AV_LOG_ERROR,
                    "Output '%s' is not a video or audio output, not yet supported\n", inout->name);