diff options
author | jm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800> | 2008-02-13 13:11:41 +0300 |
---|---|---|
committer | jm <jm@0101bb08-14d6-0310-b084-bc0e0c8e3800> | 2008-02-13 13:11:41 +0300 |
commit | c3d4799d040053a21979ea7774e6719b61b162b9 (patch) | |
tree | cf6572742910a3f9f9d393e984ce64ad896d4da2 | |
parent | 6c143595209e25260248ad5e1d85e2d66e1509e0 (diff) |
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
-rw-r--r-- | include/speex/speex_preprocess.h | 16 | ||||
-rw-r--r-- | libspeex/preprocess.c | 13 |
2 files changed, 28 insertions, 1 deletions
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;i<st->ps_size;i++) + ((spx_int32_t *)ptr)[i] = (spx_int32_t) st->ps[i]; + break; + case SPEEX_PREPROCESS_GET_NOISE_PSD: + for(i=0;i<st->ps_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; |