comparison frtest/decode.c @ 284:8d3cfa65a6c2

gsmfr-decode: convert to libgsmfr2
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 14 Apr 2024 05:59:15 +0000
parents b9a842775f40
children
comparison
equal deleted inserted replaced
283:25649b3a83e9 284:8d3cfa65a6c2
3 */ 3 */
4 4
5 #include <stdio.h> 5 #include <stdio.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 #include <stdlib.h> 7 #include <stdlib.h>
8 #include <gsm.h> 8 #include "../libgsmfr2/tw_gsmfr.h"
9 #include "../libgsmfrp/gsm_fr_preproc.h"
10 #include "../libtest/binreader.h" 9 #include "../libtest/binreader.h"
11 #include "../libtest/wavwriter.h" 10 #include "../libtest/wavwriter.h"
12 #include "../libtest/pcmwrite.h" 11 #include "../libtest/pcmwrite.h"
13 12
14 main(argc, argv) 13 main(argc, argv)
15 char **argv; 14 char **argv;
16 { 15 {
17 FILE *binf; 16 FILE *binf;
18 void *wav; 17 void *wav;
19 gsm dec_state; 18 struct gsmfr_fulldec_state *fd_state;
20 struct gsmfr_preproc_state *pp_state;
21 uint8_t frame[BINFILE_MAX_FRAME]; 19 uint8_t frame[BINFILE_MAX_FRAME];
22 int16_t pcm[160]; 20 int16_t pcm[160];
23 int rc, bfi, taf; 21 int rc, bfi, taf;
24 22
25 if (argc != 3) { 23 if (argc != 3) {
34 wav = wav_write_open(argv[2], 8000, 16, 1); 32 wav = wav_write_open(argv[2], 8000, 16, 1);
35 if (!wav) { 33 if (!wav) {
36 perror(argv[2]); 34 perror(argv[2]);
37 exit(1); 35 exit(1);
38 } 36 }
39 dec_state = gsm_create(); 37 fd_state = gsmfr_fulldec_create();
40 if (!dec_state) { 38 if (!fd_state) {
41 fprintf(stderr, "gsm_create() failed!\n"); 39 fprintf(stderr, "gsmfr_fulldec_create() failed!\n");
42 exit(1);
43 }
44 pp_state = gsmfr_preproc_create();
45 if (!pp_state) {
46 fprintf(stderr, "gsmfr_preproc_create() failed!\n");
47 exit(1); 40 exit(1);
48 } 41 }
49 for (;;) { 42 for (;;) {
50 rc = binfile_read_frame(binf, frame); 43 rc = binfile_read_frame(binf, frame);
51 if (rc < 0) { 44 if (rc < 0) {
63 fprintf(stderr, "error: %s is not in FR codec format\n", 56 fprintf(stderr, "error: %s is not in FR codec format\n",
64 argv[1]); 57 argv[1]);
65 exit(1); 58 exit(1);
66 } 59 }
67 if (bfi) 60 if (bfi)
68 gsmfr_preproc_bfi(pp_state, taf, frame); 61 gsmfr_fulldec_bfi(fd_state, taf, pcm);
69 else 62 else
70 gsmfr_preproc_good_frame(pp_state, frame); 63 gsmfr_fulldec_good_frame(fd_state, frame, pcm);
71 gsm_decode(dec_state, frame, pcm);
72 write_pcm_to_wav(wav, pcm); 64 write_pcm_to_wav(wav, pcm);
73 } 65 }
74 wav_write_close(wav); 66 wav_write_close(wav);
75 exit(0); 67 exit(0);
76 } 68 }