[Libav-user] Dynamic_input filters and avfilter_pad_get_type

Paul B Mahol onemda at gmail.com
Sat May 10 09:06:05 EEST 2025


On Fri, May 9, 2025 at 11:38 PM Andrew Randrianasulu <
randrianasulu at gmail.com> wrote:

> I was looking at why our application (cinelerra-gg) crashed at trying to
> use libplacebo
>
> I found that libplacebo defines itself
>
> https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html
>
> as
>
>  .flags = AVFILTER_FLAG_HWDEVICE
> <https://ffmpeg.org/doxygen/7.0/group__lavfi.html#ga01e3b7175b4477235061256f3398eecc>
> | AVFILTER_FLAG_DYNAMIC_INPUTS
> <https://ffmpeg.org/doxygen/7.0/group__lavfi.html#gae6ed6c10a03508829bdf17560e3e10e5>
> ,
>
> so only output pad is defined, as far as I can see:
>
> static const AVFilterPad
> <https://ffmpeg.org/doxygen/7.0/structAVFilterPad.html> libplacebo_outputs
> <https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html#a3545e8f08cc238430300b27efc10cdaf>[]
> = {
>   {
>   .name
> <https://ffmpeg.org/doxygen/7.0/structAVFilterPad.html#afc112061a6035639934e0135aab7d425>
> = "default",
>   .type = AVMEDIA_TYPE_VIDEO
> <https://ffmpeg.org/doxygen/7.0/group__lavu__misc.html#gga9a84bba4713dfced21a1a56163be1f48ac1a46f59be5c6c2d3412ab172d6b8cf5>
> ,
>   .config_props = &libplacebo_config_output
> <https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html#a09a97380118a876bb5fce38315c70f6a>
> ,
>   },
>  };
>
>
>
> then when our code calls
>
> avfilter_pad_get_type()
>

You need to call it only after filtergraph have been configured, not before
because in such cases number of output pads may be 0 before configuration.
In  any case you need to check current number of input pads and output pads
for each filter before trying to access them.



>
> it promptly crashes.
>
>  BC_Signals::dump_stack
> cin() [0x8b2c9e2]
> linux-gate.so.1(__kernel_rt_sigreturn+0) [0xf7fb8590]
> cin(avfilter_pad_get_type+0x14) [0x99266a4]
> cin(_ZN13FFVideoStream13create_filterEPKc+0xbc) [0x865669c]
> cin(_ZN6FFMPEG12open_decoderEv+0x80f) [0x865732f]
> cin(_ZN10FileFFMPEG9check_sigEP5Asset+0x81) [0x8670071]
> cin(_ZN4File5probeEv+0x376) [0x867cd86]
> cin(_ZN4File9open_fileEP11PreferencesP5Assetii+0x378) [0x867d628]
> cin(_ZN7MWindow14load_filenamesEP9ArrayListIPcEiii+0x250) [0x87301f0]
> cin(_ZN17CommandLineThread3runEv+0x53) [0x86e2cd3]
> cin(_ZN6Thread10entrypointEPv+0x41) [0x8b70c11]
> /lib/libpthread.so.0(+0x7328) [0xf7df9328]
> /lib/libc.so.6(clone+0x66) [0xf0373f06]
>
>
>
> We still hope to get libplacebo's tonemapping  + vulkan hevc decoding
> going, so any pointers how to talk to those dynamic_input filters will be
> useful. Even swscale is dynamic_input in ffmpeg 7.1+, so I (we) really hope
> to keep it working, too.
>
> Code:
>
>
> https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/cinelerra/ffmpeg.C;h=1d0979df59f932628246678a920aca002d8dd88b;hb=HEAD#l3893
>
>
>
> _______________________________________________
> Libav-user mailing list
> Libav-user at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/libav-user
>
> To unsubscribe, visit link above, or email
> libav-user-request at ffmpeg.org with subject "unsubscribe".
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://ffmpeg.org/pipermail/libav-user/attachments/20250510/716e41f8/attachment.htm>


More information about the Libav-user mailing list