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"
47 const media_raw_audio_format &
format)
69 const int ilen = (
int)
len;
88 HAIKUAUDIO_CloseDevice(
_THIS)
90 if (
_this->hidden->audio_obj) {
91 _this->hidden->audio_obj->Stop();
92 delete _this->hidden->audio_obj;
99 SIGHUP, SIGINT, SIGQUIT, SIGPIPE, SIGALRM, SIGTERM, SIGWINCH, 0
103 MaskSignals(sigset_t * omask)
112 sigprocmask(SIG_BLOCK, &
mask, omask);
116 UnmaskSignals(sigset_t * omask)
118 sigprocmask(SIG_SETMASK, omask,
NULL);
123 HAIKUAUDIO_OpenDevice(
_THIS,
void *
handle,
const char *devname,
int iscapture)
125 int valid_datatype = 0;
126 media_raw_audio_format
format;
138 format.byte_order = B_MEDIA_LITTLE_ENDIAN;
141 while ((!valid_datatype) && (test_format)) {
143 _this->spec.format = test_format;
144 switch (test_format) {
146 format.format = media_raw_audio_format::B_AUDIO_CHAR;
150 format.format = media_raw_audio_format::B_AUDIO_UCHAR;
154 format.format = media_raw_audio_format::B_AUDIO_SHORT;
158 format.format = media_raw_audio_format::B_AUDIO_SHORT;
159 format.byte_order = B_MEDIA_BIG_ENDIAN;
163 format.format = media_raw_audio_format::B_AUDIO_INT;
167 format.format = media_raw_audio_format::B_AUDIO_INT;
168 format.byte_order = B_MEDIA_BIG_ENDIAN;
172 format.format = media_raw_audio_format::B_AUDIO_FLOAT;
176 format.format = media_raw_audio_format::B_AUDIO_FLOAT;
177 format.byte_order = B_MEDIA_BIG_ENDIAN;
187 if (!valid_datatype) {
199 _this->hidden->audio_obj =
new BSoundPlayer(&
format,
"SDL Audio",
201 UnmaskSignals(&omask);
203 if (
_this->hidden->audio_obj->Start() == B_NO_ERROR) {
204 _this->hidden->audio_obj->SetHasData(
true);
214 HAIKUAUDIO_Deinitialize(
void)
242 "haiku",
"Haiku BSoundPlayer", HAIKUAUDIO_Init, 0
#define SDL_assert(condition)
void SDL_CalculateAudioSpec(SDL_AudioSpec *spec)
SDL_AudioFormat SDL_FirstAudioFormat(SDL_AudioFormat format)
SDL_AudioFormat SDL_NextAudioFormat(void)
Uint16 SDL_AudioFormat
Audio format flags.
void(* SDL_AudioCallback)(void *userdata, Uint8 *stream, int len)
#define SDL_AudioStreamGet
#define SDL_AudioStreamClear
#define SDL_AudioStreamAvailable
#define SDL_AudioStreamPut
#define SDL_OutOfMemory()
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
AudioBootStrap HAIKUAUDIO_bootstrap
static SDL_VideoDevice * _this
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)
EGLImageKHR EGLint EGLint * handle
static SDL_AudioDeviceID device
static const int sig_list[]
SDL_AudioSpec callbackspec
void(* CloseDevice)(_THIS)
int OnlyHasDefaultOutputDevice
void(* Deinitialize)(void)
int(* OpenDevice)(_THIS, void *handle, const char *devname, int iscapture)
int ProvidesOwnCallbackThread
SDL_AudioCallback callback
static Uint32 callback(Uint32 interval, void *param)
typedef int(__stdcall *FARPROC)()