FreeCalypso > hg > gsmhr-codec-ref
annotate gsm_hr.c @ 3:a6db7d8d6df4
change compile-time quiet control to runtime,
and suppress all noisy output
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 15 Jun 2024 00:09:40 +0000 |
parents | 9008dbc8ca74 |
children |
rev | line source |
---|---|
0
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /************************************************************************** |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 * File Name: gsm_hr.c |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 * Purpose: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 * This file contains the main routine for the GSM Half Rate speech |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 * codec. The code for the speech coder, including the VAD, DTX, |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 * Comfort Noise, bad frame handling (error concealment), and codec |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 * homing functions is in the files listed below: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 * gsm_hr.c globdefs.c homing.c host.c |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 * mathdp31.c mathhalf.c sp_dec.c sp_enc.c |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 * sp_frm.c sp_rom.c sp_sfrm.c vad.c |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 * dtx.c err_conc.c |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 * This particular file only has the level 0, main(), and all level |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 * 1, main()'s daughter functions, in it. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 * Details on how to run gsm_hr are in the readme.txt file. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 * Below is a listing of all the functions appearing in the file. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 * The ordering is hierarchical. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 * main() "gsm_hr", main program. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 * encode() - encodes a speech file, outputs an encoded parameter file |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 * decode() - decodes a parameter file, outputs a decoded speech file |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 **************************************************************************/ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 | Include Files | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include <stdio.h> |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include <stdlib.h> |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include <string.h> |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include <ctype.h> |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 #include "gsm_hr.h" |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 #include "homing.h" |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 #include "host.h" |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #include "sp_dec.h" |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 #include "sp_enc.h" |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 #include "typedefs.h" |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 /**************************************************************************** |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 * PROGRAM NAME: gsm_hr |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 * PURPOSE: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 * gsm_hr - main program for the GSM Half-Rate speech coder. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 * Allows running one of the following operational modes: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 * 0. Encoder only with speech input / encoded parameter data output. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 * 1. Decoder only with speech parameter data input / speech output. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 * INPUT: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 * inputFileName 0. speech file in 8 kHz, pcm format. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 * 1. speech parameter file in decoder input format. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 * <number of frames> - number of frames to be processed (optional). |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 * <dtx|nodtx> - switch to enable/disable the DTX functions. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 * OUTPUT: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 * outputFileName 0. encoded paramter output file. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 * 1. synthesized speech file in 8 kHz, pcm format. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 * RETURN: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 * none |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 * REFERENCES: Sub-clause 4.0 of GSM Recomendation 06.20 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 * KEYWORDS: main, gsm_hr, speech codec, top level |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 ***************************************************************************/ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 int main(int argc, char *argv[]) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 | Local Constants | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 #define DEFAULT_NUMFRAMES 32766 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 | Automatic Variables | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 int iDoneFrm, |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 iMaxNumFrms, |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 option, |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 i; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 FILE *pfileInFile, |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 *pfileOutFile; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 |
3
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
103 int quiet = 0; |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
104 |
0
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 | Executable Code | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111 /* check command line arguments */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 /* ---------------------------- */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 iMaxNumFrms = DEFAULT_NUMFRAMES; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 giDTXon = 1; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 /* check command line arguments */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118 /* ---------------------------- */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 switch (argc) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 case 4: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 break; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 case 5: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 case 6: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 for (i = 4; i < argc; i++) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 if (!strcmp(argv[i], "dtx")) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 giDTXon = 1; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 else if (!strcmp(argv[i], "nodtx")) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 giDTXon = 0; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 else if ((iMaxNumFrms = atoi(argv[i])) <= 0) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 printf("invalid number of frames or wrong DTX switch, %s", argv[i]); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 exit(1); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 break; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 default: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 printf("\n\nUsage:\n\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 printf("gsm_hr option inputFileName outputFileName "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 printf("<number of frames> <dtx|nodtx>\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 printf(" or\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 printf("gsm_hr option inputFileName outputFileName "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 printf("<dtx|nodtx> <number of frames>\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 printf("\nOptions: "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 printf("enc "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 puts("inputFileName: speech --> outputFileName: encoder output"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 printf(" "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 printf("dec "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 puts("inputFileName: decoder input --> outputFileName: speech"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 printf("\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 exit(1); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 /* check encoding and decoding options */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 /* ----------------------------------- */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 if (!strcmp(argv[1], "enc")) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 option = 0; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 else if (!strcmp(argv[1], "dec")) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 option = 1; |
3
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
168 else if (!strcmp(argv[1], "enc-q")) |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
169 { |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
170 option = 0; |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
171 quiet = 1; |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
172 } |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
173 else if (!strcmp(argv[1], "dec-q")) |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
174 { |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
175 option = 1; |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
176 quiet = 1; |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
177 } |
0
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 else |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 printf("error in option selection\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 printf(" Your entry : %s \n", argv[1]); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 printf("\n\nUsage:\n\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 printf("gsm_hr option inputFileName outputFileName "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 printf("<number of frames> <dtx|nodtx>\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 printf(" or\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 printf("gsm_hr option inputFileName outputFileName "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 printf("<dtx|nodtx> <number of frames>\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 printf("\nOptions: "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 printf("enc "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 puts("inputFileName: speech --> outputFileName: encoder output"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 printf(" "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 printf("dec "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 puts("inputFileName: decoder input --> outputFileName: speech"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 printf("\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 exit(1); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 /* open the input and output files */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 /* ------------------------------- */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 #ifdef VAX |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 pfileInFile = fopen(argv[2], "rb", "mrs=2", "rfm=fix", "ctx=stm"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 pfileOutFile = fopen(argv[3], "wb", "mrs=2", "rfm=fix", "ctx=stm"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 #else |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 pfileInFile = fopen(argv[2], "rb"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 pfileOutFile = fopen(argv[3], "wb"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 #endif |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 if (pfileInFile == NULL) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212 printf("error: can not open file %s\n", argv[2]); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 exit(1); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 if (pfileOutFile == NULL) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 printf("error: can not open file %s\n", argv[3]); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 exit(1); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 |
3
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
221 if (!quiet) { |
0
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 puts("\n\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 puts(" ****************************************"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 puts(" * *"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 puts(" * GSM Half-Rate Speech Coder *"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 puts(" * *"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 puts(" * *"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228 printf(" * %s *\n", VERSION); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 printf(" * %s *\n", DATE); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230 puts(" * *"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 puts(" ****************************************"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 puts("\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 printf("option: "); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 switch (option) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 case 0: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 puts("enc (speech encoder)"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 break; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 case 1: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 puts("dec (speech decoder)"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 break; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 default: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 puts("invalid option"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 exit(1); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 if (giDTXon) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 printf("DTX mode: enabled\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 else |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 printf("DTX mode: disabled\n"); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 printf("input file: %s\n", argv[2]); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 printf("output file: %s\n\n", argv[3]); |
3
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
257 } |
0
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 switch (option) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 case 0: /* encode */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 /* start the encoder, VAD, and transmit DTX in the home state */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 /* ---------------------------------------------------------- */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 resetEnc(); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 /* encode: analyze 8 kHz speech and output encoded parameter file */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 /* --------------------------------------------------------------- */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 for (giFrmCnt = 1, iDoneFrm = 0; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 !iDoneFrm && giFrmCnt <= iMaxNumFrms; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 giFrmCnt++) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 |
3
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
276 if (!quiet) |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
277 printf("encoding frame %d \r", giFrmCnt); |
0
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 if (encode(pfileInFile, pfileOutFile)) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 iDoneFrm = 1; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 if (iDoneFrm) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 giFrmCnt--; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285 |
3
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
286 if (!quiet) |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
287 printf(" %d speech frames encoded\n", giFrmCnt - 1); |
0
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 break; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 case 1: /* decode */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 /* start the decoder and receive DTX in the home state */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293 /* --------------------------------------------------- */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 resetDec(); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 /* decode: synthesize speech */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 /* -------------------------- */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 for (giFrmCnt = 1, iDoneFrm = 0; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 !iDoneFrm && giFrmCnt <= iMaxNumFrms; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 giFrmCnt++) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304 |
3
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
305 if (!quiet) |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
306 printf("decoding frame %d \r", giFrmCnt); |
0
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 if (decode(pfileInFile, pfileOutFile)) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 iDoneFrm = 1; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 if (iDoneFrm) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 giFrmCnt--; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 |
3
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
315 if (!quiet) |
a6db7d8d6df4
change compile-time quiet control to runtime,
Mychaela Falconia <falcon@freecalypso.org>
parents:
0
diff
changeset
|
316 printf(" %d speech frames decoded\n", giFrmCnt - 1); |
0
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 break; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 fclose(pfileInFile); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 fclose(pfileOutFile); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323 return (0); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 /************************************************************************** |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 * FUNCTION NAME: decode |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330 * PURPOSE: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 * Reads in one frame of speech parameters and outputs one frame of |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 * synthesized speech. Resets the decoder to the home state if the |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 * Decoder Homing Frame pattern is detected. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 * INPUT: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 * pfileDec speech parameter input file. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 * OUTPUT: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 * pfileSpeechOut synthesized speech file |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 * RETURN: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 * 0 successfully synthesized a complete frame of speech |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 * 1 failed to synthesize a complete frame of speech |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 * REFERENCES: Sub-clause 4.2 of GSM Recomendation 06.20 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347 * KEYWORDS: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 * pfileDec, pfileSpeechOut |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349 **************************************************************************/ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 int decode(FILE *pfileDec, FILE *pfileSpeechOut) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 | Local Constants | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 /* These constants define the number of consecutive */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 /* parameters that decoderHomingFrameTest checks. */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 /* -------------------------------------------------*/ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 #define WHOLE_FRAME 18 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365 #define TO_FIRST_SUBFRAME 9 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369 | Static Variables | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372 static Shortword pswSpeechPara[22], |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 pswDecodedSpeechFrame[F_LEN]; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 static int reset_flag_decoder_old = 1; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 | Automatic Variables | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 int i, |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 reset_flag_decoder; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 | Executable Code | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 if (readDecfile(pfileDec, pswSpeechPara)) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392 return (1); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394 if(reset_flag_decoder_old) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 reset_flag_decoder=decoderHomingFrameTest(pswSpeechPara, |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 TO_FIRST_SUBFRAME); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 else |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 reset_flag_decoder=0; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 if (reset_flag_decoder && reset_flag_decoder_old) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 /* force the output to be the encoder homing frame pattern */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404 for (i = 0; i < F_LEN; i++) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 pswDecodedSpeechFrame[i] = EHF_MASK; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 else |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409 speechDecoder(pswSpeechPara, pswDecodedSpeechFrame); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 speechDecoderHostInterface(pswDecodedSpeechFrame, pfileSpeechOut); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 if(!reset_flag_decoder_old) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 reset_flag_decoder=decoderHomingFrameTest(pswSpeechPara, WHOLE_FRAME); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 if (reset_flag_decoder) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 resetDec(); /* bring the decoder and receive DTX |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 * to the home state */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 reset_flag_decoder_old = reset_flag_decoder; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 return (0); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 } |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 /************************************************************************** |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428 * FUNCTION NAME: encode |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 * PURPOSE: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 * Reads in one frame of speech samples and outputs one frame of |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432 * speech parameters. Resets the encoder to the home state if the |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 * Encoder Homing Frame pattern is detected. |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 * INPUT: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 * pfileSpeechIn speech file |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 * OUTPUT: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439 * pfileEnc speech, encoded paramater data |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 * RETURN: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 * 0 successfully wrote a complete frame of data |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443 * 1 failed to write a complete frame of data |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 * REFERENCES: Sub-clause 4.1 of GSM Recomendation 06.20 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 * |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 * KEYWORDS: |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 * pfileSpeechIn, pfileEnc |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449 **************************************************************************/ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451 int encode(FILE *pfileSpeechIn, FILE *pfileEnc) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452 { |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 | Static Variables | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 static Shortword pswSpeechPara[20]; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 static Shortword pswSpeechBuff[F_LEN]; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 | Automatic Variables | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 int iNumRead, |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468 reset_flag; |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470 /*_________________________________________________________________________ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471 | | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 | Executable Code | |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473 |_________________________________________________________________________| |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 iNumRead = hostEncoderInterface(pfileSpeechIn, F_LEN, &pswSpeechBuff[0]); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 if (iNumRead < F_LEN) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 return (1); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 reset_flag = encoderHomingFrameTest(&pswSpeechBuff[0]); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 speechEncoder(&pswSpeechBuff[0], pswSpeechPara); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 if (writeEncfile(pswSpeechPara, pfileEnc) != 20) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 return (1); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488 if (reset_flag) |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 resetEnc(); /* Bring the encoder, VAD, and DTX to |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 * the home state */ |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491 |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 return (0); |
9008dbc8ca74
import original C code from GSM 06.06
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 } |