Exemplo n.º 1
0
void
kms_stats_probe_add_latency (KmsStatsProbe * probe,
    BufferLatencyCallback callback, gboolean locked, gpointer user_data,
    GDestroyNotify destroy_data)
{
  kms_stats_probe_remove (probe);

  probe->probe_id = kms_stats_add_buffer_latency_notification_probe (probe->pad,
      callback, locked, user_data, destroy_data);
}
Exemplo n.º 2
0
static void
connect_sink_func (const gchar * key, KmsSinkPadData * data,
    KmsRecorderEndpoint * self)
{
  MarkBufferProbeData *markdata;
  StreamE2EAvgStat *stat;
  KmsMediaType type;
  GstPad *sinkpad;
  gchar *id;

  if (gst_pad_is_linked (data->sink_target)) {
    /* Pad was not previously removed */
    return;
  }

  sinkpad = kms_element_connect_sink_target_full (KMS_ELEMENT (self),
      data->sink_target, data->type, data->description, connect_pad_signals_cb,
      self);

  switch (data->type) {
    case KMS_ELEMENT_PAD_TYPE_AUDIO:
      type = KMS_MEDIA_TYPE_AUDIO;
      break;
    case KMS_ELEMENT_PAD_TYPE_VIDEO:
      type = KMS_MEDIA_TYPE_VIDEO;
      break;
    default:
      GST_DEBUG_OBJECT (self, "No e2e stats will be collected for pad type %u",
          data->type);
      return;
  }

  id = kms_stats_create_id_for_pad (GST_ELEMENT (self), sinkpad);

  stat = g_hash_table_lookup (self->priv->stats.avg_e2e, id);

  if (stat == NULL) {
    stat = kms_stats_stream_e2e_avg_stat_new (type);
    g_hash_table_insert (self->priv->stats.avg_e2e, g_strdup (id), stat);
  }

  markdata = mark_buffer_probe_data_new ();
  markdata->id = id;
  markdata->stat = kms_stats_stream_e2e_avg_stat_ref (stat);

  kms_stats_add_buffer_latency_notification_probe (sinkpad, add_mark_data_cb,
      TRUE /* lock the data */ , markdata,
      (GDestroyNotify) mark_buffer_probe_data_destroy);
}
Exemplo n.º 3
0
void
kms_webrtc_transport_enable_latency_notification (KmsWebRtcTransport * tr,
    BufferLatencyCallback cb, gpointer user_data, GDestroyNotify destroy_data)
{
  GstPad *pad;

  element_remove_probe (tr->src->src, "src", tr->src_probe);
  pad = gst_element_get_static_pad (tr->src->src, "src");
  tr->src_probe = kms_stats_add_buffer_latency_meta_probe (pad, FALSE,
      0 /* No matter type at this point */ );
  g_object_unref (pad);

  element_remove_probe (tr->sink->sink, "sink", tr->sink_probe);
  pad = gst_element_get_static_pad (tr->sink->sink, "sink");
  tr->sink_probe = kms_stats_add_buffer_latency_notification_probe (pad, cb,
      user_data, destroy_data);
  g_object_unref (pad);
}