diff dev/efr-bit-packing.c @ 32:9639a44ae2e7

dev: efr-bit-packing helper program
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 24 Nov 2022 01:41:49 +0000
parents
children
line wrap: on
line diff
--- /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);
+}