SDL_sysaudio.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:4k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

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