Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xiph/speex.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>2008-03-20 12:00:03 +0300
committerjm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800>2008-03-20 12:00:03 +0300
commitf2c22840d435aa17acf0ddbb7c9931cf3b3d8dd2 (patch)
tree4dfb883fe34a7910b957e900a95bfa4e04739d2b
parent6fbeb99088c847561f4a684c8d5cae406bd132af (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.c6
-rw-r--r--libspeex/testdenoise.c4
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;