annotate libtwamr/tls_flags.c @ 604:54f0f1b74c25

libgsmhr1 TFO: require BFI=0 and SID=0 for homing In order for a received frame to be recognized as DHF, we need not only the correct bit pattern, but also BFI=0 and SID=0. The BFI=0 requirement should be obvious, while the SID=0 requirement is needed only for HR codec. With FR and EFR, SID classification comes from the payload bits and no separate check is needed - but in HR we get an out-of-band SID ternary flag. When SID=1, no payload bits are used at all; when SID=2, we use only the first 33 bits of the payload. Therefore, it is proper to conditionalize DHF acceptance on SID=0. We already implemented this logic in the just finished full decoder; now bring TFO code into agreement.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 04 Dec 2025 19:40:35 +0000
parents dfb1f86541b2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * Unfortunately the code we got from ETSI makes heavy use of two global
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * Boolean flags named Carry and Overflow that function like equally named
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * processor state flags on many CPU architectures. They are not part
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * of persistent codec session state for either the encoder or the decoder,
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 * instead they are "short-term" globals much like UNIX errno.
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 *
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 * Given this unfortunate reality plus the natural desire to make our
252
57b4053559ff libtwamr: beginning of project
Mychaela Falconia <falcon@freecalypso.org>
parents: 38
diff changeset
9 * AMR library thread-safe (a transcoding MGW handling a large volume of
38
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 * simultaneous calls is exactly the kind of application that would benefit
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 * from utilitizing all CPU cores), our current workaround is to use
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 * thread-local storage.
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 */
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 #include "typedef.h"
359
dfb1f86541b2 libtwamr/tls_flags.c: use namespace.h for the right prefix
Mychaela Falconia <falcon@freecalypso.org>
parents: 252
diff changeset
16 #include "namespace.h"
38
38326102fc43 libgsmefr: beginning to integrate code from ETSI
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17
359
dfb1f86541b2 libtwamr/tls_flags.c: use namespace.h for the right prefix
Mychaela Falconia <falcon@freecalypso.org>
parents: 252
diff changeset
18 __thread Flag Carry, Overflow;