Add internal API for getting webrtcbin from webrtc node
[platform/core/api/mediastreamer.git] / src / media_streamer_node.c
index ad8fa4e..2e04ba8 100644 (file)
@@ -1587,11 +1587,30 @@ end:
        return ret;
 }
 
+GstElement * ms_webrtc_node_get_webrtcbin(media_streamer_node_s *webrtc_node)
+{
+       GstElement *webrtcbin = NULL;
+       node_info_s *node_klass_type = NULL;
+
+       ms_retvm_if(webrtc_node == NULL, NULL, "webrtc_node is NULL");
+       ms_retvm_if(webrtc_node->gst_element == NULL, NULL, "webrtc_container is NULL");
+
+       ms_debug_fenter();
+
+       node_klass_type = ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_WEBRTC);
+       webrtcbin = ms_find_element_in_bin_by_type(webrtc_node->gst_element, node_klass_type);
+       if (!webrtcbin)
+               ms_error("Could not find webrtcbin by type[%s, %s]", node_klass_type->klass_name, node_klass_type->default_name);
+
+       ms_debug_fleave();
+
+       return webrtcbin;
+}
+
 int ms_webrtc_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s *node)
 {
        int ret = MEDIA_STREAMER_ERROR_NONE;
        GstElement *webrtcbin = NULL;
-       node_info_s *node_klass_type = NULL;
        GObject *send_channel = NULL;
        gboolean is_offerer = FALSE;
        media_streamer_webrtc_callbacks_s *_callbacks = NULL;
@@ -1602,11 +1621,8 @@ int ms_webrtc_node_prepare(media_streamer_s *ms_streamer, media_streamer_node_s
        ms_retvm_if(!node, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is NULL");
        ms_retvm_if(node->type != MEDIA_STREAMER_NODE_TYPE_WEBRTC, MEDIA_STREAMER_ERROR_INVALID_PARAMETER, "node is not WebRTC");
 
-       node_klass_type = ms_node_get_klass_by_its_type(MEDIA_STREAMER_NODE_TYPE_WEBRTC);
-       if (!(webrtcbin = ms_find_element_in_bin_by_type(node->gst_element, node_klass_type))) {
-               ms_error("Could not find webrtcbin by type[%s, %s]", node_klass_type->klass_name, node_klass_type->default_name);
+       if (!(webrtcbin = ms_webrtc_node_get_webrtcbin(node)))
                return MEDIA_STREAMER_ERROR_INVALID_OPERATION;
-       }
 
        _callbacks = (media_streamer_webrtc_callbacks_s *) node->callbacks_structure;
        if (!_callbacks || !(_callbacks->message_cb.callback)) {