KmsWebRtcConnection * kms_webrtc_connection_new (NiceAgent * agent, GMainContext * context, const gchar * name) { GObject *obj; KmsWebRtcBaseConnection *base_conn; KmsWebRtcConnection *conn; KmsWebRtcConnectionPrivate *priv; obj = g_object_new (KMS_TYPE_WEBRTC_CONNECTION, NULL); base_conn = KMS_WEBRTC_BASE_CONNECTION (obj); conn = KMS_WEBRTC_CONNECTION (obj); priv = conn->priv; if (!kms_webrtc_base_connection_configure (base_conn, agent, name)) { g_object_unref (obj); return NULL; } priv->rtp_tr = kms_webrtc_transport_create (agent, base_conn->stream_id, NICE_COMPONENT_TYPE_RTP); priv->rtcp_tr = kms_webrtc_transport_create (agent, base_conn->stream_id, NICE_COMPONENT_TYPE_RTCP); if (priv->rtp_tr == NULL || priv->rtcp_tr == NULL) { GST_ERROR_OBJECT (obj, "Cannot create KmsWebRTCConnection."); g_object_unref (obj); return NULL; } g_signal_connect (priv->rtp_tr->dtlssrtpenc, "on-key-set", G_CALLBACK (rtp_connected_cb), conn); g_signal_connect (priv->rtcp_tr->dtlssrtpenc, "on-key-set", G_CALLBACK (rtcp_connected_cb), conn); nice_agent_attach_recv (agent, base_conn->stream_id, NICE_COMPONENT_TYPE_RTP, context, kms_webrtc_transport_nice_agent_recv_cb, NULL); nice_agent_attach_recv (agent, base_conn->stream_id, NICE_COMPONENT_TYPE_RTCP, context, kms_webrtc_transport_nice_agent_recv_cb, NULL); return conn; }
KmsWebRtcConnection * kms_webrtc_connection_new (KmsIceBaseAgent * agent, GMainContext * context, const gchar * name, guint16 min_port, guint16 max_port, gchar * pem_certificate) { GObject *obj; KmsWebRtcBaseConnection *base_conn; KmsWebRtcConnection *conn; KmsWebRtcConnectionPrivate *priv; obj = g_object_new (KMS_TYPE_WEBRTC_CONNECTION, "max-port", max_port, "min-port", min_port, NULL); base_conn = KMS_WEBRTC_BASE_CONNECTION (obj); conn = KMS_WEBRTC_CONNECTION (obj); priv = conn->priv; if (!kms_webrtc_base_connection_configure (base_conn, agent, name)) { g_object_unref (obj); return NULL; } priv->rtp_tr = kms_webrtc_transport_new (agent, base_conn->stream_id, NICE_COMPONENT_TYPE_RTP, pem_certificate); priv->rtcp_tr = kms_webrtc_transport_new (agent, base_conn->stream_id, NICE_COMPONENT_TYPE_RTCP, pem_certificate); if (priv->rtp_tr == NULL || priv->rtcp_tr == NULL) { GST_ERROR_OBJECT (obj, "Cannot create KmsWebRTCConnection."); g_object_unref (obj); return NULL; } g_signal_connect (priv->rtp_tr->sink->dtlssrtpenc, "on-key-set", G_CALLBACK (rtp_connected_cb), conn); g_signal_connect (priv->rtcp_tr->sink->dtlssrtpenc, "on-key-set", G_CALLBACK (rtcp_connected_cb), conn); return conn; }