comparison trau-decode/parse-amr.c @ 80:58dfdb2fc6df

trau-parse: AMR 12k2 CRC
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 08 Feb 2025 18:26:48 +0000
parents 8c1f20e845a1
children 9eff2af191d5
comparison
equal deleted inserted replaced
79:8c1f20e845a1 80:58dfdb2fc6df
95 95
96 static void 96 static void
97 decode_mode_7(c_bits, d_bits) 97 decode_mode_7(c_bits, d_bits)
98 ubit_t *c_bits, *d_bits; 98 ubit_t *c_bits, *d_bits;
99 { 99 {
100 ubit_t crc_collect[69];
101 int crc1, crc2, crc3, crc4;
102
103 bcopy(c_bits, crc_collect, 25);
104 bcopy(d_bits, crc_collect + 25, 29);
105 bcopy(d_bits + 38, crc_collect + 54, 12);
106 bcopy(d_bits + 86, crc_collect + 66, 3);
107 crc1 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 69,
108 d_bits + 91);
109 bcopy(d_bits + 94, crc_collect, 9);
110 bcopy(d_bits + 139, crc_collect + 9, 3);
111 crc2 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 12,
112 d_bits + 144);
113 bcopy(d_bits + 147, crc_collect, 12);
114 bcopy(d_bits + 195, crc_collect + 12, 3);
115 crc3 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 15,
116 d_bits + 200);
117 bcopy(d_bits + 203, crc_collect, 5);
118 bcopy(d_bits + 209, crc_collect + 5, 3);
119 bcopy(d_bits + 248, crc_collect + 8, 3);
120 crc4 = osmo_crc8gen_check_bits(&gsm0860_amr_crc3, crc_collect, 11,
121 d_bits + 253);
122 printf(" CRC %s %s %s %s\n",
123 crc1 ? "bad" : "good", crc2 ? "bad" : "good",
124 crc3 ? "bad" : "good", crc4 ? "bad" : "good");
100 } 125 }
101 126
102 static void (*per_mode_decode[8])() = { 127 static void (*per_mode_decode[8])() = {
103 decode_mode_0, 128 decode_mode_0,
104 decode_mode_1, 129 decode_mode_1,