SDL  2.0
SDL_sysaudio.h File Reference
#include "../SDL_internal.h"
#include "SDL_mutex.h"
#include "SDL_thread.h"
#include "../SDL_dataqueue.h"
#include "./SDL_audio_c.h"
+ Include dependency graph for SDL_sysaudio.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  SDL_AudioDriverImpl
 
struct  SDL_AudioDeviceItem
 
struct  SDL_AudioDriver
 
struct  SDL_AudioDevice
 
struct  AudioBootStrap
 

Macros

#define DEFAULT_OUTPUT_DEVNAME   "System audio output device"
 
#define DEFAULT_INPUT_DEVNAME   "System audio capture device"
 
#define _THIS   SDL_AudioDevice *_this
 
#define SDL_AUDIOBUFFERQUEUE_PACKETLEN   (8 * 1024)
 

Functions

void SDL_AddAudioDevice (const int iscapture, const char *name, void *handle)
 
void SDL_RemoveAudioDevice (const int iscapture, void *handle)
 
void SDL_OpenedAudioDeviceDisconnected (SDL_AudioDevice *device)
 

Variables

AudioBootStrap PULSEAUDIO_bootstrap
 
AudioBootStrap ALSA_bootstrap
 
AudioBootStrap JACK_bootstrap
 
AudioBootStrap SNDIO_bootstrap
 
AudioBootStrap NETBSDAUDIO_bootstrap
 
AudioBootStrap DSP_bootstrap
 
AudioBootStrap QSAAUDIO_bootstrap
 
AudioBootStrap SUNAUDIO_bootstrap
 
AudioBootStrap ARTS_bootstrap
 
AudioBootStrap ESD_bootstrap
 
AudioBootStrap NACLAUDIO_bootstrap
 
AudioBootStrap NAS_bootstrap
 
AudioBootStrap WASAPI_bootstrap
 
AudioBootStrap XAUDIO2_bootstrap
 
AudioBootStrap DSOUND_bootstrap
 
AudioBootStrap WINMM_bootstrap
 
AudioBootStrap PAUDIO_bootstrap
 
AudioBootStrap HAIKUAUDIO_bootstrap
 
AudioBootStrap COREAUDIO_bootstrap
 
AudioBootStrap DISKAUDIO_bootstrap
 
AudioBootStrap DUMMYAUDIO_bootstrap
 
AudioBootStrap FUSIONSOUND_bootstrap
 
AudioBootStrap ANDROIDAUDIO_bootstrap
 
AudioBootStrap PSPAUDIO_bootstrap
 
AudioBootStrap EMSCRIPTENAUDIO_bootstrap
 

Macro Definition Documentation

◆ _THIS

#define _THIS   SDL_AudioDevice *_this

Definition at line 37 of file SDL_sysaudio.h.

◆ DEFAULT_INPUT_DEVNAME

#define DEFAULT_INPUT_DEVNAME   "System audio capture device"

Definition at line 33 of file SDL_sysaudio.h.

Referenced by open_audio_device(), and SDL_AudioDetectDevices_Default().

◆ DEFAULT_OUTPUT_DEVNAME

#define DEFAULT_OUTPUT_DEVNAME   "System audio output device"

Definition at line 32 of file SDL_sysaudio.h.

Referenced by open_audio_device(), and SDL_AudioDetectDevices_Default().

◆ SDL_AUDIOBUFFERQUEUE_PACKETLEN

#define SDL_AUDIOBUFFERQUEUE_PACKETLEN   (8 * 1024)

Definition at line 63 of file SDL_sysaudio.h.

Referenced by open_audio_device(), and SDL_ClearQueuedAudio().

Function Documentation

◆ SDL_AddAudioDevice()

void SDL_AddAudioDevice ( const int  iscapture,
const char *  name,
void handle 
)

Definition at line 429 of file SDL_audio.c.

References add_capture_device(), add_output_device(), SDL_AUDIODEVICEADDED, SDL_ENABLE, SDL_GetEventState, SDL_PushEvent, and SDL_zero.

Referenced by SDL_AudioDetectDevices_Default().

