[Scummvm-cvs-logs] scummvm master -> 8c485fe2dad12e00848673729b9ec9b24a72118c

digitall digitall at scummvm.org
Tue Jun 14 01:23:57 CEST 2011


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
8c485fe2da BACKENDS: Improve SDL Mixer Output Format Checks and Reporting.


Commit: 8c485fe2dad12e00848673729b9ec9b24a72118c
    https://github.com/scummvm/scummvm/commit/8c485fe2dad12e00848673729b9ec9b24a72118c
Author: D G Turner (digitall at scummvm.org)
Date: 2011-06-13T16:15:50-07:00

Commit Message:
BACKENDS: Improve SDL Mixer Output Format Checks and Reporting.

This commit corrects a number of minor issues and adds warnings
for when the desired output parameters given to SDL_OpenAudio()
don't match the obtained.

Changed paths:
    backends/mixer/sdl/sdl-mixer.cpp
    backends/mixer/sdl/sdl-mixer.h



diff --git a/backends/mixer/sdl/sdl-mixer.cpp b/backends/mixer/sdl/sdl-mixer.cpp
index 16e7f22..f0b0885 100644
--- a/backends/mixer/sdl/sdl-mixer.cpp
+++ b/backends/mixer/sdl/sdl-mixer.cpp
@@ -61,18 +61,34 @@ void SdlMixerManager::init() {
 	// Get the desired audio specs
 	SDL_AudioSpec desired = getAudioSpec(SAMPLES_PER_SEC);
 
+	// Needed as SDL_OpenAudio as of SDL-1.2.14 mutates fields in
+	// "desired" if used directly.
+	SDL_AudioSpec fmt = desired;
+
 	// Start SDL audio with the desired specs
-	if (SDL_OpenAudio(&desired, &_obtainedRate) != 0) {
+	if (SDL_OpenAudio(&fmt, &_obtained) != 0) {
 		warning("Could not open audio device: %s", SDL_GetError());
 
 		_mixer = new Audio::MixerImpl(g_system, desired.freq);
 		assert(_mixer); 
 		_mixer->setReady(false);
 	} else {
-		debug(1, "Output sample rate: %d Hz", _obtainedRate.freq);
+		debug(1, "Output sample rate: %d Hz", _obtained.freq);
+		if (_obtained.freq != desired.freq)
+			warning("SDL mixer output sample rate: %d differs from desired: %d", _obtained.freq, desired.freq);
 
-		_mixer = new Audio::MixerImpl(g_system, _obtainedRate.freq);
-		assert(_mixer); 
+		debug(1, "Output buffer size: %d samples", _obtained.samples);
+		if (_obtained.samples != desired.samples)
+			warning("SDL mixer output buffer size: %d differs from desired: %d", _obtained.samples, desired.samples);
+
+		if (_obtained.format != desired.format)
+			warning("SDL mixer sound format: %d differs from desired: %d", _obtained.format, desired.format);
+
+		if (_obtained.channels != 2)
+			error("SDL mixer output requires stereo output device");
+
+		_mixer = new Audio::MixerImpl(g_system, _obtained.freq);
+		assert(_mixer);
 		_mixer->setReady(true);
 
 		startAudio();
@@ -133,7 +149,7 @@ void SdlMixerManager::suspendAudio() {
 int SdlMixerManager::resumeAudio() {
 	if (!_audioSuspended)
 		return -2;
-	if (SDL_OpenAudio(&_obtainedRate, NULL) < 0){
+	if (SDL_OpenAudio(&_obtained, NULL) < 0){
 		return -1;
 	}
 	SDL_PauseAudio(0);
diff --git a/backends/mixer/sdl/sdl-mixer.h b/backends/mixer/sdl/sdl-mixer.h
index 5590c90..82ffa4f 100644
--- a/backends/mixer/sdl/sdl-mixer.h
+++ b/backends/mixer/sdl/sdl-mixer.h
@@ -67,7 +67,7 @@ protected:
 	 * The obtained audio specification after opening the
 	 * audio system.
 	 */
-	SDL_AudioSpec _obtainedRate;
+	SDL_AudioSpec _obtained;
 
 	/** State of the audio system */
 	bool _audioSuspended;






More information about the Scummvm-git-logs mailing list