GstElement *ms_find_element_in_bin_by_type(GstElement *bin, node_info_s *node_klass_type);
+GstElement *ms_find_element_in_bin_by_name(GstElement *bin, const gchar *name);
+
int ms_add_no_target_ghostpad(GstElement *gst_bin, const char *ghost_pad_name, GstPadDirection pad_direction);
void ms_rtpbin_pad_added_cb(GstElement *element, GstPad *new_pad, gpointer user_data);
next_element = (GstElement *) g_value_get_object(&element_value);
found_klass = gst_element_factory_get_klass(gst_element_get_factory(next_element));
- /* Check if found element is of appropriate needed plugin class */
if (g_strrstr(found_klass, node_klass_type->klass_name) ||
g_strrstr(GST_ELEMENT_NAME(next_element), node_klass_type->default_name)) {
ms_info("Found element by type [%s]", GST_ELEMENT_NAME(next_element));
return found_element;
}
+GstElement *ms_find_element_in_bin_by_name(GstElement *bin, const gchar *name)
+{
+ GValue element_value = G_VALUE_INIT;
+ GstElement *found_element = NULL;
+ GstElement *next_element = NULL;
+ GstIterator *bin_iterator = NULL;
+
+ ms_debug_fenter();
+
+ ms_retvm_if(!bin, NULL, "bin is NULL");
+ ms_retvm_if(!name, NULL, "name is NULL");
+
+ bin_iterator = gst_bin_iterate_sorted(GST_BIN(bin));
+
+ while (GST_ITERATOR_OK == gst_iterator_next(bin_iterator, &element_value)) {
+ next_element = (GstElement *) g_value_get_object(&element_value);
+
+ if (g_strrstr(GST_ELEMENT_NAME(next_element), name)) {
+ ms_info("Found element by name [%s]", GST_ELEMENT_NAME(next_element));
+ found_element = next_element;
+ break;
+ }
+
+ g_value_reset(&element_value);
+ }
+
+ gst_iterator_free(bin_iterator);
+
+ ms_debug_fleave();
+
+ return found_element;
+}
+
static int __ms_factory_rank_compare(GstPluginFeature *first_feature, GstPluginFeature *second_feature)
{
ms_debug_fenter();