gpt4 book ai didi

c++ - 是否可以有时从 on-pad-added 回调外部链接 pad?

转载 作者:行者123 更新时间:2023-11-30 04:01:51 26 4
gpt4 key购买 nike

与主题中的问题相同,有时是否可以将 pad 从例如 decodebin 元素链接到其他兼容元素的 pad?

我正在尝试做这样的事情:

GstElement *decodebin = gst_element_factory_make( "decodebin", nullptr );
GstPad *pad = gst_pad_new( nullptr, GST_PAD_SRC );
gst_element_add_pad( decodebin, pad );
gst_bin_add( GST_BIN(pipeline), decodebin );

GstElement *videoconvert = gst_element_factory_make( "videoconvert", nullptr );
gst_bin_add( GST_BIN(pipeline), videoconvert );

gst_element_link( decodebin, videoconvert );

奇怪的是 gst_element_link 调用成功了,因此我认为元素链接正常。但是,当尝试运行管道时,我从 h264parse 元素(我认为它位于 decodebin 内)收到一般流错误,原因:未链接。我已经设法通过在 on-pad-added 回调中链接这些 pad 来使管道工作,但是为每个元素创建一个新的回调函数似乎不方便,有时我需要使用 pad。

最佳答案

将发生的是您新添加到 decodebin 的 pad 链接到 videoconvert。然而,这个 pad 不知道 decodebin 并且不会提供任何数据,而 decodebin 将添加自身的 pad 将产生数据但没有链接到任何东西(因此导致未链接错误)。

您可以在 pad-added 回调外部链接到 sometimes pad,但在常见情况下,您需要在 pad-added 回调中阻止 pad,以防止它输出数据,这会导致未链接错误。然后你可以链接到那个有时垫并解锁它。参见 gst_pad_add_probe()(在 1.x 中,在 0.10 中是 gst_pad_set_blocked*())。

或者,您可以将 gst_parse_launch() 或 gst_parse_bin_from_description() 与“decodebin !videoconvert”一起使用,这将自动从 pad 添加信号进行延迟链接。

关于c++ - 是否可以有时从 on-pad-added 回调外部链接 pad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25524642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com