Пример #1
0
static void
rtcp_connected_cb (GstElement * dtlssrtpenc, gpointer data)
{
  KmsWebRtcConnection *self = data;
  gboolean signal;

  g_mutex_lock (&self->priv->mutex);
  self->priv->rtcp_tr_connected = TRUE;
  signal = self->priv->rtp_tr_connected;
  g_mutex_unlock (&self->priv->mutex);

  if (signal) {
    kms_i_rtp_connection_connected_signal (KMS_I_RTP_CONNECTION (self));
  }
}
Пример #2
0
KmsRtpConnection *
kms_rtp_connection_new (guint16 min_port, guint16 max_port, gboolean use_ipv6)
{
  GObject *obj;
  KmsRtpConnection *conn;
  KmsRtpConnectionPrivate *priv;
  GSocketFamily socket_family;

  obj = g_object_new (KMS_TYPE_RTP_CONNECTION, NULL);
  conn = KMS_RTP_CONNECTION (obj);
  priv = conn->priv;

  if (use_ipv6) {
    socket_family = G_SOCKET_FAMILY_IPV6;
  } else {
    socket_family = G_SOCKET_FAMILY_IPV4;
  }

  if (!kms_rtp_connection_get_rtp_rtcp_sockets
      (&priv->rtp_socket, &priv->rtcp_socket, min_port, max_port,
          socket_family)) {
    GST_ERROR_OBJECT (obj, "Cannot get ports");
    g_object_unref (obj);
    return NULL;
  }

  priv->rtp_udpsink = gst_element_factory_make ("multiudpsink", NULL);
  priv->rtp_udpsrc = gst_element_factory_make ("udpsrc", NULL);
  g_object_set (priv->rtp_udpsink, "socket", priv->rtp_socket,
      "sync", FALSE, "async", FALSE, NULL);
  g_object_set (priv->rtp_udpsrc, "socket", priv->rtp_socket, "auto-multicast",
      FALSE, NULL);

  priv->rtcp_udpsink = gst_element_factory_make ("multiudpsink", NULL);
  priv->rtcp_udpsrc = gst_element_factory_make ("udpsrc", NULL);
  g_object_set (priv->rtcp_udpsink, "socket", priv->rtcp_socket,
      "sync", FALSE, "async", FALSE, NULL);
  g_object_set (priv->rtcp_udpsrc, "socket", priv->rtcp_socket,
      "auto-multicast", FALSE, NULL);

  kms_i_rtp_connection_connected_signal (KMS_I_RTP_CONNECTION (conn));

  return conn;
}
static void
dtls_connected_cb (GstElement * dtlssrtpenc, gpointer self)
{
  kms_i_rtp_connection_connected_signal (self);
}