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 SB_CELP_H
00037 #define SB_CELP_H
00038
00039 #include "modes.h"
00040 #include <speex/speex_bits.h>
00041 #include "nb_celp.h"
00042
00044 typedef struct SBEncState {
00045 const SpeexMode *mode;
00046 void *st_low;
00047 int full_frame_size;
00048 int frame_size;
00049 int subframeSize;
00050 int nbSubframes;
00051 int windowSize;
00052 int lpcSize;
00053 int bufSize;
00054 int first;
00055 float lag_factor;
00056 spx_word16_t lpc_floor;
00057 spx_word16_t gamma1;
00058 spx_word16_t gamma2;
00060 char *stack;
00061 spx_sig_t *x0d, *x1d;
00062 spx_sig_t *high;
00063 spx_sig_t *y0, *y1;
00064 spx_word16_t *h0_mem, *h1_mem;
00065 spx_word32_t *g0_mem, *g1_mem;
00067 spx_sig_t *excBuf;
00068 spx_sig_t *exc;
00069 spx_sig_t *res;
00070 spx_sig_t *sw;
00071 spx_sig_t *target;
00072 spx_word16_t *window;
00073 spx_word16_t *lagWindow;
00074 spx_word16_t *autocorr;
00075 spx_coef_t *lpc;
00076 spx_lsp_t *lsp;
00077 spx_lsp_t *qlsp;
00078 spx_lsp_t *old_lsp;
00079 spx_lsp_t *old_qlsp;
00080 spx_lsp_t *interp_lsp;
00081 spx_lsp_t *interp_qlsp;
00082 spx_coef_t *interp_lpc;
00083 spx_coef_t *interp_qlpc;
00084 spx_coef_t *bw_lpc1;
00085 spx_coef_t *bw_lpc2;
00087 spx_mem_t *mem_sp;
00088 spx_mem_t *mem_sp2;
00089 spx_mem_t *mem_sw;
00090 spx_word32_t *pi_gain;
00091
00092 float vbr_quality;
00093 int vbr_enabled;
00094 int abr_enabled;
00095 float abr_drift;
00096 float abr_drift2;
00097 float abr_count;
00098 int vad_enabled;
00099 float relative_quality;
00100
00101 int encode_submode;
00102 const SpeexSubmode * const *submodes;
00103 int submodeID;
00104 int submodeSelect;
00105 int complexity;
00106 int sampling_rate;
00107
00108 } SBEncState;
00109
00110
00112 typedef struct SBDecState {
00113 const SpeexMode *mode;
00114 void *st_low;
00115 int full_frame_size;
00116 int frame_size;
00117 int subframeSize;
00118 int nbSubframes;
00119 int lpcSize;
00120 int first;
00121 int sampling_rate;
00122 int lpc_enh_enabled;
00123
00124 char *stack;
00125 spx_sig_t *x0d, *x1d;
00126 spx_sig_t *high;
00127 spx_sig_t *y0, *y1;
00128 spx_word32_t *g0_mem, *g1_mem;
00129
00130 spx_sig_t *exc;
00131 spx_lsp_t *qlsp;
00132 spx_lsp_t *old_qlsp;
00133 spx_lsp_t *interp_qlsp;
00134 spx_coef_t *interp_qlpc;
00135
00136 spx_mem_t *mem_sp;
00137 spx_word32_t *pi_gain;
00138 spx_int32_t seed;
00139
00140 int encode_submode;
00141 const SpeexSubmode * const *submodes;
00142 int submodeID;
00143 } SBDecState;
00144
00145
00147 void *sb_encoder_init(const SpeexMode *m);
00148
00150 void sb_encoder_destroy(void *state);
00151
00153 int sb_encode(void *state, void *in, SpeexBits *bits);
00154
00155
00157 void *sb_decoder_init(const SpeexMode *m);
00158
00160 void sb_decoder_destroy(void *state);
00161
00163 int sb_decode(void *state, SpeexBits *bits, void *out);
00164
00165 int sb_encoder_ctl(void *state, int request, void *ptr);
00166
00167 int sb_decoder_ctl(void *state, int request, void *ptr);
00168
00169 #endif