#ifndef SUMSAMPLES_H #define SUMSAMPLES_H #include #include #include "codec/samplebuffer.h" class SampleSummer { public: struct Sum { Sum(); qfloat16 min; qfloat16 max; }; // FIXME: Move to config static const int kSumSampleRate; static QVector SumSamples(const float* samples, int nb_samples, int nb_channels); static QVector SumSamples(const qfloat16* samples, int nb_samples, int nb_channels); static QVector SumSamples(SampleBufferPtr samples, int start_index, int length); static QVector ReSumSamples(const SampleSummer::Sum* samples, int nb_samples, int nb_channels); struct Info { Info(); int channels; }; private: template static QVector SumSamplesInternal(const T* samples, int nb_samples, int nb_channels); template static void ClampMinMax(Sum &sum, T value); }; #endif // SUMSAMPLES_H