# HG changeset patch # User Mychaela Falconia # Date 1739046983 0 # Node ID 9eff2af191d517a20022a434dd990b94968ff94b # Parent 58dfdb2fc6dfec9a675cb49c93076b54f69b0ec0 trau-parse: AMR 10k2 CRC diff -r 58dfdb2fc6df -r 9eff2af191d5 trau-decode/parse-amr.c --- a/trau-decode/parse-amr.c Sat Feb 08 18:26:48 2025 +0000 +++ b/trau-decode/parse-amr.c Sat Feb 08 20:36:23 2025 +0000 @@ -91,6 +91,35 @@ decode_mode_6(c_bits, d_bits) ubit_t *c_bits, *d_bits; { + ubit_t crc_collect[82]; + int crc1, crc2, crc3, crc4; + + bcopy(c_bits, crc_collect, 25); + bcopy(d_bits, crc_collect + 25, 45); + bcopy(d_bits + 46, crc_collect + 70, 8); + bcopy(d_bits + 85, crc_collect + 78, 2); + bcopy(d_bits + 88, crc_collect + 80, 2); + crc1 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 82, + d_bits + 92); + bcopy(d_bits + 95, crc_collect, 4); + bcopy(d_bits + 131, crc_collect + 4, 2); + bcopy(d_bits + 134, crc_collect + 6, 2); + crc2 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 8, + d_bits + 138); + bcopy(d_bits + 141, crc_collect, 8); + bcopy(d_bits + 180, crc_collect + 8, 2); + bcopy(d_bits + 183, crc_collect + 10, 2); + crc3 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 12, + d_bits + 187); + bcopy(d_bits + 190, crc_collect, 4); + bcopy(d_bits + 226, crc_collect + 4, 2); + bcopy(d_bits + 229, crc_collect + 6, 2); + bcopy(d_bits + 233, crc_collect + 8, 20); + crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 28, + d_bits + 253); + printf(" CRC %s %s %s %s\n", + crc1 ? "bad" : "good", crc2 ? "bad" : "good", + crc3 ? "bad" : "good", crc4 ? "bad" : "good"); } static void