rtp continuous-streaming: fix BFI in the quality-suppressed case

The check for (tch_ind->lqual_cb >= bts->min_qual_norm) in
l1sap_tch_ind() has the intent of suppressing valid-seeming
speech frame output from lower layers when the link quality is
too low; this check is particularly important for FR1 codec
where the intrinsic validity check is only a 3-bit CRC which has
1/8 probability of indicating "correct" when decoding radio noise
during DTXu silence.

However, this check is effectively defeated in the current
implementation of rtp continuous-streaming: the RTP packet being
output is the presumed-bogus speech frame from lower layers,
rather than the intended zero-length payload.  Fix this bug.

Related: OS#5975
Change-Id: Icee0f57be289a0592a0197469432a012d15f224c
This commit is contained in:
Mychaela N. Falconia 2023-03-29 22:03:26 +00:00 committed by laforge
parent acf0f0f0bb
commit 50710f4e8e
1 changed files with 2 additions and 2 deletions

View File

@ -1641,10 +1641,10 @@ static int l1sap_tch_ind(struct gsm_bts_trx *trx, struct osmo_phsap_prim *l1sap,
return 1;
}
} else {
/* Are we in rtp continuous-stream special mode? If so, send
/* Are we in rtp continuous-streaming special mode? If so, send
* out a BFI packet as zero-length RTP payload. */
if (bts->rtp_nogaps_mode) {
send_ul_rtp_packet(lchan, fn, msg->data, msg->len);
send_ul_rtp_packet(lchan, fn, NULL, 0);
} else {
DEBUGPGT(DRTP, &g_time, "Skipping RTP frame with lost payload (chan_nr=0x%02x)\n",
chan_nr);