Changeset 3005:8a2821b526bb in roaraudio
- Timestamp:
- 10/27/09 18:15:30 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroardsp/filter_speex_prep.c
r3003 r3005 29 29 #if defined(ROAR_HAVE_LIBSPEEX) && !defined(ROAR_HAVE_LIBSPEEXDSP) 30 30 #define _SPEEX_API_OLD 31 #define _SPEEX_INT int 31 32 #elif defined(ROAR_HAVE_LIBSPEEX) && defined(ROAR_HAVE_LIBSPEEXDSP) 32 33 #define _SPEEX_API_NEW 34 #define _SPEEX_INT spx_int32_t 33 35 #endif 36 37 #define _on 1 38 #define _off 2 39 40 #define _CBVM(opt) (ROARDSP_SPEEX_PREP_CBV((opt), ROARDSP_SPEEX_PREP_MASK)) 34 41 35 42 // TODO: check parameters we allready know: … … 86 93 int roardsp_speex_prep_ctl (struct roardsp_filter * filter, int cmd, void * data) { 87 94 struct roardsp_speex_prep * self = filter->inst; 88 size_t * val; 95 union { 96 size_t size; 97 int32_t i32; 98 } * val = data; 99 _SPEEX_INT si; 89 100 90 101 switch (cmd) { 102 case ROARDSP_FCTL_MODE: 103 if ( self->preprocess == NULL ) 104 return -1; 105 106 if ( val->i32 & _CBVM(ROARDSP_SPEEX_PREP_DENOISE) ) { 107 val->i32 -= val->i32 & _CBVM(ROARDSP_SPEEX_PREP_DENOISE); 108 switch (ROARDSP_SPEEX_PREP_CTB(ROARDSP_SPEEX_PREP_DENOISE, val->i32)) { 109 case ROARDSP_SPEEX_PREP_ON: si = _on; break; 110 case ROARDSP_SPEEX_PREP_OFF: si = _off; break; 111 default: return -1; 112 } 113 speex_preprocess_ctl(self->preprocess, SPEEX_PREPROCESS_SET_DENOISE, &si); 114 } 115 116 if ( val->i32 & _CBVM(ROARDSP_SPEEX_PREP_AGC) ) { 117 val->i32 -= val->i32 & _CBVM(ROARDSP_SPEEX_PREP_AGC); 118 switch (ROARDSP_SPEEX_PREP_CTB(ROARDSP_SPEEX_PREP_DENOISE, val->i32)) { 119 case ROARDSP_SPEEX_PREP_ON: si = _on; break; 120 case ROARDSP_SPEEX_PREP_OFF: si = _off; break; 121 default: return -1; 122 } 123 speex_preprocess_ctl(self->preprocess, SPEEX_PREPROCESS_SET_AGC, &si); 124 } 125 126 if ( val->i32 & _CBVM(ROARDSP_SPEEX_PREP_VAD) ) { 127 val->i32 -= val->i32 & _CBVM(ROARDSP_SPEEX_PREP_VAD); 128 switch (ROARDSP_SPEEX_PREP_CTB(ROARDSP_SPEEX_PREP_DENOISE, val->i32)) { 129 case ROARDSP_SPEEX_PREP_ON: si = _on; break; 130 case ROARDSP_SPEEX_PREP_OFF: si = _off; break; 131 default: return -1; 132 } 133 speex_preprocess_ctl(self->preprocess, SPEEX_PREPROCESS_SET_VAD, &si); 134 } 135 136 // any other options left? error: 137 if ( val->i32 ) 138 return -1; 139 140 return 0; 141 break; 91 142 case ROARDSP_FCTL_PACKET_SIZE: 92 val = data; 93 self->frame_size = *val; 143 self->frame_size = val->size; 94 144 95 145 self->preprocess = speex_preprocess_state_init(self->frame_size, filter->rate);
Note: See TracChangeset
for help on using the changeset viewer.