summaryrefslogtreecommitdiff
path: root/test/analysis/AnalysisClipping.c
blob: 55229aed9f0d0585b485d7dbaf5e5263f8f8be22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <math.h>
#include "AnalysisClipping.h"

boolByte analysisClipping(const SampleBuffer sampleBuffer, AnalysisFunctionData data)
{
    for (ChannelCount i = 0; i < sampleBuffer->numChannels; i++) {
        for (SampleCount j = 0; j < sampleBuffer->blocksize; j++) {
            if (fabs(sampleBuffer->samples[i][j]) >= 1.0f) {
                if (data->consecutiveFailCounter > data->failTolerance) {
                    data->failedChannel = i;
                    data->failedSample = j;
                    return false;
                } else {
                    data->consecutiveFailCounter++;
                }
            } else {
                if (data->consecutiveFailCounter > 0) {
                    data->consecutiveFailCounter--;
                }
            }
        }
    }

    return true;
}