2 SDL - Simple DirectMedia Layer
3 Copyright (C) 1997-2009 Sam Lantinga
5 This library is SDL_free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 #include "SDL_config.h"
24 #ifndef _SDL_sysaudio_h
25 #define _SDL_sysaudio_h
27 #include "SDL_mutex.h"
28 #include "SDL_thread.h"
30 /* The SDL audio driver */
31 typedef struct SDL_AudioDevice SDL_AudioDevice
;
33 /* Define the SDL audio driver structure */
34 #define _THIS SDL_AudioDevice *_this
36 #define _STATUS SDL_status *status
38 struct SDL_AudioDevice
{
40 /* The name of this audio driver */
44 /* The description of this audio driver */
48 /* Public driver functions */
49 int (*OpenAudio
)(_THIS
, SDL_AudioSpec
*spec
);
50 void (*ThreadInit
)(_THIS
); /* Called by audio thread at start */
51 void (*WaitAudio
)(_THIS
);
52 void (*PlayAudio
)(_THIS
);
53 Uint8
*(*GetAudioBuf
)(_THIS
);
54 void (*WaitDone
)(_THIS
);
55 void (*CloseAudio
)(_THIS
);
58 /* Lock / Unlock functions added for the Mac port */
59 void (*LockAudio
)(_THIS
);
60 void (*UnlockAudio
)(_THIS
);
63 /* Data common to all devices */
65 /* The current audio specification (shared with audio thread) */
68 /* An audio conversion block for audio format emulation */
71 /* Current state flags */
76 /* Fake audio buffer for when the audio hardware is busy */
79 /* A semaphore for locking the mixing buffers */
80 SDL_mutex
*mixer_lock
;
82 /* A thread to feed the audio device */
87 /* Data private to this driver */
88 struct SDL_PrivateAudioData
*hidden
;
91 /* The function used to dispose of this structure */
96 typedef struct AudioBootStrap
{
99 int (*available
)(void);
100 SDL_AudioDevice
*(*create
)(int devindex
);
103 #if SDL_AUDIO_DRIVER_BSD
104 extern AudioBootStrap BSD_AUDIO_bootstrap
;
106 #if SDL_AUDIO_DRIVER_PULSE
107 extern AudioBootStrap PULSE_bootstrap
;
109 #if SDL_AUDIO_DRIVER_ALSA
110 extern AudioBootStrap ALSA_bootstrap
;
112 #if SDL_AUDIO_DRIVER_OSS
113 extern AudioBootStrap DSP_bootstrap
;
114 extern AudioBootStrap DMA_bootstrap
;
116 #if SDL_AUDIO_DRIVER_QNXNTO
117 extern AudioBootStrap QNXNTOAUDIO_bootstrap
;
119 #if SDL_AUDIO_DRIVER_SUNAUDIO
120 extern AudioBootStrap SUNAUDIO_bootstrap
;
122 #if SDL_AUDIO_DRIVER_DMEDIA
123 extern AudioBootStrap DMEDIA_bootstrap
;
125 #if SDL_AUDIO_DRIVER_ARTS
126 extern AudioBootStrap ARTS_bootstrap
;
128 #if SDL_AUDIO_DRIVER_ESD
129 extern AudioBootStrap ESD_bootstrap
;
131 #if SDL_AUDIO_DRIVER_NAS
132 extern AudioBootStrap NAS_bootstrap
;
134 #if SDL_AUDIO_DRIVER_DSOUND
135 extern AudioBootStrap DSOUND_bootstrap
;
137 #if SDL_AUDIO_DRIVER_WAVEOUT
138 extern AudioBootStrap WAVEOUT_bootstrap
;
140 #if SDL_AUDIO_DRIVER_PAUD
141 extern AudioBootStrap Paud_bootstrap
;
143 #if SDL_AUDIO_DRIVER_BAUDIO
144 extern AudioBootStrap BAUDIO_bootstrap
;
146 #if SDL_AUDIO_DRIVER_COREAUDIO
147 extern AudioBootStrap COREAUDIO_bootstrap
;
149 #if SDL_AUDIO_DRIVER_SNDMGR
150 extern AudioBootStrap SNDMGR_bootstrap
;
152 #if SDL_AUDIO_DRIVER_MINT
153 extern AudioBootStrap MINTAUDIO_GSXB_bootstrap
;
154 extern AudioBootStrap MINTAUDIO_MCSN_bootstrap
;
155 extern AudioBootStrap MINTAUDIO_STFA_bootstrap
;
156 extern AudioBootStrap MINTAUDIO_XBIOS_bootstrap
;
157 extern AudioBootStrap MINTAUDIO_DMA8_bootstrap
;
159 #if SDL_AUDIO_DRIVER_DISK
160 extern AudioBootStrap DISKAUD_bootstrap
;
162 #if SDL_AUDIO_DRIVER_DUMMY
163 extern AudioBootStrap DUMMYAUD_bootstrap
;
165 #if SDL_AUDIO_DRIVER_DC
166 extern AudioBootStrap DCAUD_bootstrap
;
168 #if SDL_AUDIO_DRIVER_NDS
169 extern AudioBootStrap NDSAUD_bootstrap
;
171 #if SDL_AUDIO_DRIVER_MMEAUDIO
172 extern AudioBootStrap MMEAUDIO_bootstrap
;
174 #if SDL_AUDIO_DRIVER_DART
175 extern AudioBootStrap DART_bootstrap
;
177 #if SDL_AUDIO_DRIVER_EPOCAUDIO
178 extern AudioBootStrap EPOCAudio_bootstrap
;
180 #if SDL_AUDIO_DRIVER_AHI
181 extern AudioBootStrap AHI_bootstrap
;
184 /* This is the current audio device */
185 extern SDL_AudioDevice
*current_audio
;
187 #endif /* _SDL_sysaudio_h */