From 83797790eca95c321aeeef8ebafe5d9e6f5943e3 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 10 Apr 2024 10:49:33 -0400 Subject: [PATCH] MT#55283 add SSRC stats to NG output Change-Id: I440dfdb11a9464566f8f2a3d58e5d4e225b336cf --- daemon/call_interfaces.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/daemon/call_interfaces.c b/daemon/call_interfaces.c index df235c423..26d81ea31 100644 --- a/daemon/call_interfaces.c +++ b/daemon/call_interfaces.c @@ -2351,6 +2351,26 @@ static void ng_stats_endpoint(bencode_item_t *dict, const endpoint_t *ep) { bencode_dictionary_add_integer(dict, "port", ep->port); } +static void ng_stats_stream_ssrc(bencode_item_t *dict, struct ssrc_ctx *const ssrcs[RTPE_NUM_SSRC_TRACKING], + const char *label) +{ + bencode_item_t *list = bencode_dictionary_add_list(dict, label); + + for (int i = 0; i < RTPE_NUM_SSRC_TRACKING; i++) { + struct ssrc_ctx *c = ssrcs[i]; + if (!c) + break; + + bencode_item_t *ssrc = bencode_list_add_dictionary(list); + + bencode_dictionary_add_integer(ssrc, "SSRC", ssrcs[i]->parent->h.ssrc); + bencode_dictionary_add_integer(ssrc, "bytes", atomic64_get_na(&c->octets)); + bencode_dictionary_add_integer(ssrc, "packets", atomic64_get_na(&c->packets)); + bencode_dictionary_add_integer(ssrc, "last RTP timestamp", atomic64_get_na(&c->last_ts)); + bencode_dictionary_add_integer(ssrc, "last RTP seq", atomic64_get_na(&c->last_seq)); + } +} + #define BF_PS(k, f) if (PS_ISSET(ps, f)) bencode_list_add_string(flags, k) static void ng_stats_stream(bencode_item_t *list, const struct packet_stream *ps, @@ -2392,9 +2412,8 @@ static void ng_stats_stream(bencode_item_t *list, const struct packet_stream *ps BF_PS("media handover", MEDIA_HANDOVER); BF_PS("ICE", ICE); - // XXX convert to list output? - if (ps->ssrc_in[0]) - bencode_dictionary_add_integer(dict, "SSRC", ps->ssrc_in[0]->parent->h.ssrc); + ng_stats_stream_ssrc(dict, ps->ssrc_in, "ingress SSRCs"); + ng_stats_stream_ssrc(dict, ps->ssrc_out, "egress SSRCs"); stats: if (totals->last_packet < atomic64_get(&ps->last_packet))