FreeCalypso > hg > gsm-codec-lib
annotate amrefr/encode-r.c @ 445:30cff6b60890
amrtest: implement twamr-encode-r
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Fri, 10 May 2024 00:07:07 +0000 |
| parents | 1bf1bbcef763 |
| children | 0c4e1bc06740 |
| rev | line source |
|---|---|
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
2 * amrefr-encode-r is a counterpart to gsmefr-encode-r, implementing |
|
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
3 * "alternative EFR" by way of libtwamr. Unlike standard gsmefr-encode-r, |
|
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
4 * there is no -d option and no DTX support in this version. |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 */ |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdio.h> |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdint.h> |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <stdlib.h> |
|
121
b51295fcbbae
gsmefr-encode utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
14
diff
changeset
|
10 #include <string.h> |
|
b51295fcbbae
gsmefr-encode utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
14
diff
changeset
|
11 #include <strings.h> |
|
b51295fcbbae
gsmefr-encode utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
14
diff
changeset
|
12 #include "../libgsmefr/gsm_efr.h" |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
13 #include "../libtwamr/tw_amr.h" |
|
156
3f3674c27840
gsmefr-encode-r utility put together
Mychaela Falconia <falcon@freecalypso.org>
parents:
121
diff
changeset
|
14 #include "../libtest/roberead.h" |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 main(argc, argv) |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 char **argv; |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 { |
|
156
3f3674c27840
gsmefr-encode-r utility put together
Mychaela Falconia <falcon@freecalypso.org>
parents:
121
diff
changeset
|
19 FILE *inf, *binf; |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
20 struct amr_encoder_state *state; |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 int16_t pcm[160]; |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
22 struct amr_param_frame amr_frame; |
|
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
23 uint8_t efr_frame[EFR_RTP_FRAME_LEN]; |
|
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
24 int rc; |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
26 if (argc != 3) { |
|
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
27 fprintf(stderr, "usage: %s input.robe output.gsmx\n", argv[0]); |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 exit(1); |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 } |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
30 inf = fopen(argv[1], "r"); |
|
156
3f3674c27840
gsmefr-encode-r utility put together
Mychaela Falconia <falcon@freecalypso.org>
parents:
121
diff
changeset
|
31 if (!inf) { |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
32 perror(argv[1]); |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 exit(1); |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 } |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
35 binf = fopen(argv[2], "w"); |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 if (!binf) { |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
37 perror(argv[2]); |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 exit(1); |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 } |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
40 state = amr_encoder_create(0, 0); |
|
121
b51295fcbbae
gsmefr-encode utility written
Mychaela Falconia <falcon@freecalypso.org>
parents:
14
diff
changeset
|
41 if (!state) { |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
42 perror("amr_encoder_create()"); |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 exit(1); |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 } |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 for (;;) { |
|
156
3f3674c27840
gsmefr-encode-r utility put together
Mychaela Falconia <falcon@freecalypso.org>
parents:
121
diff
changeset
|
46 rc = robe_get_pcm_block(inf, pcm); |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 if (!rc) |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 break; |
|
438
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
49 amr_encode_frame(state, MR122, pcm, &amr_frame); |
|
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
50 amr_dhf_subst_efr(&amr_frame); |
|
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
51 EFR_params2frame(amr_frame.param, efr_frame); |
|
1bf1bbcef763
amrefr: implement amrefr-encode-r utility
Mychaela Falconia <falcon@freecalypso.org>
parents:
294
diff
changeset
|
52 fwrite(efr_frame, 1, sizeof efr_frame, binf); |
|
14
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 } |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 fclose(binf); |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 exit(0); |
|
69ed7af28473
gsmfr-encode test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 } |
