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

gitlab.xiph.org/xiph/opus.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jmvalin@jmvalin.ca>2016-11-19 11:34:57 +0300
committerJean-Marc Valin <jmvalin@jmvalin.ca>2016-11-19 11:34:57 +0300
commitd50e80d525e8a6d81c7949fde237722f02582f04 (patch)
tree21912b22565e821efb4cf511dff68c4d8d414a24
parent930c4f71b24172a11c428b9ad7c736efa82bcd35 (diff)
Make tonality analysis react faster on a new tone
-rw-r--r--src/analysis.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/analysis.c b/src/analysis.c
index 1c12aa24..a5b480ad 100644
--- a/src/analysis.c
+++ b/src/analysis.c
@@ -226,6 +226,7 @@ static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt
int remaining;
AnalysisInfo *info;
float hp_ener;
+ float tonality2[240];
SAVE_STACK;
tonal->last_transition++;
@@ -311,14 +312,19 @@ static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt
mod2 *= mod2;
mod2 *= mod2;
- avg_mod = .25f*(.0*d2A[i]+1.5f*mod1+2.5*mod2);
+ avg_mod = .25f*(d2A[i]+mod1+2*mod2);
tonality[i] = 1.f/(1.f+40.f*16.f*pi4*avg_mod)-.015f;
+ tonality2[i] = 1.f/(1.f+40.f*16.f*pi4*mod2)-.015f;
A[i] = angle2;
dA[i] = d_angle2;
d2A[i] = mod2;
}
-
+ for (i=2;i<N2-1;i++)
+ {
+ float tt = MIN32(tonality2[i], MAX32(tonality2[i-1], tonality2[i+1]));
+ tonality[i] = .9*MAX32(tonality[i], tt-.1);
+ }
frame_tonality = 0;
max_frame_tonality = 0;
/*tw_sum = 0;*/
@@ -349,7 +355,7 @@ static void tonality_analysis(TonalityAnalysisState *tonal, const CELTMode *celt
binE *= 5.55e-17f;
#endif
E += binE;
- tE += binE*tonality[i];
+ tE += binE*MAX32(0, tonality[i]);
nE += binE*2.f*(.5f-noisiness[i]);
}
#ifndef FIXED_POINT