00001
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef SPEEX_H
00037 #define SPEEX_H
00038
00043 #include "speex/speex_bits.h"
00044 #include "speex/speex_types.h"
00045
00046 #ifdef __cplusplus
00047 extern "C" {
00048 #endif
00049
00050
00051
00053 #define SPEEX_SET_ENH 0
00054
00055 #define SPEEX_GET_ENH 1
00056
00057
00059 #define SPEEX_GET_FRAME_SIZE 3
00060
00062 #define SPEEX_SET_QUALITY 4
00063
00064
00065
00067 #define SPEEX_SET_MODE 6
00068
00069 #define SPEEX_GET_MODE 7
00070
00072 #define SPEEX_SET_LOW_MODE 8
00073
00074 #define SPEEX_GET_LOW_MODE 9
00075
00077 #define SPEEX_SET_HIGH_MODE 10
00078
00079 #define SPEEX_GET_HIGH_MODE 11
00080
00082 #define SPEEX_SET_VBR 12
00083
00084 #define SPEEX_GET_VBR 13
00085
00087 #define SPEEX_SET_VBR_QUALITY 14
00088
00089 #define SPEEX_GET_VBR_QUALITY 15
00090
00092 #define SPEEX_SET_COMPLEXITY 16
00093
00094 #define SPEEX_GET_COMPLEXITY 17
00095
00097 #define SPEEX_SET_BITRATE 18
00098
00099 #define SPEEX_GET_BITRATE 19
00100
00102 #define SPEEX_SET_HANDLER 20
00103
00105 #define SPEEX_SET_USER_HANDLER 22
00106
00108 #define SPEEX_SET_SAMPLING_RATE 24
00109
00110 #define SPEEX_GET_SAMPLING_RATE 25
00111
00113 #define SPEEX_RESET_STATE 26
00114
00116 #define SPEEX_GET_RELATIVE_QUALITY 29
00117
00119 #define SPEEX_SET_VAD 30
00120
00122 #define SPEEX_GET_VAD 31
00123
00125 #define SPEEX_SET_ABR 32
00126
00127 #define SPEEX_GET_ABR 33
00128
00130 #define SPEEX_SET_DTX 34
00131
00132 #define SPEEX_GET_DTX 35
00133
00135 #define SPEEX_SET_SUBMODE_ENCODING 36
00136
00137 #define SPEEX_GET_SUBMODE_ENCODING 37
00138
00139
00141 #define SPEEX_GET_LOOKAHEAD 39
00142
00144 #define SPEEX_SET_PLC_TUNING 40
00145
00146 #define SPEEX_GET_PLC_TUNING 41
00147
00149 #define SPEEX_SET_VBR_MAX_BITRATE 42
00150
00151 #define SPEEX_GET_VBR_MAX_BITRATE 43
00152
00154 #define SPEEX_SET_HIGHPASS 44
00155
00156 #define SPEEX_GET_HIGHPASS 45
00157
00160 #define SPEEX_GET_ACTIVITY 47
00161
00162
00163
00165 #define SPEEX_SET_PF 0
00166
00167 #define SPEEX_GET_PF 1
00168
00169
00170
00171
00172
00174 #define SPEEX_MODE_FRAME_SIZE 0
00175
00177 #define SPEEX_SUBMODE_BITS_PER_FRAME 1
00178
00179
00180
00182 #define SPEEX_LIB_GET_MAJOR_VERSION 1
00183
00184 #define SPEEX_LIB_GET_MINOR_VERSION 3
00185
00186 #define SPEEX_LIB_GET_MICRO_VERSION 5
00187
00188 #define SPEEX_LIB_GET_EXTRA_VERSION 7
00189
00190 #define SPEEX_LIB_GET_VERSION_STRING 9
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00204 #define SPEEX_NB_MODES 3
00205
00207 #define SPEEX_MODEID_NB 0
00208
00210 #define SPEEX_MODEID_WB 1
00211
00213 #define SPEEX_MODEID_UWB 2
00214
00215 #ifdef EPIC_48K
00216
00217 #define SPEEX_MODEID_NB_48K 1000
00218 #endif
00219
00220 struct SpeexMode;
00221
00222
00223
00224
00226 typedef void *(*encoder_init_func)(const struct SpeexMode *mode);
00227
00229 typedef void (*encoder_destroy_func)(void *st);
00230
00232 typedef int (*encode_func)(void *state, void *in, SpeexBits *bits);
00233
00235 typedef int (*encoder_ctl_func)(void *state, int request, void *ptr);
00236
00238 typedef void *(*decoder_init_func)(const struct SpeexMode *mode);
00239
00241 typedef void (*decoder_destroy_func)(void *st);
00242
00244 typedef int (*decode_func)(void *state, SpeexBits *bits, void *out);
00245
00247 typedef int (*decoder_ctl_func)(void *state, int request, void *ptr);
00248
00249
00251 typedef int (*mode_query_func)(const void *mode, int request, void *ptr);
00252
00254 typedef struct SpeexMode {
00256 const void *mode;
00257
00259 mode_query_func query;
00260
00262 const char *modeName;
00263
00265 int modeID;
00266
00269 int bitstream_version;
00270
00272 encoder_init_func enc_init;
00273
00275 encoder_destroy_func enc_destroy;
00276
00278 encode_func enc;
00279
00281 decoder_init_func dec_init;
00282
00284 decoder_destroy_func dec_destroy;
00285
00287 decode_func dec;
00288
00290 encoder_ctl_func enc_ctl;
00291
00293 decoder_ctl_func dec_ctl;
00294
00295 } SpeexMode;
00296
00306 void *speex_encoder_init(const SpeexMode *mode);
00307
00310 void speex_encoder_destroy(void *state);
00311
00321 int speex_encode(void *state, float *in, SpeexBits *bits);
00322
00330 int speex_encode_int(void *state, spx_int16_t *in, SpeexBits *bits);
00331
00339 int speex_encoder_ctl(void *state, int request, void *ptr);
00340
00341
00350 void *speex_decoder_init(const SpeexMode *mode);
00351
00356 void speex_decoder_destroy(void *state);
00357
00366 int speex_decode(void *state, SpeexBits *bits, float *out);
00367
00376 int speex_decode_int(void *state, SpeexBits *bits, spx_int16_t *out);
00377
00385 int speex_decoder_ctl(void *state, int request, void *ptr);
00386
00387
00395 int speex_mode_query(const SpeexMode *mode, int request, void *ptr);
00396
00402 int speex_lib_ctl(int request, void *ptr);
00403
00405 extern const SpeexMode speex_nb_mode;
00406
00408 extern const SpeexMode speex_wb_mode;
00409
00411 extern const SpeexMode speex_uwb_mode;
00412
00413 #ifdef EPIC_48K
00414
00415 extern const SpeexMode speex_nb_48k_mode;
00416 #endif
00417
00419 extern const SpeexMode * const speex_mode_list[SPEEX_NB_MODES];
00420
00422 const SpeexMode * speex_lib_get_mode (int mode);
00423
00424 #ifdef __cplusplus
00425 }
00426 #endif
00427
00429 #endif