Ejemplo n.º 1
0
static void
kms_element_set_sink_input_stats (KmsElement * self, GstPad * pad,
    KmsElementPadType type)
{
  KmsStatsProbe *s_probe;
  KmsMediaType media_type;

  switch (type) {
    case KMS_ELEMENT_PAD_TYPE_AUDIO:
      media_type = KMS_MEDIA_TYPE_AUDIO;
    case KMS_ELEMENT_PAD_TYPE_VIDEO:
      media_type = KMS_MEDIA_TYPE_VIDEO;
      break;
    default:
      GST_DEBUG ("No stats collected for pad type %d", type);
      return;
  }

  s_probe = kms_stats_probe_new (pad, media_type);

  KMS_ELEMENT_LOCK (self);

  self->priv->stats.probes = g_slist_prepend (self->priv->stats.probes,
      s_probe);

  if (self->priv->stats_enabled) {
    kms_stats_probe_add_latency (s_probe, kms_element_calculate_stats, self,
        NULL);
  }

  KMS_ELEMENT_UNLOCK (self);
}
Ejemplo n.º 2
0
static void
kms_recorder_endpoint_on_sink_added (KmsBaseMediaMuxer * obj,
    GstElement * sink, gpointer user_data)
{
  KmsRecorderEndpoint *self = KMS_RECORDER_ENDPOINT (user_data);
  KmsStatsProbe *sprobe;
  GstPad *sinkpad;

  sinkpad = gst_element_get_static_pad (sink, "sink");
  sprobe = kms_stats_probe_new (sinkpad, 0 /* Does not matter media type */ );

  KMS_ELEMENT_LOCK (KMS_ELEMENT (self));

  self->priv->sink_probes = g_slist_append (self->priv->sink_probes, sprobe);

  if (self->priv->stats.enabled) {
    kms_stats_probe_add_latency (sprobe, kms_recorder_endpoint_latency_cb,
        TRUE /* Lock the data */ , self, NULL);
  }

  KMS_ELEMENT_UNLOCK (KMS_ELEMENT (self));
}