Browse Source

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
pull/1611/head
Richard Fuchs 3 years ago
parent
commit
9828c5b6bf
2 changed files with 48 additions and 3 deletions
  1. +3
    -3
      daemon/ssrc.c
  2. +45
    -0
      t/test-payload-tracker.c

+ 3
- 3
daemon/ssrc.c View File

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


+ 45
- 0
t/test-payload-tracker.c View File

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


Loading…
Cancel
Save