void ms_demux_nomore_pads_cb(GstElement *element, gpointer user_data);
+int ms_decodebin_autoplug_select_cb(GstElement *bin, GstPad *pad, GstCaps *caps, GstElementFactory *factory, gpointer user_data);
#ifdef __cplusplus
}
return FALSE;
}
-static gint __decodebin_autoplug_select_cb(GstElement *bin, GstPad *pad, GstCaps *caps, GstElementFactory *factory, gpointer data)
+int ms_decodebin_autoplug_select_cb(GstElement *bin, GstPad *pad, GstCaps *caps, GstElementFactory *factory, gpointer user_data)
{
/* NOTE : GstAutoplugSelectResult is defined in gstplay-enum.h but not exposed */
typedef enum {
gchar *factory_name = NULL;
const gchar *klass = NULL;
GstAutoplugSelectResult result = GST_AUTOPLUG_SELECT_TRY;
- media_streamer_s *ms_streamer = (media_streamer_s *) data;
+ media_streamer_s *ms_streamer = (media_streamer_s *) user_data;
ms_debug_fenter();
gst_element_sync_state_with_parent(decodebin);
ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "pad-added", G_CALLBACK(__decodebin_pad_added_cb), ms_streamer);
- ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "autoplug-select", G_CALLBACK(__decodebin_autoplug_select_cb), ms_streamer);
+ ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "autoplug-select", G_CALLBACK(ms_decodebin_autoplug_select_cb), ms_streamer);
ms_signal_create(&ms_streamer->autoplug_sig_list, decodebin, "no-more-pads", G_CALLBACK(__decodebin_nomore_pads_cb), ms_streamer);
ms_debug_fleave();
ms_retm_if(new_pad == NULL, "new_pad is NULL");
ms_retm_if(webrtc_node == NULL, "webrtc_node is NULL");
ms_retm_if(webrtc_node->callbacks_structure == NULL, "callbacks_structure is NULL");
+ ms_retm_if(webrtc_node->parent_streamer == NULL, "media_streamer is NULL");
ms_retm_if(GST_PAD_DIRECTION(new_pad) != GST_PAD_SRC, "new_pad is not for source");
ms_debug_fenter();
gst_element_sync_state_with_parent(decodebin);
g_signal_connect(decodebin, "pad-added", G_CALLBACK(__decodebin_pad_added_cb), webrtc_node);
+ g_signal_connect(decodebin, "autoplug-select", G_CALLBACK(ms_decodebin_autoplug_select_cb), webrtc_node->parent_streamer);
sink_pad = gst_element_get_static_pad(decodebin, "sink");
ms_retm_if(sink_pad == NULL, "sink_pad is NULL");