Пример #1
0
static void
kms_base_rtp_session_e2e_latency_cb (GstPad * pad, KmsMediaType type,
    GstClockTimeDiff t, KmsList * mdata, gpointer user_data)
{
  KmsBaseRtpSession *self = KMS_BASE_RTP_SESSION (user_data);
  KmsListIter iter;
  gpointer key, value;
  gchar *name;

  name = gst_element_get_name (KMS_SDP_SESSION (self)->ep);

  kms_list_iter_init (&iter, mdata);
  while (kms_list_iter_next (&iter, &key, &value)) {
    gchar *id = (gchar *) key;
    StreamE2EAvgStat *stat;

    if (!g_str_has_prefix (id, name)) {
      /* This element did not add this mark to the metada */
      continue;
    }

    stat = (StreamE2EAvgStat *) value;
    stat->avg = KMS_STATS_CALCULATE_LATENCY_AVG (t, stat->avg);
  }
}
Пример #2
0
static void
kms_recorder_endpoint_latency_cb (GstPad * pad, KmsMediaType type,
    GstClockTimeDiff t, KmsList * mdata, gpointer user_data)
{
  KmsRecorderEndpoint *self = KMS_RECORDER_ENDPOINT (user_data);
  KmsListIter iter;
  gpointer key, value;
  gchar *name;

  name = gst_element_get_name (self);

  kms_list_iter_init (&iter, mdata);
  while (kms_list_iter_next (&iter, &key, &value)) {
    gchar *id = (gchar *) key;
    StreamE2EAvgStat *stat;

    if (!g_str_has_prefix (id, name)) {
      /* This element did not add this mark to the metada */
      continue;
    }

    stat = (StreamE2EAvgStat *) value;
    stat->avg = KMS_STATS_CALCULATE_LATENCY_AVG (t, stat->avg);
  }
}
Пример #3
0
static void
kms_element_calculate_stats (GstPad * pad, KmsMediaType type,
    GstClockTimeDiff t, gpointer user_data)
{
  KmsElement *self = KMS_ELEMENT (user_data);

  gdouble *prev;

  switch (type) {
    case KMS_MEDIA_TYPE_AUDIO:
      prev = &self->priv->stats.ai;
      break;
    case KMS_MEDIA_TYPE_VIDEO:
      prev = &self->priv->stats.vi;
      break;
    default:
      GST_DEBUG_OBJECT (pad, "No stast calculated for media (%d)", type);
      return;
  }

  *prev = KMS_STATS_CALCULATE_LATENCY_AVG (t, *prev);
}
Пример #4
0
static void
kms_base_rtp_session_latency_cb (GstPad * pad, KmsMediaType type,
    GstClockTimeDiff t, gpointer user_data)
{
  KmsBaseRtpSession *self = KMS_BASE_RTP_SESSION (user_data);
  gdouble *prev;

  switch (type) {
    case KMS_MEDIA_TYPE_AUDIO:
      prev = &self->stats->ai;
      break;
    case KMS_MEDIA_TYPE_VIDEO:
      prev = &self->stats->vi;
      break;
    default:
      GST_DEBUG_OBJECT (pad, "No stast calculated for media (%s)",
          str_media_type (type));
      return;
  }

  *prev = KMS_STATS_CALCULATE_LATENCY_AVG (t, *prev);
}