# HG changeset patch # User Mychaela Falconia # Date 1669608920 0 # Node ID 2361a7d8c1eb8a3da314c8ecf684fc75949986c6 # Parent 3b64f255689abe4c7b972f1d576a0306c37a1b5e libgsmfrp: randomize grid position params when muting speech, following GSM 06.11 example solution in more detail diff -r 3b64f255689a -r 2361a7d8c1eb libgsmfrp/bad_frame.c --- a/libgsmfrp/bad_frame.c Mon Nov 28 04:00:18 2022 +0000 +++ b/libgsmfrp/bad_frame.c Mon Nov 28 04:15:20 2022 +0000 @@ -27,6 +27,17 @@ return mute_flag; } +static void random_grid_pos(struct gsmfr_preproc_state *st, gsm_byte *frame) +{ + unsigned sub, Mc; + + for (sub = 0; sub < 4; sub++) { + Mc = gsmfr_preproc_prng(st, 2); + frame[sub*7+6] &= 0x9F; + frame[sub*7+6] |= Mc << 5; + } +} + void gsmfr_preproc_bfi(struct gsmfr_preproc_state *st, int taf, gsm_byte *frame) { int mute; @@ -42,6 +53,7 @@ case SPEECH_MUTING: mute = reduce_xmaxc(st->speech_frame); memcpy(frame, &st->speech_frame, sizeof(gsm_frame)); + random_grid_pos(st, frame); if (mute) st->rx_state = NO_DATA; return;