FreeCalypso > hg > gsm-codec-lib
comparison libtwamr/prm2bits.c @ 400:ffd48f0a2ab5
libtwamr: implement Prm2bits() like Bits2prm()
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Mon, 06 May 2024 19:34:59 +0000 |
| parents | libtwamr/bits2prm.c@f931e704adc5 |
| children |
comparison
equal
deleted
inserted
replaced
| 399:3618b5cf25a6 | 400:ffd48f0a2ab5 |
|---|---|
| 1 /* | |
| 2 * A cleaner reimplementation of AMR Prm2bits() function. | |
| 3 */ | |
| 4 | |
| 5 #include "typedef.h" | |
| 6 #include "namespace.h" | |
| 7 #include "bitno.h" | |
| 8 #include "prm2bits.h" | |
| 9 | |
| 10 void Prm2bits(enum Mode mode, const Word16 prm[], Word16 bits[]) | |
| 11 { | |
| 12 const Word16 *t = bitno[mode]; | |
| 13 unsigned nparam = prmno[mode]; | |
| 14 unsigned n, p, mask; | |
| 15 Word16 *b = bits; | |
| 16 | |
| 17 for (n = 0; n < nparam; n++) { | |
| 18 p = prm[n]; | |
| 19 mask = 1 << (*t++ - 1); | |
| 20 for (; mask; mask >>= 1) { | |
| 21 if (p & mask) | |
| 22 *b++ = 1; | |
| 23 else | |
| 24 *b++ = 0; | |
| 25 } | |
| 26 } | |
| 27 } |
