Ejemplo n.º 1
0
static void
kms_webrtc_sctp_connection_get_property (GObject * object,
    guint prop_id, GValue * value, GParamSpec * pspec)
{
  KmsWebRtcSctpConnection *self = KMS_WEBRTC_SCTP_CONNECTION (object);

  switch (prop_id) {
    case PROP_ADDED:
      g_value_set_boolean (value, self->priv->added);
      break;
    case PROP_CONNECTED:
      g_value_set_boolean (value, self->priv->connected);
      break;
    case PROP_IS_CLIENT:{
      gboolean is_client;

      g_object_get (G_OBJECT (self->priv->tr->sink->dtlssrtpenc), "is-client",
          &is_client, NULL);
      g_value_set_boolean (value, is_client);
      break;
    }
    case PROP_MIN_PORT:
      g_value_set_uint (value, self->parent.min_port);
      break;
    case PROP_MAX_PORT:
      g_value_set_uint (value, self->parent.max_port);
      break;
    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
      break;
  }
}
Ejemplo n.º 2
0
static GstPad *
kms_webrtc_sctp_connection_request_data_sink (KmsIRtpConnection * base_conn)
{
  KmsWebRtcSctpConnection *self = KMS_WEBRTC_SCTP_CONNECTION (base_conn);

  return gst_element_get_request_pad (self->priv->tr->sink->dtlssrtpenc,
      "data_sink");
}
Ejemplo n.º 3
0
static void
kms_webrtc_sctp_connection_sink_sync_state_with_parent (KmsIRtpConnection *
    base_conn)
{
  KmsWebRtcSctpConnection *self = KMS_WEBRTC_SCTP_CONNECTION (base_conn);
  GstElement *element = GST_ELEMENT (self->priv->tr->sink);

  gst_element_sync_state_with_parent_target_state (element);
}
Ejemplo n.º 4
0
static gchar *
kms_webrtc_sctp_connection_get_certificate_pem (KmsWebRtcBaseConnection *
    base_conn)
{
  KmsWebRtcSctpConnection *self = KMS_WEBRTC_SCTP_CONNECTION (base_conn);
  gchar *pem;

  g_object_get (G_OBJECT (self->priv->tr->src->dtlssrtpdec), "pem", &pem, NULL);

  return pem;
}
Ejemplo n.º 5
0
static void
kms_webrtc_sctp_connection_add (KmsIRtpConnection * base_conn, GstBin * bin,
    gboolean active)
{
  KmsWebRtcSctpConnection *self = KMS_WEBRTC_SCTP_CONNECTION (base_conn);
  KmsWebRtcSctpConnectionPrivate *priv = self->priv;
  KmsWebRtcTransport *tr = priv->tr;

  g_object_set (G_OBJECT (tr->sink->dtlssrtpenc), "is-client", active, NULL);

  gst_bin_add (bin, g_object_ref (self->priv->tr->src));
  gst_bin_add (bin, g_object_ref (self->priv->tr->sink));
}
Ejemplo n.º 6
0
static void
kms_webrtc_sctp_connection_finalize (GObject * object)
{
  KmsWebRtcSctpConnection *self = KMS_WEBRTC_SCTP_CONNECTION (object);
  KmsWebRtcSctpConnectionPrivate *priv = self->priv;

  GST_DEBUG_OBJECT (self, "finalize");

  kms_webrtc_transport_destroy (priv->tr);

  /* chain up */
  G_OBJECT_CLASS (kms_webrtc_sctp_connection_parent_class)->finalize (object);
}
Ejemplo n.º 7
0
KmsWebRtcSctpConnection *
kms_webrtc_sctp_connection_new (KmsIceBaseAgent * agent, GMainContext * context,
    const gchar * name, guint16 min_port, guint16 max_port,
    gchar * pem_certificate)
{
  GObject *obj;
  KmsWebRtcBaseConnection *base_conn;
  KmsWebRtcSctpConnection *conn;
  KmsWebRtcSctpConnectionPrivate *priv;

  obj =
      g_object_new (KMS_TYPE_WEBRTC_SCTP_CONNECTION, "min-port", min_port,
      "max-port", max_port, NULL);
  base_conn = KMS_WEBRTC_BASE_CONNECTION (obj);
  conn = KMS_WEBRTC_SCTP_CONNECTION (obj);
  priv = conn->priv;

  if (!kms_webrtc_base_connection_configure (base_conn, agent, name)) {
    g_object_unref (obj);
    return NULL;
  }

  priv->tr =
      kms_webrtc_transport_new (agent, base_conn->stream_id,
      NICE_COMPONENT_TYPE_SCTP, pem_certificate);

  if (priv->tr == NULL) {
    GST_ERROR_OBJECT (obj, "Cannot create KmsWebRtcSctpConnection.");
    g_object_unref (obj);
    return NULL;
  }

  g_signal_connect (priv->tr->sink->dtlssrtpenc, "on-key-set",
      G_CALLBACK (dtls_connected_cb), conn);

  return conn;
}
Ejemplo n.º 8
0
static void
kms_webrtc_sctp_connection_set_property (GObject * object, guint prop_id,
    const GValue * value, GParamSpec * pspec)
{
  KmsWebRtcSctpConnection *self = KMS_WEBRTC_SCTP_CONNECTION (object);

  switch (prop_id) {
    case PROP_ADDED:
      self->priv->added = g_value_get_boolean (value);
      break;
    case PROP_CONNECTED:
      self->priv->connected = g_value_get_boolean (value);
      break;
    case PROP_MIN_PORT:
      self->parent.min_port = g_value_get_uint (value);
      break;
    case PROP_MAX_PORT:
      self->parent.max_port = g_value_get_uint (value);
      break;
    default:
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
      break;
  }
}