From b959dd2e30e1f36c7281013b792861b0ad02647c Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 18 Mar 2016 21:30:25 +0300 Subject: Add function for test SDL audio features. Now disabled. --- src/client.cpp | 3 +++ src/soundmanager.cpp | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/soundmanager.h | 2 ++ 3 files changed, 68 insertions(+) (limited to 'src') diff --git a/src/client.cpp b/src/client.cpp index 7a550d80a..387eaea63 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -523,7 +523,10 @@ void Client::initSoundManager() try { if (config.getBoolValue("sound")) + { + //soundManager.testAudio(); soundManager.init(); + } soundManager.setSfxVolume(config.getIntValue("sfxVolume")); soundManager.setMusicVolume(config.getIntValue("musicVolume")); diff --git a/src/soundmanager.cpp b/src/soundmanager.cpp index 7e4645dfd..fa470e3af 100644 --- a/src/soundmanager.cpp +++ b/src/soundmanager.cpp @@ -175,6 +175,69 @@ void SoundManager::init() playMusic(mCurrentMusicFile); } +void SoundManager::testAudio() +{ + mPlayBattle = config.getBoolValue("playBattleSound"); + mPlayGui = config.getBoolValue("playGuiSound"); + mPlayMusic = config.getBoolValue("playMusic"); + mFadeoutMusic = config.getBoolValue("fadeoutmusic"); + mMusicVolume = config.getIntValue("musicVolume"); + mSfxVolume = config.getIntValue("sfxVolume"); + mCacheSounds = config.getIntValue("uselonglivesounds"); + + const size_t audioBuffer = 4096; + int channels = config.getIntValue("audioChannels"); + switch (channels) + { + case 3: + channels = 4; + break; + case 4: + channels = 6; + break; + default: + break; + } + + SDL_AudioSpec desired; + SDL_AudioSpec actual; + + desired.freq = config.getIntValue("audioFrequency"); + desired.format = MIX_DEFAULT_FORMAT; + desired.channels = channels; + desired.samples = audioBuffer; + desired.callback = nullptr; + desired.userdata = nullptr; + + if (SDL_OpenAudio(&desired, &actual) < 0) + { + logger->log("SoundManager::testAudio error: %s", + Mix_GetError()); + return; + } + if (desired.freq != actual.freq) + { + logger->log("SoundManager::testAudio frequence: %d -> %d", + actual.freq, desired.freq); + } + if (desired.format != actual.format) + { + logger->log("SoundManager::testAudio format: %d -> %d", + actual.format, desired.format); + } + if (desired.channels != actual.channels) + { + logger->log("SoundManager::testAudio channels: %d -> %d", + actual.channels, desired.channels); + } + if (desired.samples != actual.samples) + { + logger->log("SoundManager::testAudio samples: %d -> %d", + actual.samples, desired.samples); + } + SDL_CloseAudio(); +} + void SoundManager::info() { SDL_version compiledVersion; diff --git a/src/soundmanager.h b/src/soundmanager.h index b00eee0e9..a73975536 100644 --- a/src/soundmanager.h +++ b/src/soundmanager.h @@ -51,6 +51,8 @@ class SoundManager final : public ConfigListener */ void init(); + void testAudio(); + /** * Removes all sound functionalities. */ -- cgit v1.2.3-60-g2f50