From 4116867a54672fcf35ce8ffc127662e9119b7282 Mon Sep 17 00:00:00 2001 From: avolkov Date: Thu, 30 Jan 2003 02:02:48 +0000 Subject: [PATCH] original buffer parameters stored for OpenAL compatibility git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@603 8092fc87-c524-0410-9efc-e669fe64eaf9 --- sc2/src/sc2code/libs/sound/mixsdl/mixer.c | 20 ++++++++++++++------ sc2/src/sc2code/libs/sound/mixsdl/mixer.h | 6 ++++++ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/sc2/src/sc2code/libs/sound/mixsdl/mixer.c b/sc2/src/sc2code/libs/sound/mixsdl/mixer.c index 437246003..507aca36f 100644 --- a/sc2/src/sc2code/libs/sound/mixsdl/mixer.c +++ b/sc2/src/sc2code/libs/sound/mixsdl/mixer.c @@ -1187,6 +1187,10 @@ mixSDL_GenBuffers (uint32 n, mixSDL_Object *pbufobj) buf->size = 0; buf->next = 0; buf->orgdata = 0; + buf->orgfreq = 0; + buf->orgsize = 0; + buf->orgchannels = 0; + buf->orgchansize = 0; *pbufobj = (mixSDL_Object) buf; } @@ -1322,22 +1326,21 @@ mixSDL_GetBufferi (mixSDL_Object bufobj, mixSDL_BufferProp pname, } else { - /* All buffers are converted when filled - * so we simply return mixer values + /* Return original buffer values */ switch (pname) { case MIX_FREQUENCY: - *value = mixer_spec.freq; + *value = buf->orgfreq; break; case MIX_BITS: - *value = mixer_chansize << 3; + *value = buf->orgchansize << 3; break; case MIX_CHANNELS: - *value = mixer_spec.channels; + *value = buf->orgchannels; break; case MIX_SIZE: - *value = buf->size; + *value = buf->orgsize; break; case MIX_DATA: *value = (mixSDL_Object) buf->orgdata; @@ -1404,7 +1407,12 @@ mixSDL_BufferData (mixSDL_Object bufobj, uint32 format, void* data, HFree (buf->data); buf->data = 0; buf->size = 0; + /* Store original buffer values for OpenAL compatibility */ buf->orgdata = data; + buf->orgfreq = freq; + buf->orgsize = size; + buf->orgchannels = MIX_FORMAT_CHANS (format); + buf->orgchansize = MIX_FORMAT_BPC (format); conv.srcsamples = size / MIX_FORMAT_SAMPSIZE (format); conv.dstsamples = (uint32) diff --git a/sc2/src/sc2code/libs/sound/mixsdl/mixer.h b/sc2/src/sc2code/libs/sound/mixsdl/mixer.h index f3ddfe76e..e8e156099 100644 --- a/sc2/src/sc2code/libs/sound/mixsdl/mixer.h +++ b/sc2/src/sc2code/libs/sound/mixsdl/mixer.h @@ -144,7 +144,13 @@ typedef struct _mixSDL_Buffer mixSDL_BufferState state; uint8 *data; uint32 size; + /* original buffer values for OpenAL compat */ void* orgdata; + uint32 orgfreq; + uint32 orgsize; + uint32 orgchannels; + uint32 orgchansize; + /* next buffer in chain */ struct _mixSDL_Buffer *next; } mixSDL_Buffer;