found 399758 0.0.2-3
tags 399758 patch
kthxbye
The 'fix' (I'd call it a workaround really) doesn't seem to work.
antigrav hangs (hogging the CPU) after
Can't open hover.wav : unknown audio format
The attached patch fixes sound for me.
--
Earthling Michel Dänzer | http://tungstengraphics.com
Libre software enthusiast | Debian, X and DRI developer
diff -up -ru antigrav-0.0.2.orig/src/main.cpp antigrav-0.0.2/src/main.cpp
--- antigrav-0.0.2.orig/src/main.cpp 2006-12-01 12:00:53.000000000 +0100
+++ antigrav-0.0.2/src/main.cpp 2006-12-01 11:55:54.000000000 +0100
@@ -167,6 +167,11 @@ int main(int argc, char *argv[])
return 0;
}
+void swapWavBytes(Uint8 *buffer, Uint32 length)
+{
+ swab(buffer, buffer, length);
+}
+
ALuint loadWavBuffer(const char *filename)
{
ALuint buffer;
@@ -188,20 +193,40 @@ ALuint loadWavBuffer(const char *filenam
if(wav_spec.channels == 1)
{
- if(wav_spec.format == AUDIO_U8) format = AL_FORMAT_MONO8;
- else if(wav_spec.format == AUDIO_S16SYS) format = AL_FORMAT_MONO16;
- else
+ switch(wav_spec.format)
{
+ case AUDIO_U8:
+ format = AL_FORMAT_MONO8;
+ break;
+ case AUDIO_S16LSB:
+ case AUDIO_S16MSB:
+ format = AL_FORMAT_MONO16;
+ if (wav_spec.format != AUDIO_S16SYS)
+ {
+ swapWavBytes(wav_buffer, wav_length);
+ }
+ break;
+ default:
fprintf(stderr, "Can't open %s : unknown audio format\n", filename);
SDL_FreeWAV(wav_buffer);
return AL_NONE;
}
} else if(wav_spec.channels == 2)
{
- if(wav_spec.format == AUDIO_U8) format = AL_FORMAT_STEREO8;
- else if(wav_spec.format == AUDIO_S16SYS) format = AL_FORMAT_STEREO16;
- else
+ switch(wav_spec.format)
{
+ case AUDIO_U8:
+ format = AL_FORMAT_STEREO8;
+ break;
+ case AUDIO_S16LSB:
+ case AUDIO_S16MSB:
+ format = AL_FORMAT_STEREO16;
+ if (wav_spec.format != AUDIO_S16SYS)
+ {
+ swapWavBytes(wav_buffer, wav_length);
+ }
+ break;
+ default:
fprintf(stderr, "Can't open %s : unknown audio format\n", filename);
SDL_FreeWAV(wav_buffer);
return AL_NONE;