Changeset 3319:a8494d9b89aa in roaraudio
- Timestamp:
- 02/03/10 15:48:21 (14 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- include/libroardsp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
include/libroardsp/filter.h
r3318 r3319 38 38 #include "libroardsp.h" 39 39 40 #define ROARDSP_FILTER_NONE 0 41 #define ROARDSP_FILTER_AMP 1 42 #define ROARDSP_FILTER_LOWP 2 43 #define ROARDSP_FILTER_HIGHP 3 44 #define ROARDSP_FILTER_MODULATE 4 45 #define ROARDSP_FILTER_QUANTIFY 5 46 #define ROARDSP_FILTER_CLIP 6 47 #define ROARDSP_FILTER_ADD 7 48 #define ROARDSP_FILTER_DOWNMIX 8 49 #define ROARDSP_FILTER_DCBLOCK 9 50 #define ROARDSP_FILTER_SWAP 10 51 #define ROARDSP_FILTER_SPEEX_PREP 11 52 #define ROARDSP_FILTER_AGC 12 53 54 // filter CTLs: 55 56 #define ROARDSP_FCTL_FREQ 1 /* float */ 57 #define ROARDSP_FCTL_TIME 2 58 #define ROARDSP_FCTL_MUL 3 /* int32_t */ 59 #define ROARDSP_FCTL_DIV 4 /* int32_t */ 60 #define ROARDSP_FCTL_N 5 /* int32_t */ 61 #define ROARDSP_FCTL_LIMIT 6 /* int32_t */ 62 #define ROARDSP_FCTL_PHASE 7 63 #define ROARDSP_FCTL_Q 8 /* int32_t */ 64 #define ROARDSP_FCTL_MODE 9 /* int32_t */ 65 #define ROARDSP_FCTL_PACKET_SIZE 10 /* size_t */ 66 67 // consts for filter flags: 68 #define ROARDSP_FFLAG_NONE 0x0000 69 #define ROARDSP_FFLAG_FREE 0x0001 70 71 // consts for filter(chain) reset: 72 #define ROARDSP_RESET_NONE 0 73 #define ROARDSP_RESET_FULL 1 74 #define ROARDSP_RESET_STATE 2 75 76 // filter specific constants: 77 #define ROARDSP_DOWNMIX_LEFT 1 78 #define ROARDSP_DOWNMIX_RIGHT 2 79 #define ROARDSP_DOWNMIX_ARITHMETIC 3 80 #define ROARDSP_DOWNMIX_RMS 4 81 82 #define ROARDSP_DCBLOCK_NUMBLOCKS 100 83 84 85 #define ROARDSP_SPEEX_PREP_ON 0x0001 86 #define ROARDSP_SPEEX_PREP_OFF 0x0002 87 #define ROARDSP_SPEEX_PREP_MASK (ROARDSP_SPEEX_PREP_ON|ROARDSP_SPEEX_PREP_OFF) 88 89 // Config Bit Vector 90 #define ROARDSP_SPEEX_PREP_CBV(opt,sw) ((sw)<<((opt)*2)) 91 #define ROARDSP_SPEEX_PREP_CTB(opt,val) (((val) & ROARDSP_SPEEX_PREP_CBV((opt),ROARDSP_SPEEX_PREP_MASK)) >> ((opt)*2)) 92 93 #define ROARDSP_SPEEX_PREP_DENOISE 0 94 #define ROARDSP_SPEEX_PREP_AGC 1 95 #define ROARDSP_SPEEX_PREP_VAD 2 96 97 #define ROARDSP_SPEEX_PREP_DENOISE_ON ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_DENOISE, ROARDSP_SPEEX_PREP_ON) 98 #define ROARDSP_SPEEX_PREP_DENOISE_OFF ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_DENOISE, ROARDSP_SPEEX_PREP_OFF) 99 #define ROARDSP_SPEEX_PREP_AGC_ON ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_AGC, ROARDSP_SPEEX_PREP_ON) 100 #define ROARDSP_SPEEX_PREP_AGC_OFF ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_AGC, ROARDSP_SPEEX_PREP_OFF) 101 #define ROARDSP_SPEEX_PREP_VAD_ON ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_VAD, ROARDSP_SPEEX_PREP_ON) 102 #define ROARDSP_SPEEX_PREP_VAD_OFF ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_VAD, ROARDSP_SPEEX_PREP_OFF) 103 104 105 // types: 106 107 struct roardsp_filter { 108 int channels; 109 int bits; 110 int rate; 111 void * inst; 112 uint_least16_t flags; 113 int (*calc )(struct roardsp_filter * filter, void * data, size_t samples); 114 int (*uninit)(struct roardsp_filter * filter); 115 int (*ctl )(struct roardsp_filter * filter, int cmd, void * data); 116 int (*reset )(struct roardsp_filter * filter, int what); 117 }; 118 119 #ifdef ROAR_HAVE_LIBM 120 struct roardsp_lowp { 121 uint32_t freq; // in mHz (0Hz..4MHz) 122 uint16_t a, b; 123 int32_t old[ROAR_MAX_CHANNELS]; 124 }; 125 126 struct roardsp_highp { 127 uint32_t freq; // in mHz (0Hz..4MHz) 128 int32_t a, b, c; 129 int32_t oldout[ROAR_MAX_CHANNELS]; 130 int32_t oldin[ROAR_MAX_CHANNELS]; 131 }; 132 #endif 133 134 struct roardsp_amp { 135 int32_t mul; 136 int32_t div; 137 }; 138 139 struct roardsp_dcblock { 140 int cur; 141 int32_t dc[ROARDSP_DCBLOCK_NUMBLOCKS]; 142 }; 143 144 struct roardsp_swap { 145 int map[ROAR_MAX_CHANNELS]; 146 }; 147 148 struct roardsp_agc { 149 struct roardsp_filter * amp; 150 uint32_t target_amp; 151 }; 152 153 struct roardsp_speex_prep { 154 #ifdef _SPEEX_TYPES_H 155 SpeexPreprocessState *preprocess; 156 int frame_size; 157 #else 158 char dummy[8]; 159 #endif 160 }; 161 162 163 // funcs: 164 int roardsp_filter_str2id(char * str); 165 char * roardsp_filter_id2str(int id); 166 int roardsp_filter_new (struct roardsp_filter ** filter, struct roar_stream * stream, int id); 167 #define roardsp_filter_free(x) roardsp_filter_uninit((x)) 168 int roardsp_filter_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 169 int roardsp_filter_uninit(struct roardsp_filter * filter); 170 int roardsp_filter_calc (struct roardsp_filter * filter, void * data, size_t len); 171 int roardsp_filter_ctl (struct roardsp_filter * filter, int cmd, void * data); 172 int roardsp_filter_reset (struct roardsp_filter * filter, int what); 173 174 175 // filter: 176 177 #ifdef ROAR_HAVE_LIBM 178 int roardsp_lowp_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 179 int roardsp_lowp_uninit(struct roardsp_filter * filter); 180 int roardsp_lowp_calc16(struct roardsp_filter * filter, void * data, size_t samples); 181 int roardsp_lowp_ctl (struct roardsp_filter * filter, int cmd, void * data); 182 int roardsp_lowp_reset (struct roardsp_filter * filter, int what); 183 184 int roardsp_highp_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 185 int roardsp_highp_uninit(struct roardsp_filter * filter); 186 int roardsp_highp_calc16(struct roardsp_filter * filter, void * data, size_t samples); 187 int roardsp_highp_ctl (struct roardsp_filter * filter, int cmd, void * data); 188 int roardsp_highp_reset (struct roardsp_filter * filter, int what); 189 #endif 190 191 int roardsp_amp_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 192 int roardsp_amp_uninit(struct roardsp_filter * filter); 193 int roardsp_amp_calc16(struct roardsp_filter * filter, void * data, size_t samples); 194 int roardsp_amp_calc8 (struct roardsp_filter * filter, void * data, size_t samples); 195 int roardsp_amp_ctl (struct roardsp_filter * filter, int cmd, void * data); 196 int roardsp_amp_reset (struct roardsp_filter * filter, int what); 197 198 int roardsp_add_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 199 int roardsp_add_calc16(struct roardsp_filter * filter, void * data, size_t samples); 200 int roardsp_add_reset (struct roardsp_filter * filter, int what); 201 202 int roardsp_quantify_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 203 int roardsp_quantify_uninit(struct roardsp_filter * filter); 204 int roardsp_quantify_calc16(struct roardsp_filter * filter, void * data, size_t samples); 205 int roardsp_quantify_ctl (struct roardsp_filter * filter, int cmd, void * data); 206 int roardsp_quantify_reset (struct roardsp_filter * filter, int what); 207 208 int roardsp_clip_calc16(struct roardsp_filter * filter, void * data, size_t samples); 209 int roardsp_clip_ctl (struct roardsp_filter * filter, int cmd, void * data); 210 int roardsp_clip_reset (struct roardsp_filter * filter, int what); 211 212 int roardsp_downmix_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 213 int roardsp_downmix_calc162(struct roardsp_filter * filter, void * data, size_t samples); 214 int roardsp_downmix_ctl (struct roardsp_filter * filter, int cmd, void * data); 215 int roardsp_downmix_reset (struct roardsp_filter * filter, int what); 216 217 int roardsp_dcblock_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 218 int roardsp_dcblock_uninit (struct roardsp_filter * filter); 219 int roardsp_dcblock_calc16 (struct roardsp_filter * filter, void * data, size_t samples); 220 int roardsp_dcblock_reset (struct roardsp_filter * filter, int what); 221 222 int roardsp_swap_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 223 int roardsp_swap_uninit (struct roardsp_filter * filter); 224 int roardsp_swap_calc162(struct roardsp_filter * filter, void * data, size_t samples); 225 int roardsp_swap_ctl (struct roardsp_filter * filter, int cmd, void * data); 226 int roardsp_swap_reset (struct roardsp_filter * filter, int what); 227 228 int roardsp_agc_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 229 int roardsp_agc_uninit (struct roardsp_filter * filter); 230 int roardsp_agc_ctl (struct roardsp_filter * filter, int cmd, void * data); 231 int roardsp_agc_reset (struct roardsp_filter * filter, int what); 232 233 #ifdef _SPEEX_TYPES_H 234 #define ROAR_HAVE_SPEEX_FILTER 235 int roardsp_speex_prep_init (struct roardsp_filter * filter, struct roar_stream * stream, int id); 236 int roardsp_speex_prep_uninit (struct roardsp_filter * filter); 237 int roardsp_speex_prep_calc161(struct roardsp_filter * filter, void * data, size_t samples); 238 int roardsp_speex_prep_ctl (struct roardsp_filter * filter, int cmd, void * data); 239 int roardsp_speex_prep_reset (struct roardsp_filter * filter, int what); 240 #endif 40 241 41 242 #endif -
include/libroardsp/libroardsp.h
r3318 r3319 69 69 #define ROARDSP_MAX_FILTERS_PER_CHAIN 8 70 70 71 #define ROARDSP_FILTER_NONE 072 #define ROARDSP_FILTER_AMP 173 #define ROARDSP_FILTER_LOWP 274 #define ROARDSP_FILTER_HIGHP 375 #define ROARDSP_FILTER_MODULATE 476 #define ROARDSP_FILTER_QUANTIFY 577 #define ROARDSP_FILTER_CLIP 678 #define ROARDSP_FILTER_ADD 779 #define ROARDSP_FILTER_DOWNMIX 880 #define ROARDSP_FILTER_DCBLOCK 981 #define ROARDSP_FILTER_SWAP 1082 #define ROARDSP_FILTER_SPEEX_PREP 1183 #define ROARDSP_FILTER_AGC 1284 85 // filter CTLs:86 87 #define ROARDSP_FCTL_FREQ 1 /* float */88 #define ROARDSP_FCTL_TIME 289 #define ROARDSP_FCTL_MUL 3 /* int32_t */90 #define ROARDSP_FCTL_DIV 4 /* int32_t */91 #define ROARDSP_FCTL_N 5 /* int32_t */92 #define ROARDSP_FCTL_LIMIT 6 /* int32_t */93 #define ROARDSP_FCTL_PHASE 794 #define ROARDSP_FCTL_Q 8 /* int32_t */95 #define ROARDSP_FCTL_MODE 9 /* int32_t */96 #define ROARDSP_FCTL_PACKET_SIZE 10 /* size_t */97 98 // consts for filter flags:99 #define ROARDSP_FFLAG_NONE 0x0000100 #define ROARDSP_FFLAG_FREE 0x0001101 102 // consts for filter(chain) reset:103 #define ROARDSP_RESET_NONE 0104 #define ROARDSP_RESET_FULL 1105 #define ROARDSP_RESET_STATE 2106 107 // filter specific constants:108 #define ROARDSP_DOWNMIX_LEFT 1109 #define ROARDSP_DOWNMIX_RIGHT 2110 #define ROARDSP_DOWNMIX_ARITHMETIC 3111 #define ROARDSP_DOWNMIX_RMS 4112 113 #define ROARDSP_DCBLOCK_NUMBLOCKS 100114 115 116 #define ROARDSP_SPEEX_PREP_ON 0x0001117 #define ROARDSP_SPEEX_PREP_OFF 0x0002118 #define ROARDSP_SPEEX_PREP_MASK (ROARDSP_SPEEX_PREP_ON|ROARDSP_SPEEX_PREP_OFF)119 120 // Config Bit Vector121 #define ROARDSP_SPEEX_PREP_CBV(opt,sw) ((sw)<<((opt)*2))122 #define ROARDSP_SPEEX_PREP_CTB(opt,val) (((val) & ROARDSP_SPEEX_PREP_CBV((opt),ROARDSP_SPEEX_PREP_MASK)) >> ((opt)*2))123 124 #define ROARDSP_SPEEX_PREP_DENOISE 0125 #define ROARDSP_SPEEX_PREP_AGC 1126 #define ROARDSP_SPEEX_PREP_VAD 2127 128 #define ROARDSP_SPEEX_PREP_DENOISE_ON ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_DENOISE, ROARDSP_SPEEX_PREP_ON)129 #define ROARDSP_SPEEX_PREP_DENOISE_OFF ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_DENOISE, ROARDSP_SPEEX_PREP_OFF)130 #define ROARDSP_SPEEX_PREP_AGC_ON ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_AGC, ROARDSP_SPEEX_PREP_ON)131 #define ROARDSP_SPEEX_PREP_AGC_OFF ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_AGC, ROARDSP_SPEEX_PREP_OFF)132 #define ROARDSP_SPEEX_PREP_VAD_ON ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_VAD, ROARDSP_SPEEX_PREP_ON)133 #define ROARDSP_SPEEX_PREP_VAD_OFF ROARDSP_SPEEX_PREP_CBV(ROARDSP_SPEEX_PREP_VAD, ROARDSP_SPEEX_PREP_OFF)134 135 136 71 // types: 137 138 struct roardsp_filter {139 int channels;140 int bits;141 int rate;142 void * inst;143 uint_least16_t flags;144 int (*calc )(struct roardsp_filter * filter, void * data, size_t samples);145 int (*uninit)(struct roardsp_filter * filter);146 int (*ctl )(struct roardsp_filter * filter, int cmd, void * data);147 int (*reset )(struct roardsp_filter * filter, int what);148 };149 72 150 73 struct roardsp_filterchain { … … 153 76 }; 154 77 155 #ifdef ROAR_HAVE_LIBM156 struct roardsp_lowp {157 uint32_t freq; // in mHz (0Hz..4MHz)158 uint16_t a, b;159 int32_t old[ROAR_MAX_CHANNELS];160 };161 162 struct roardsp_highp {163 uint32_t freq; // in mHz (0Hz..4MHz)164 int32_t a, b, c;165 int32_t oldout[ROAR_MAX_CHANNELS];166 int32_t oldin[ROAR_MAX_CHANNELS];167 };168 #endif169 170 struct roardsp_amp {171 int32_t mul;172 int32_t div;173 };174 175 struct roardsp_dcblock {176 int cur;177 int32_t dc[ROARDSP_DCBLOCK_NUMBLOCKS];178 };179 180 struct roardsp_swap {181 int map[ROAR_MAX_CHANNELS];182 };183 184 struct roardsp_agc {185 struct roardsp_filter * amp;186 uint32_t target_amp;187 };188 189 struct roardsp_speex_prep {190 #ifdef _SPEEX_TYPES_H191 SpeexPreprocessState *preprocess;192 int frame_size;193 #else194 char dummy[8];195 #endif196 };197 198 78 // funcs: 199 int roardsp_filter_str2id(char * str);200 char * roardsp_filter_id2str(int id);201 int roardsp_filter_new (struct roardsp_filter ** filter, struct roar_stream * stream, int id);202 #define roardsp_filter_free(x) roardsp_filter_uninit((x))203 int roardsp_filter_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);204 int roardsp_filter_uninit(struct roardsp_filter * filter);205 int roardsp_filter_calc (struct roardsp_filter * filter, void * data, size_t len);206 int roardsp_filter_ctl (struct roardsp_filter * filter, int cmd, void * data);207 int roardsp_filter_reset (struct roardsp_filter * filter, int what);208 209 79 int roardsp_fchain_init (struct roardsp_filterchain * chain); 210 80 int roardsp_fchain_uninit(struct roardsp_filterchain * chain); … … 213 83 int roardsp_fchain_reset (struct roardsp_filterchain * chain, int what); 214 84 int roardsp_fchain_num (struct roardsp_filterchain * chain); 215 216 // filter:217 218 #ifdef ROAR_HAVE_LIBM219 int roardsp_lowp_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);220 int roardsp_lowp_uninit(struct roardsp_filter * filter);221 int roardsp_lowp_calc16(struct roardsp_filter * filter, void * data, size_t samples);222 int roardsp_lowp_ctl (struct roardsp_filter * filter, int cmd, void * data);223 int roardsp_lowp_reset (struct roardsp_filter * filter, int what);224 225 int roardsp_highp_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);226 int roardsp_highp_uninit(struct roardsp_filter * filter);227 int roardsp_highp_calc16(struct roardsp_filter * filter, void * data, size_t samples);228 int roardsp_highp_ctl (struct roardsp_filter * filter, int cmd, void * data);229 int roardsp_highp_reset (struct roardsp_filter * filter, int what);230 #endif231 232 int roardsp_amp_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);233 int roardsp_amp_uninit(struct roardsp_filter * filter);234 int roardsp_amp_calc16(struct roardsp_filter * filter, void * data, size_t samples);235 int roardsp_amp_calc8 (struct roardsp_filter * filter, void * data, size_t samples);236 int roardsp_amp_ctl (struct roardsp_filter * filter, int cmd, void * data);237 int roardsp_amp_reset (struct roardsp_filter * filter, int what);238 239 int roardsp_add_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);240 int roardsp_add_calc16(struct roardsp_filter * filter, void * data, size_t samples);241 int roardsp_add_reset (struct roardsp_filter * filter, int what);242 243 int roardsp_quantify_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);244 int roardsp_quantify_uninit(struct roardsp_filter * filter);245 int roardsp_quantify_calc16(struct roardsp_filter * filter, void * data, size_t samples);246 int roardsp_quantify_ctl (struct roardsp_filter * filter, int cmd, void * data);247 int roardsp_quantify_reset (struct roardsp_filter * filter, int what);248 249 int roardsp_clip_calc16(struct roardsp_filter * filter, void * data, size_t samples);250 int roardsp_clip_ctl (struct roardsp_filter * filter, int cmd, void * data);251 int roardsp_clip_reset (struct roardsp_filter * filter, int what);252 253 int roardsp_downmix_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);254 int roardsp_downmix_calc162(struct roardsp_filter * filter, void * data, size_t samples);255 int roardsp_downmix_ctl (struct roardsp_filter * filter, int cmd, void * data);256 int roardsp_downmix_reset (struct roardsp_filter * filter, int what);257 258 int roardsp_dcblock_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);259 int roardsp_dcblock_uninit (struct roardsp_filter * filter);260 int roardsp_dcblock_calc16 (struct roardsp_filter * filter, void * data, size_t samples);261 int roardsp_dcblock_reset (struct roardsp_filter * filter, int what);262 263 int roardsp_swap_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);264 int roardsp_swap_uninit (struct roardsp_filter * filter);265 int roardsp_swap_calc162(struct roardsp_filter * filter, void * data, size_t samples);266 int roardsp_swap_ctl (struct roardsp_filter * filter, int cmd, void * data);267 int roardsp_swap_reset (struct roardsp_filter * filter, int what);268 269 int roardsp_agc_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);270 int roardsp_agc_uninit (struct roardsp_filter * filter);271 int roardsp_agc_ctl (struct roardsp_filter * filter, int cmd, void * data);272 int roardsp_agc_reset (struct roardsp_filter * filter, int what);273 274 #ifdef _SPEEX_TYPES_H275 #define ROAR_HAVE_SPEEX_FILTER276 int roardsp_speex_prep_init (struct roardsp_filter * filter, struct roar_stream * stream, int id);277 int roardsp_speex_prep_uninit (struct roardsp_filter * filter);278 int roardsp_speex_prep_calc161(struct roardsp_filter * filter, void * data, size_t samples);279 int roardsp_speex_prep_ctl (struct roardsp_filter * filter, int cmd, void * data);280 int roardsp_speex_prep_reset (struct roardsp_filter * filter, int what);281 #endif282 85 283 86 // codecs:
Note: See TracChangeset
for help on using the changeset viewer.