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); }
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)); }