annotate pcma2efr/dhf-check.c @ 34:307fe06fabec

dhf: generate EFR hex DHF in C form
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 14 May 2024 03:36:31 +0000
parents 4f47447fd17f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This program generates both standard-EFR and AMR-EFR versions of
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * sample-shifted first encoder frame, and checks them against
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * both EFR and MR122 DHFs.
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 */
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <stdio.h>
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdint.h>
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <stdlib.h>
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <string.h>
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <strings.h>
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include <gsm_efr.h>
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include <tw_amr.h>
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 extern uint8_t standard_efr[160][31];
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 extern uint8_t amr_efr[160][31];
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 static void
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 check_for_dhf(efr_frame, name, num)
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 uint8_t *efr_frame;
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 char *name;
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 unsigned num;
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 {
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 int16_t params[EFR_NUM_PARAMS];
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 EFR_frame2params(efr_frame, params);
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 if (!bcmp(params, amr_dhf_gsmefr, EFR_NUM_PARAMS * sizeof(int16_t)))
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 printf("%s frame %u matches EFR DHF\n", name, num);
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 else if (!bcmp(params, amr_dhf_mr122, EFR_NUM_PARAMS * sizeof(int16_t)))
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 printf("%s frame %u matches MR122 DHF\n", name, num);
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 }
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 main(argc, argv)
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 char **argv;
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 {
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 unsigned n;
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 generate_linear_inputs();
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 generate_std_efr();
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 generate_amr_efr();
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 for (n = 0; n < 160; n++)
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 check_for_dhf(standard_efr[n], "std EFR", n);
23
2628a34fe75b pcmu2efr: encode 2nd frame for AMR-EFR offsets 120-159
Mychaela Falconia <falcon@freecalypso.org>
parents: 20
diff changeset
43 for (n = 0; n < 160; n++)
20
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 check_for_dhf(amr_efr[n], "AMR-EFR", n);
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 exit(0);
f5f541bc9415 pcmu2efr: check all generated frames against DHF
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 }