summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2019-03-05 23:10:02 +0100
committerGitHub <noreply@github.com>2019-03-05 23:10:02 +0100
commit6c2283b2d44b8294e957d88d4b08428479451c72 (patch)
tree538502b52784cd6cbb866103f6922406a71e0cfc
parent195c5e0925a4d8215edec96d4c7030ac6feccc2f (diff)
parentc24f53d4f6088b0dad58f8a1028b7e70db6bd231 (diff)
Merge pull request #26660 from marxin/fix-25639-audio-negative-shift
Fix #25639 by not shifting a negative value.
-rw-r--r--servers/audio_server.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/servers/audio_server.cpp b/servers/audio_server.cpp
index 14c555ab5b..8c092a02a2 100644
--- a/servers/audio_server.cpp
+++ b/servers/audio_server.cpp
@@ -259,11 +259,13 @@ void AudioServer::_driver_process(int p_frames, int32_t *p_buffer) {
float l = CLAMP(buf[from + j].l, -1.0, 1.0);
int32_t vl = l * ((1 << 20) - 1);
- p_buffer[(from_buf + j) * (cs * 2) + k * 2 + 0] = vl << 11;
+ int32_t vl2 = (vl < 0 ? -1 : 1) * (ABS(vl) << 11);
+ p_buffer[(from_buf + j) * (cs * 2) + k * 2 + 0] = vl2;
float r = CLAMP(buf[from + j].r, -1.0, 1.0);
int32_t vr = r * ((1 << 20) - 1);
- p_buffer[(from_buf + j) * (cs * 2) + k * 2 + 1] = vr << 11;
+ int32_t vr2 = (vr < 0 ? -1 : 1) * (ABS(vr) << 11);
+ p_buffer[(from_buf + j) * (cs * 2) + k * 2 + 1] = vr2;
}
} else {