FreeCalypso > hg > gsm-codec-lib
changeset 32:9639a44ae2e7
dev: efr-bit-packing helper program
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 24 Nov 2022 01:41:49 +0000 |
parents | 19a90fa1f608 |
children | 88468d5b3590 |
files | .hgignore dev/Makefile dev/efr-bit-packing.c |
diffstat | 3 files changed, 44 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgignore Wed Nov 23 08:40:08 2022 +0000 +++ b/.hgignore Thu Nov 24 01:41:49 2022 +0000 @@ -2,6 +2,8 @@ \.[oa]$ +^dev/efr-bit-packing$ +^dev/efr-bit-packing\.out$ ^dev/gsm0611-silence-fr$ ^dev/gsm0611-silence-fr\.out$
--- a/dev/Makefile Wed Nov 23 08:40:08 2022 +0000 +++ b/dev/Makefile Thu Nov 24 01:41:49 2022 +0000 @@ -1,10 +1,16 @@ CC= gcc CFLAGS= -O2 -PROGS= gsm0611-silence-fr -DATAOUT=gsm0611-silence-fr.out +PROGS= efr-bit-packing gsm0611-silence-fr +DATAOUT=efr-bit-packing.out gsm0611-silence-fr.out all: ${PROGS} ${DATAOUT} +efr-bit-packing: efr-bit-packing.c + ${CC} ${CFLAGS} -o $@ $@.c + +efr-bit-packing.out: efr-bit-packing + ./efr-bit-packing > $@ + gsm0611-silence-fr: gsm0611-silence-fr.c ${CC} ${CFLAGS} -o $@ $@.c -lgsm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dev/efr-bit-packing.c Thu Nov 24 01:41:49 2022 +0000 @@ -0,0 +1,34 @@ +/* + * 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); +}