From 436f05709b8d73658312bb252644be0609de3f49 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 10 Jan 2013 01:53:37 +0100 Subject: [PATCH] (360) Xaudio2 360 driver uses same C backend file as PC now --- audio/xaudio-c/xaudio-c.c | 300 +++++++++++++++++++------------ audio/xaudio-c/xaudio-xdk360.cpp | 173 ------------------ audio/xaudio-c/xaudio-xdk360.h | 20 +-- audio/xaudio-c/xaudio.h | 2 +- console/griffin/griffin.c | 5 - 5 files changed, 196 insertions(+), 304 deletions(-) delete mode 100644 audio/xaudio-c/xaudio-xdk360.cpp diff --git a/audio/xaudio-c/xaudio-c.c b/audio/xaudio-c/xaudio-c.c index 54c06f6222..9d27f7e1da 100644 --- a/audio/xaudio-c/xaudio-c.c +++ b/audio/xaudio-c/xaudio-c.c @@ -1,10 +1,26 @@ -/* - Simple C interface for XAudio2 - Author: Hans-Kristian Arntzen - License: Public Domain -*/ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2013 - Hans-Kristian Arntzen + * Copyright (C) 2011-2013 - Daniel De Matteis + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ +// Simple C interface for XAudio2 + +#ifdef _XBOX +#include "xaudio-xdk360.h" +#else #include "xaudio.h" +#endif #include "xaudio-c.h" #include #include @@ -19,27 +35,53 @@ #define max(a, b) ((a) > (b) ? (a) : (b)) struct xaudio2 +#ifdef _XBOX +: public IXAudio2VoiceCallback +#endif { - const IXAudio2VoiceCallbackVtbl *lpVtbl; +#ifdef _XBOX + xaudio2() : + buf(0), pXAudio2(0), pMasterVoice(0), + pSourceVoice(0), bufsize(0), + bufptr(0), write_buffer(0), buffers(0), hEvent(0) + {} - uint8_t *buf; - IXAudio2 *pXAudio2; - IXAudio2MasteringVoice *pMasterVoice; - IXAudio2SourceVoice *pSourceVoice; - HANDLE hEvent; + ~xaudio2() {} - volatile long buffers; - unsigned bufsize; - unsigned bufptr; - unsigned write_buffer; + STDMETHOD_(void, OnBufferStart) (void *) {} + STDMETHOD_(void, OnBufferEnd) (void *) + { + InterlockedDecrement(&buffers); + SetEvent(hEvent); + } + STDMETHOD_(void, OnLoopEnd) (void *) {} + STDMETHOD_(void, OnStreamEnd) () {} + STDMETHOD_(void, OnVoiceError) (void *, HRESULT) {} + STDMETHOD_(void, OnVoiceProcessingPassEnd) () {} + STDMETHOD_(void, OnVoiceProcessingPassStart) (UINT32) {} +#else + const IXAudio2VoiceCallbackVtbl *lpVtbl; +#endif + + uint8_t *buf; + IXAudio2 *pXAudio2; + IXAudio2MasteringVoice *pMasterVoice; + IXAudio2SourceVoice *pSourceVoice; + HANDLE hEvent; + + volatile long buffers; + unsigned bufsize; + unsigned bufptr; + unsigned write_buffer; }; +#ifndef _XBOX static void WINAPI voice_on_buffer_end(void *handle_, void *data) { - (void)data; - xaudio2_t *handle = (xaudio2_t*)handle_; - InterlockedDecrement(&handle->buffers); - SetEvent(handle->hEvent); + (void)data; + xaudio2_t *handle = (xaudio2_t*)handle_; + InterlockedDecrement(&handle->buffers); + SetEvent(handle->hEvent); } static void WINAPI dummy_voidp(void *handle, void *data) { (void)handle; (void)data; } @@ -48,140 +90,172 @@ static void WINAPI dummy_uint32(void *handle, UINT32 dummy) { (void)handle; (voi static void WINAPI dummy_voidp_hresult(void *handle, void *data, HRESULT dummy) { (void)handle; (void)data; (void)dummy; } const struct IXAudio2VoiceCallbackVtbl voice_vtable = { - dummy_uint32, - dummy_nil, - dummy_nil, - dummy_voidp, - voice_on_buffer_end, - dummy_voidp, - dummy_voidp_hresult, + dummy_uint32, + dummy_nil, + dummy_nil, + dummy_voidp, + voice_on_buffer_end, + dummy_voidp, + dummy_voidp_hresult, }; +#endif void xaudio2_enumerate_devices(xaudio2_t *xa) { - UINT32 dev_count; - IXAudio2_GetDeviceCount(xa->pXAudio2, &dev_count); - fprintf(stderr, "XAudio2 devices:\n"); - for (unsigned i = 0; i < dev_count; i++) - { - XAUDIO2_DEVICE_DETAILS dev_detail; - IXAudio2_GetDeviceDetails(xa->pXAudio2, i, &dev_detail); - fwprintf(stderr, L"\t%u: %s\n", i, dev_detail.DisplayName); - } + (void)xa; +#ifndef _XBOX + UINT32 dev_count; + IXAudio2_GetDeviceCount(xa->pXAudio2, &dev_count); + fprintf(stderr, "XAudio2 devices:\n"); + for (unsigned i = 0; i < dev_count; i++) + { + XAUDIO2_DEVICE_DETAILS dev_detail; + IXAudio2_GetDeviceDetails(xa->pXAudio2, i, &dev_detail); + fwprintf(stderr, L"\t%u: %s\n", i, dev_detail.DisplayName); + } +#endif +} + +static void xaudio2_set_wavefmt(WAVEFORMATEX *wfx, bool use_float, + unsigned channels, unsigned samplerate) +{ + if (use_float) + { + wfx->wFormatTag = WAVE_FORMAT_IEEE_FLOAT; + wfx->nBlockAlign = channels * sizeof(float); + wfx->wBitsPerSample = sizeof(float) * 8; + } + else + { + wfx->wFormatTag = WAVE_FORMAT_PCM; + wfx->nBlockAlign = channels * sizeof(int16_t); + wfx->wBitsPerSample = sizeof(int16_t) * 8; + } + wfx->nChannels = channels; + wfx->nSamplesPerSec = samplerate; + + wfx->nAvgBytesPerSec = wfx->nSamplesPerSec * wfx->nBlockAlign; + wfx->cbSize = 0; } xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels, - size_t size, unsigned device) + size_t size, unsigned device) { - xaudio2_t *handle = (xaudio2_t*)calloc(1, sizeof(*handle)); - if (!handle) - return NULL; + bool float_supported = true; +#ifdef _XBOX + xaudio2_t *handle = new xaudio2; + float_supported = false; +#else + xaudio2_t *handle = (xaudio2_t*)calloc(1, sizeof(*handle)); +#endif + if (!handle) + return NULL; - handle->lpVtbl = &voice_vtable; - CoInitializeEx(0, COINIT_MULTITHREADED); - WAVEFORMATEX wfx = {0}; +#ifndef _XBOX + handle->lpVtbl = &voice_vtable; + CoInitializeEx(0, COINIT_MULTITHREADED); +#endif + WAVEFORMATEX wfx = {0}; - if (FAILED(XAudio2Create(&handle->pXAudio2))) - goto error; + if (FAILED(XAudio2Create(&handle->pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR))) + goto error; - if (FAILED(IXAudio2_CreateMasteringVoice(handle->pXAudio2, - &handle->pMasterVoice, channels, samplerate, 0, device, NULL))) - goto error; + if (FAILED(IXAudio2_CreateMasteringVoice(handle->pXAudio2, + &handle->pMasterVoice, channels, samplerate, 0, device, NULL))) + goto error; - wfx.wFormatTag = WAVE_FORMAT_IEEE_FLOAT; - wfx.nChannels = channels; - wfx.nSamplesPerSec = samplerate; - wfx.nBlockAlign = channels * sizeof(float); - wfx.wBitsPerSample = sizeof(float) * 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - wfx.cbSize = 0; + xaudio2_set_wavefmt(&wfx, float_supported, channels, samplerate); - if (FAILED(IXAudio2_CreateSourceVoice(handle->pXAudio2, - &handle->pSourceVoice, &wfx, - XAUDIO2_VOICE_NOSRC, XAUDIO2_DEFAULT_FREQ_RATIO, - (IXAudio2VoiceCallback*)handle, 0, 0))) - goto error; + if (FAILED(IXAudio2_CreateSourceVoice(handle->pXAudio2, + &handle->pSourceVoice, &wfx, + XAUDIO2_VOICE_NOSRC, XAUDIO2_DEFAULT_FREQ_RATIO, + (IXAudio2VoiceCallback*)handle, 0, 0))) + goto error; - handle->hEvent = CreateEvent(0, FALSE, FALSE, 0); - if (!handle->hEvent) - goto error; + handle->hEvent = CreateEvent(0, FALSE, FALSE, 0); + if (!handle->hEvent) + goto error; - handle->bufsize = size / MAX_BUFFERS; - handle->buf = (uint8_t*)calloc(1, handle->bufsize * MAX_BUFFERS); - if (!handle->buf) - goto error; + handle->bufsize = size / MAX_BUFFERS; + handle->buf = (uint8_t*)calloc(1, handle->bufsize * MAX_BUFFERS); + if (!handle->buf) + goto error; - if (FAILED(IXAudio2SourceVoice_Start(handle->pSourceVoice, 0, XAUDIO2_COMMIT_NOW))) - goto error; + if (FAILED(IXAudio2SourceVoice_Start(handle->pSourceVoice, 0, XAUDIO2_COMMIT_NOW))) + goto error; - return handle; + return handle; error: - xaudio2_free(handle); - return NULL; + xaudio2_free(handle); + return NULL; } size_t xaudio2_write_avail(xaudio2_t *handle) { - return handle->bufsize * (MAX_BUFFERS - handle->buffers - 1); + return handle->bufsize * (MAX_BUFFERS - handle->buffers - 1); } size_t xaudio2_write(xaudio2_t *handle, const void *buf, size_t bytes_) { - unsigned bytes = bytes_; - const uint8_t *buffer = (const uint8_t*)buf; - while (bytes) - { - unsigned need = min(bytes, handle->bufsize - handle->bufptr); - memcpy(handle->buf + handle->write_buffer * handle->bufsize + handle->bufptr, - buffer, need); + unsigned bytes = bytes_; + const uint8_t *buffer = (const uint8_t*)buf; + while (bytes) + { + unsigned need = min(bytes, handle->bufsize - handle->bufptr); + memcpy(handle->buf + handle->write_buffer * handle->bufsize + handle->bufptr, + buffer, need); - handle->bufptr += need; - buffer += need; - bytes -= need; + handle->bufptr += need; + buffer += need; + bytes -= need; - if (handle->bufptr == handle->bufsize) - { - while (handle->buffers == MAX_BUFFERS - 1) - WaitForSingleObject(handle->hEvent, INFINITE); + if (handle->bufptr == handle->bufsize) + { + while (handle->buffers == MAX_BUFFERS - 1) + WaitForSingleObject(handle->hEvent, INFINITE); - XAUDIO2_BUFFER xa2buffer = {0}; - xa2buffer.AudioBytes = handle->bufsize; - xa2buffer.pAudioData = handle->buf + handle->write_buffer * handle->bufsize; + XAUDIO2_BUFFER xa2buffer = {0}; + xa2buffer.AudioBytes = handle->bufsize; + xa2buffer.pAudioData = handle->buf + handle->write_buffer * handle->bufsize; - if (FAILED(IXAudio2SourceVoice_SubmitSourceBuffer(handle->pSourceVoice, &xa2buffer, NULL))) - return 0; + if (FAILED(IXAudio2SourceVoice_SubmitSourceBuffer(handle->pSourceVoice, &xa2buffer, NULL))) + return 0; - InterlockedIncrement(&handle->buffers); - handle->bufptr = 0; - handle->write_buffer = (handle->write_buffer + 1) & MAX_BUFFERS_MASK; - } - } + InterlockedIncrement(&handle->buffers); + handle->bufptr = 0; + handle->write_buffer = (handle->write_buffer + 1) & MAX_BUFFERS_MASK; + } + } - return bytes_; + return bytes_; } void xaudio2_free(xaudio2_t *handle) { - if (handle) - { - if (handle->pSourceVoice) - { - IXAudio2SourceVoice_Stop(handle->pSourceVoice, 0, XAUDIO2_COMMIT_NOW); - IXAudio2SourceVoice_DestroyVoice(handle->pSourceVoice); - } + if (handle) + { + if (handle->pSourceVoice) + { + IXAudio2SourceVoice_Stop(handle->pSourceVoice, 0, XAUDIO2_COMMIT_NOW); + IXAudio2SourceVoice_DestroyVoice(handle->pSourceVoice); + } - if (handle->pMasterVoice) - IXAudio2MasteringVoice_DestroyVoice(handle->pMasterVoice); + if (handle->pMasterVoice) + IXAudio2MasteringVoice_DestroyVoice(handle->pMasterVoice); - if (handle->pXAudio2) - IXAudio2_Release(handle->pXAudio2); + if (handle->pXAudio2) + IXAudio2_Release(handle->pXAudio2); - if (handle->hEvent) - CloseHandle(handle->hEvent); + if (handle->hEvent) + CloseHandle(handle->hEvent); - free(handle->buf); - free(handle); - } + free(handle->buf); +#ifdef _XBOX + delete(handle); +#else + free(handle); +#endif + } } diff --git a/audio/xaudio-c/xaudio-xdk360.cpp b/audio/xaudio-c/xaudio-xdk360.cpp deleted file mode 100644 index 2a4ab003f0..0000000000 --- a/audio/xaudio-c/xaudio-xdk360.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2013 - Hans-Kristian Arntzen - * Copyright (C) 2011-2013 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include -#include -#include "xaudio-xdk360.h" -#include "xaudio-c.h" - -#define MAX_BUFFERS 16 -#define MAX_BUFFERS_MASK 15 - -struct xaudio2 : public IXAudio2VoiceCallback -{ - xaudio2() : - buf(0), pXAudio2(0), pMasteringVoice(0), - pSourceVoice(0), nonblock(false), bufsize(0), - bufptr(0), write_buffer(0), buffers(0), hEvent(0) - {} - - ~xaudio2() - { - if (pSourceVoice) - { - pSourceVoice->Stop(0, XAUDIO2_COMMIT_NOW); - pSourceVoice->DestroyVoice(); - } - - if (pMasteringVoice) - pMasteringVoice->DestroyVoice(); - - if (pXAudio2) - pXAudio2->Release(); - - if (hEvent) - CloseHandle(hEvent); - - free(buf); - } - - STDMETHOD_(void, OnBufferStart) (void *) {} - STDMETHOD_(void, OnBufferEnd) (void *) - { - InterlockedDecrement(&buffers); - SetEvent(hEvent); - } - STDMETHOD_(void, OnLoopEnd) (void *) {} - STDMETHOD_(void, OnStreamEnd) () {} - STDMETHOD_(void, OnVoiceError) (void *, HRESULT) {} - STDMETHOD_(void, OnVoiceProcessingPassEnd) () {} - STDMETHOD_(void, OnVoiceProcessingPassStart) (UINT32) {} - - uint8_t *buf; - IXAudio2 *pXAudio2; - IXAudio2MasteringVoice *pMasteringVoice; - IXAudio2SourceVoice *pSourceVoice; - bool nonblock; - unsigned bufsize; - unsigned bufptr; - unsigned write_buffer; - volatile long buffers; - HANDLE hEvent; -}; - -void xaudio2_enumerate_devices(xaudio2_t *xa) -{ - (void)xa; -} - -xaudio2_t *xaudio2_new(unsigned samplerate, unsigned channels, - size_t size, unsigned device) -{ - (void)device; - WAVEFORMATEX wfx = {0}; - xaudio2 *handle = new xaudio2; - if (!handle) - return NULL; - - if (FAILED(XAudio2Create(&handle->pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR))) - goto error; - - if (FAILED(handle->pXAudio2->CreateMasteringVoice(&handle->pMasteringVoice, channels, - samplerate, 0, 0, NULL))) - goto error; - - wfx.wFormatTag = WAVE_FORMAT_PCM; - wfx.nChannels = channels; - wfx.nSamplesPerSec = samplerate; - wfx.nBlockAlign = channels * sizeof(int16_t); - wfx.wBitsPerSample = sizeof(int16_t) * 8; - wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign; - wfx.cbSize = 0; - - if (FAILED(handle->pXAudio2->CreateSourceVoice(&handle->pSourceVoice, &wfx, - XAUDIO2_VOICE_NOSRC, XAUDIO2_DEFAULT_FREQ_RATIO, handle, 0, 0))) - goto error; - - handle->hEvent = CreateEvent(0, FALSE, FALSE, 0); - - handle->bufsize = size / MAX_BUFFERS; - handle->buf = (uint8_t*)calloc(1, handle->bufsize * MAX_BUFFERS); - memset(handle->buf, 0, handle->bufsize * MAX_BUFFERS); - - if (FAILED(handle->pSourceVoice->Start(0, XAUDIO2_COMMIT_NOW))) - goto error; - - return handle; - -error: - RARCH_ERR("Failed to init XAudio2 (for Xbox 360).\n"); - delete handle; - return NULL; -} - -size_t xaudio2_write_avail(xaudio2_t *handle) -{ - return handle->bufsize * (MAX_BUFFERS - handle->buffers - 1); -} - -// It's really 16-bit, but we have to byteswap. -size_t xaudio2_write(xaudio2_t *handle, const void *buf, size_t bytes_) -{ - unsigned bytes = bytes_; - const uint8_t *buffer = (const uint8_t*)buf; - while (bytes) - { - unsigned need = min(bytes, handle->bufsize - handle->bufptr); - memcpy(handle->buf + handle->write_buffer * handle->bufsize + handle->bufptr, - buffer, need); - - handle->bufptr += need; - buffer += need; - bytes -= need; - - if (handle->bufptr == handle->bufsize) - { - while (handle->buffers == MAX_BUFFERS - 1) - WaitForSingleObject(handle->hEvent, INFINITE); - - XAUDIO2_BUFFER xa2buffer = {0}; - xa2buffer.AudioBytes = handle->bufsize; - xa2buffer.pAudioData = handle->buf + handle->write_buffer * handle->bufsize; - - if (FAILED(handle->pSourceVoice->SubmitSourceBuffer(&xa2buffer, NULL))) - return 0; - - InterlockedIncrement(&handle->buffers); - handle->bufptr = 0; - handle->write_buffer = (handle->write_buffer + 1) & MAX_BUFFERS_MASK; - } - } - - return bytes_; -} - -void xaudio2_free(xaudio2_t *handle) -{ - xaudio2 *xa = (xaudio2*)handle; - if (xa) - delete xa; -} diff --git a/audio/xaudio-c/xaudio-xdk360.h b/audio/xaudio-c/xaudio-xdk360.h index 4e56f554c4..0aaf6db2ca 100644 --- a/audio/xaudio-c/xaudio-xdk360.h +++ b/audio/xaudio-c/xaudio-xdk360.h @@ -236,18 +236,14 @@ DECLARE_INTERFACE_(IXAudio2, IUnknown) }; // C++ hooks. -#define IXAudio2_Initialize(This,Flags,XAudio2Processor) ((This)->lpVtbl->Initialize(This,Flags,XAudio2Processor)) -#define IXAudio2_Release(This) ((This)->lpVtbl->Release(This)) -#define IXAudio2_CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) ((This)->lpVtbl->CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain)) -#define IXAudio2_CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain) ((This)->lpVtbl->CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain)) -#define IXAudio2_GetDeviceCount(This,puCount) ((This)->lpVtbl->GetDeviceCount(This,puCount)) -#define IXAudio2_GetDeviceDetails(This,Index,pDeviceDetails) ((This)->lpVtbl->GetDeviceDetails(This,Index,pDeviceDetails)) - -#define IXAudio2SourceVoice_Start(This,Flags,OperationSet) ((This)->lpVtbl->Start(This,Flags,OperationSet)) -#define IXAudio2SourceVoice_Stop(This,Flags,OperationSet) ((This)->lpVtbl->Stop(This,Flags,OperationSet)) -#define IXAudio2SourceVoice_SubmitSourceBuffer(This,pBuffer,pBufferWMA) ((This)->lpVtbl->SubmitSourceBuffer(This,pBuffer,pBufferWMA)) -#define IXAudio2SourceVoice_DestroyVoice IXAudio2Voice_DestroyVoice -#define IXAudio2MasteringVoice_DestroyVoice IXAudio2Voice_DestroyVoice +#define IXAudio2SourceVoice_SubmitSourceBuffer(handle, a, b) handle->SubmitSourceBuffer(a, b) +#define IXAudio2SourceVoice_Stop(handle, a, b) handle->Stop(a, b) +#define IXAudio2SourceVoice_DestroyVoice(handle) handle->DestroyVoice() +#define IXAudio2MasteringVoice_DestroyVoice(handle) handle->DestroyVoice() +#define IXAudio2_Release(handle) handle->Release() +#define IXAudio2_CreateSourceVoice(handle, a, b, c, d, e, f, g) handle->CreateSourceVoice(a, b, c, d, e, f, g) +#define IXAudio2_CreateMasteringVoice(handle, a, b, c, d, e, f) handle->CreateMasteringVoice(a, b, c, d, e, f) +#define IXAudio2SourceVoice_Start(handle, a, b) handle->Start(a, b) STDAPI XAudio2Create(__deref_out IXAudio2** ppXAudio2, UINT32 Flags X2DEFAULT(0), XAUDIO2_PROCESSOR XAudio2Processor X2DEFAULT(XAUDIO2_DEFAULT_PROCESSOR)); diff --git a/audio/xaudio-c/xaudio.h b/audio/xaudio-c/xaudio.h index 64a5dd9360..e79706c643 100644 --- a/audio/xaudio-c/xaudio.h +++ b/audio/xaudio-c/xaudio.h @@ -215,7 +215,7 @@ DECLARE_INTERFACE_(IXAudio2, IUnknown) #define IXAudio2SourceVoice_DestroyVoice(THIS) (THIS)->lpVtbl->DestroyVoice(THIS) #define IXAudio2MasteringVoice_DestroyVoice(THIS) (THIS)->lpVtbl->DestroyVoice(THIS) -static inline HRESULT XAudio2Create(IXAudio2 **ppXAudio2) +static inline HRESULT XAudio2Create(IXAudio2 **ppXAudio2, int, int) { IXAudio2 *pXAudio2; diff --git a/console/griffin/griffin.c b/console/griffin/griffin.c index 33e7678ea4..c6bcde0108 100644 --- a/console/griffin/griffin.c +++ b/console/griffin/griffin.c @@ -298,13 +298,8 @@ AUDIO #ifdef HAVE_XAUDIO #include "../../audio/xaudio.c" - -#ifdef _XBOX -#include "../../audio/xaudio-c/xaudio-xdk360.cpp" -#else #include "../../audio/xaudio-c/xaudio-c.c" #endif -#endif #ifdef HAVE_DSOUND #include "../../audio/dsound.c"