diff options
author | Hein-Pieter van Braam <hp@tmm.cx> | 2017-09-12 20:59:35 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-12 20:59:35 +0200 |
commit | 7f40734a1ca7d00f5b1224bb37cb933fb5ba0b44 (patch) | |
tree | cac0bb1df13f83318447de68ea4c1591c6783711 /scene/audio | |
parent | fe33ef5a1948af7c89a6d71de3580341cf2c0d6a (diff) | |
parent | 730d36f350274a055a612d39307b02b43dd59eb2 (diff) |
Merge pull request #10568 from marcelofg55/surround_fixes
Fixed issues with surround sound on audio server
Diffstat (limited to 'scene/audio')
-rw-r--r-- | scene/audio/audio_player.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/scene/audio/audio_player.cpp b/scene/audio/audio_player.cpp index 341ae45ce8..fb12867156 100644 --- a/scene/audio/audio_player.cpp +++ b/scene/audio/audio_player.cpp @@ -66,29 +66,27 @@ void AudioStreamPlayer::_mix_audio() { //set volume for next mix mix_volume_db = volume_db; - AudioFrame *targets[3] = { NULL, NULL, NULL }; + AudioFrame *targets[4] = { NULL, NULL, NULL, NULL }; if (AudioServer::get_singleton()->get_speaker_mode() == AudioServer::SPEAKER_MODE_STEREO) { targets[0] = AudioServer::get_singleton()->thread_get_channel_mix_buffer(bus_index, 0); } else { switch (mix_target) { case MIX_TARGET_STEREO: { - targets[0] = AudioServer::get_singleton()->thread_get_channel_mix_buffer(bus_index, 1); + targets[0] = AudioServer::get_singleton()->thread_get_channel_mix_buffer(bus_index, 0); } break; case MIX_TARGET_SURROUND: { - targets[0] = AudioServer::get_singleton()->thread_get_channel_mix_buffer(bus_index, 1); - targets[1] = AudioServer::get_singleton()->thread_get_channel_mix_buffer(bus_index, 2); - if (AudioServer::get_singleton()->get_speaker_mode() == AudioServer::SPEAKER_SURROUND_71) { - targets[2] = AudioServer::get_singleton()->thread_get_channel_mix_buffer(bus_index, 3); + for (int i = 0; i < AudioServer::get_singleton()->get_channel_count(); i++) { + targets[i] = AudioServer::get_singleton()->thread_get_channel_mix_buffer(bus_index, i); } } break; case MIX_TARGET_CENTER: { - targets[0] = AudioServer::get_singleton()->thread_get_channel_mix_buffer(bus_index, 0); + targets[0] = AudioServer::get_singleton()->thread_get_channel_mix_buffer(bus_index, 1); } break; } } - for (int c = 0; c < 3; c++) { + for (int c = 0; c < 4; c++) { if (!targets[c]) break; for (int i = 0; i < buffer_size; i++) { |