diff options
author | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-15 00:39:10 +1000 |
---|---|---|
committer | Kae <80987908+Novaenia@users.noreply.github.com> | 2023-07-15 00:39:10 +1000 |
commit | 91cd6182d8647aa4ddee3abf8bd0bd8f741f1511 (patch) | |
tree | 09c1f96072c01edec1ae88dcd638c81426d180b4 /source/frontend/StarVoice.cpp | |
parent | b4a53e07067d1ca96fa2e09e5ab07a99574d8e21 (diff) |
Fix mono
Diffstat (limited to 'source/frontend/StarVoice.cpp')
-rw-r--r-- | source/frontend/StarVoice.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/source/frontend/StarVoice.cpp b/source/frontend/StarVoice.cpp index 210a509..f2bcbe2 100644 --- a/source/frontend/StarVoice.cpp +++ b/source/frontend/StarVoice.cpp @@ -380,7 +380,15 @@ bool Voice::receive(SpeakerPtr speaker, std::string_view view) { { MutexLocker lock(speaker->audioStream->mutex); auto& samples = speaker->audioStream->samples; - samples.insert(samples.end(), decodeBuffer, decodeBuffer + decodedSamples); + if (mono) { + size_t prevSize = samples.size(); + samples.resize(prevSize + (size_t)decodedSamples * 2); + int16_t* data = samples.data() + prevSize; + for (int i = 0; i != decodedSamples; ++i) + *data++ = *data++ = decodeBuffer[i]; + } + else + samples.insert(samples.end(), decodeBuffer, decodeBuffer + decodedSamples); } playSpeaker(speaker, channels); } |