Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001  Sam Lantinga
  4.  
  5.     This library is free software; you can redistribute it and/or
  6.     modify it under the terms of the GNU Library General Public
  7.     License as published by the Free Software Foundation; either
  8.     version 2 of the License, or (at your option) any later version.
  9.  
  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.     Library General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU Library General Public
  16.     License along with this library; if not, write to the Free
  17.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18.  
  19.     Sam Lantinga
  20.     slouken@devolution.com
  21. */
  22.  
  23. #ifdef SAVE_RCSID
  24. static char rcsid =
  25.  "@(#) $Id: SDL_sysaudio.h,v 1.8 2001/07/23 02:58:42 slouken Exp $";
  26. #endif
  27.  
  28. #ifndef _SDL_sysaudio_h
  29. #define _SDL_sysaudio_h
  30.  
  31. #include "SDL_mutex.h"
  32. #include "SDL_thread.h"
  33.  
  34. /* The SDL audio driver */
  35. typedef struct SDL_AudioDevice SDL_AudioDevice;
  36.  
  37. /* Define the SDL audio driver structure */
  38. #define _THIS   SDL_AudioDevice *_this
  39. #ifndef _STATUS
  40. #define _STATUS SDL_status *status
  41. #endif
  42. struct SDL_AudioDevice {
  43.         /* * * */
  44.         /* The name of this audio driver */
  45.         const char *name;
  46.  
  47.         /* * * */
  48.         /* The description of this audio driver */
  49.         const char *desc;
  50.  
  51.         /* * * */
  52.         /* Public driver functions */
  53.         int  (*OpenAudio)(_THIS, SDL_AudioSpec *spec);
  54.         void (*ThreadInit)(_THIS);      /* Called by audio thread at start */
  55.         void (*WaitAudio)(_THIS);
  56.         void (*PlayAudio)(_THIS);
  57.         Uint8 *(*GetAudioBuf)(_THIS);
  58.         void (*WaitDone)(_THIS);
  59.         void (*CloseAudio)(_THIS);
  60.  
  61.         /* * * */
  62.         /* Data common to all devices */
  63.  
  64.         /* The current audio specification (shared with audio thread) */
  65.         SDL_AudioSpec spec;
  66.  
  67.         /* An audio conversion block for audio format emulation */
  68.         SDL_AudioCVT convert;
  69.  
  70.         /* Current state flags */
  71.         int enabled;
  72.         int paused;
  73.         int opened;
  74.  
  75.         /* Fake audio buffer for when the audio hardware is busy */
  76.         Uint8 *fake_stream;
  77.  
  78.         /* A semaphore for locking the mixing buffers */
  79.         SDL_mutex *mixer_lock;
  80.  
  81.         /* A thread to feed the audio device */
  82.         SDL_Thread *thread;
  83.         Uint32 threadid;
  84.  
  85.         /* * * */
  86.         /* Data private to this driver */
  87.         struct SDL_PrivateAudioData *hidden;
  88.  
  89.         /* * * */
  90.         /* The function used to dispose of this structure */
  91.         void (*free)(_THIS);
  92. };
  93. #undef _THIS
  94.  
  95. typedef struct AudioBootStrap {
  96.         const char *name;
  97.         const char *desc;
  98.         int (*available)(void);
  99.         SDL_AudioDevice *(*create)(int devindex);
  100. } AudioBootStrap;
  101.  
  102. #ifdef OPENBSD_AUDIO_SUPPORT
  103. extern AudioBootStrap OPENBSD_AUDIO_bootstrap;
  104. #endif
  105. #ifdef OSS_SUPPORT
  106. extern AudioBootStrap DSP_bootstrap;
  107. extern AudioBootStrap DMA_bootstrap;
  108. #endif
  109. #ifdef ALSA_SUPPORT
  110. extern AudioBootStrap ALSA_bootstrap;
  111. #endif
  112. #if (defined(unix) && !defined(__CYGWIN32__)) && \
  113.     !defined(OSS_SUPPORT) && !defined(ALSA_SUPPORT)
  114. extern AudioBootStrap AUDIO_bootstrap;
  115. #endif
  116. #ifdef ARTSC_SUPPORT
  117. extern AudioBootStrap ARTSC_bootstrap;
  118. #endif
  119. #ifdef ESD_SUPPORT
  120. extern AudioBootStrap ESD_bootstrap;
  121. #endif
  122. #ifdef NAS_SUPPORT
  123. extern AudioBootStrap NAS_bootstrap;
  124. #endif
  125. #ifdef ENABLE_DIRECTX
  126. extern AudioBootStrap DSOUND_bootstrap;
  127. #endif
  128. #ifdef ENABLE_WINDIB
  129. extern AudioBootStrap WAVEOUT_bootstrap;
  130. #endif
  131. #ifdef _AIX
  132. extern AudioBootStrap Paud_bootstrap;
  133. #endif
  134. #ifdef __BEOS__
  135. extern AudioBootStrap BAUDIO_bootstrap;
  136. #endif
  137. #if defined(macintosh) || TARGET_API_MAC_CARBON
  138. extern AudioBootStrap SNDMGR_bootstrap;
  139. #endif
  140. #ifdef ENABLE_AHI
  141. extern AudioBootStrap AHI_bootstrap;
  142. #endif
  143. #ifdef DISKAUD_SUPPORT
  144. extern AudioBootStrap DISKAUD_bootstrap;
  145. #endif
  146.  
  147. /* This is the current audio device */
  148. extern SDL_AudioDevice *current_audio;
  149.  
  150. #endif /* _SDL_sysaudio_h */
  151.