Commit b8661377 authored by Dominik Weckbecker's avatar Dominik Weckbecker 💬
Browse files

implement clipping detection in the ambisonics converter program

parent d4307584
Loading
Loading
Loading
Loading
Loading
+19 −1
Original line number Original line Diff line number Diff line
@@ -32,6 +32,7 @@
#include <stdio.h>
#include <stdio.h>
#include <assert.h>
#include <assert.h>
#include <math.h>
#include <math.h>
#include <stdint.h>
#include "tinywavein_c.h"
#include "tinywavein_c.h"
#include "tinywaveout_c.h"
#include "tinywaveout_c.h"
#include "ambi_convert.h"
#include "ambi_convert.h"
@@ -53,6 +54,7 @@ int main( int argc, char *argv[] )
    uint32_t samplesInFile;
    uint32_t samplesInFile;
    uint32_t numSamples = L_FRAME48k;
    uint32_t numSamples = L_FRAME48k;
    uint32_t numSamplesRead32 = 0;
    uint32_t numSamplesRead32 = 0;
    uint32_t numSamplesClipped = 0;


    int16_t bps;
    int16_t bps;
    int16_t samples[L_FRAME48k * AMBI_MAX_CHANNELS];
    int16_t samples[L_FRAME48k * AMBI_MAX_CHANNELS];
@@ -143,7 +145,23 @@ int main( int argc, char *argv[] )
        {
        {
            for ( int16_t j = 0; j < numChannels; j++ )
            for ( int16_t j = 0; j < numChannels; j++ )
            {
            {
                samples[i * numChannels + j] = (int16_t) out[j][i];
                int s1_i;
                float s1 = out[j][i];
                if ( s1 < INT16_MIN )
                {
                    s1_i = INT16_MIN;
                    numSamplesClipped++;
                }
                else if ( s1 > INT16_MAX )
                {
                    s1_i = INT16_MAX;
                    numSamplesClipped++;
                }
                else
                {
                    s1_i = (int16_t) s1;
                }
                samples[i * numChannels + j] = s1_i;
            }
            }
        }
        }