diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-11-23 01:57:22 -0500 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-11-23 01:57:22 -0500 |
commit | ab9d01ee1d886a584957aaaf4b4d43ae5180e0ce (patch) | |
tree | 98587ca8115e3441bf482ff2c11197d12ce516c4 | |
parent | 174ee5a08f03021bbbfcc5bb190db0c255f06db0 (diff) | |
download | opus-ab9d01ee1d886a584957aaaf4b4d43ae5180e0ce.tar.gz |
Remove global downsampling state
-rw-r--r-- | src/analysis.c | 6 | ||||
-rw-r--r-- | src/analysis.h | 1 | ||||
-rw-r--r-- | src/opus_encoder.c | 5 | ||||
-rw-r--r-- | src/opus_private.h | 6 |
4 files changed, 10 insertions, 8 deletions
diff --git a/src/analysis.c b/src/analysis.c index 350b122f..262b76f6 100644 --- a/src/analysis.c +++ b/src/analysis.c @@ -244,7 +244,8 @@ static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt kfft = celt_mode->mdct.kfft[0]; if (tonal->count==0) tonal->mem_fill = 240; - tonal->hp_ener_accum += downmix(x, &tonal->inmem[tonal->mem_fill], IMIN(len, ANALYSIS_BUF_SIZE-tonal->mem_fill), offset, c1, c2, C); + tonal->hp_ener_accum += downmix(x, &tonal->inmem[tonal->mem_fill], tonal->downmix_state, + IMIN(len, ANALYSIS_BUF_SIZE-tonal->mem_fill), offset, c1, c2, C); if (tonal->mem_fill+len < ANALYSIS_BUF_SIZE) { tonal->mem_fill += len; @@ -271,7 +272,8 @@ static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt } OPUS_MOVE(tonal->inmem, tonal->inmem+ANALYSIS_BUF_SIZE-240, 240); remaining = len - (ANALYSIS_BUF_SIZE-tonal->mem_fill); - tonal->hp_ener_accum = downmix(x, &tonal->inmem[240], remaining, offset+ANALYSIS_BUF_SIZE-tonal->mem_fill, c1, c2, C); + tonal->hp_ener_accum = downmix(x, &tonal->inmem[240], tonal->downmix_state, + remaining, offset+ANALYSIS_BUF_SIZE-tonal->mem_fill, c1, c2, C); tonal->mem_fill = 240 + remaining; opus_fft(kfft, in, out, tonal->arch); #ifndef FIXED_POINT diff --git a/src/analysis.h b/src/analysis.h index 92e613b9..1ad6c53a 100644 --- a/src/analysis.h +++ b/src/analysis.h @@ -79,6 +79,7 @@ typedef struct { int read_pos; int read_subframe; float hp_ener_accum; + opus_val32 downmix_state[3]; AnalysisInfo info[DETECT_SIZE]; } TonalityAnalysisState; diff --git a/src/opus_encoder.c b/src/opus_encoder.c index df9c89f9..03714f01 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -626,8 +626,7 @@ static opus_val32 silk_resampler_down2_hp( return hp_ener; } -opus_val32 S[3]; -opus_val32 downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C) +opus_val32 downmix_float(const void *_x, opus_val32 *sub, opus_val32 S[3], int subframe, int offset, int c1, int c2, int C) { VARDECL(opus_val32, tmp); const float *x; @@ -670,7 +669,7 @@ opus_val32 downmix_float(const void *_x, opus_val32 *sub, int subframe, int offs } #endif -opus_val32 downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C) +opus_val32 downmix_int(const void *_x, opus_val32 *sub, opus_val32 S[3], int subframe, int offset, int c1, int c2, int C) { VARDECL(opus_val32, tmp); const opus_int16 *x; diff --git a/src/opus_private.h b/src/opus_private.h index 82b206f6..25104de1 100644 --- a/src/opus_private.h +++ b/src/opus_private.h @@ -84,9 +84,9 @@ int get_mono_channel(const ChannelLayout *layout, int stream_id, int prev); #define OPUS_SET_FORCE_MODE_REQUEST 11002 #define OPUS_SET_FORCE_MODE(x) OPUS_SET_FORCE_MODE_REQUEST, __opus_check_int(x) -typedef opus_val32 (*downmix_func)(const void *, opus_val32 *, int, int, int, int, int); -opus_val32 downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C); -opus_val32 downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C); +typedef opus_val32 (*downmix_func)(const void *, opus_val32 *, opus_val32[3], int, int, int, int, int); +opus_val32 downmix_float(const void *_x, opus_val32 *sub, opus_val32 S[3], int subframe, int offset, int c1, int c2, int C); +opus_val32 downmix_int(const void *_x, opus_val32 *sub, opus_val32 S[3], int subframe, int offset, int c1, int c2, int C); int encode_size(int size, unsigned char *data); |