21 #include "../../SDL_internal.h" 23 #if SDL_AUDIO_DRIVER_HAIKU 27 #include <SoundPlayer.h> 30 #include "../../main/haiku/SDL_BeApp.h" 36 #include "../SDL_audio_c.h" 37 #include "../SDL_sysaudio.h" 46 FillSound(
void *device,
void *
stream,
size_t len,
47 const media_raw_audio_format &
format)
74 HAIKUAUDIO_CloseDevice(
_THIS)
77 if (
_this->hidden->audio_obj) {
78 _this->hidden->audio_obj->Stop();
79 delete _this->hidden->audio_obj;
90 SIGHUP, SIGINT, SIGQUIT, SIGPIPE, SIGALRM, SIGTERM, SIGWINCH, 0
94 MaskSignals(sigset_t * omask)
100 for (i = 0; sig_list[
i]; ++
i) {
101 sigaddset(&mask, sig_list[i]);
103 sigprocmask(SIG_BLOCK, &mask, omask);
107 UnmaskSignals(sigset_t * omask)
109 sigprocmask(SIG_SETMASK, omask,
NULL);
114 HAIKUAUDIO_OpenDevice(
_THIS,
void *handle,
const char *devname,
int iscapture)
116 int valid_datatype = 0;
117 media_raw_audio_format
format;
128 SDL_memset(&format,
'\0',
sizeof(media_raw_audio_format));
129 format.byte_order = B_MEDIA_LITTLE_ENDIAN;
130 format.frame_rate = (float)
_this->spec.freq;
131 format.channel_count =
_this->spec.channels;
132 while ((!valid_datatype) && (test_format)) {
134 _this->spec.format = test_format;
135 switch (test_format) {
137 format.format = media_raw_audio_format::B_AUDIO_CHAR;
141 format.format = media_raw_audio_format::B_AUDIO_UCHAR;
145 format.format = media_raw_audio_format::B_AUDIO_SHORT;
149 format.format = media_raw_audio_format::B_AUDIO_SHORT;
150 format.byte_order = B_MEDIA_BIG_ENDIAN;
154 format.format = media_raw_audio_format::B_AUDIO_INT;
158 format.format = media_raw_audio_format::B_AUDIO_INT;
159 format.byte_order = B_MEDIA_BIG_ENDIAN;
163 format.format = media_raw_audio_format::B_AUDIO_FLOAT;
167 format.format = media_raw_audio_format::B_AUDIO_FLOAT;
168 format.byte_order = B_MEDIA_BIG_ENDIAN;
178 if (!valid_datatype) {
179 HAIKUAUDIO_CloseDevice(
_this);
186 format.buffer_size =
_this->spec.size;
191 _this->hidden->audio_obj =
new BSoundPlayer(&format,
"SDL Audio",
193 UnmaskSignals(&omask);
195 if (
_this->hidden->audio_obj->Start() == B_NO_ERROR) {
196 _this->hidden->audio_obj->SetHasData(
true);
198 HAIKUAUDIO_CloseDevice(
_this);
207 HAIKUAUDIO_Deinitialize(
void)
235 "haiku",
"Haiku BSoundPlayer", HAIKUAUDIO_Init, 0
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
SDL_AudioFormat SDL_FirstAudioFormat(SDL_AudioFormat format)
int ProvidesOwnCallbackThread
Uint16 SDL_AudioFormat
Audio format flags.
SDL_AudioFormat SDL_NextAudioFormat(void)
static SDL_VideoDevice * _this
int OnlyHasDefaultOutputDevice
uint8_t Uint8
An unsigned 8-bit integer type.
void(* Deinitialize)(void)
void SDL_CalculateAudioSpec(SDL_AudioSpec *spec)
SDL_AudioCallback callback
static const int sig_list[]
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
int(* OpenDevice)(_THIS, void *handle, const char *devname, int iscapture)
#define SDL_OutOfMemory()
void(* CloseDevice)(_THIS)
AudioBootStrap HAIKUAUDIO_bootstrap