annotate amrdiff/readone-amr.c @ 19:2bdcd2ed9a1c

pcmu2efr: generate AMR-EFR version
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 12 May 2024 00:56:42 +0000
parents 75ba83624a29
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * This program reads a single frame (the first one) from an AMR *.cod file,
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 * enforces that this frame is MR122 speech, and emits the frame of 244 bits
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 * as comma-separated ASCII. The intent is to extract the DHF in a form
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 * convenient for inclusion in amrdiff source.
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 */
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <stdio.h>
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <stdint.h>
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include <stdlib.h>
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include <string.h>
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include <strings.h>
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include "amr_defs.h"
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 main(argc, argv)
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 char **argv;
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 {
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 char *filename;
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 int bigend, rc;
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 FILE *inf;
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 uint8_t amr_bits[COD_FORMAT_NWORDS];
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 if (argc != 3) {
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 usage: fprintf(stderr, "usage: %s amr-cod-file be|le\n", argv[0]);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 exit(1);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 }
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 filename = argv[1];
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 if (!strcmp(argv[2], "be"))
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 bigend = 1;
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 else if (!strcmp(argv[2], "le"))
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 bigend = 0;
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 else
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 goto usage;
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 inf = fopen(filename, "r");
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 if (!inf) {
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 perror(filename);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 exit(1);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 }
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 rc = read_etsi_bits(inf, bigend, amr_bits, COD_FORMAT_NWORDS, filename);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 if (!rc) {
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 fprintf(stderr, "error: %s is empty\n", filename);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 exit(1);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
43 }
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
44 if (amr_bits[0] != TX_SPEECH_GOOD || amr_bits[245] != MR122) {
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
45 fprintf(stderr, "error: frame type is wrong\n");
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
46 exit(1);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
47 }
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
48 emit_frame244(amr_bits + 1);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
49 exit(0);
75ba83624a29 readone-amr program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
50 }