/
SDL_sysaudio.h
177 lines (153 loc) · 4.52 KB
1
2
/*
SDL - Simple DirectMedia Layer
3
Copyright (C) 1997-2006 Sam Lantinga
4
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.
9
10
11
12
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
13
Lesser General Public License for more details.
14
15
16
17
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
18
19
Sam Lantinga
20
slouken@libsdl.org
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
*/
#ifndef _SDL_sysaudio_h
#define _SDL_sysaudio_h
#include "SDL_mutex.h"
#include "SDL_thread.h"
/* The SDL audio driver */
typedef struct SDL_AudioDevice SDL_AudioDevice;
/* Define the SDL audio driver structure */
#define _THIS SDL_AudioDevice *_this
#ifndef _STATUS
#define _STATUS SDL_status *status
#endif
struct SDL_AudioDevice {
/* * * */
/* The name of this audio driver */
const char *name;
/* * * */
/* The description of this audio driver */
const char *desc;
/* * * */
/* Public driver functions */
int (*OpenAudio)(_THIS, SDL_AudioSpec *spec);
void (*ThreadInit)(_THIS); /* Called by audio thread at start */
void (*WaitAudio)(_THIS);
void (*PlayAudio)(_THIS);
Uint8 *(*GetAudioBuf)(_THIS);
void (*WaitDone)(_THIS);
void (*CloseAudio)(_THIS);
/* * * */
57
58
59
60
61
/* Lock / Unlock functions added for the Mac port */
void (*LockAudio)(_THIS);
void (*UnlockAudio)(_THIS);
/* * * */
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/* Data common to all devices */
/* The current audio specification (shared with audio thread) */
SDL_AudioSpec spec;
/* An audio conversion block for audio format emulation */
SDL_AudioCVT convert;
/* Current state flags */
int enabled;
int paused;
int opened;
/* Fake audio buffer for when the audio hardware is busy */
Uint8 *fake_stream;
/* A semaphore for locking the mixing buffers */
SDL_mutex *mixer_lock;
/* A thread to feed the audio device */
SDL_Thread *thread;
Uint32 threadid;
/* * * */
/* Data private to this driver */
struct SDL_PrivateAudioData *hidden;
/* * * */
/* The function used to dispose of this structure */
void (*free)(_THIS);
};
#undef _THIS
typedef struct AudioBootStrap {
const char *name;
const char *desc;
int (*available)(void);
SDL_AudioDevice *(*create)(int devindex);
} AudioBootStrap;
102
#if SDL_AUDIO_DRIVER_OPENBSD
103
extern AudioBootStrap OPENBSD_AUDIO_bootstrap;
104
#endif
105
#if SDL_AUDIO_DRIVER_OSS
106
107
108
extern AudioBootStrap DSP_bootstrap;
extern AudioBootStrap DMA_bootstrap;
#endif
109
#if SDL_AUDIO_DRIVER_ALSA
110
111
extern AudioBootStrap ALSA_bootstrap;
#endif
112
#if SDL_AUDIO_DRIVER_QNXNTO
113
114
extern AudioBootStrap QNXNTOAUDIO_bootstrap;
#endif
115
#if SDL_AUDIO_DRIVER_SUNAUDIO
116
117
extern AudioBootStrap SUNAUDIO_bootstrap;
#endif
118
#if SDL_AUDIO_DRIVER_DMEDIA
119
extern AudioBootStrap DMEDIA_bootstrap;
120
#endif
121
122
#if SDL_AUDIO_DRIVER_ARTS
extern AudioBootStrap ARTS_bootstrap;
123
#endif
124
#if SDL_AUDIO_DRIVER_ESD
125
126
extern AudioBootStrap ESD_bootstrap;
#endif
127
#if SDL_AUDIO_DRIVER_NAS
128
129
extern AudioBootStrap NAS_bootstrap;
#endif
130
#if SDL_AUDIO_DRIVER_DSOUND
131
132
extern AudioBootStrap DSOUND_bootstrap;
#endif
133
#if SDL_AUDIO_DRIVER_WAVEOUT
134
135
extern AudioBootStrap WAVEOUT_bootstrap;
#endif
136
#if SDL_AUDIO_DRIVER_PAUD
137
138
extern AudioBootStrap Paud_bootstrap;
#endif
139
#if SDL_AUDIO_DRIVER_BAUDIO
140
141
extern AudioBootStrap BAUDIO_bootstrap;
#endif
142
#if SDL_AUDIO_DRIVER_COREAUDIO
143
144
extern AudioBootStrap COREAUDIO_bootstrap;
#endif
145
#if SDL_AUDIO_DRIVER_SNDMGR
146
147
extern AudioBootStrap SNDMGR_bootstrap;
#endif
148
#if SDL_AUDIO_DRIVER_AHI
149
extern AudioBootStrap AHI_bootstrap;
150
#endif
151
#if SDL_AUDIO_DRIVER_MINT
152
153
154
155
156
extern AudioBootStrap MINTAUDIO_GSXB_bootstrap;
extern AudioBootStrap MINTAUDIO_MCSN_bootstrap;
extern AudioBootStrap MINTAUDIO_STFA_bootstrap;
extern AudioBootStrap MINTAUDIO_XBIOS_bootstrap;
extern AudioBootStrap MINTAUDIO_DMA8_bootstrap;
157
#endif
158
#if SDL_AUDIO_DRIVER_DISK
159
160
extern AudioBootStrap DISKAUD_bootstrap;
#endif
161
#if SDL_AUDIO_DRIVER_DC
162
163
extern AudioBootStrap DCAUD_bootstrap;
#endif
164
#if SDL_AUDIO_DRIVER_DRENDERER
165
166
extern AudioBootStrap DRENDERER_bootstrap;
#endif
167
#if SDL_AUDIO_DRIVER_MMEAUDIO
168
169
extern AudioBootStrap MMEAUDIO_bootstrap;
#endif
170
#if SDL_AUDIO_DRIVER_DART
171
172
extern AudioBootStrap DART_bootstrap;
#endif
173
174
175
176
177
/* This is the current audio device */
extern SDL_AudioDevice *current_audio;
#endif /* _SDL_sysaudio_h */