<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Fri, May 9, 2025 at 11:38 PM Andrew Randrianasulu <<a href="mailto:randrianasulu@gmail.com">randrianasulu@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">I was looking at why our application (cinelerra-gg) crashed at trying to use libplacebo<div dir="auto"><br></div><div dir="auto">I found that libplacebo defines itself</div><div dir="auto"><br></div><div dir="auto"><a href="https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html" rel="noreferrer noreferrer noreferrer noreferrer noreferrer" target="_blank">https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html</a></div><div dir="auto"><br></div><div dir="auto">as</div><div dir="auto"><br></div><div dir="auto"> .flags = <a href="https://ffmpeg.org/doxygen/7.0/group__lavfi.html#ga01e3b7175b4477235061256f3398eecc" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">AVFILTER_FLAG_HWDEVICE</a> | <a href="https://ffmpeg.org/doxygen/7.0/group__lavfi.html#gae6ed6c10a03508829bdf17560e3e10e5" rel="noreferrer noreferrer noreferrer noreferrer" target="_blank">AVFILTER_FLAG_DYNAMIC_INPUTS</a>,</div><div dir="auto"><br></div><div dir="auto">so only output pad is defined, as far as I can see:</div><div dir="auto"><br></div><div dir="auto"><div dir="auto">static const <a href="https://ffmpeg.org/doxygen/7.0/structAVFilterPad.html" target="_blank">AVFilterPad</a> <a href="https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html#a3545e8f08cc238430300b27efc10cdaf" target="_blank">libplacebo_outputs</a>[] = {</div>
<div dir="auto"><a name="m_-5385748750951353642_l01441"></a></div><div dir="auto"> {</div>
<div dir="auto"><a name="m_-5385748750951353642_l01442"></a></div><div dir="auto"> .<a href="https://ffmpeg.org/doxygen/7.0/structAVFilterPad.html#afc112061a6035639934e0135aab7d425" target="_blank">name</a> = "default",</div>
<div dir="auto"><a name="m_-5385748750951353642_l01443"></a></div><div dir="auto"> .type = <a href="https://ffmpeg.org/doxygen/7.0/group__lavu__misc.html#gga9a84bba4713dfced21a1a56163be1f48ac1a46f59be5c6c2d3412ab172d6b8cf5" target="_blank">AVMEDIA_TYPE_VIDEO</a>,</div>
<div dir="auto"><a name="m_-5385748750951353642_l01444"></a></div><div dir="auto"> .config_props = &<a href="https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html#a09a97380118a876bb5fce38315c70f6a" target="_blank">libplacebo_config_output</a>,</div>
<div dir="auto"><a name="m_-5385748750951353642_l01445"></a></div><div dir="auto"> },</div>
<div dir="auto"><a name="m_-5385748750951353642_l01446"></a></div> };</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">then when our code calls</div><div dir="auto"><br></div><div dir="auto">avfilter_pad_get_type()</div></div></blockquote><div><br></div><div>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.</div><div>In any case you need to check current number of input pads and output pads for each filter before trying to access them.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto"><div dir="auto"><br></div><div dir="auto">it promptly crashes.</div><div dir="auto"><br></div><div dir="auto"> BC_Signals::dump_stack</div><div dir="auto">cin() [0x8b2c9e2]</div><div dir="auto">linux-gate.so.1(__kernel_rt_sigreturn+0) [0xf7fb8590]</div><div dir="auto">cin(avfilter_pad_get_type+0x14) [0x99266a4]</div><div dir="auto">cin(_ZN13FFVideoStream13create_filterEPKc+0xbc) [0x865669c]</div><div dir="auto">cin(_ZN6FFMPEG12open_decoderEv+0x80f) [0x865732f]</div><div dir="auto">cin(_ZN10FileFFMPEG9check_sigEP5Asset+0x81) [0x8670071]</div><div dir="auto">cin(_ZN4File5probeEv+0x376) [0x867cd86]</div><div dir="auto">cin(_ZN4File9open_fileEP11PreferencesP5Assetii+0x378) [0x867d628]</div><div dir="auto">cin(_ZN7MWindow14load_filenamesEP9ArrayListIPcEiii+0x250) [0x87301f0]</div><div dir="auto">cin(_ZN17CommandLineThread3runEv+0x53) [0x86e2cd3]</div><div dir="auto">cin(_ZN6Thread10entrypointEPv+0x41) [0x8b70c11]</div><div dir="auto">/lib/libpthread.so.0(+0x7328) [0xf7df9328]</div><div dir="auto">/lib/libc.so.6(clone+0x66) [0xf0373f06]</div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto">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.</div><div dir="auto"><br></div><div dir="auto">Code:</div><div dir="auto"><br></div><div dir="auto"><a href="https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/cinelerra/ffmpeg.C;h=1d0979df59f932628246678a920aca002d8dd88b;hb=HEAD#l3893" rel="noreferrer noreferrer" target="_blank">https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/cinelerra/ffmpeg.C;h=1d0979df59f932628246678a920aca002d8dd88b;hb=HEAD#l3893</a></div><div dir="auto"><br></div><div dir="auto"><br></div><div dir="auto"><br></div></div>
_______________________________________________<br>
Libav-user mailing list<br>
<a href="mailto:Libav-user@ffmpeg.org" target="_blank">Libav-user@ffmpeg.org</a><br>
<a href="https://ffmpeg.org/mailman/listinfo/libav-user" rel="noreferrer" target="_blank">https://ffmpeg.org/mailman/listinfo/libav-user</a><br>
<br>
To unsubscribe, visit link above, or email<br>
<a href="mailto:libav-user-request@ffmpeg.org" target="_blank">libav-user-request@ffmpeg.org</a> with subject "unsubscribe".<br>
</blockquote></div></div>