MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / getAudioChunkLoudness

Function getAudioChunkLoudness

source/frontend/StarVoice.cpp:33–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31};
32
33inline float getAudioChunkLoudness(int16_t* data, size_t samples, float volume) {
34 if (!samples)
35 return 0.f;
36
37 double rms = 0.;
38 for (size_t i = 0; i != samples; ++i) {
39 float sample = ((float)data[i] / 32767.f) * volume;
40 rms += (double)(sample * sample);
41 }
42
43 float fRms = sqrtf((float)(rms / samples));
44
45 if (fRms > 0)
46 return std::clamp<float>(20.f * log10f(fRms), -127.f, 0.f);
47 else
48 return -127.f;
49}
50
51float getAudioLoudness(int16_t* data, size_t samples, float volume = 1.0f) {
52 constexpr size_t CHUNK_SIZE = 50;

Callers 1

getAudioLoudnessFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected