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
00039 #include "speex_bits.h"
00040
00041 #ifdef __cplusplus
00042 extern "C" {
00043 #endif
00044
00045
00046
00048 #define SPEEX_SET_ENH 0
00049
00050 #define SPEEX_GET_ENH 1
00051
00052
00054 #define SPEEX_GET_FRAME_SIZE 3
00055
00057 #define SPEEX_SET_QUALITY 4
00058
00059 #define SPEEX_GET_QUALITY 5
00060
00062 #define SPEEX_SET_MODE 6
00063
00064 #define SPEEX_GET_MODE 7
00065
00067 #define SPEEX_SET_LOW_MODE 8
00068
00069 #define SPEEX_GET_LOW_MODE 9
00070
00072 #define SPEEX_SET_HIGH_MODE 10
00073
00074 #define SPEEX_GET_HIGH_MODE 11
00075
00077 #define SPEEX_SET_VBR 12
00078
00079 #define SPEEX_GET_VBR 13
00080
00082 #define SPEEX_SET_VBR_QUALITY 14
00083
00084 #define SPEEX_GET_VBR_QUALITY 15
00085
00087 #define SPEEX_SET_COMPLEXITY 16
00088
00089 #define SPEEX_GET_COMPLEXITY 17
00090
00092 #define SPEEX_SET_BITRATE 18
00093
00094 #define SPEEX_GET_BITRATE 19
00095
00097 #define SPEEX_SET_HANDLER 20
00098
00100 #define SPEEX_SET_USER_HANDLER 22
00101
00103 #define SPEEX_SET_SAMPLING_RATE 24
00104
00105 #define SPEEX_GET_SAMPLING_RATE 25
00106
00108 #define SPEEX_RESET_STATE 26
00109
00111 #define SPEEX_GET_RELATIVE_QUALITY 29
00112
00114 #define SPEEX_SET_VAD 30
00115
00117 #define SPEEX_GET_VAD 31
00118
00120 #define SPEEX_SET_ABR 32
00121
00122 #define SPEEX_GET_ABR 33
00123
00125 #define SPEEX_SET_DTX 34
00126
00127 #define SPEEX_GET_DTX 35
00128
00129
00130
00132 #define SPEEX_GET_PI_GAIN 100
00133
00134 #define SPEEX_GET_EXC 101
00135
00136 #define SPEEX_GET_INNOV 102
00137
00138 #define SPEEX_GET_DTX_STATUS 103
00139
00140
00141
00143 #define SPEEX_SET_PF 0
00144
00145 #define SPEEX_GET_PF 1
00146
00147
00148
00150 #define SPEEX_MODE_FRAME_SIZE 0
00151
00153 #define SPEEX_SUBMODE_BITS_PER_FRAME 1
00154
00155
00157 #define SPEEX_NB_MODES 3
00158
00159 struct SpeexMode;
00160
00161
00162
00163
00165 typedef void *(*encoder_init_func)(struct SpeexMode *mode);
00166
00168 typedef void (*encoder_destroy_func)(void *st);
00169
00171 typedef int (*encode_func)(void *state, float *in, SpeexBits *bits);
00172
00174 typedef int (*encoder_ctl_func)(void *state, int request, void *ptr);
00175
00177 typedef void *(*decoder_init_func)(struct SpeexMode *mode);
00178
00180 typedef void (*decoder_destroy_func)(void *st);
00181
00183 typedef int (*decode_func)(void *state, SpeexBits *bits, float *out);
00184
00186 typedef int (*decoder_ctl_func)(void *state, int request, void *ptr);
00187
00188
00190 typedef int (*mode_query_func)(void *mode, int request, void *ptr);
00191
00193 typedef struct SpeexMode {
00195 void *mode;
00196
00198 mode_query_func query;
00199
00201 char *modeName;
00202
00204 int modeID;
00205
00208 int bitstream_version;
00209
00211 encoder_init_func enc_init;
00212
00214 encoder_destroy_func enc_destroy;
00215
00217 encode_func enc;
00218
00220 decoder_init_func dec_init;
00221
00223 decoder_destroy_func dec_destroy;
00224
00226 decode_func dec;
00227
00229 encoder_ctl_func enc_ctl;
00230
00232 decoder_ctl_func dec_ctl;
00233
00234 } SpeexMode;
00235
00245 void *speex_encoder_init(SpeexMode *mode);
00246
00249 void speex_encoder_destroy(void *state);
00250
00257 int speex_encode(void *state, float *in, SpeexBits *bits);
00258
00266 int speex_encoder_ctl(void *state, int request, void *ptr);
00267
00268
00277 void *speex_decoder_init(SpeexMode *mode);
00278
00283 void speex_decoder_destroy(void *state);
00284
00293 int speex_decode(void *state, SpeexBits *bits, float *out);
00294
00302 int speex_decoder_ctl(void *state, int request, void *ptr);
00303
00304
00311 int speex_mode_query(SpeexMode *mode, int request, void *ptr);
00312
00313
00315 extern SpeexMode speex_nb_mode;
00316
00318 extern SpeexMode speex_wb_mode;
00319
00321 extern SpeexMode speex_uwb_mode;
00322
00324 extern SpeexMode *speex_mode_list[SPEEX_NB_MODES];
00325
00326 #ifdef __cplusplus
00327 }
00328 #endif
00329
00330
00331 #endif