#include "sumsamples.h" #include const int SampleSummer::kSumSampleRate = 200; QVector SampleSummer::SumSamples(const float *samples, int nb_samples, int nb_channels) { return SumSamplesInternal(samples, nb_samples, nb_channels); } QVector SampleSummer::SumSamples(const qfloat16 *samples, int nb_samples, int nb_channels) { return SumSamplesInternal(samples, nb_samples, nb_channels); } QVector SampleSummer::SumSamples(SampleBufferPtr samples, int start_index, int length) { QVector summed_samples(samples->audio_params().channel_count()); int end_index = start_index + length; for (int i=start_index;iaudio_params().channel_count();channel++) { ClampMinMax(summed_samples[channel], samples->data()[channel][i]); } } return summed_samples; } QVector SampleSummer::ReSumSamples(const SampleSummer::Sum *samples, int nb_samples, int nb_channels) { QVector summed_samples(nb_channels); for (int i=0;i summed_samples[channel].max) { summed_samples[channel].max = sample.max; } } return summed_samples; } SampleSummer::Sum::Sum() { min = 0; max = 0; } template QVector SampleSummer::SumSamplesInternal(const T *samples, int nb_samples, int nb_channels) { QVector summed_samples(nb_channels); for (int i=0;i(summed_samples[i%nb_channels], samples[i]); } return summed_samples; } template void SampleSummer::ClampMinMax(SampleSummer::Sum &sum, T value) { if (value < sum.min) { sum.min = value; } if (value > sum.max) { sum.max = value; } } SampleSummer::Info::Info() { channels = 0; }