summaryrefslogtreecommitdiff
path: root/test/analysis/AnalysisSilence.c
blob: 08762451f8fb4d2adcb2ed344204043f6b957f9f (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 "AnalysisSilence.h"
#include "AnalyzeFile.h"

boolByte analysisSilence(const SampleBuffer sampleBuffer, AnalysisFunctionData data)
{
    for (ChannelCount i = 0; i < sampleBuffer->numChannels; ++i) {
        for (SampleCount j = 0; j < sampleBuffer->blocksize; ++j) {
            if (sampleBuffer->samples[i][j] == 0.0f) {
                data->consecutiveFailCounter++;

                if (data->consecutiveFailCounter > data->failTolerance) {
                    data->failedChannel = i;
                    data->failedSample = j;
                    return false;
                }
            } else {
                if (data->consecutiveFailCounter > 0) {
                    data->consecutiveFailCounter = 0;
                }
            }
        }
    }

    return true;
}