FreeCalypso > hg > gsm-codec-lib
annotate hrutil/etsi-dec.c @ 606:bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Thu, 04 Dec 2025 21:36:51 +0000 |
| parents | efrtest/etsi-dec.c@9f354d2aea13 |
| children |
| rev | line source |
|---|---|
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
2 * gsmhr-etsi-dec is a test program for our GSM-HR decoder: it reads ETSI's |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * .dec format as input and writes raw 16-bit PCM (same as ETSI's *.out) |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * as output, allowing our decoder to be tested with ETSI's official test |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * sequences. |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 * |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
7 * ETSI input and output files are read and written in the local machine's |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
8 * native byte order by default; -b and -l options can be used to force |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
9 * BE or LE, respectively. |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 */ |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #include <stdio.h> |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 #include <stdint.h> |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 #include <stdlib.h> |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 #include <string.h> |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 #include <strings.h> |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
17 #include <unistd.h> |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
18 #include "../libgsmhr1/tw_gsmhr.h" |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
19 #include "../libtest/local_endian.h" |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 main(argc, argv) |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 char **argv; |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 { |
|
150
da17c7f02c6c
gsmefr-etsi-dec: add BE support
Mychaela Falconia <falcon@freecalypso.org>
parents:
145
diff
changeset
|
24 char *infname, *outfname; |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 FILE *inf, *outf; |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
26 int opt, rc, big_endian; |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
27 struct gsmhr_decoder_state *state; |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 unsigned frame_no; |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
29 int16_t params[GSMHR_NUM_PARAMS_DEC]; |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 int16_t pcm[160]; |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
31 extern int optind; |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
33 big_endian = is_native_big_endian(); |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
34 while ((opt = getopt(argc, argv, "bl")) != EOF) { |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
35 switch (opt) { |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
36 case 'b': |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
37 big_endian = 1; |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
38 continue; |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
39 case 'l': |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
40 big_endian = 0; |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
41 continue; |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
42 default: |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
43 usage: |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
44 fprintf(stderr, |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
45 "usage: %s [-b|-l] input.dec output.out\n", |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
46 argv[0]); |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
47 exit(1); |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
48 } |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 } |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
50 if (argc != optind + 2) |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
51 goto usage; |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
52 infname = argv[optind]; |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
53 outfname = argv[optind+1]; |
|
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
54 |
|
150
da17c7f02c6c
gsmefr-etsi-dec: add BE support
Mychaela Falconia <falcon@freecalypso.org>
parents:
145
diff
changeset
|
55 inf = fopen(infname, "r"); |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 if (!inf) { |
|
150
da17c7f02c6c
gsmefr-etsi-dec: add BE support
Mychaela Falconia <falcon@freecalypso.org>
parents:
145
diff
changeset
|
57 perror(infname); |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 exit(1); |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 } |
|
150
da17c7f02c6c
gsmefr-etsi-dec: add BE support
Mychaela Falconia <falcon@freecalypso.org>
parents:
145
diff
changeset
|
60 outf = fopen(outfname, "w"); |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 if (!outf) { |
|
150
da17c7f02c6c
gsmefr-etsi-dec: add BE support
Mychaela Falconia <falcon@freecalypso.org>
parents:
145
diff
changeset
|
62 perror(outfname); |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 exit(1); |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 } |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
65 state = gsmhr_decoder_create(); |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 if (!state) { |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
67 perror("gsmhr_decoder_create()"); |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 exit(1); |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 } |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 for (frame_no = 0; ; frame_no++) { |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
71 rc = read_dec_frame(inf, big_endian, params, infname, frame_no); |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 if (!rc) |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 break; |
|
606
bc57dcfa91d0
hrutil: new program gsmhr-etsi-dec
Mychaela Falconia <falcon@freecalypso.org>
parents:
435
diff
changeset
|
74 gsmhr_decode_frame(state, params, pcm); |
|
150
da17c7f02c6c
gsmefr-etsi-dec: add BE support
Mychaela Falconia <falcon@freecalypso.org>
parents:
145
diff
changeset
|
75 if (big_endian) |
|
da17c7f02c6c
gsmefr-etsi-dec: add BE support
Mychaela Falconia <falcon@freecalypso.org>
parents:
145
diff
changeset
|
76 write_pcm_be(outf, pcm); |
|
da17c7f02c6c
gsmefr-etsi-dec: add BE support
Mychaela Falconia <falcon@freecalypso.org>
parents:
145
diff
changeset
|
77 else |
|
da17c7f02c6c
gsmefr-etsi-dec: add BE support
Mychaela Falconia <falcon@freecalypso.org>
parents:
145
diff
changeset
|
78 write_pcm_le(outf, pcm); |
|
96
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 } |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 fclose(outf); |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 exit(0); |
|
9cf1355bc071
gsmefr-etsi-dec test program written
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 } |
