FreeCalypso > hg > gsm-codec-lib
annotate libgsmefr/memops.h @ 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 | d285877fc4cc |
| children |
| rev | line source |
|---|---|
|
58
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * The original code from ETSI uses its own Copy() and Set_zero() |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * functions, operating on Word16 elements. Here we implement them |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * as static inline functions wrapping around memcpy and memset. |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 */ |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <string.h> |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 static inline void Copy ( |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 const Word16 x[], /* (i) : input vector */ |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 Word16 y[], /* (o) : output vector */ |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 Word16 L /* (i) : vector length */ |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 ) |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 { |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 memcpy(y, x, L * 2); |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 } |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 static inline void Set_zero ( |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 Word16 x[], /* (o) : vector to clear */ |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 Word16 L /* (i) : length of vector */ |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 ) |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 { |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 memset(x, 0, L * 2); |
|
d285877fc4cc
libgsmefr: cod_12k2.c compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 } |
