From 06b84ac050ac7bc0b76e4d7c601e1bfeaf6f0bbd Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 10 Feb 2025 14:59:47 -0400 Subject: [PATCH] MT#61625 refactor __rtp_stats_update Make it so we can do this without a codec_store. Change-Id: I3872709ee8d28ccccfab52006cb7f73887b53f04 --- daemon/call.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/daemon/call.c b/daemon/call.c index ec9e36632..350f9b5e7 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -1208,8 +1208,18 @@ int __init_stream(struct packet_stream *ps) { return 0; } +static void rtp_stats_add_pt(GHashTable *dst, const struct rtp_payload_type *pt) { + struct rtp_stats *rs = g_hash_table_lookup(dst, GINT_TO_POINTER(pt->payload_type)); + if (rs) + return; + + rs = bufferpool_alloc0(shm_bufferpool, sizeof(*rs)); + rs->payload_type = pt->payload_type; + rs->clock_rate = pt->clock_rate; + g_hash_table_insert(dst, GINT_TO_POINTER(rs->payload_type), rs); +} + void __rtp_stats_update(GHashTable *dst, struct codec_store *cs) { - struct rtp_stats *rs; rtp_payload_type *pt; codecs_ht src = cs->codecs; @@ -1219,16 +1229,8 @@ void __rtp_stats_update(GHashTable *dst, struct codec_store *cs) { codecs_ht_iter iter; t_hash_table_iter_init(&iter, src); - while (t_hash_table_iter_next(&iter, NULL, &pt)) { - rs = g_hash_table_lookup(dst, GINT_TO_POINTER(pt->payload_type)); - if (rs) - continue; - - rs = bufferpool_alloc0(shm_bufferpool, sizeof(*rs)); - rs->payload_type = pt->payload_type; - rs->clock_rate = pt->clock_rate; - g_hash_table_insert(dst, GINT_TO_POINTER(rs->payload_type), rs); - } + while (t_hash_table_iter_next(&iter, NULL, &pt)) + rtp_stats_add_pt(dst, pt); /* we leave previously added but now removed payload types in place */ }