diff options
Diffstat (limited to 'src/analysis.c')
-rw-r--r-- | src/analysis.c | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/src/analysis.c b/src/analysis.c index 53247df..778a62a 100644 --- a/src/analysis.c +++ b/src/analysis.c @@ -115,7 +115,7 @@ static const int extra_bands[NB_TOT_BANDS+1] = { #define cB 0.67848403f #define cC 0.08595542f #define cE ((float)M_PI/2) -static inline float fast_atan2f(float y, float x) { +static OPUS_INLINE float fast_atan2f(float y, float x) { float x2, y2; /* Should avoid underflow on the values we'll get */ if (ABS16(x)+ABS16(y)<1e-9f) @@ -253,10 +253,10 @@ void tonality_analysis(TonalityAnalysisState *tonal, AnalysisInfo *info_out, con for (i=0;i<N2;i++) { float w = analysis_window[i]; - in[i].r = w*tonal->inmem[i]; - in[i].i = w*tonal->inmem[N2+i]; - in[N-i-1].r = w*tonal->inmem[N-i-1]; - in[N-i-1].i = w*tonal->inmem[N+N2-i-1]; + in[i].r = (kiss_fft_scalar)(w*tonal->inmem[i]); + in[i].i = (kiss_fft_scalar)(w*tonal->inmem[N2+i]); + in[N-i-1].r = (kiss_fft_scalar)(w*tonal->inmem[N-i-1]); + in[N-i-1].i = (kiss_fft_scalar)(w*tonal->inmem[N+N2-i-1]); } OPUS_MOVE(tonal->inmem, tonal->inmem+ANALYSIS_BUF_SIZE-240, 240); remaining = len - (ANALYSIS_BUF_SIZE-tonal->mem_fill); @@ -270,10 +270,10 @@ void tonality_analysis(TonalityAnalysisState *tonal, AnalysisInfo *info_out, con float angle, d_angle, d2_angle; float angle2, d_angle2, d2_angle2; float mod1, mod2, avg_mod; - X1r = out[i].r+out[N-i].r; - X1i = out[i].i-out[N-i].i; - X2r = out[i].i+out[N-i].i; - X2i = out[N-i].r-out[i].r; + X1r = (float)out[i].r+out[N-i].r; + X1i = (float)out[i].i-out[N-i].i; + X2r = (float)out[i].i+out[N-i].i; + X2i = (float)out[N-i].r-out[i].r; angle = (float)(.5f/M_PI)*fast_atan2f(X1i, X1r); d_angle = angle - A[i]; @@ -317,7 +317,6 @@ void tonality_analysis(TonalityAnalysisState *tonal, AnalysisInfo *info_out, con } relativeE = 0; frame_loudness = 0; - bandwidth_mask = 0; for (b=0;b<NB_TBANDS;b++) { float E=0, tE=0, nE=0; @@ -338,7 +337,7 @@ void tonality_analysis(TonalityAnalysisState *tonal, AnalysisInfo *info_out, con tonal->E[tonal->E_count][b] = E; frame_noisiness += nE/(1e-15f+E); - frame_loudness += sqrt(E+1e-10f); + frame_loudness += (float)sqrt(E+1e-10f); logE[b] = (float)log(E+1e-10f); tonal->lowE[b] = MIN32(logE[b], tonal->lowE[b]+.01f); tonal->highE[b] = MAX32(logE[b], tonal->highE[b]-.1f); @@ -347,21 +346,21 @@ void tonality_analysis(TonalityAnalysisState *tonal, AnalysisInfo *info_out, con tonal->highE[b]+=.5f; tonal->lowE[b]-=.5f; } - relativeE += (logE[b]-tonal->lowE[b])/(1e-15+tonal->highE[b]-tonal->lowE[b]); + relativeE += (logE[b]-tonal->lowE[b])/(1e-15f+tonal->highE[b]-tonal->lowE[b]); L1=L2=0; for (i=0;i<NB_FRAMES;i++) { - L1 += sqrt(tonal->E[i][b]); + L1 += (float)sqrt(tonal->E[i][b]); L2 += tonal->E[i][b]; } - stationarity = MIN16(0.99f,L1/sqrt(1e-15+NB_FRAMES*L2)); + stationarity = MIN16(0.99f,L1/(float)sqrt(1e-15+NB_FRAMES*L2)); stationarity *= stationarity; stationarity *= stationarity; frame_stationarity += stationarity; /*band_tonality[b] = tE/(1e-15+E)*/; - band_tonality[b] = MAX16(tE/(1e-15+E), stationarity*tonal->prev_band_tonality[b]); + band_tonality[b] = MAX16(tE/(1e-15f+E), stationarity*tonal->prev_band_tonality[b]); #if 0 if (b>=NB_TONAL_SKIP_BANDS) { @@ -476,7 +475,7 @@ void tonality_analysis(TonalityAnalysisState *tonal, AnalysisInfo *info_out, con tonal->mem[i] = BFCC[i]; } for (i=0;i<9;i++) - features[11+i] = sqrt(tonal->std[i]); + features[11+i] = (float)sqrt(tonal->std[i]); features[20] = info->tonality; features[21] = info->activity; features[22] = frame_stationarity; @@ -597,7 +596,6 @@ void tonality_analysis(TonalityAnalysisState *tonal, AnalysisInfo *info_out, con if (tonal->speech_confidence_count==0) tonal->speech_confidence = .1f; } - psum = MAX16(tonal->speech_confidence, MIN16(tonal->music_confidence, psum)); } if (tonal->last_music != (tonal->music_prob>.5f)) tonal->last_transition=0; |