blob: 8927ec70b17af97b5f265127df35a549ee475192 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
#include "pch.h"
#include "DspBalance.h"
#include "AudioRenderer.h"
namespace SaneAudioRenderer
{
bool DspBalance::Active()
{
return m_renderer.GetBalance() != 0.0f;
}
void DspBalance::Process(DspChunk& chunk)
{
const float balance = m_renderer.GetBalance();
assert(balance >= -1.0f && balance <= 1.0f);
if (balance == 0.0f || chunk.IsEmpty() || chunk.GetChannelCount() != 2)
return;
DspChunk::ToFloat(chunk);
auto data = reinterpret_cast<float*>(chunk.GetData());
const float gain = std::abs(balance);
for (size_t i = (balance < 0.0f ? 1 : 0), n = chunk.GetSampleCount(); i < n; i += 2)
data[i] *= gain;
}
void DspBalance::Finish(DspChunk& chunk)
{
Process(chunk);
}
}
|