From c4f8b7e44f257703f624131366697f29a96d191e Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Tue, 14 Mar 2006 08:53:33 +0000 Subject: [PATCH] Implemented dummy audio driver. Fixes Bugzilla #161. --- configure.in | 18 ++ include/SDL_config.h | 297 +++++++++++++++++++++++++++---- include/SDL_config.h.in | 1 + include/SDL_config.h.minimal | 4 +- include/SDL_config_amiga.h | 2 + include/SDL_config_dreamcast.h | 1 + include/SDL_config_macos.h | 2 + include/SDL_config_macosx.h | 2 + include/SDL_config_os2.h | 2 + include/SDL_config_win32.h | 2 + src/audio/SDL_audio.c | 3 + src/audio/SDL_sysaudio.h | 3 + src/audio/dummy/.cvsignore | 6 + src/audio/dummy/SDL_dummyaudio.c | 154 ++++++++++++++++ src/audio/dummy/SDL_dummyaudio.h | 39 ++++ 15 files changed, 496 insertions(+), 40 deletions(-) create mode 100644 src/audio/dummy/.cvsignore create mode 100644 src/audio/dummy/SDL_dummyaudio.c create mode 100644 src/audio/dummy/SDL_dummyaudio.h diff --git a/configure.in b/configure.in index 94f503941..f9d65de85 100644 --- a/configure.in +++ b/configure.in @@ -533,6 +533,18 @@ AC_HELP_STRING([--enable-diskaudio], [support the disk writer audio driver [defa fi } +dnl rcg03142006 See if the user wants the dummy audio driver... +CheckDummyAudio() +{ + AC_ARG_ENABLE(dummyaudio, +AC_HELP_STRING([--enable-dummyaudio], [support the dummy audio driver [default=yes]]), + , enable_dummyaudio=yes) + if test x$enable_audio = xyes -a x$enable_dummyaudio = xyes; then + AC_DEFINE(SDL_AUDIO_DRIVER_DUMMY) + SOURCES="$SOURCES $srcdir/src/audio/dummy/*.c" + fi +} + dnl Set up the Atari Audio driver CheckAtariAudio() { @@ -1915,6 +1927,7 @@ case "$target" in esac CheckDummyVideo CheckDiskAudio + CheckDummyAudio CheckDLOPEN CheckNASM CheckAltivec @@ -2029,6 +2042,7 @@ case "$target" in ARCH=qnx CheckDummyVideo CheckDiskAudio + CheckDummyAudio # CheckNASM CheckDLOPEN CheckNAS @@ -2069,6 +2083,7 @@ case "$target" in fi CheckDummyVideo CheckDiskAudio + CheckDummyAudio CheckWIN32 CheckWIN32GL CheckDIRECTX @@ -2131,6 +2146,7 @@ case "$target" in ac_default_prefix=/boot/develop/tools/gnupro CheckDummyVideo CheckDiskAudio + CheckDummyAudio CheckNASM CheckBWINDOW CheckBeGL @@ -2183,6 +2199,7 @@ case "$target" in ARCH=macosx CheckDummyVideo CheckDiskAudio + CheckDummyAudio CheckDLOPEN CheckCOCOA CheckCARBON @@ -2249,6 +2266,7 @@ case "$target" in ARCH=mint CheckDummyVideo CheckDiskAudio + CheckDummyAudio CheckAtariBiosEvent CheckAtariXbiosVideo CheckAtariGemVideo diff --git a/include/SDL_config.h b/include/SDL_config.h index 67240c4e6..5c310682e 100644 --- a/include/SDL_config.h +++ b/include/SDL_config.h @@ -1,3 +1,4 @@ +/* include/SDL_config.h. Generated by configure. */ /* SDL - Simple DirectMedia Layer Copyright (C) 1997-2006 Sam Lantinga @@ -23,56 +24,276 @@ #ifndef _SDL_config_h #define _SDL_config_h +/* This is a set of defines to configure the SDL features */ + +/* General platform specific identifiers */ #include "SDL_platform.h" -/* Add any platform that doesn't build using the configure system */ -#if defined(__AMIGA__) -#include "SDL_config_amiga.h" -#elif defined(__DREAMCAST__) -#include "SDL_config_dreamcast.h" -#elif defined(__MACOS__) -#include "SDL_config_macos.h" -#elif defined(__MACOSX__) -#include "SDL_config_macosx.h" -#elif defined(__WIN32__) -#include "SDL_config_win32.h" -#elif defined(__OS2__) -#include "SDL_config_os2.h" -#else -/* This is the minimal configuration that can be used to build SDL */ +/* C language features */ +/* #undef const */ +/* #undef inline */ +/* #undef volatile */ + +/* C datatypes */ +/* #undef size_t */ +/* #undef int8_t */ +/* #undef uint8_t */ +/* #undef int16_t */ +/* #undef uint16_t */ +/* #undef int32_t */ +/* #undef uint32_t */ +/* #undef int64_t */ +/* #undef uint64_t */ +/* #undef uintptr_t */ +#define SDL_HAS_64BIT_TYPE 1 + +/* Endianness */ +#define SDL_BYTEORDER 1234 + +/* Comment this if you want to build without any C library requirements */ +#define HAVE_LIBC 1 +#if HAVE_LIBC +/* Useful headers */ +#define HAVE_ALLOCA_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_STDIO_H 1 +#define STDC_HEADERS 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STDARG_H 1 +#define HAVE_MALLOC_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRING_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_MATH_H 1 +#define HAVE_ICONV_H 1 +#define HAVE_SIGNAL_H 1 +/* #undef HAVE_ALTIVEC_H */ + +/* C library functions */ +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#ifndef _WIN32 /* Don't use C runtime versions of these on Windows */ +#define HAVE_GETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#endif +#define HAVE_QSORT 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +/* #undef HAVE_STRLCPY */ +/* #undef HAVE_STRLCAT */ +#define HAVE_STRDUP 1 +/* #undef HAVE__STRREV */ +/* #undef HAVE__STRUPR */ +/* #undef HAVE__STRLWR */ +/* #undef HAVE_INDEX */ +/* #undef HAVE_RINDEX */ +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +/* #undef HAVE_ITOA */ +/* #undef HAVE__LTOA */ +/* #undef HAVE__UITOA */ +/* #undef HAVE__ULTOA */ +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +/* #undef HAVE__I64TOA */ +/* #undef HAVE__UI64TOA */ +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +/* #undef HAVE__STRICMP */ +#define HAVE_STRCASECMP 1 +/* #undef HAVE__STRNICMP */ +#define HAVE_STRNCASECMP 1 +#define HAVE_SSCANF 1 +#define HAVE_SNPRINTF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_ICONV 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +/* #undef HAVE_CLOCK_GETTIME */ +#define HAVE_DLVSYM 1 + +#else +/* We may need some replacement for stdarg.h here */ #include +#endif /* HAVE_LIBC */ + +/* Allow disabling of core subsystems */ +/* #undef SDL_AUDIO_DISABLED */ +/* #undef SDL_CDROM_DISABLED */ +/* #undef SDL_CPUINFO_DISABLED */ +/* #undef SDL_EVENTS_DISABLED */ +/* #undef SDL_FILE_DISABLED */ +/* #undef SDL_JOYSTICK_DISABLED */ +/* #undef SDL_LOADSO_DISABLED */ +/* #undef SDL_THREADS_DISABLED */ +/* #undef SDL_TIMERS_DISABLED */ +/* #undef SDL_VIDEO_DISABLED */ -typedef signed char int8_t; -typedef unsigned char uint8_t; -typedef signed short int16_t; -typedef unsigned short uint16_t; -typedef signed int int32_t; -typedef unsigned int uint32_t; -typedef unsigned int size_t; -typedef unsigned long uintptr_t; +/* Enable various audio drivers */ +/* #undef SDL_AUDIO_DRIVER_AHI */ +#define SDL_AUDIO_DRIVER_ALSA 1 +#define SDL_AUDIO_DRIVER_ALSA_DYNAMIC "libasound.so.2" +/* #undef SDL_AUDIO_DRIVER_ARTS */ +/* #undef SDL_AUDIO_DRIVER_ARTS_DYNAMIC */ +/* #undef SDL_AUDIO_DRIVER_BAUDIO */ +/* #undef SDL_AUDIO_DRIVER_COREAUDIO */ +/* #undef SDL_AUDIO_DRIVER_DART */ +/* #undef SDL_AUDIO_DRIVER_DC */ +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 +/* #undef SDL_AUDIO_DRIVER_DMEDIA */ +/* #undef SDL_AUDIO_DRIVER_DSOUND */ +/* #undef SDL_AUDIO_DRIVER_ESD */ +/* #undef SDL_AUDIO_DRIVER_ESD_DYNAMIC */ +/* #undef SDL_AUDIO_DRIVER_MINT */ +/* #undef SDL_AUDIO_DRIVER_MMEAUDIO */ +/* #undef SDL_AUDIO_DRIVER_NAS */ +/* #undef SDL_AUDIO_DRIVER_OPENBSD */ +#define SDL_AUDIO_DRIVER_OSS 1 +/* #undef SDL_AUDIO_DRIVER_OSS_SOUNDCARD_H */ +/* #undef SDL_AUDIO_DRIVER_PAUD */ +/* #undef SDL_AUDIO_DRIVER_QNXNTO */ +/* #undef SDL_AUDIO_DRIVER_SNDMGR */ +/* #undef SDL_AUDIO_DRIVER_SUNAUDIO */ +/* #undef SDL_AUDIO_DRIVER_WAVEOUT */ -/* Enable the disk audio driver (src/audio/disk/\*.c) */ -#define SDL_AUDIO_DRIVER_DISK 1 +/* Enable various cdrom drivers */ +/* #undef SDL_CDROM_AIX */ +/* #undef SDL_CDROM_BEOS */ +/* #undef SDL_CDROM_BSDI */ +/* #undef SDL_CDROM_DC */ +/* #undef SDL_CDROM_DUMMY */ +/* #undef SDL_CDROM_FREEBSD */ +#define SDL_CDROM_LINUX 1 +/* #undef SDL_CDROM_MACOS */ +/* #undef SDL_CDROM_MACOSX */ +/* #undef SDL_CDROM_MINT */ +/* #undef SDL_CDROM_OPENBSD */ +/* #undef SDL_CDROM_OS2 */ +/* #undef SDL_CDROM_OSF */ +/* #undef SDL_CDROM_QNX */ +/* #undef SDL_CDROM_WIN32 */ -/* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */ -#define SDL_CDROM_DISABLED 1 +/* Enable various input drivers */ +/* #undef SDL_INPUT_TSLIB */ +/* #undef SDL_JOYSTICK_AMIGA */ +/* #undef SDL_JOYSTICK_BEOS */ +/* #undef SDL_JOYSTICK_DC */ +/* #undef SDL_JOYSTICK_DUMMY */ +/* #undef SDL_JOYSTICK_IOKIT */ +#define SDL_JOYSTICK_LINUX 1 +/* #undef SDL_JOYSTICK_LINUXEV */ +/* #undef SDL_JOYSTICK_MACOS */ +/* #undef SDL_JOYSTICK_MINT */ +/* #undef SDL_JOYSTICK_OS2 */ +/* #undef SDL_JOYSTICK_RISCOS */ +/* #undef SDL_JOYSTICK_WINMM */ +/* #undef SDL_JOYSTICK_USBHID */ -/* Enable the stub joystick driver (src/joystick/dummy/\*.c) */ -#define SDL_JOYSTICK_DISABLED 1 +/* Enable various shared object loading systems */ +/* #undef SDL_LOADSO_BEOS */ +/* #undef SDL_LOADSO_DLCOMPAT */ +#define SDL_LOADSO_DLOPEN 1 +/* #undef SDL_LOADSO_LDG */ +/* #undef SDL_LOADSO_MACOS */ +/* #undef SDL_LOADSO_OS2 */ +/* #undef SDL_LOADSO_WIN32 */ -/* Enable the stub shared object loader (src/loadso/dummy/\*.c) */ -#define SDL_LOADSO_DISABLED 1 +/* Enable various threading systems */ +/* #undef SDL_THREAD_AMIGA */ +/* #undef SDL_THREAD_BEOS */ +/* #undef SDL_THREAD_DC */ +/* #undef SDL_THREAD_EPOC */ +/* #undef SDL_THREAD_OS2 */ +/* #undef SDL_THREAD_PTH */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 +/* #undef SDL_THREAD_PTHREAD_RECURSIVE_MUTEX_NP */ +/* #undef SDL_THREAD_SPROC */ +/* #undef SDL_THREAD_WIN32 */ -/* Enable the stub thread support (src/thread/generic/\*.c) */ -#define SDL_THREADS_DISABLED 1 +/* Enable various timer systems */ +/* #undef SDL_TIMER_AMIGA */ +/* #undef SDL_TIMER_BEOS */ +/* #undef SDL_TIMER_DC */ +/* #undef SDL_TIMER_EPOC */ +/* #undef SDL_TIMER_MACOS */ +/* #undef SDL_TIMER_MINT */ +/* #undef SDL_TIMER_OS2 */ +/* #undef SDL_TIMER_RISCOS */ +#define SDL_TIMER_UNIX 1 +/* #undef SDL_TIMER_WIN32 */ +/* #undef SDL_TIMER_WINCE */ -/* Enable the stub timer support (src/timer/dummy/\*.c) */ -#define SDL_TIMERS_DISABLED 1 +/* Enable various video drivers */ +/* #undef SDL_VIDEO_DRIVER_AALIB */ +/* #undef SDL_VIDEO_DRIVER_BWINDOW */ +/* #undef SDL_VIDEO_DRIVER_CYBERGRAPHICS */ +/* #undef SDL_VIDEO_DRIVER_DC */ +/* #undef SDL_VIDEO_DRIVER_DDRAW */ +#define SDL_VIDEO_DRIVER_DGA 1 +/* #undef SDL_VIDEO_DRIVER_DIRECTFB */ +/* #undef SDL_VIDEO_DRIVER_DRAWSPROCKET */ +#define SDL_VIDEO_DRIVER_DUMMY 1 +/* #undef SDL_VIDEO_DRIVER_EPOC */ +#define SDL_VIDEO_DRIVER_FBCON 1 +/* #undef SDL_VIDEO_DRIVER_GAPI */ +/* #undef SDL_VIDEO_DRIVER_GEM */ +/* #undef SDL_VIDEO_DRIVER_GGI */ +/* #undef SDL_VIDEO_DRIVER_IPOD */ +/* #undef SDL_VIDEO_DRIVER_NANOX */ +/* #undef SDL_VIDEO_DRIVER_OS2FS */ +/* #undef SDL_VIDEO_DRIVER_PHOTON */ +/* #undef SDL_VIDEO_DRIVER_PICOGUI */ +/* #undef SDL_VIDEO_DRIVER_PS2GS */ +/* #undef SDL_VIDEO_DRIVER_QTOPIA */ +/* #undef SDL_VIDEO_DRIVER_QUARTZ */ +/* #undef SDL_VIDEO_DRIVER_RISCOS */ +/* #undef SDL_VIDEO_DRIVER_SVGALIB */ +/* #undef SDL_VIDEO_DRIVER_TOOLBOX */ +/* #undef SDL_VIDEO_DRIVER_VGL */ +/* #undef SDL_VIDEO_DRIVER_WINDIB */ +/* #undef SDL_VIDEO_DRIVER_WSCONS */ +#define SDL_VIDEO_DRIVER_X11 1 +#define SDL_VIDEO_DRIVER_X11_DGAMOUSE 1 +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC */ +/* #undef SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT */ +#define SDL_VIDEO_DRIVER_X11_VIDMODE 1 +#define SDL_VIDEO_DRIVER_X11_XINERAMA 1 +#define SDL_VIDEO_DRIVER_X11_XME 1 +#define SDL_VIDEO_DRIVER_X11_XV 1 +/* #undef SDL_VIDEO_DRIVER_XBIOS */ -/* Enable the dummy video driver (src/video/dummy/\*.c) */ -#define SDL_VIDEO_DRIVER_DUMMY 1 +/* Enable OpenGL support */ +#define SDL_VIDEO_OPENGL 1 +#define SDL_VIDEO_OPENGL_GLX 1 +/* #undef SDL_VIDEO_OPENGL_WGL */ +/* #undef SDL_VIDEO_OPENGL_OSMESA */ +/* #undef SDL_VIDEO_OPENGL_OSMESA_DYNAMIC */ -#endif /* platform config */ +/* Enable assembly routines */ +#define SDL_ASSEMBLY_ROUTINES 1 +/* #undef SDL_HERMES_BLITTERS */ +/* #undef SDL_ALTIVEC_BLITTERS */ #endif /* _SDL_config_h */ diff --git a/include/SDL_config.h.in b/include/SDL_config.h.in index ed99dcfd2..08a32e63d 100644 --- a/include/SDL_config.h.in +++ b/include/SDL_config.h.in @@ -159,6 +159,7 @@ #undef SDL_AUDIO_DRIVER_DART #undef SDL_AUDIO_DRIVER_DC #undef SDL_AUDIO_DRIVER_DISK +#undef SDL_AUDIO_DRIVER_DUMMY #undef SDL_AUDIO_DRIVER_DMEDIA #undef SDL_AUDIO_DRIVER_DSOUND #undef SDL_AUDIO_DRIVER_ESD diff --git a/include/SDL_config.h.minimal b/include/SDL_config.h.minimal index 67240c4e6..85db0a73b 100644 --- a/include/SDL_config.h.minimal +++ b/include/SDL_config.h.minimal @@ -52,8 +52,8 @@ typedef unsigned int uint32_t; typedef unsigned int size_t; typedef unsigned long uintptr_t; -/* Enable the disk audio driver (src/audio/disk/\*.c) */ -#define SDL_AUDIO_DRIVER_DISK 1 +/* Enable the dummy audio driver (src/audio/dummy/\*.c) */ +#define SDL_AUDIO_DRIVER_DUMMY 1 /* Enable the stub cdrom driver (src/cdrom/dummy/\*.c) */ #define SDL_CDROM_DISABLED 1 diff --git a/include/SDL_config_amiga.h b/include/SDL_config_amiga.h index a8fb46ab4..e8efbc895 100644 --- a/include/SDL_config_amiga.h +++ b/include/SDL_config_amiga.h @@ -50,6 +50,8 @@ /* Enable various audio drivers */ #define SDL_AUDIO_DRIVER_AHI 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 +#define SDL_AUDIO_DRIVER_DISK 1 /* Enable various cdrom drivers */ #define SDL_CDROM_DUMMY 1 diff --git a/include/SDL_config_dreamcast.h b/include/SDL_config_dreamcast.h index efff6b843..744d029bb 100644 --- a/include/SDL_config_dreamcast.h +++ b/include/SDL_config_dreamcast.h @@ -79,6 +79,7 @@ typedef unsigned long uintptr_t; /* Enable various audio drivers */ #define SDL_AUDIO_DRIVER_DC 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 /* Enable various cdrom drivers */ #define SDL_CDROM_DC 1 diff --git a/include/SDL_config_macos.h b/include/SDL_config_macos.h index 25f12610b..d669b8d4c 100644 --- a/include/SDL_config_macos.h +++ b/include/SDL_config_macos.h @@ -67,6 +67,8 @@ typedef unsigned int uintptr_t; /* Enable various audio drivers */ #define SDL_AUDIO_DRIVER_SNDMGR 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 /* Enable various cdrom drivers */ #define SDL_CDROM_MACOS 1 diff --git a/include/SDL_config_macosx.h b/include/SDL_config_macosx.h index 255ab194e..460cc3075 100644 --- a/include/SDL_config_macosx.h +++ b/include/SDL_config_macosx.h @@ -83,6 +83,8 @@ /* Enable various audio drivers */ #define SDL_AUDIO_DRIVER_COREAUDIO 1 #define SDL_AUDIO_DRIVER_SNDMGR 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 /* Enable various cdrom drivers */ #define SDL_CDROM_MACOSX 1 diff --git a/include/SDL_config_os2.h b/include/SDL_config_os2.h index e9e0afe0d..d29235439 100644 --- a/include/SDL_config_os2.h +++ b/include/SDL_config_os2.h @@ -108,6 +108,8 @@ typedef unsigned long long uint64_t; /* Enable various audio drivers */ #define SDL_AUDIO_DRIVER_DART 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 /* Enable various cdrom drivers */ #define SDL_CDROM_OS2 1 diff --git a/include/SDL_config_win32.h b/include/SDL_config_win32.h index 552905084..b1c812154 100644 --- a/include/SDL_config_win32.h +++ b/include/SDL_config_win32.h @@ -115,6 +115,8 @@ typedef unsigned int uintptr_t; #define SDL_AUDIO_DRIVER_DSOUND 1 #endif #define SDL_AUDIO_DRIVER_WAVEOUT 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 /* Enable various cdrom drivers */ #ifdef _WIN32_WCE diff --git a/src/audio/SDL_audio.c b/src/audio/SDL_audio.c index 57c947cf0..56a19aa6d 100644 --- a/src/audio/SDL_audio.c +++ b/src/audio/SDL_audio.c @@ -95,6 +95,9 @@ static AudioBootStrap *bootstrap[] = { #if SDL_AUDIO_DRIVER_DISK &DISKAUD_bootstrap, #endif +#if SDL_AUDIO_DRIVER_DUMMY + &DUMMYAUD_bootstrap, +#endif #if SDL_AUDIO_DRIVER_DC &DCAUD_bootstrap, #endif diff --git a/src/audio/SDL_sysaudio.h b/src/audio/SDL_sysaudio.h index 820dfe766..604ba71c9 100644 --- a/src/audio/SDL_sysaudio.h +++ b/src/audio/SDL_sysaudio.h @@ -159,6 +159,9 @@ extern AudioBootStrap MINTAUDIO_DMA8_bootstrap; #if SDL_AUDIO_DRIVER_DISK extern AudioBootStrap DISKAUD_bootstrap; #endif +#if SDL_AUDIO_DRIVER_DUMMY +extern AudioBootStrap DUMMYAUD_bootstrap; +#endif #if SDL_AUDIO_DRIVER_DC extern AudioBootStrap DCAUD_bootstrap; #endif diff --git a/src/audio/dummy/.cvsignore b/src/audio/dummy/.cvsignore new file mode 100644 index 000000000..899d53557 --- /dev/null +++ b/src/audio/dummy/.cvsignore @@ -0,0 +1,6 @@ +Makefile.in +Makefile +.libs +*.o +*.lo +*.la diff --git a/src/audio/dummy/SDL_dummyaudio.c b/src/audio/dummy/SDL_dummyaudio.c new file mode 100644 index 000000000..240e02a1f --- /dev/null +++ b/src/audio/dummy/SDL_dummyaudio.c @@ -0,0 +1,154 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2006 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org + + This file hacked^H^H^H^H^H^Hwritten by Ryan C. Gordon + (icculus@icculus.org) +*/ +#include "SDL_config.h" + +/* Output raw audio data to a file. */ + +#if HAVE_STDIO_H +#include +#endif + +#include "SDL_rwops.h" +#include "SDL_timer.h" +#include "SDL_audio.h" +#include "../SDL_audiomem.h" +#include "../SDL_audio_c.h" +#include "../SDL_audiodev_c.h" +#include "SDL_dummyaudio.h" + +/* The tag name used by DUMMY audio */ +#define DUMMYAUD_DRIVER_NAME "dummy" + +/* environment variables and defaults. */ +#define DUMMYENVR_WRITEDELAY "SDL_DUMMYAUDIODELAY" +#define DUMMYDEFAULT_WRITEDELAY 150 + +/* Audio driver functions */ +static int DUMMYAUD_OpenAudio(_THIS, SDL_AudioSpec *spec); +static void DUMMYAUD_WaitAudio(_THIS); +static void DUMMYAUD_PlayAudio(_THIS); +static Uint8 *DUMMYAUD_GetAudioBuf(_THIS); +static void DUMMYAUD_CloseAudio(_THIS); + +/* Audio driver bootstrap functions */ +static int DUMMYAUD_Available(void) +{ + const char *envr = SDL_getenv("SDL_AUDIODRIVER"); + if (envr && (SDL_strcmp(envr, DUMMYAUD_DRIVER_NAME) == 0)) { + return(1); + } + return(0); +} + +static void DUMMYAUD_DeleteDevice(SDL_AudioDevice *device) +{ + SDL_free(device->hidden); + SDL_free(device); +} + +static SDL_AudioDevice *DUMMYAUD_CreateDevice(int devindex) +{ + SDL_AudioDevice *this; + const char *envr; + + /* Initialize all variables that we clean on shutdown */ + this = (SDL_AudioDevice *)SDL_malloc(sizeof(SDL_AudioDevice)); + if ( this ) { + SDL_memset(this, 0, (sizeof *this)); + this->hidden = (struct SDL_PrivateAudioData *) + SDL_malloc((sizeof *this->hidden)); + } + if ( (this == NULL) || (this->hidden == NULL) ) { + SDL_OutOfMemory(); + if ( this ) { + SDL_free(this); + } + return(0); + } + SDL_memset(this->hidden, 0, (sizeof *this->hidden)); + + envr = SDL_getenv(DUMMYENVR_WRITEDELAY); + this->hidden->write_delay = (envr) ? SDL_atoi(envr) : DUMMYDEFAULT_WRITEDELAY; + + /* Set the function pointers */ + this->OpenAudio = DUMMYAUD_OpenAudio; + this->WaitAudio = DUMMYAUD_WaitAudio; + this->PlayAudio = DUMMYAUD_PlayAudio; + this->GetAudioBuf = DUMMYAUD_GetAudioBuf; + this->CloseAudio = DUMMYAUD_CloseAudio; + + this->free = DUMMYAUD_DeleteDevice; + + return this; +} + +AudioBootStrap DUMMYAUD_bootstrap = { + DUMMYAUD_DRIVER_NAME, "SDL dummy audio driver", + DUMMYAUD_Available, DUMMYAUD_CreateDevice +}; + +/* This function waits until it is possible to write a full sound buffer */ +static void DUMMYAUD_WaitAudio(_THIS) +{ + SDL_Delay(this->hidden->write_delay); +} + +static void DUMMYAUD_PlayAudio(_THIS) +{ + /* no-op...this is a null driver. */ +} + +static Uint8 *DUMMYAUD_GetAudioBuf(_THIS) +{ + return(this->hidden->mixbuf); +} + +static void DUMMYAUD_CloseAudio(_THIS) +{ + if ( this->hidden->mixbuf != NULL ) { + SDL_FreeAudioMem(this->hidden->mixbuf); + this->hidden->mixbuf = NULL; + } +} + +static int DUMMYAUD_OpenAudio(_THIS, SDL_AudioSpec *spec) +{ +#if HAVE_STDIO_H + fprintf(stderr, "\nWARNING: You are using the SDL dummy audio driver!" + " No sound will be output!\n\n"); +#endif + + /* Allocate mixing buffer */ + this->hidden->mixlen = spec->size; + this->hidden->mixbuf = (Uint8 *) SDL_AllocAudioMem(this->hidden->mixlen); + if ( this->hidden->mixbuf == NULL ) { + return(-1); + } + SDL_memset(this->hidden->mixbuf, spec->silence, spec->size); + + /* We're ready to rock and roll. :-) */ + return(0); +} + diff --git a/src/audio/dummy/SDL_dummyaudio.h b/src/audio/dummy/SDL_dummyaudio.h new file mode 100644 index 000000000..027be208b --- /dev/null +++ b/src/audio/dummy/SDL_dummyaudio.h @@ -0,0 +1,39 @@ +/* + SDL - Simple DirectMedia Layer + Copyright (C) 1997-2006 Sam Lantinga + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Sam Lantinga + slouken@libsdl.org +*/ +#include "SDL_config.h" + +#ifndef _SDL_dummyaudio_h +#define _SDL_dummyaudio_h + +#include "../SDL_sysaudio.h" + +/* Hidden "this" pointer for the video functions */ +#define _THIS SDL_AudioDevice *this + +struct SDL_PrivateAudioData { + /* The file descriptor for the audio device */ + Uint8 *mixbuf; + Uint32 mixlen; + Uint32 write_delay; +}; + +#endif /* _SDL_dummyaudio_h */