430 {
431  const int device_index = iscapture ? add_capture_device(name, handle) : add_output_device(name, handle);
432  if (device_index != -1) {
433  /* Post the event, if desired */
436  SDL_zero(event);
437  event.adevice.type = SDL_AUDIODEVICEADDED;
438  event.adevice.which = device_index;
439  event.adevice.iscapture = iscapture;
440  SDL_PushEvent(&event);
441  }
442  }
443 }
static SDL_INLINE int add_output_device(const char *name, void *handle)
Definition: SDL_audio.c:406
#define SDL_ENABLE
Definition: SDL_events.h:722
GLuint const GLchar * name
#define SDL_GetEventState(type)
Definition: SDL_events.h:735
EGLImageKHR EGLint EGLint * handle
Definition: eglext.h:937
struct _cl_event * event
#define SDL_PushEvent
#define SDL_zero(x)
Definition: SDL_stdinc.h:416
static SDL_INLINE int add_capture_device(const char *name, void *handle)
Definition: SDL_audio.c:399
General event structure.
Definition: SDL_events.h:525

◆ SDL_OpenedAudioDeviceDisconnected()

void SDL_OpenedAudioDeviceDisconnected ( SDL_AudioDevice device)

Definition at line 446 of file SDL_audio.c.

References SDL_AudioDevice::enabled, get_audio_device(), SDL_AudioDevice::id, SDL_AudioDriver::impl, SDL_AudioDevice::iscapture, SDL_AudioDriverImpl::LockDevice, SDL_assert, SDL_AtomicGet, SDL_AtomicSet, SDL_AUDIODEVICEREMOVED, SDL_ENABLE, SDL_GetEventState, SDL_PushEvent, SDL_zero, and SDL_AudioDriverImpl::UnlockDevice.

Referenced by SDL_CaptureAudio(), and SDL_RemoveAudioDevice().

447 {
448  SDL_assert(get_audio_device(device->id) == device);
449 
450  if (!SDL_AtomicGet(&device->enabled)) {
451  return;
452  }
453 
454  /* Ends the audio callback and mark the device as STOPPED, but the
455  app still needs to close the device to free resources. */
456  current_audio.impl.LockDevice(device);
457  SDL_AtomicSet(&device->enabled, 0);
459 
460  /* Post the event, if desired */
463  SDL_zero(event);
464  event.adevice.type = SDL_AUDIODEVICEREMOVED;
465  event.adevice.which = device->id;
466  event.adevice.iscapture = device->iscapture ? 1 : 0;
467  SDL_PushEvent(&event);
468  }
469 }
SDL_AudioDeviceID id
Definition: SDL_sysaudio.h:133
SDL_atomic_t enabled
Definition: SDL_sysaudio.h:146
#define SDL_ENABLE
Definition: SDL_events.h:722
static SDL_AudioDriver current_audio
Definition: SDL_audio.c:33
void(* UnlockDevice)(_THIS)
Definition: SDL_sysaudio.h:80
#define SDL_GetEventState(type)
Definition: SDL_events.h:735
struct _cl_event * event
SDL_bool iscapture
Definition: SDL_sysaudio.h:148
#define SDL_PushEvent
#define SDL_zero(x)
Definition: SDL_stdinc.h:416
void(* LockDevice)(_THIS)
Definition: SDL_sysaudio.h:79
#define SDL_assert(condition)
Definition: SDL_assert.h:169
SDL_AudioDriverImpl impl
Definition: SDL_sysaudio.h:115
#define SDL_AtomicSet
#define SDL_AtomicGet
General event structure.
Definition: SDL_events.h:525
static SDL_AudioDevice * get_audio_device(SDL_AudioDeviceID id)
Definition: SDL_audio.c:200

◆ SDL_RemoveAudioDevice()

void SDL_RemoveAudioDevice ( const int  iscapture,
void handle 
)

Definition at line 487 of file SDL_audio.c.

References SDL_AudioDriver::captureDevicesRemoved, SDL_AudioDriver::detectionLock, device, SDL_AudioDriverImpl::FreeDeviceHandle, SDL_AudioDevice::handle, SDL_AudioDriver::impl, SDL_AudioDriver::inputDevices, mark_device_removed(), NULL, SDL_AudioDriver::outputDevices, SDL_AudioDriver::outputDevicesRemoved, SDL_arraysize, SDL_LockMutex, SDL_OpenedAudioDeviceDisconnected(), SDL_UnlockMutex, and SDLCALL.

