MT#55283 fix random seq under DTX

Skip initialisation of seq_out to a random number and track its init
state with a dedicated flag. Initialise it to the first received seq.

Change-Id: Iecdd3d28c5d6fe36d0a7488dd231767ff788942e
(cherry picked from commit 154f2b8927)
(cherry picked from commit 59d95c9d55)
mr26.0.1
Richard Fuchs 18 hours ago
parent 781df9883c
commit 076a23a77b

@ -3409,6 +3409,11 @@ static bool __buffer_dtx(struct dtx_buffer *dtxb, struct codec_ssrc_handler *dec
unsigned long ts = packet ? packet->ts : 0;
if (!mp->ssrc_out->seq_set) {
mp->ssrc_out->seq_set = true;
mp->ssrc_out->seq_out = packet->p.seq;
}
// allocate packet object
struct dtx_packet *dtxp = g_new0(__typeof(*dtxp), 1);
dtxp->packet = packet;

@ -37,11 +37,8 @@ static struct ssrc_entry *create_ssrc_entry_call(void *uptr) {
payload_tracker_init(&ent->tracker);
while (!ent->ssrc_map_out)
ent->ssrc_map_out = ssl_random();
ent->seq_out = ssl_random();
atomic64_set_na(&ent->last_sample, rtpe_now);
ent->stats = bufferpool_alloc0(shm_bufferpool, sizeof(*ent->stats));
//ent->seq_out = ssl_random();
//ent->ts_out = ssl_random();
ent->lost_bits = -1;
return &ent->h;
}

@ -69,6 +69,7 @@ struct ssrc_entry_call {
uint32_t ssrc_map_out;
uint16_t seq_out;
unsigned long ts_out;
bool seq_set;
// RTCP stats
struct ssrc_stats *stats;

Loading…
Cancel
Save