diff options
author | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-11-11 15:05:55 -0500 |
---|---|---|
committer | Jean-Marc Valin <jmvalin@jmvalin.ca> | 2016-11-11 15:05:55 -0500 |
commit | 5a66acfeb2095583a586e0cb852acec75c6779dc (patch) | |
tree | 962cbc137c78c74b41dd36993f641f8b9ecc62bc | |
parent | a56c64cc1725ebc3a422f559bb487b219f973f82 (diff) | |
download | opus-5a66acfeb2095583a586e0cb852acec75c6779dc.tar.gz |
fix
-rw-r--r-- | src/analysis.c | 16 | ||||
-rw-r--r-- | src/opus_encoder.c | 1 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/analysis.c b/src/analysis.c index ea7f0a42..2aa10af5 100644 --- a/src/analysis.c +++ b/src/analysis.c @@ -151,7 +151,18 @@ void tonality_get_info(TonalityAnalysisState *tonal, AnalysisInfo *info_out, int pos--; if (pos<0) pos = DETECT_SIZE-1; + //printf("%d %d %d\n", tonal->read_pos, tonal->write_pos, pos); OPUS_COPY(info_out, &tonal->info[pos], 1); + for (i=0;i<3;i++) + { + pos++; + if (pos==DETECT_SIZE) + pos = 0; + if (pos == tonal->write_pos) + break; + info_out->tonality = MAX32(0, -.008 + MAX32(info_out->tonality, tonal->info[pos].tonality-.05)); + } + //printf("%f\n", info_out->tonality); tonal->read_subframe += len/120; while (tonal->read_subframe>=4) { @@ -241,6 +252,7 @@ static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt RESTORE_STACK; return; } + //printf("write to %d (%d)\n", tonal->write_pos, tonal->count); info = &tonal->info[tonal->write_pos++]; if (tonal->write_pos>=DETECT_SIZE) tonal->write_pos-=DETECT_SIZE; @@ -342,7 +354,7 @@ static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt E = X2r*X2r + X2i*X2i + 1e-10; E0 = X1r*X1r + X1i*X1i + 1e-10; - avg_mod = .25f*(2*d2A[i]+2.f*mod1+1*mod2); + avg_mod = .25f*(.5*d2A[i]+1.f*mod1+3.5*mod2); tonality[i] = 1.f/(1.f+40.f*16.f*pi4*avg_mod)-.015f; float f; @@ -393,7 +405,7 @@ static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt #endif E += binE; //tonality[i] = MAX32(newtone[i],MAX32(newtone[i+1],newtone[i-1])); - tonality[i] = MAX32(tonality[i], MAX32(newtone[i],MAX32(newtone[i+1],newtone[i-1]))); + //tonality[i] = MAX32(tonality[i], MAX32(newtone[i],MAX32(newtone[i+1],newtone[i-1]))); tE += binE*tonality[i]; nE += binE*2.f*(.5f-noisiness[i]); } diff --git a/src/opus_encoder.c b/src/opus_encoder.c index 9c67e02a..ddb7247d 100644 --- a/src/opus_encoder.c +++ b/src/opus_encoder.c @@ -661,6 +661,7 @@ void downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int ALLOC_STACK; subframe *= 2; + offset *= 2; ALLOC(tmp, subframe, opus_val16); x = (const opus_int16 *)_x; |