From: Anton Baskanov <baskanov@gmail.com> --- dlls/dsound/dsound_convert.c | 6 +++--- dlls/dsound/dsound_private.h | 3 ++- dlls/dsound/mixer.c | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dlls/dsound/dsound_convert.c b/dlls/dsound/dsound_convert.c index c1acc95652c..5672fc7acbc 100644 --- a/dlls/dsound/dsound_convert.c +++ b/dlls/dsound/dsound_convert.c @@ -89,7 +89,9 @@ static float get32(const IDirectSoundBufferImpl *dsb, BYTE *base, DWORD channel) return sample / (float)0x80000000U; } -static float getieee32(const IDirectSoundBufferImpl *dsb, BYTE *base, DWORD channel) +const bitsgetfunc getbpp[4] = {get8, get16, get24, get32}; + +float getieee32(const IDirectSoundBufferImpl *dsb, BYTE *base, DWORD channel) { const BYTE *buf = base + 4 * channel; const float *sbuf = (const float*)(buf); @@ -97,8 +99,6 @@ static float getieee32(const IDirectSoundBufferImpl *dsb, BYTE *base, DWORD chan return *sbuf; } -const bitsgetfunc getbpp[5] = {get8, get16, get24, get32, getieee32}; - float get_mono(const IDirectSoundBufferImpl *dsb, BYTE *base, DWORD channel) { DWORD channels = dsb->pwfx->nChannels; diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h index b64483e39a0..a9ff0f04e3e 100644 --- a/dlls/dsound/dsound_private.h +++ b/dlls/dsound/dsound_private.h @@ -45,7 +45,8 @@ typedef struct DirectSoundDevice DirectSoundDevice; /* dsound_convert.h */ typedef float (*bitsgetfunc)(const IDirectSoundBufferImpl *dsb, BYTE *base, DWORD channel); typedef void (*bitsputfunc)(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value); -extern const bitsgetfunc getbpp[5]; +extern const bitsgetfunc getbpp[4]; +float getieee32(const IDirectSoundBufferImpl *dsb, BYTE *base, DWORD channel); void putieee32(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value); void putieee32_sum(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value); void mixieee32(float *src, float *dst, unsigned samples); diff --git a/dlls/dsound/mixer.c b/dlls/dsound/mixer.c index c8d0ea369d2..56e7b3b95c6 100644 --- a/dlls/dsound/mixer.c +++ b/dlls/dsound/mixer.c @@ -137,7 +137,7 @@ void DSOUND_RecalcFormat(IDirectSoundBufferImpl *dsb) dsb->freqAccNum = (dsb->freqAccNum * (LONG64)dsb->freqAdjustDen + oldFreqAdjustDen / 2) / oldFreqAdjustDen; - dsb->get_aux = ieee ? getbpp[4] : getbpp[dsb->pwfx->wBitsPerSample/8 - 1]; + dsb->get_aux = ieee ? getieee32 : getbpp[dsb->pwfx->wBitsPerSample/8 - 1]; dsb->put_aux = putieee32; dsb->get = dsb->get_aux; -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11082