Changeset 3319:a8494d9b89aa in roaraudio for include/libroardsp/filter.h
- Timestamp:
- 02/03/10 15:48:21 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 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
Note: See TracChangeset
for help on using the changeset viewer.