From c3d4799d040053a21979ea7774e6719b61b162b9 Mon Sep 17 00:00:00 2001 From: jm Date: Wed, 13 Feb 2008 10:11:41 +0000 Subject: Thorvald Natvig: Patch to query noise and signal info from preprocessor git-svn-id: http://svn.xiph.org/trunk/speex@14495 0101bb08-14d6-0310-b084-bc0e0c8e3800 --- include/speex/speex_preprocess.h | 16 ++++++++++++++++ libspeex/preprocess.c | 13 ++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/include/speex/speex_preprocess.h b/include/speex/speex_preprocess.h index ff6a112..5ec87d1 100644 --- a/include/speex/speex_preprocess.h +++ b/include/speex/speex_preprocess.h @@ -186,6 +186,22 @@ int speex_preprocess_ctl(SpeexPreprocessState *st, int request, void *ptr); /** Get current gain (int32 percent) */ #define SPEEX_PREPROCESS_GET_AGC_GAIN 35 +/* Can't set spectrum size */ +/** Get spectrum size for power spectrum (int32) */ +#define SPEEX_PREPROCESS_GET_PSD_SIZE 37 + +/* Can't set power spectrum */ +/** Get power spectrum (int32[] of squared values) */ +#define SPEEX_PREPROCESS_GET_PSD 39 + +/* Can't set noise size */ +/** Get spectrum size for noise estimate (int32) */ +#define SPEEX_PREPROCESS_GET_NOISE_PSD_SIZE 41 + +/* Can't set noise estimate */ +/** Get noise estimate (int32[] of squared values) */ +#define SPEEX_PREPROCESS_GET_NOISE_PSD 43 + #ifdef __cplusplus } #endif diff --git a/libspeex/preprocess.c b/libspeex/preprocess.c index 36581d7..b0daf86 100644 --- a/libspeex/preprocess.c +++ b/libspeex/preprocess.c @@ -1179,7 +1179,18 @@ int speex_preprocess_ctl(SpeexPreprocessState *state, int request, void *ptr) (*(spx_int32_t*)ptr) = (spx_int32_t) (st->agc_gain * 100.f); break; #endif - + case SPEEX_PREPROCESS_GET_PSD_SIZE: + case SPEEX_PREPROCESS_GET_NOISE_PSD_SIZE: + (*(spx_int32_t*)ptr) = st->ps_size; + break; + case SPEEX_PREPROCESS_GET_PSD: + for(i=0;ips_size;i++) + ((spx_int32_t *)ptr)[i] = (spx_int32_t) st->ps[i]; + break; + case SPEEX_PREPROCESS_GET_NOISE_PSD: + for(i=0;ips_size;i++) + ((spx_int32_t *)ptr)[i] = (spx_int32_t) PSHR32(st->noise[i], NOISE_SHIFT); + break; default: speex_warning_int("Unknown speex_preprocess_ctl request: ", request); return -1; -- cgit v1.2.3