FreeCalypso > hg > gsm-codec-lib
annotate hrutil/encode-r.c @ 629:32cc4b709e0e
hrutil: new program gsmhr-encode-r
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Thu, 12 Mar 2026 05:59:37 +0000 |
| parents | hrutil/encode.c@c53ce88d67a7 |
| children |
| rev | line source |
|---|---|
|
628
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
629
32cc4b709e0e
hrutil: new program gsmhr-encode-r
Mychaela Falconia <falcon@freecalypso.org>
parents:
628
diff
changeset
|
2 * This file is the main module for gsmhr-encode-r utility. This utility |
|
32cc4b709e0e
hrutil: new program gsmhr-encode-r
Mychaela Falconia <falcon@freecalypso.org>
parents:
628
diff
changeset
|
3 * is intended to serve as the "precision" speech encoder for GSM-HR, |
|
32cc4b709e0e
hrutil: new program gsmhr-encode-r
Mychaela Falconia <falcon@freecalypso.org>
parents:
628
diff
changeset
|
4 * reading speech input in robe format and emitting GSM-HR output in |
|
628
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * TW-TS-005 Annex B hex format. |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 */ |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdio.h> |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <stdint.h> |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include <stdlib.h> |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include <string.h> |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #include <strings.h> |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #include <unistd.h> |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #include "../libgsmhr1/tw_gsmhr.h" |
|
629
32cc4b709e0e
hrutil: new program gsmhr-encode-r
Mychaela Falconia <falcon@freecalypso.org>
parents:
628
diff
changeset
|
15 #include "../libtest/roberead.h" |
|
628
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 main(argc, argv) |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 char **argv; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 { |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 char *infname, *outfname; |
|
629
32cc4b709e0e
hrutil: new program gsmhr-encode-r
Mychaela Falconia <falcon@freecalypso.org>
parents:
628
diff
changeset
|
21 FILE *inf, *outf; |
|
628
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 struct gsmhr_encoder_state *state; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 int16_t pcm[160]; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 int16_t prm_out[GSMHR_NUM_PARAMS_ENC]; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 int opt, rc, dtx = 0, emit_5993 = 0; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 extern int optind; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 while ((opt = getopt(argc, argv, "dx")) != EOF) { |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 switch (opt) { |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 case 'd': |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 dtx = 1; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 continue; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 case 'x': |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 emit_5993 = 1; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 continue; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 default: |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 usage: |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 fprintf(stderr, |
|
629
32cc4b709e0e
hrutil: new program gsmhr-encode-r
Mychaela Falconia <falcon@freecalypso.org>
parents:
628
diff
changeset
|
39 "usage: %s [-d] [-x] input.robe output.hex\n", |
|
628
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 argv[0]); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 exit(1); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 } |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 } |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 if (argc != optind + 2) |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 goto usage; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 infname = argv[optind]; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 outfname = argv[optind+1]; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 |
|
629
32cc4b709e0e
hrutil: new program gsmhr-encode-r
Mychaela Falconia <falcon@freecalypso.org>
parents:
628
diff
changeset
|
49 inf = fopen(infname, "r"); |
|
32cc4b709e0e
hrutil: new program gsmhr-encode-r
Mychaela Falconia <falcon@freecalypso.org>
parents:
628
diff
changeset
|
50 if (!inf) { |
|
628
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 perror(infname); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 exit(1); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 } |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 outf = fopen(outfname, "w"); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 if (!outf) { |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 perror(outfname); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 exit(1); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 } |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 state = gsmhr_encoder_create(dtx); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 if (!state) { |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 perror("gsmhr_encoder_create()"); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 exit(1); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 } |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 for (;;) { |
|
629
32cc4b709e0e
hrutil: new program gsmhr-encode-r
Mychaela Falconia <falcon@freecalypso.org>
parents:
628
diff
changeset
|
65 rc = robe_get_pcm_block(inf, pcm); |
|
628
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 if (!rc) |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 break; |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 gsmhr_encode_frame(state, pcm, prm_out); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 emit_cod_to_tw5b(outf, prm_out, emit_5993); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 } |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 fclose(outf); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 exit(0); |
|
c53ce88d67a7
hrutil: new program gsmhr-encode
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 } |
