From 9828c5b6bf63e373be800b81b6686be5966b2afc Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 2 Sep 2022 14:45:20 -0400 Subject: [PATCH] TT#188850 always increase PT tracker last_idx This fixes the payload counts not being tracked correctly when payload types repeat after the tracker rolls over. Change-Id: I16208ef73f3af3b051b96541a4c145b323cef7b2 --- daemon/ssrc.c | 6 +++--- t/test-payload-tracker.c | 45 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/daemon/ssrc.c b/daemon/ssrc.c index 448fb2598..788763522 100644 --- a/daemon/ssrc.c +++ b/daemon/ssrc.c @@ -574,9 +574,7 @@ void payload_tracker_add(struct payload_tracker *t, int pt) { } // fill in new entry - t->last[t->last_idx++] = pt; - if (t->last_idx >= G_N_ELEMENTS(t->last)) - t->last_idx = 0; + t->last[t->last_idx] = pt; // increase new counter PT_DBG("increasing new pt count from %u", t->count[pt]); @@ -597,6 +595,8 @@ void payload_tracker_add(struct payload_tracker *t, int pt) { __pt_sort(t, old_pt); out: + if (++t->last_idx >= G_N_ELEMENTS(t->last)) + t->last_idx = 0; mutex_unlock(&t->lock); } diff --git a/t/test-payload-tracker.c b/t/test-payload-tracker.c index 0ce8a6cb2..00c794f52 100644 --- a/t/test-payload-tracker.c +++ b/t/test-payload-tracker.c @@ -107,6 +107,51 @@ int main(void) { add(1); cmp("0,1,10,5,120"); + payload_tracker_init(&t); + for (int i = 0; i < 32; i++) + add(8); + cmp("8"); + add(96); + add(96); + add(96); + cmp("8,96"); + add(96); + add(96); + add(96); + add(96); + add(96); + add(96); + add(96); + cmp("8,96"); + for (int i = 0; i < 32; i++) + add(8); + cmp("8,96"); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + cmp("8,100,96"); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + add(100); + cmp("100,8,96"); + return 0; }