From 59d95c9d554d4412ea22ce61b491309dd54a98b3 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Thu, 30 Apr 2026 13:15:01 -0400 Subject: [PATCH] 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 154f2b89277fcb1c09f20f5e68e020caa1ee29e5) --- daemon/codec.c | 5 +++++ daemon/ssrc.c | 3 --- include/ssrc.h | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/daemon/codec.c b/daemon/codec.c index a5efc137c..09ada14f8 100644 --- a/daemon/codec.c +++ b/daemon/codec.c @@ -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; diff --git a/daemon/ssrc.c b/daemon/ssrc.c index 0b9880854..4f5dc736a 100644 --- a/daemon/ssrc.c +++ b/daemon/ssrc.c @@ -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; } diff --git a/include/ssrc.h b/include/ssrc.h index fddf59760..e49061a84 100644 --- a/include/ssrc.h +++ b/include/ssrc.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;