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