我需要访问 glvideomixer 元素的动态创建的子元素(它的合成器的派生) 它有自己的bin,它的子元素被创建到这个bin中。
如果我有指向glvideomixer元素和管道的指针,是否可以访问这些子元素?
是否存在某种“子元素创建”信号? - 我需要在创建
后立即访问子元素我正在这样做,以便能够为这些元素添加填充探针,以分析流过它们的内容。
这就是我创建glvideomixer的方式:
GstElement *video_mixer = gst_element_factory_make ("glvideomixer", NULL);
//.. wait for creating inner structure and ASAP get element and
这是管道的一部分,只显示了glvideomixer的bin:
我需要访问混音器元素(然后使用自动生成的名称访问其他元素 - gluploadelement#glcolorconvertelement#..)
答案 0 :(得分:2)
您可以在glvideomixer
bin上为element-added
信号添加一个监听器:
void my_callback(GstBin *glvideomixer_bin, GstElement *element,
gpointer user_data) {
//call gst_element_get_name and verify that it's "mixer"
}
g_signal_connect(GST_BIN(glvideomixer), "element-added",
G_CALLBACK(my_callback), my_data);
如果混合器元素恰好立即创建,您也可以使用gst_bin_get_by_name
:
GstElement* mixer = gst_bin_get_by_name(GST_BIN(video_mixer), "mixer")
然后在你完成时取消它:
gst_object_unref(mixer);