summaryrefslogtreecommitdiff
path: root/src/analysis.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis.c')
-rw-r--r--src/analysis.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/analysis.c b/src/analysis.c
index 6c1db2f3..b39defe5 100644
--- a/src/analysis.c
+++ b/src/analysis.c
@@ -35,6 +35,10 @@
#include "arch.h"
#include "quant_bands.h"
#include <stdio.h>
+#ifndef FIXED_POINT
+#include "mlp.c"
+#include "mlp_data.c"
+#endif
#ifndef M_PI
#define M_PI 3.141592653
@@ -103,6 +107,7 @@ void tonality_analysis(TonalityAnalysisState *tonal, AnalysisInfo *info, CELTEnc
float slope=0;
float frame_stationarity;
float relativeE;
+ float frame_prob;
celt_encoder_ctl(celt_enc, CELT_GET_MODE(&mode));
kfft = mode->mdct.kfft[0];
@@ -294,6 +299,26 @@ void tonality_analysis(TonalityAnalysisState *tonal, AnalysisInfo *info, CELTEnc
features[25] = info->activity;
features[26] = frame_stationarity;
+#ifndef FIXED_POINT
+ mlp_process(&net, features, &frame_prob);
+ frame_prob = .5*(frame_prob+1);
+ /*frame_prob = .45*frame_prob + .55*frame_prob*frame_prob*frame_prob;*/
+ /*printf("%f\n", frame_prob);*/
+ {
+ float alpha, beta;
+ float p0, p1;
+ alpha = .01;
+ beta = .2;
+ p0 = (1-info->music_prob)*(1-alpha) + info->music_prob *alpha;
+ p1 = info->music_prob *(1-alpha) + (1-info->music_prob)*alpha;
+ p0 *= pow(1-frame_prob, beta);
+ p1 *= pow(frame_prob, beta);
+ info->music_prob = p1/(p0+p1);
+ /*printf("%f\n", info->music_prob);*/
+ }
+#else
+ info->music_prob = 0;
+#endif
/*for (i=0;i<27;i++)
printf("%f ", features[i]);
printf("\n");*/