diff options
author | jm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800> | 2008-03-20 12:00:03 +0300 |
---|---|---|
committer | jm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800> | 2008-03-20 12:00:03 +0300 |
commit | f2c22840d435aa17acf0ddbb7c9931cf3b3d8dd2 (patch) | |
tree | 4dfb883fe34a7910b957e900a95bfa4e04739d2b | |
parent | 6fbeb99088c847561f4a684c8d5cae406bd132af (diff) |
Thorvald Natvig: The attached patch fixes an inconsistancy in my earlier patch.Speex-1.2beta3.1
Whereas the rest of the AGC ctls are in dB, GET_AGC_GAIN was linear. This patch
fixes that. It also changes the API for _GET and _SET_AGC_LEVEL to use an
int32 instead of a float, meaning we don't need to do a API change when we get
a fixed point AGC.
git-svn-id: http://svn.xiph.org/trunk/speex@14611 0101bb08-14d6-0310-b084-bc0e0c8e3800
-rw-r--r-- | libspeex/preprocess.c | 6 | ||||
-rw-r--r-- | libspeex/testdenoise.c | 4 |
2 files changed, 5 insertions, 5 deletions
diff --git a/libspeex/preprocess.c b/libspeex/preprocess.c index e01b247..49ba0d0 100644 --- a/libspeex/preprocess.c +++ b/libspeex/preprocess.c @@ -1067,14 +1067,14 @@ int speex_preprocess_ctl(SpeexPreprocessState *state, int request, void *ptr) break; #ifndef DISABLE_FLOAT_API case SPEEX_PREPROCESS_SET_AGC_LEVEL: - st->agc_level = (*(float*)ptr); + st->agc_level = (*(spx_int32_t*)ptr); if (st->agc_level<1) st->agc_level=1; if (st->agc_level>32768) st->agc_level=32768; break; case SPEEX_PREPROCESS_GET_AGC_LEVEL: - (*(float*)ptr) = st->agc_level; + (*(spx_int32_t*)ptr) = st->agc_level; break; #endif /* #ifndef DISABLE_FLOAT_API */ case SPEEX_PREPROCESS_SET_AGC_INCREMENT: @@ -1176,7 +1176,7 @@ int speex_preprocess_ctl(SpeexPreprocessState *state, int request, void *ptr) (*(spx_int32_t*)ptr) = pow(st->loudness, 1.0/LOUDNESS_EXP); break; case SPEEX_PREPROCESS_GET_AGC_GAIN: - (*(spx_int32_t*)ptr) = (spx_int32_t) (st->agc_gain * 100.f); + (*(spx_int32_t*)ptr) = floor(.5+8.6858*log(st->agc_gain)); break; #endif case SPEEX_PREPROCESS_GET_PSD_SIZE: diff --git a/libspeex/testdenoise.c b/libspeex/testdenoise.c index 42644cb..49f5120 100644 --- a/libspeex/testdenoise.c +++ b/libspeex/testdenoise.c @@ -20,8 +20,8 @@ int main() speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DENOISE, &i); i=0; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC, &i); - f=8000; - speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &f); + i=8000; + speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_AGC_LEVEL, &i); i=0; speex_preprocess_ctl(st, SPEEX_PREPROCESS_SET_DEREVERB, &i); f=.0; |