static gboolean kms_webrtc_session_add_connection (KmsWebrtcSession * self, KmsSdpSession * sess, SdpMediaConfig * mconf, gboolean offerer) { KmsBaseRtpSession *base_rtp_sess = KMS_BASE_RTP_SESSION (sess); gboolean connected, active; KmsIRtpConnection *conn; conn = kms_base_rtp_session_get_connection (base_rtp_sess, mconf); if (conn == NULL) { GST_ERROR_OBJECT (self, "No connection created"); return FALSE; } g_object_get (conn, "added", &connected, NULL); if (connected) { GST_DEBUG_OBJECT (self, "Conn already added"); return TRUE; } active = sdp_utils_media_is_active (kms_sdp_media_config_get_sdp_media (mconf), offerer); kms_i_rtp_connection_add (conn, GST_BIN (self), active); kms_i_rtp_connection_sink_sync_state_with_parent (conn); kms_i_rtp_connection_src_sync_state_with_parent (conn); return TRUE; }
KmsWebRtcBaseConnection * kms_webrtc_session_get_connection (KmsWebrtcSession * self, SdpMediaConfig * mconf) { KmsBaseRtpSession *base_rtp_sess = KMS_BASE_RTP_SESSION (self); KmsIRtpConnection *conn; conn = kms_base_rtp_session_get_connection (base_rtp_sess, mconf); if (conn == NULL) { return NULL; } return KMS_WEBRTC_BASE_CONNECTION (conn); }
static gboolean kms_base_rtp_session_add_connection_for_session (KmsBaseRtpSession * self, SdpMediaConfig * mconf, gboolean active) { KmsIRtpConnection *conn; SdpMediaGroup *group = kms_sdp_media_config_get_group (mconf); conn = kms_base_rtp_session_get_connection (self, mconf); if (conn == NULL) { return FALSE; } if (group != NULL) { /* bundle */ kms_base_rtp_session_add_bundle_connection (self, conn, mconf, active); kms_base_rtp_session_add_connection_sink (self, conn, mconf); } else if (kms_sdp_media_config_is_rtcp_mux (mconf)) { kms_base_rtp_session_add_rtcp_mux_connection (self, conn, mconf, active); } else { kms_base_rtp_session_add_connection (self, conn, mconf, active); } return TRUE; }