FreeCalypso > hg > gsm-codec-lib
view dev/efr-bit-packing.c @ 128:a5ffec18e4cd
test programs: use printf %d format for codec parameters
Even though all codec params (both FR and EFR) are small unsigned integers,
we use signed int16_t data type for both, for interface reasons: in the
case of FR it's the gsm_signal type of libgsm, and in the case of EFR
it's the Word16 type of ETSI codec guts. Therefore, the correct printf
format is %d, not %u, when the objective is to see what's in the variables
(what the compiler sees) and catch any bugs.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 11 Dec 2022 04:00:13 +0000 |
parents | 9639a44ae2e7 |
children |
line wrap: on
line source
/* * We would like to generate our EFR RTP frame packing and unpacking code * using bitter and sweet utilities from libgsm, so we'll end up packing * and unpacking EFR just like good old FR. However, because of our * slightly different approach, entering the spec file for bitter and sweet * manually would be tedious and error-prone, hence we are going to * generate it with this program. */ #include <stdio.h> #include <stdlib.h> #define PRM_NO 57 /* table from ETSI EFR code */ static const unsigned bitno[PRM_NO] = { 7, 8, 9, 8, 6, /* LSP VQ */ 9, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5, /* first subframe */ 6, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5, /* second subframe */ 9, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5, /* third subframe */ 6, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5 /* fourth subframe */ }; main(argc, argv) char **argv; { unsigned n; printf("EFR_MAGIC\t4\n"); for (n = 0; n < PRM_NO; n++) printf("params[%u]\t%u\n", n, bitno[n]); exit(0); }