FreeCalypso > hg > gsm-codec-lib
annotate libtwamr/bits2prm.c @ 279:4db5fc10fd1a
libgsmfr2: implement full decoder
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 14 Apr 2024 04:48:48 +0000 |
parents | f931e704adc5 |
children |
rev | line source |
---|---|
254
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * A cleaner reimplementation of AMR Bits2prm() function. |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include "typedef.h" |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include "namespace.h" |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include "bitno.h" |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include "bits2prm.h" |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 void Bits2prm(enum Mode mode, const Word16 bits[], Word16 prm[]) |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 { |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 const Word16 *p = bits; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 const Word16 *t = bitno[mode]; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 unsigned nparam = prmno[mode]; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 unsigned n, m, acc; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 for (n = 0; n < nparam; n++) { |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 acc = 0; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 for (m = 0; m < *t; m++) { |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 acc <<= 1; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 if (*p) |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 acc |= 1; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 p++; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 } |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 prm[n] = acc; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 t++; |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 } |
f931e704adc5
libtwamr: bits and parameter packing
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 } |