changeset 89:865b104ffbab

trau-parse: AMR 4k75 CRC
author Mychaela Falconia <falcon@freecalypso.org>
date Wed, 05 Mar 2025 00:33:45 +0000
parents cec24988550a
children 31e17dd64fc1
files trau-decode/parse-amr.c
diffstat 1 files changed, 21 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/trau-decode/parse-amr.c	Wed Mar 05 00:05:55 2025 +0000
+++ b/trau-decode/parse-amr.c	Wed Mar 05 00:33:45 2025 +0000
@@ -55,6 +55,27 @@
 decode_mode_0(c_bits, d_bits)
 	ubit_t *c_bits, *d_bits;
 {
+	ubit_t crc_collect[56];
+	int crc1, crc2, crc3, crc4;
+
+	bcopy(c_bits, crc_collect, 25);
+	bcopy(d_bits + 44, crc_collect + 25, 16);
+	bcopy(d_bits + 61, crc_collect + 41, 2);
+	bcopy(d_bits + 64, crc_collect + 43, 9);
+	bcopy(d_bits + 88, crc_collect + 52, 4);
+	crc1 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 56,
+					d_bits + 92);
+	crc2 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, d_bits + 95, 2,
+					d_bits + 108);
+	bcopy(d_bits + 111, crc_collect, 2);
+	bcopy(d_bits + 128, crc_collect + 2, 4);
+	crc3 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 6,
+					d_bits + 132);
+	crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, d_bits + 135, 2,
+					d_bits + 148);
+	printf("    CRC %s %s %s %s\n",
+		crc1 ? "bad" : "good", crc2 ? "bad" : "good",
+		crc3 ? "bad" : "good", crc4 ? "bad" : "good");
 }
 
 static void