From f8c36f04242cf550ef8521d853dc390ea7b149a3 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sat, 8 Aug 2015 18:21:11 -0400 Subject: [PATCH] Revert "Can you say KABOOM?" This reverts commit b3d6afc1c1436f94c7a1591f9aa156dd49948712. --- Sources/Plasma/PubUtilLib/plAudio/plWin32StaticSound.cpp | 9 +++++++++ .../Plasma/PubUtilLib/plAudio/plWin32StreamingSound.cpp | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/Sources/Plasma/PubUtilLib/plAudio/plWin32StaticSound.cpp b/Sources/Plasma/PubUtilLib/plAudio/plWin32StaticSound.cpp index 6fc54391..addc7f45 100644 --- a/Sources/Plasma/PubUtilLib/plAudio/plWin32StaticSound.cpp +++ b/Sources/Plasma/PubUtilLib/plAudio/plWin32StaticSound.cpp @@ -134,6 +134,15 @@ bool plWin32StaticSound::LoadSound( bool is3D ) } uint32_t bufferSize = buffer->GetDataLength(); + if( header.fNumChannels > 1 && is3D ) + { + // We can only do a single channel of 3D sound. So copy over one (later) + bufferSize /= header.fNumChannels; + header.fBlockAlign /= header.fNumChannels; + header.fAvgBytesPerSec /= header.fNumChannels; + header.fNumChannels = 1; + } + bool tryStatic = true; // If we want FX, we can't use a static voice, but EAX doesn't fit under that limitation :) if( 0 ) diff --git a/Sources/Plasma/PubUtilLib/plAudio/plWin32StreamingSound.cpp b/Sources/Plasma/PubUtilLib/plAudio/plWin32StreamingSound.cpp index f60ed2c2..66d296ca 100644 --- a/Sources/Plasma/PubUtilLib/plAudio/plWin32StreamingSound.cpp +++ b/Sources/Plasma/PubUtilLib/plAudio/plWin32StreamingSound.cpp @@ -269,6 +269,15 @@ bool plWin32StreamingSound::LoadSound( bool is3D ) return false; } + if( header.fNumChannels > 1 && is3D ) + { + // We can only do a single channel of 3D sound. So copy over one (later) + bufferSize /= header.fNumChannels; + header.fBlockAlign /= header.fNumChannels; + header.fAvgBytesPerSec /= header.fNumChannels; + header.fNumChannels = 1; + } + // Actually create the buffer now (always looping) fDSoundBuffer = new plDSoundBuffer( bufferSize, header, is3D, IsPropertySet(kPropLooping), false, true ); if( !fDSoundBuffer->IsValid() )