#ifndef _SDL_audio_h #define _SDL_audio_h #include "SDL_stdinc.h" #include "SDL_error.h" #include "SDL_endian.h" #include "SDL_mutex.h" #include "SDL_thread.h" #include "SDL_rwops.h" #include "begin_code.h" #ifdef __cplusplus extern "C" { #endif typedef Uint16 SDL_AudioFormat; #define SDL_AUDIO_MASK_BITSIZE (0xFF) #define SDL_AUDIO_MASK_DATATYPE (1<<8) #define SDL_AUDIO_MASK_ENDIAN (1<<12) #define SDL_AUDIO_MASK_SIGNED (1<<15) #define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE) #define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE) #define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN) #define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED) #define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x)) #define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) #define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x)) #define AUDIO_U8 0x0008 #define AUDIO_S8 0x8008 #define AUDIO_U16LSB 0x0010 #define AUDIO_S16LSB 0x8010 #define AUDIO_U16MSB 0x1010 #define AUDIO_S16MSB 0x9010 #define AUDIO_U16 AUDIO_U16LSB #define AUDIO_S16 AUDIO_S16LSB #define AUDIO_S32LSB 0x8020 #define AUDIO_S32MSB 0x9020 #define AUDIO_S32 AUDIO_S32LSB #define AUDIO_F32LSB 0x8120 #define AUDIO_F32MSB 0x9120 #define AUDIO_F32 AUDIO_F32LSB #if SDL_BYTEORDER == SDL_LIL_ENDIAN #define AUDIO_U16SYS AUDIO_U16LSB #define AUDIO_S16SYS AUDIO_S16LSB #define AUDIO_S32SYS AUDIO_S32LSB #define AUDIO_F32SYS AUDIO_F32LSB #else #define AUDIO_U16SYS AUDIO_U16MSB #define AUDIO_S16SYS AUDIO_S16MSB #define AUDIO_S32SYS AUDIO_S32MSB #define AUDIO_F32SYS AUDIO_F32MSB #endif #define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 #define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 #define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 #define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE) typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, int len); typedef struct SDL_AudioSpec { int freq; SDL_AudioFormat format; Uint8 channels; Uint8 silence; Uint16 samples; Uint16 padding; Uint32 size; SDL_AudioCallback callback; void *userdata; } SDL_AudioSpec; struct SDL_AudioCVT; typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, SDL_AudioFormat format); #ifdef __GNUC__ #define SDL_AUDIOCVT_PACKED __attribute__((packed)) #else #define SDL_AUDIOCVT_PACKED #endif typedef struct SDL_AudioCVT { int needed; SDL_AudioFormat src_format; SDL_AudioFormat dst_format; double rate_incr; Uint8 *buf; int len; int len_cvt; int len_mult; double len_ratio; SDL_AudioFilter filters[10]; int filter_index; } SDL_AUDIOCVT_PACKED SDL_AudioCVT; typedef int SDLCALL tSDL_GetNumAudioDrivers(void); typedef const char * SDLCALL tSDL_GetAudioDriver(int index); typedef int SDLCALL tSDL_AudioInit(const char *driver_name); typedef void SDLCALL tSDL_AudioQuit(void); typedef const char * SDLCALL tSDL_GetCurrentAudioDriver(void); typedef int SDLCALL tSDL_OpenAudio(SDL_AudioSpec * desired, SDL_AudioSpec * obtained); typedef Uint32 SDL_AudioDeviceID; typedef int SDLCALL tSDL_GetNumAudioDevices(int iscapture); typedef const char * SDLCALL tSDL_GetAudioDeviceName(int index, int iscapture); typedef SDL_AudioDeviceID SDLCALL tSDL_OpenAudioDevice(const char *device, int iscapture, const SDL_AudioSpec * desired, SDL_AudioSpec * obtained, int allowed_changes); typedef enum { SDL_AUDIO_STOPPED = 0, SDL_AUDIO_PLAYING, SDL_AUDIO_PAUSED } SDL_AudioStatus; typedef SDL_AudioStatus SDLCALL tSDL_GetAudioStatus(void); extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); typedef void SDLCALL tSDL_PauseAudio(int pause_on); typedef void SDLCALL tSDL_PauseAudioDevice(SDL_AudioDeviceID dev, int pause_on); typedef SDL_AudioSpec * SDLCALL tSDL_LoadWAV_RW(SDL_RWops * src, int freesrc, SDL_AudioSpec * spec, Uint8 ** audio_buf, Uint32 * audio_len); #define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) typedef void SDLCALL tSDL_FreeWAV(Uint8 * audio_buf); typedef int SDLCALL tSDL_BuildAudioCVT(SDL_AudioCVT * cvt, SDL_AudioFormat src_format, Uint8 src_channels, int src_rate, SDL_AudioFormat dst_format, Uint8 dst_channels, int dst_rate); typedef int SDLCALL tSDL_ConvertAudio(SDL_AudioCVT * cvt); #define SDL_MIX_MAXVOLUME 128 typedef void SDLCALL tSDL_MixAudio(Uint8 * dst, const Uint8 * src, Uint32 len, int volume); typedef void SDLCALL tSDL_MixAudioFormat(Uint8 * dst, const Uint8 * src, SDL_AudioFormat format, Uint32 len, int volume); typedef void SDLCALL tSDL_LockAudio(void); typedef void SDLCALL tSDL_LockAudioDevice(SDL_AudioDeviceID dev); typedef void SDLCALL tSDL_UnlockAudio(void); typedef void SDLCALL tSDL_UnlockAudioDevice(SDL_AudioDeviceID dev); typedef void SDLCALL tSDL_CloseAudio(void); typedef void SDLCALL tSDL_CloseAudioDevice(SDL_AudioDeviceID dev); extern tSDL_GetNumAudioDrivers *SDL_GetNumAudioDrivers; extern tSDL_GetAudioDriver *SDL_GetAudioDriver; extern tSDL_AudioInit *SDL_AudioInit; extern tSDL_AudioQuit *SDL_AudioQuit; extern tSDL_GetCurrentAudioDriver *SDL_GetCurrentAudioDriver; extern tSDL_OpenAudio *SDL_OpenAudio; extern tSDL_GetNumAudioDevices *SDL_GetNumAudioDevices; extern tSDL_GetAudioDeviceName *SDL_GetAudioDeviceName; extern tSDL_OpenAudioDevice *SDL_OpenAudioDevice; extern tSDL_GetAudioStatus *SDL_GetAudioStatus; extern tSDL_PauseAudio *SDL_PauseAudio; extern tSDL_PauseAudioDevice *SDL_PauseAudioDevice; extern tSDL_LoadWAV_RW *SDL_LoadWAV_RW; extern tSDL_FreeWAV *SDL_FreeWAV; extern tSDL_BuildAudioCVT *SDL_BuildAudioCVT; extern tSDL_ConvertAudio *SDL_ConvertAudio; extern tSDL_MixAudio *SDL_MixAudio; extern tSDL_MixAudioFormat *SDL_MixAudioFormat; extern tSDL_LockAudio *SDL_LockAudio; extern tSDL_LockAudioDevice *SDL_LockAudioDevice; extern tSDL_UnlockAudio *SDL_UnlockAudio; extern tSDL_UnlockAudioDevice *SDL_UnlockAudioDevice; extern tSDL_CloseAudio *SDL_CloseAudio; extern tSDL_CloseAudioDevice *SDL_CloseAudioDevice; #ifdef __cplusplus } #endif #include "close_code.h" #endif