#ifndef GAME_SOUND_LOUDNESS_H #define GAME_SOUND_LOUDNESS_H #include #include "sound_decoder.hpp" namespace MWSound { class Sound_Loudness { // Loudness sample info float mSamplesPerSec; std::vector mSamples; volatile bool mReady; public: Sound_Loudness() : mSamplesPerSec(0.0f), mReady(false) { } /** * Analyzes the energy (closely related to loudness) of a sound buffer. * The buffer will be divided into segments according to \a valuesPerSecond, * and for each segment a loudness value in the range of [0,1] will be computed. * @param data the sound buffer to analyze, containing raw samples * @param sampleRate the sample rate of the sound buffer * @param chans channel layout of the buffer * @param type sample type of the buffer * @param valuesPerSecond How many loudness values per second of audio to compute. */ void analyzeLoudness(const std::vector& data, int sampleRate, ChannelConfig chans, SampleType type, float valuesPerSecond); bool isReady() { return mReady; } float getLoudnessAtTime(float sec) const; }; } #endif /* GAME_SOUND_LOUDNESS_H */