---<br> dlls/dsound/dsound_convert.c | 546 ------------------------------------------<br> 1 files changed, 0 insertions(+), 546 deletions(-)<br> delete mode 100644 dlls/dsound/dsound_convert.c<br><br>diff --git a/dlls/dsound/dsound_convert.c b/dlls/dsound/dsound_convert.c<br>
deleted file mode 100644<br>index 057ae16..0000000<br>--- a/dlls/dsound/dsound_convert.c<br>+++ /dev/null<br>@@ -1,546 +0,0 @@<br>-/* DirectSound format conversion and mixing routines<br>- *<br>- * Copyright 2007 Maarten Lankhorst<br>
- * Copyright 2011 Owen Rudge for CodeWeavers<br>- *<br>- * This library is free software; you can redistribute it and/or<br>- * modify it under the terms of the GNU Lesser General Public<br>- * License as published by the Free Software Foundation; either<br>
- * version 2.1 of the License, or (at your option) any later version.<br>- *<br>- * This library is distributed in the hope that it will be useful,<br>- * but WITHOUT ANY WARRANTY; without even the implied warranty of<br>
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU<br>- * Lesser General Public License for more details.<br>- *<br>- * You should have received a copy of the GNU Lesser General Public<br>- * License along with this library; if not, write to the Free Software<br>
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA<br>- */<br>-<br>-/* 8 bits is unsigned, the rest is signed.<br>- * First I tried to reuse existing stuff from alsa-lib, after that<br>- * didn't work, I gave up and just went for individual hacks.<br>
- *<br>- * 24 bit is expensive to do, due to unaligned access.<br>- * In dlls/winex11.drv/dib_convert.c convert_888_to_0888_asis there is a way<br>- * around it, but I'm happy current code works, maybe something for later.<br>
- *<br>- * The ^ 0x80 flips the signed bit, this is the conversion from<br>- * signed (-128.. 0.. 127) to unsigned (0...255)<br>- * This is only temporary: All 8 bit data should be converted to signed.<br>- * then when fed to the sound card, it should be converted to unsigned again.<br>
- *<br>- * Sound is LITTLE endian<br>- */<br>-<br>-#include "config.h"<br>-<br>-#include <stdarg.h><br>-<br>-#define NONAMELESSSTRUCT<br>-#define NONAMELESSUNION<br>-#include "windef.h"<br>-#include "winbase.h"<br>
-#include "mmsystem.h"<br>-#include "winternl.h"<br>-#include "wine/debug.h"<br>-#include "dsound.h"<br>-#include "dsdriver.h"<br>-#include "dsound_private.h"<br>
-<br>-WINE_DEFAULT_DEBUG_CHANNEL(dsound);<br>-<br>-#ifdef WORDS_BIGENDIAN<br>-#define le16(x) RtlUshortByteSwap((x))<br>-#define le32(x) RtlUlongByteSwap((x))<br>-#else<br>-#define le16(x) (x)<br>-#define le32(x) (x)<br>-#endif<br>
-<br>-static inline void src_advance(const void **src, UINT stride, INT *count, UINT *freqAcc, UINT adj)<br>-{<br>- *freqAcc += adj;<br>- if (*freqAcc >= (1 << DSOUND_FREQSHIFT))<br>- {<br>- ULONG adv = (*freqAcc >> DSOUND_FREQSHIFT);<br>
- *freqAcc &= (1 << DSOUND_FREQSHIFT) - 1;<br>- *(const char **)src += adv * stride;<br>- *count -= adv;<br>- }<br>-}<br>-<br>-static void convert_8_to_8 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- *(BYTE *)dst = *(const BYTE *)src;<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>
- }<br>-}<br>-<br>-static void convert_8_to_16 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- WORD dest = *(const BYTE *)src, *dest16 = dst;<br>
- *dest16 = le16(dest * 257 - 32768);<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_8_to_24 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- BYTE dest = *(const BYTE *)src;<br>- BYTE *dest24 = dst;<br>- dest24[0] = dest;<br>- dest24[1] = dest;<br>
- dest24[2] = dest - 0x80;<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_8_to_32 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- DWORD dest = *(const BYTE *)src, *dest32 = dst;<br>- *dest32 = le32(dest * 16843009 - 2147483648U);<br>
-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_16_to_8 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- BYTE *dst8 = dst;<br>- *dst8 = (le16(*(const WORD *)src)) / 256;<br>- *dst8 -= 0x80;<br>-<br>
- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_16_to_16 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- *(WORD *)dst = *(const WORD *)src;<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>
- }<br>-}<br>-<br>-static void convert_16_to_24 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- WORD dest = le16(*(const WORD *)src);<br>
- BYTE *dest24 = dst;<br>-<br>- dest24[0] = dest / 256;<br>- dest24[1] = dest;<br>- dest24[2] = dest / 256;<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>
- }<br>-}<br>-<br>-static void convert_16_to_32 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- DWORD dest = *(const WORD *)src, *dest32 = dst;<br>
- *dest32 = dest * 65537;<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_24_to_8 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- BYTE *dst8 = dst;<br>- *dst8 = ((const BYTE *)src)[2];<br>-<br>- dst = (char *)dst + dst_stride;<br>
- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_24_to_16 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>
-{<br>- while (count > 0)<br>- {<br>- WORD *dest16 = dst;<br>- const BYTE *source = src;<br>- *dest16 = le16(source[2] * 256 + source[1]);<br>-<br>- dst = (char *)dst + dst_stride;<br>
- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_24_to_24 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>
-{<br>- while (count > 0)<br>- {<br>- BYTE *dest24 = dst;<br>- const BYTE *src24 = src;<br>-<br>- dest24[0] = src24[0];<br>- dest24[1] = src24[1];<br>- dest24[2] = src24[2];<br>
-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_24_to_32 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- DWORD *dest32 = dst;<br>- const BYTE *source = src;<br>- *dest32 = le32(source[2] * 16777217 + source[1] * 65536 + source[0] * 256);<br>
-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_32_to_8 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- BYTE *dst8 = dst;<br>- *dst8 = (le32(*(const DWORD *)src) / 16777216);<br>- *dst8 -= 0x80;<br>
-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_32_to_16 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- WORD *dest16 = dst;<br>- *dest16 = le16(le32(*(const DWORD *)src) / 65536);<br>-<br>- dst = (char *)dst + dst_stride;<br>
- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_32_to_24 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>
-{<br>- while (count > 0)<br>- {<br>- DWORD dest = le32(*(const DWORD *)src);<br>- BYTE *dest24 = dst;<br>-<br>- dest24[0] = dest / 256;<br>- dest24[1] = dest / 65536;<br>- dest24[2] = dest / 16777216;<br>
-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_32_to_32 (const void *src, void *dst, UINT src_stride,<br>
- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- DWORD *dest = dst;<br>- *dest = *(const DWORD *)src;<br>-<br>- dst = (char *)dst + dst_stride;<br>
- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>-static void convert_ieee_32_to_8 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>
-{<br>- while (count > 0)<br>- {<br>- DWORD src_le = le32(*(DWORD *) src);<br>- float v = *((float *) &src_le);<br>- INT8 d = 0;<br>-<br>- if (v < -1.0f)<br>- d = -128;<br>
- else if (v > 1.0f)<br>- d = 127;<br>- else<br>- d = v * 127.5f - 0.5f;<br>-<br>- *(BYTE *) dst = d ^ 0x80;<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>
- }<br>-}<br>-<br>-static void convert_ieee_32_to_16 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- DWORD src_le = le32(*(DWORD *) src);<br>
- float v = *((float *) &src_le);<br>-<br>- INT16 *d = (INT16 *) dst;<br>-<br>- if (v < -1.0f)<br>- *d = -32768;<br>- else if (v > 1.0f)<br>- *d = 32767;<br>- else<br>
- *d = v * 32767.5f - 0.5f;<br>-<br>- *d = le16(*d);<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>- }<br>-}<br>-<br>
-static void convert_ieee_32_to_24 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- DWORD src_le = le32(*(DWORD *) src);<br>
- float v = *((float *) &src_le);<br>- BYTE *dest24 = dst;<br>-<br>- if (v < -1.0f)<br>- {<br>- dest24[0] = 0;<br>- dest24[1] = 0;<br>- dest24[2] = 0x80;<br>
- }<br>- else if (v > 1.0f)<br>- {<br>- dest24[0] = 0xff;<br>- dest24[1] = 0xff;<br>- dest24[2] = 0x7f;<br>- }<br>- else if (v < 0.0f)<br>- {<br>
- dest24[0] = v * 8388608.0f;<br>- dest24[1] = v * 32768.0f;<br>- dest24[2] = v * 128.0f;<br>- }<br>- else if (v >= 0.0f)<br>- {<br>- dest24[0] = v * 8388608.0f;<br>
- dest24[1] = v * 32768.0f;<br>- dest24[2] = v * 127.0f;<br>- }<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>
- }<br>-}<br>-<br>-static void convert_ieee_32_to_32 (const void *src, void *dst, UINT src_stride,<br>- UINT dst_stride, INT count, UINT freqAcc, UINT adj)<br>-{<br>- while (count > 0)<br>- {<br>- DWORD src_le = le32(*(DWORD *) src);<br>
- float v = *((float *) &src_le);<br>- INT32 *d = (INT32 *) dst;<br>-<br>- if (v < -1.0f)<br>- *d = -2147483647 - 1; /* silence warning */<br>- else if (v > 1.0f)<br>- *d = 2147483647;<br>
- else<br>- *d = v * 2147483647.5f - 0.5f;<br>-<br>- *d = le32(*d);<br>-<br>- dst = (char *)dst + dst_stride;<br>- src_advance(&src, src_stride, &count, &freqAcc, adj);<br>
- }<br>-}<br>-<br>-const bitsconvertfunc convertbpp[5][4] = {<br>- { convert_8_to_8, convert_8_to_16, convert_8_to_24, convert_8_to_32 },<br>- { convert_16_to_8, convert_16_to_16, convert_16_to_24, convert_16_to_32 },<br>
- { convert_24_to_8, convert_24_to_16, convert_24_to_24, convert_24_to_32 },<br>- { convert_32_to_8, convert_32_to_16, convert_32_to_24, convert_32_to_32 },<br>- { convert_ieee_32_to_8, convert_ieee_32_to_16, convert_ieee_32_to_24, convert_ieee_32_to_32 },<br>
-};<br>-<br>-static void mix8(signed char *src, INT *dst, unsigned len)<br>-{<br>- TRACE("%p - %p %d\n", src, dst, len);<br>- while (len--)<br>- /* 8-bit WAV is unsigned, it's here converted to signed, normalize function will convert it back again */<br>
- *(dst++) += (signed char)((BYTE)*(src++) - (BYTE)0x80);<br>-}<br>-<br>-static void mix16(SHORT *src, INT *dst, unsigned len)<br>-{<br>- TRACE("%p - %p %d\n", src, dst, len);<br>- len /= 2;<br>- while (len--)<br>
- {<br>- *dst += le16(*src);<br>- ++dst; ++src;<br>- }<br>-}<br>-<br>-static void mix24(BYTE *src, INT *dst, unsigned len)<br>-{<br>- TRACE("%p - %p %d\n", src, dst, len);<br>- len /= 3;<br>
- while (len--)<br>- {<br>- DWORD field;<br>- field = ((DWORD)src[2] << 16) + ((DWORD)src[1] << 8) + (DWORD)src[0];<br>- if (src[2] & 0x80)<br>- field |= 0xFF000000U;<br>
- *(dst++) += field;<br>- ++src;<br>- }<br>-}<br>-<br>-static void mix32(INT *src, LONGLONG *dst, unsigned len)<br>-{<br>- TRACE("%p - %p %d\n", src, dst, len);<br>- len /= 4;<br>- while (len--)<br>
- *(dst++) += le32(*(src++));<br>-}<br>-<br>-const mixfunc mixfunctions[4] = {<br>- (mixfunc)mix8,<br>- (mixfunc)mix16,<br>- (mixfunc)mix24,<br>- (mixfunc)mix32<br>-};<br>-<br>-static void norm8(INT *src, signed char *dst, unsigned len)<br>
-{<br>- TRACE("%p - %p %d\n", src, dst, len);<br>- while (len--)<br>- {<br>- *dst = (*src) + 0x80;<br>- if (*src < -0x80)<br>- *dst = 0;<br>- else if (*src > 0x7f)<br>
- *dst = 0xff;<br>- ++dst;<br>- ++src;<br>- }<br>-}<br>-<br>-static void norm16(INT *src, SHORT *dst, unsigned len)<br>-{<br>- TRACE("%p - %p %d\n", src, dst, len);<br>- len /= 2;<br>
- while (len--)<br>- {<br>- *dst = le16(*src);<br>- if (*src <= -0x8000)<br>- *dst = le16(0x8000);<br>- else if (*src > 0x7fff)<br>- *dst = le16(0x7fff);<br>- ++dst;<br>
- ++src;<br>- }<br>-}<br>-<br>-static void norm24(INT *src, BYTE *dst, unsigned len)<br>-{<br>- TRACE("%p - %p %d\n", src, dst, len);<br>- len /= 3;<br>- while (len--)<br>- {<br>- if (*src <= -0x800000)<br>
- {<br>- dst[0] = 0;<br>- dst[1] = 0;<br>- dst[2] = 0x80;<br>- }<br>- else if (*src > 0x7fffff)<br>- {<br>- dst[0] = 0xff;<br>- dst[1] = 0xff;<br>
- dst[2] = 0x7f;<br>- }<br>- else<br>- {<br>- dst[0] = *src;<br>- dst[1] = *src >> 8;<br>- dst[2] = *src >> 16;<br>- }<br>- ++dst;<br>
- ++src;<br>- }<br>-}<br>-<br>-static void norm32(LONGLONG *src, INT *dst, unsigned len)<br>-{<br>- TRACE("%p - %p %d\n", src, dst, len);<br>- len /= 4;<br>- while (len--)<br>- {<br>- *dst = le32(*src);<br>
- if (*src <= -(LONGLONG)0x80000000)<br>- *dst = le32(0x80000000);<br>- else if (*src > 0x7fffffff)<br>- *dst = le32(0x7fffffff);<br>- ++dst;<br>- ++src;<br>- }<br>
-}<br>-<br>-const normfunc normfunctions[4] = {<br>- (normfunc)norm8,<br>- (normfunc)norm16,<br>- (normfunc)norm24,<br>- (normfunc)norm32,<br>-};<br>-- <br>1.7.2.3<br><br><br>