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 #ifndef MISC_H
00036 #define MISC_H
00037
00038 #ifndef VERSION
00039 #define VERSION "speex-1.1"
00040 #endif
00041
00042 #ifdef FIXED_POINT
00043
00044 typedef signed short spx_word16_t;
00045 typedef signed int spx_word32_t;
00046 typedef spx_word32_t spx_mem_t;
00047 typedef spx_word16_t spx_coef_t;
00048 typedef spx_word16_t spx_lsp_t;
00049 typedef spx_word32_t spx_sig_t;
00050
00051 #define LPC_SCALING 8192.
00052 #define SIG_SCALING 16384
00053 #define LSP_SCALING 8192.
00054
00055 #define LPC_SHIFT 13
00056 #define SIG_SHIFT 14
00057
00058 #define PSHR(a,shift) (((a)+(1<<((shift)-1))) >> (shift))
00059 #define SHR(a,shift) ((a) >> (shift))
00060 #define SHL(a,shift) ((a) << (shift))
00061
00062
00063 #define MULT16_16_16(a,b) (((short)(a))*(b))
00064
00065 #define MULT16_16(a,b) (((signed int)(a))*(b))
00066 #define MULT16_32_Q13(a,b) (((a)*((b)>>13)) + ((a)*((signed int)((b)&0x00001fff))>>13))
00067 #define MULT16_32_Q14(a,b) (((a)*((b)>>14)) + ((a)*((signed int)((b)&0x00003fff))>>14))
00068 #define MULT16_32_Q15(a,b) (((a)*((b)>>15)) + ((a)*((signed int)((b)&0x00007fff))>>15))
00069
00070 #define MULT16_16_Q13(a,b) (((signed int)(a))*(b)>>13)
00071 #define MULT16_16_Q14(a,b) (((signed int)(a))*(b)>>14)
00072 #define MULT16_16_Q15(a,b) (((signed int)(a))*(b)>>15)
00073
00074 #define MULT16_16_P14(a,b) ((8192+((signed int)(a))*(b))>>14)
00075
00076
00077 #define DIV32_16(a,b) (((signed int)(a))/(b))
00078
00079 #else
00080
00081 typedef float spx_mem_t;
00082 typedef float spx_coef_t;
00083 typedef float spx_lsp_t;
00084 typedef float spx_sig_t;
00085 typedef float spx_word16_t;
00086 typedef float spx_word32_t;
00087
00088 #define LPC_SCALING 1.
00089 #define SIG_SCALING 1.
00090 #define LSP_SCALING 1.
00091
00092 #define LPC_SHIFT 0
00093 #define SIG_SHIFT 0
00094
00095 #define PSHR(a,shift) (a)
00096 #define SHR(a,shift) (a)
00097 #define SHL(a,shift) (a)
00098 #define MULT16_16_16(a,b) ((a)*(b))
00099 #define MULT16_16(a,b) ((a)*(b))
00100
00101 #define MULT16_32_Q13(a,b) ((a)*(b))
00102 #define MULT16_32_Q14(a,b) ((a)*(b))
00103 #define MULT16_32_Q15(a,b) ((a)*(b))
00104
00105 #define MULT16_16_Q13(a,b) ((a)*(b))
00106 #define MULT16_16_Q14(a,b) ((a)*(b))
00107 #define MULT16_16_Q15(a,b) ((a)*(b))
00108
00109
00110 #endif
00111
00112 #ifndef RELEASE
00113 void print_vec(float *vec, int len, char *name);
00114 #endif
00115
00116 unsigned int be_int(unsigned int i);
00117 unsigned int le_int(unsigned int i);
00118
00119
00120 unsigned short be_short(unsigned short s);
00121 unsigned short le_short(unsigned short s);
00122
00124 void *speex_alloc (int size);
00125
00127 void *speex_realloc (void *ptr, int size);
00128
00130 void speex_free (void *ptr);
00131
00133 void *speex_move (void *dest, void *src, int n);
00134
00135 void speex_error(char *str);
00136
00137 void speex_warning(char *str);
00138
00139 void speex_warning_int(char *str, int val);
00140
00141 void speex_rand_vec(float std, spx_sig_t *data, int len);
00142
00143 float speex_rand(float std);
00144
00145 void _speex_putc(int ch, void *file);
00146
00147 #endif