FreeCalypso > hg > gsm-codec-lib
annotate frtest/encode-r.c @ 514:67b13a6a63c9
libgsmhr1: implement validation for *.dec frames
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sun, 25 Aug 2024 19:14:40 +0000 | 
| parents | 962861d46ccf | 
| children | 
| rev | line source | 
|---|---|
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /* | 
| 155 
9814041e8096
gsmfr-encode-r utility put together
 Mychaela Falconia <falcon@freecalypso.org> parents: 
14diff
changeset | 2 * gsmfr-encode-r is just like gsmfr-encode, but reads the source | 
| 
9814041e8096
gsmfr-encode-r utility put together
 Mychaela Falconia <falcon@freecalypso.org> parents: 
14diff
changeset | 3 * linear PCM data to be encoded from a raw BE file ("robe") | 
| 
9814041e8096
gsmfr-encode-r utility put together
 Mychaela Falconia <falcon@freecalypso.org> parents: 
14diff
changeset | 4 * instead of WAV. | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 5 * | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 6 * Addendum: gsmfr-encode-r -h flag enables the later-spec feature | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 7 * of encoder homing. This option is not replicated in WAV-reading | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 8 * gsmfr-encode because it is deemed to be of no use with WAV. | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 */ | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 #include <stdio.h> | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 #include <stdint.h> | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 #include <stdlib.h> | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 14 #include <string.h> | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 15 #include <strings.h> | 
| 288 
e0b46ac2c326
gsmfr-encode-r: convert to libgsmfr2
 Mychaela Falconia <falcon@freecalypso.org> parents: 
155diff
changeset | 16 #include "../libgsmfr2/tw_gsmfr.h" | 
| 155 
9814041e8096
gsmfr-encode-r utility put together
 Mychaela Falconia <falcon@freecalypso.org> parents: 
14diff
changeset | 17 #include "../libtest/roberead.h" | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 main(argc, argv) | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 char **argv; | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 { | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 22 char *infname, *outfname; | 
| 155 
9814041e8096
gsmfr-encode-r utility put together
 Mychaela Falconia <falcon@freecalypso.org> parents: 
14diff
changeset | 23 FILE *inf, *binf; | 
| 288 
e0b46ac2c326
gsmfr-encode-r: convert to libgsmfr2
 Mychaela Falconia <falcon@freecalypso.org> parents: 
155diff
changeset | 24 struct gsmfr_0610_state *enc_state; | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 int16_t pcm[160]; | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 uint8_t frame[33]; | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 27 int homing, rc; | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 29 if (argc == 3 && argv[1][0] != '-') { | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 30 homing = 0; | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 31 infname = argv[1]; | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 32 outfname = argv[2]; | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 33 } else if (argc == 4 && !strcmp(argv[1], "-h")) { | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 34 homing = 1; | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 35 infname = argv[2]; | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 36 outfname = argv[3]; | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 37 } else { | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 38 fprintf(stderr, "usage: %s [-h] input.robe output.gsm\n", | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 39 argv[0]); | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 exit(1); | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 } | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 42 inf = fopen(infname, "r"); | 
| 155 
9814041e8096
gsmfr-encode-r utility put together
 Mychaela Falconia <falcon@freecalypso.org> parents: 
14diff
changeset | 43 if (!inf) { | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 44 perror(infname); | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 exit(1); | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 } | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 47 binf = fopen(outfname, "w"); | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 if (!binf) { | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 49 perror(outfname); | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 exit(1); | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 } | 
| 288 
e0b46ac2c326
gsmfr-encode-r: convert to libgsmfr2
 Mychaela Falconia <falcon@freecalypso.org> parents: 
155diff
changeset | 52 enc_state = gsmfr_0610_create(); | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 if (!enc_state) { | 
| 288 
e0b46ac2c326
gsmfr-encode-r: convert to libgsmfr2
 Mychaela Falconia <falcon@freecalypso.org> parents: 
155diff
changeset | 54 fprintf(stderr, "gsmfr_0610_create() failed!\n"); | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 exit(1); | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 } | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 for (;;) { | 
| 155 
9814041e8096
gsmfr-encode-r utility put together
 Mychaela Falconia <falcon@freecalypso.org> parents: 
14diff
changeset | 58 rc = robe_get_pcm_block(inf, pcm); | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 if (!rc) | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 break; | 
| 288 
e0b46ac2c326
gsmfr-encode-r: convert to libgsmfr2
 Mychaela Falconia <falcon@freecalypso.org> parents: 
155diff
changeset | 61 gsmfr_0610_encode_frame(enc_state, pcm, frame); | 
| 295 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 62 if (homing) | 
| 
962861d46ccf
gsmfr-encode-r: add -h option for encoder homing
 Mychaela Falconia <falcon@freecalypso.org> parents: 
288diff
changeset | 63 gsmfr_0610_encoder_homing(enc_state, pcm); | 
| 14 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 fwrite(frame, 1, sizeof frame, binf); | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 } | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 fclose(binf); | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 exit(0); | 
| 
69ed7af28473
gsmfr-encode test program written
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 } | 
