예제 #1
0
static void
kms_sdp_group_manager_add_handler_impl (KmsSdpGroupManager * self,
    KmsSdpHandler * handler)
{
  KmsISdpMediaExtension *mid_ext;

  /* Add mid extension */
  mid_ext = KMS_I_SDP_MEDIA_EXTENSION (kms_sdp_mid_ext_new ());
  if (!kms_sdp_media_handler_add_media_extension (handler->handler, mid_ext)) {
    GST_WARNING_OBJECT (self, "Can not configure media stream ids");
    g_object_unref (mid_ext);
  } else {
    MidExtData *ext_data;
    SignalData *s_data;
    gulong id1, id2 = 0UL;

    g_hash_table_insert (self->priv->handlers,
        GUINT_TO_POINTER (handler->id), handler);
    ext_data = mid_ext_data_new (handler, self);

    id1 = g_signal_connect_data (mid_ext, "on-offer-mid",
        G_CALLBACK (on_offer_mid_cb), ext_data,
        (GClosureNotify) kms_ref_struct_unref, 0);

    id2 = g_signal_connect_data (mid_ext, "on-answer-mid",
        G_CALLBACK (on_answer_mid_cb),
        kms_ref_struct_ref (KMS_REF_STRUCT_CAST (ext_data)),
        (GClosureNotify) kms_ref_struct_unref, 0);

    s_data = signal_data_new (id1, id2, G_OBJECT (mid_ext));

    g_hash_table_insert (self->priv->connected_signals,
        GUINT_TO_POINTER (handler->id), s_data);
  }
}
예제 #2
0
static KmsAlphaBlendingData *
kms_create_alpha_blending_data ()
{
  KmsAlphaBlendingData *data;

  data = g_slice_new0 (KmsAlphaBlendingData);
  kms_ref_struct_init (KMS_REF_STRUCT_CAST (data),
      (GDestroyNotify) kms_destroy_alpha_blending_data);

  return data;
}
예제 #3
0
static KmsCompositeMixerData *
kms_create_composite_mixer_data ()
{
  KmsCompositeMixerData *data;

  data = g_slice_new0 (KmsCompositeMixerData);
  kms_ref_struct_init (KMS_REF_STRUCT_CAST (data),
      (GDestroyNotify) kms_destroy_composite_mixer_data);

  return data;
}
예제 #4
0
static StreamE2EAvgStat *
stream_e2e_avg_stat_new (KmsMediaType type)
{
  StreamE2EAvgStat *stat;

  stat = g_slice_new0 (StreamE2EAvgStat);
  kms_ref_struct_init (KMS_REF_STRUCT_CAST (stat),
      (GDestroyNotify) stream_e2e_avg_stat_destroy);
  stat->type = type;

  return stat;
}
예제 #5
0
static MidExtData *
mid_ext_data_new (KmsSdpHandler * handler, KmsSdpGroupManager * gmanager)
{
  MidExtData *data;

  data = g_slice_new0 (MidExtData);

  kms_ref_struct_init (KMS_REF_STRUCT_CAST (data),
      (GDestroyNotify) mid_ext_data_destroy);

  data->handler = kms_sdp_agent_common_ref_sdp_handler (handler);
  data->gmanager = gmanager;

  return data;
}
예제 #6
0
KmsSdpHandler *
kms_sdp_agent_common_new_sdp_handler (guint id, const gchar * media,
    KmsSdpMediaHandler * handler)
{
  KmsSdpHandler *sdp_handler;

  sdp_handler = g_slice_new0 (KmsSdpHandler);

  kms_ref_struct_init (KMS_REF_STRUCT_CAST (sdp_handler),
      (GDestroyNotify) kms_sdp_agent_common_destroy_sdp_handler);

  sdp_handler->id = id;
  sdp_handler->media = g_strdup (media);
  sdp_handler->handler = handler;

  return sdp_handler;
}
예제 #7
0
void
kms_sdp_agent_common_unref_sdp_handler (KmsSdpHandler * handler)
{
  kms_ref_struct_unref (KMS_REF_STRUCT_CAST (handler));
}
예제 #8
0
KmsSdpHandler *
kms_sdp_agent_common_ref_sdp_handler (KmsSdpHandler * handler)
{
  return (KmsSdpHandler *) kms_ref_struct_ref (KMS_REF_STRUCT_CAST (handler));
}