488 {
489  int device_index;
491 
493  if (iscapture) {
495  } else {
497  }
498  for (device_index = 0; device_index < SDL_arraysize(open_devices); device_index++)
499  {
500  device = open_devices[device_index];
501  if (device != NULL && device->handle == handle)
502  {
504  break;
505  }
506  }
508 
510 }
static SDL_AudioDevice * open_devices[16]
Definition: SDL_audio.c:34
#define SDL_LockMutex
SDL_bool captureDevicesRemoved
Definition: SDL_sysaudio.h:119
static void mark_device_removed(void *handle, SDL_AudioDeviceItem *devices, SDL_bool *removedFlag)
Definition: SDL_audio.c:472
void SDL_OpenedAudioDeviceDisconnected(SDL_AudioDevice *device)
Definition: SDL_audio.c:446
static SDL_AudioDriver current_audio
Definition: SDL_audio.c:33
SDL_mutex * detectionLock
Definition: SDL_sysaudio.h:118
static SDL_AudioDeviceID device
Definition: loopwave.c:37
EGLImageKHR EGLint EGLint * handle
Definition: eglext.h:937
SDL_AudioDeviceItem * outputDevices
Definition: SDL_sysaudio.h:123
#define NULL
Definition: begin_code.h:164
SDL_bool outputDevicesRemoved
Definition: SDL_sysaudio.h:120
SDL_AudioDriverImpl impl
Definition: SDL_sysaudio.h:115
void(* FreeDeviceHandle)(void *handle)
Definition: SDL_sysaudio.h:81
#define SDL_UnlockMutex
#define SDL_arraysize(array)
Definition: SDL_stdinc.h:93
SDL_AudioDeviceItem * inputDevices
Definition: SDL_sysaudio.h:124

Variable Documentation

◆ ALSA_bootstrap

AudioBootStrap ALSA_bootstrap

◆ ANDROIDAUDIO_bootstrap

AudioBootStrap ANDROIDAUDIO_bootstrap

◆ ARTS_bootstrap

AudioBootStrap ARTS_bootstrap

◆ COREAUDIO_bootstrap

AudioBootStrap COREAUDIO_bootstrap

◆ DISKAUDIO_bootstrap

AudioBootStrap DISKAUDIO_bootstrap

◆ DSOUND_bootstrap

AudioBootStrap DSOUND_bootstrap

◆ DSP_bootstrap

AudioBootStrap DSP_bootstrap

◆ DUMMYAUDIO_bootstrap

AudioBootStrap DUMMYAUDIO_bootstrap

Definition at line 61 of file SDL_dummyaudio.c.

◆ EMSCRIPTENAUDIO_bootstrap

AudioBootStrap EMSCRIPTENAUDIO_bootstrap

◆ ESD_bootstrap

AudioBootStrap ESD_bootstrap

◆ FUSIONSOUND_bootstrap

AudioBootStrap FUSIONSOUND_bootstrap

◆ HAIKUAUDIO_bootstrap

AudioBootStrap HAIKUAUDIO_bootstrap

◆ JACK_bootstrap

AudioBootStrap JACK_bootstrap

◆ NACLAUDIO_bootstrap

AudioBootStrap NACLAUDIO_bootstrap

◆ NAS_bootstrap

AudioBootStrap NAS_bootstrap

◆ NETBSDAUDIO_bootstrap

AudioBootStrap NETBSDAUDIO_bootstrap

◆ PAUDIO_bootstrap

AudioBootStrap PAUDIO_bootstrap

◆ PSPAUDIO_bootstrap

AudioBootStrap PSPAUDIO_bootstrap

◆ PULSEAUDIO_bootstrap

AudioBootStrap PULSEAUDIO_bootstrap

◆ QSAAUDIO_bootstrap

AudioBootStrap QSAAUDIO_bootstrap

◆ SNDIO_bootstrap

AudioBootStrap SNDIO_bootstrap

◆ SUNAUDIO_bootstrap

AudioBootStrap SUNAUDIO_bootstrap

◆ WASAPI_bootstrap

AudioBootStrap WASAPI_bootstrap

◆ WINMM_bootstrap

AudioBootStrap WINMM_bootstrap

◆ XAUDIO2_bootstrap

AudioBootStrap XAUDIO2_bootstrap