annotate src/audio/openbsd/SDL_openbsdaudio.c @ 956:4263beff9e38

Date: Mon, 30 Aug 2004 18:20:25 +0200 From: Joost Baas Subject: why call arts artsc? I, and a few other people at the mplayer-docs-mailinglist were wondering why you decided to call arts artsc. I understand usually users have nothing to do with libsdl, just developers, but because you can choose the audio-driver being used by mplayer, one of which is sdl, and you can also choose the sdl subdriver, it is necessary to have a well-known or logical name. artsc is not the logical choice, and it's very hard to look up the right name if you don't know what you're looking for.
author Sam Lantinga <slouken@libsdl.org>
date Fri, 17 Sep 2004 13:25:06 +0000
parents b8d311d90021
children 0276947bee66
rev   line source
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
1 /*
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
2 SDL - Simple DirectMedia Layer
769
b8d311d90021 Updated copyright information for 2004 (Happy New Year!)
Sam Lantinga <slouken@libsdl.org>
parents: 543
diff changeset
3 Copyright (C) 1997-2004 Sam Lantinga
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
4
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
5 This library is free software; you can redistribute it and/or
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
6 modify it under the terms of the GNU Library General Public
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
7 License as published by the Free Software Foundation; either
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
8 version 2 of the License, or (at your option) any later version.
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
9
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
10 This library is distributed in the hope that it will be useful,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
13 Library General Public License for more details.
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
14
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
15 You should have received a copy of the GNU Library General Public
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
16 License along with this library; if not, write to the Free
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
18
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
19 Sam Lantinga
252
e8157fcb3114 Updated the source with the correct e-mail address
Sam Lantinga <slouken@libsdl.org>
parents: 131
diff changeset
20 slouken@libsdl.org
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
21 */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
22
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
23 /*
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
24 * Driver for native OpenBSD audio(4).
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
25 * vedge@vedge.com.ar.
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
26 */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
27
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
28 #include <stdlib.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
29 #include <stdio.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
30 #include <string.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
31 #include <errno.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
32 #include <unistd.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
33 #include <fcntl.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
34 #include <signal.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
35 #include <sys/time.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
36 #include <sys/ioctl.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
37 #include <sys/stat.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
38 #include <sys/types.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
39 #include <sys/audioio.h>
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
40
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
41 #include "SDL_audio.h"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
42 #include "SDL_error.h"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
43 #include "SDL_audiomem.h"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
44 #include "SDL_audio_c.h"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
45 #include "SDL_timer.h"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
46 #include "SDL_audiodev_c.h"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
47 #include "SDL_openbsdaudio.h"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
48
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
49 /* The tag name used by OpenBSD audio */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
50 #define OBSD_DRIVER_NAME "openbsd"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
51
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
52 /* Open the audio device for playback, and don't block if busy */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
53 /* #define USE_BLOCKING_WRITES */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
54
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
55 /* Use timer for synchronization */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
56 /* #define USE_TIMER_SYNC */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
57
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
58 /* #define DEBUG_AUDIO */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
59 /* #define DEBUG_AUDIO_STREAM */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
60
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
61 #ifdef USE_BLOCKING_WRITES
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
62 #define OPEN_FLAGS O_WRONLY
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
63 #else
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
64 #define OPEN_FLAGS (O_WRONLY|O_NONBLOCK)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
65 #endif
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
66
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
67 /* Audio driver functions */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
68 static void OBSD_WaitAudio(_THIS);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
69 static int OBSD_OpenAudio(_THIS, SDL_AudioSpec *spec);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
70 static void OBSD_PlayAudio(_THIS);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
71 static Uint8 *OBSD_GetAudioBuf(_THIS);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
72 static void OBSD_CloseAudio(_THIS);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
73
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
74 #ifdef DEBUG_AUDIO
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
75 static void OBSD_Status(_THIS);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
76 #endif
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
77
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
78 /* Audio driver bootstrap functions */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
79
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
80 static int
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
81 Audio_Available(void)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
82 {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
83 int fd;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
84 int available;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
85
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
86 available = 0;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
87 fd = SDL_OpenAudioPath(NULL, 0, OPEN_FLAGS, 0);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
88 if(fd >= 0) {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
89 available = 1;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
90 close(fd);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
91 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
92 return(available);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
93 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
94
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
95 static void
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
96 Audio_DeleteDevice(SDL_AudioDevice *device)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
97 {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
98 free(device->hidden);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
99 free(device);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
100 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
101
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
102 static SDL_AudioDevice
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
103 *Audio_CreateDevice(int devindex)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
104 {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
105 SDL_AudioDevice *this;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
106
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
107 /* Initialize all variables that we clean on shutdown */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
108 this = (SDL_AudioDevice*)malloc(sizeof(SDL_AudioDevice));
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
109 if(this) {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
110 memset(this, 0, (sizeof *this));
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
111 this->hidden =
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
112 (struct SDL_PrivateAudioData*)malloc((sizeof *this->hidden));
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
113 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
114 if((this == NULL) || (this->hidden == NULL)) {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
115 SDL_OutOfMemory();
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
116 if(this) free(this);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
117 return(0);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
118 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
119 memset(this->hidden, 0, (sizeof *this->hidden));
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
120 audio_fd = -1;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
121
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
122 /* Set the function pointers */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
123 this->OpenAudio = OBSD_OpenAudio;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
124 this->WaitAudio = OBSD_WaitAudio;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
125 this->PlayAudio = OBSD_PlayAudio;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
126 this->GetAudioBuf = OBSD_GetAudioBuf;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
127 this->CloseAudio = OBSD_CloseAudio;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
128
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
129 this->free = Audio_DeleteDevice;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
130
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
131 return this;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
132 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
133
121
43febd46d49d Name changed from OBSD to OPENBSD_AUDIO
Sam Lantinga <slouken@libsdl.org>
parents: 94
diff changeset
134 AudioBootStrap OPENBSD_AUDIO_bootstrap = {
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
135 OBSD_DRIVER_NAME, "Native OpenBSD audio",
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
136 Audio_Available, Audio_CreateDevice
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
137 };
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
138
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
139 /* This function waits until it is possible to write a full sound buffer */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
140 static void
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
141 OBSD_WaitAudio(_THIS)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
142 {
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
143 /* Check to see if the thread-parent process is still alive */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
144 { static int cnt = 0;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
145 /* Note that this only works with thread implementations
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
146 that use a different process id for each thread.
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
147 */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
148 if (parent && (((++cnt)%10) == 0)) { /* Check every 10 loops */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
149 if ( kill(parent, 0) < 0 ) {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
150 this->enabled = 0;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
151 }
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
152 }
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
153 }
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
154
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
155 #ifndef USE_BLOCKING_WRITES /* Not necessary when using blocking writes */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
156 /* See if we need to use timed audio synchronization */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
157 if ( frame_ticks ) {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
158 /* Use timer for general audio synchronization */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
159 Sint32 ticks;
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
160
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
161 ticks = ((Sint32)(next_frame - SDL_GetTicks()))-FUDGE_TICKS;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
162 if ( ticks > 0 ) {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
163 SDL_Delay(ticks);
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
164 }
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
165 } else {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
166 /* Use select() for audio synchronization */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
167 fd_set fdset;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
168 struct timeval timeout;
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
169
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
170 FD_ZERO(&fdset);
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
171 FD_SET(audio_fd, &fdset);
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
172 timeout.tv_sec = 10;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
173 timeout.tv_usec = 0;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
174 #ifdef DEBUG_AUDIO
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
175 fprintf(stderr, "Waiting for audio to get ready\n");
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
176 #endif
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
177 if ( select(audio_fd+1, NULL, &fdset, NULL, &timeout) <= 0 ) {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
178 const char *message =
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
179 "Audio timeout - buggy audio driver? (disabled)";
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
180 /* In general we should never print to the screen,
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
181 but in this case we have no other way of letting
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
182 the user know what happened.
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
183 */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
184 fprintf(stderr, "SDL: %s\n", message);
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
185 this->enabled = 0;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
186 /* Don't try to close - may hang */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
187 audio_fd = -1;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
188 #ifdef DEBUG_AUDIO
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
189 fprintf(stderr, "Done disabling audio\n");
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
190 #endif
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
191 }
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
192 #ifdef DEBUG_AUDIO
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
193 fprintf(stderr, "Ready!\n");
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
194 #endif
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
195 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
196 #endif /* !USE_BLOCKING_WRITES */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
197 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
198
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
199 static void
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
200 OBSD_PlayAudio(_THIS)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
201 {
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
202 int written, p=0;
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
203
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
204 /* Write the audio data, checking for EAGAIN on broken audio drivers */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
205 do {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
206 written = write(audio_fd, &mixbuf[p], mixlen-p);
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
207 if (written>0)
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
208 p += written;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
209 if (written == -1 && errno != 0 && errno != EAGAIN && errno != EINTR)
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
210 {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
211 /* Non recoverable error has occurred. It should be reported!!! */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
212 perror("audio");
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
213 break;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
214 }
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
215
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
216 if ( p < written || ((written < 0) && ((errno == 0) || (errno == EAGAIN))) ) {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
217 SDL_Delay(1); /* Let a little CPU time go by */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
218 }
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
219 } while ( p < written );
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
220
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
221 /* If timer synchronization is enabled, set the next write frame */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
222 if ( frame_ticks ) {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
223 next_frame += frame_ticks;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
224 }
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
225
94
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
226 /* If we couldn't write, assume fatal error for now */
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
227 if ( written < 0 ) {
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
228 this->enabled = 0;
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
229 }
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
230 #ifdef DEBUG_AUDIO
ae6e6b73333f Cleaned up the OpenBSD port, thanks to Peter Valchev
Sam Lantinga <slouken@lokigames.com>
parents: 37
diff changeset
231 fprintf(stderr, "Wrote %d bytes of audio data\n", written);
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
232 #endif
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
233 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
234
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
235 static Uint8
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
236 *OBSD_GetAudioBuf(_THIS)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
237 {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
238 return(mixbuf);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
239 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
240
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
241 static void
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
242 OBSD_CloseAudio(_THIS)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
243 {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
244 if(mixbuf != NULL) {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
245 SDL_FreeAudioMem(mixbuf);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
246 mixbuf = NULL;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
247 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
248 if(audio_fd >= 0) {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
249 close(audio_fd);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
250 audio_fd = -1;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
251 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
252 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
253
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
254 #ifdef DEBUG_AUDIO
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
255 void
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
256 OBSD_Status(_THIS)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
257 {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
258 audio_info_t info;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
259
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
260 if(ioctl(audio_fd, AUDIO_GETINFO, &info) < 0) {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
261 fprintf(stderr,"AUDIO_GETINFO failed.\n");
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
262 return;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
263 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
264
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
265 fprintf(stderr,"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
266 [play/record info]
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
267 buffer size : %d bytes
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
268 sample rate : %i Hz
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
269 channels : %i
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
270 precision : %i-bit
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
271 encoding : 0x%x
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
272 seek : %i
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
273 sample count : %i
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
274 EOF count : %i
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
275 paused : %s
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
276 error occured : %s
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
277 waiting : %s
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
278 active : %s
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
279 ",
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
280 info.play.buffer_size,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
281 info.play.sample_rate,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
282 info.play.channels,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
283 info.play.precision,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
284 info.play.encoding,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
285 info.play.seek,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
286 info.play.samples,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
287 info.play.eof,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
288 info.play.pause ? "yes" : "no",
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
289 info.play.error ? "yes" : "no",
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
290 info.play.waiting ? "yes" : "no",
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
291 info.play.active ? "yes": "no");
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
292
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
293 fprintf(stderr,"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
294 [audio info]
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
295 monitor_gain : %i
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
296 hw block size : %d bytes
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
297 hi watermark : %i
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
298 lo watermark : %i
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
299 audio mode : %s
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
300 ",
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
301 info.monitor_gain,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
302 info.blocksize,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
303 info.hiwat, info.lowat,
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
304 (info.mode == AUMODE_PLAY) ? "PLAY"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
305 : (info.mode = AUMODE_RECORD) ? "RECORD"
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
306 : (info.mode == AUMODE_PLAY_ALL ? "PLAY_ALL"
543
522e5202014d *** empty log message ***
Sam Lantinga <slouken@libsdl.org>
parents: 297
diff changeset
307 : "?"));
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
308 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
309 #endif /* DEBUG_AUDIO */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
310
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
311 static int
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
312 OBSD_OpenAudio(_THIS, SDL_AudioSpec *spec)
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
313 {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
314 char audiodev[64];
131
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
315 Uint16 format;
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
316 audio_info_t info;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
317
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
318 AUDIO_INITINFO(&info);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
319
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
320 /* Calculate the final parameters for this audio specification */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
321 SDL_CalculateAudioSpec(spec);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
322
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
323 #ifdef USE_TIMER_SYNC
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
324 frame_ticks = 0.0;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
325 #endif
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
326
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
327 /* Open the audio device */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
328 audio_fd = SDL_OpenAudioPath(audiodev, sizeof(audiodev), OPEN_FLAGS, 0);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
329 if(audio_fd < 0) {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
330 SDL_SetError("Couldn't open %s: %s", audiodev, strerror(errno));
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
331 return(-1);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
332 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
333
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
334 /* Set to play mode */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
335 info.mode = AUMODE_PLAY;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
336 if(ioctl(audio_fd, AUDIO_SETINFO, &info) < 0) {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
337 SDL_SetError("Couldn't put device into play mode");
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
338 return(-1);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
339 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
340
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
341 mixbuf = NULL;
131
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
342 AUDIO_INITINFO(&info);
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
343 for (format = SDL_FirstAudioFormat(spec->format);
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
344 format; format = SDL_NextAudioFormat())
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
345 {
131
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
346 switch(format) {
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
347 case AUDIO_U8:
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
348 info.play.encoding = AUDIO_ENCODING_ULINEAR;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
349 info.play.precision = 8;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
350 break;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
351 case AUDIO_S8:
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
352 info.play.encoding = AUDIO_ENCODING_SLINEAR;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
353 info.play.precision = 8;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
354 break;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
355 case AUDIO_S16LSB:
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
356 info.play.encoding = AUDIO_ENCODING_SLINEAR_LE;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
357 info.play.precision = 16;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
358 break;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
359 case AUDIO_S16MSB:
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
360 info.play.encoding = AUDIO_ENCODING_SLINEAR_BE;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
361 info.play.precision = 16;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
362 break;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
363 case AUDIO_U16LSB:
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
364 info.play.encoding = AUDIO_ENCODING_ULINEAR_LE;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
365 info.play.precision = 16;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
366 break;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
367 case AUDIO_U16MSB:
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
368 info.play.encoding = AUDIO_ENCODING_ULINEAR_BE;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
369 info.play.precision = 16;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
370 break;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
371 default:
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
372 continue;
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
373 }
131
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
374 if (ioctl(audio_fd, AUDIO_SETINFO, &info) == 0)
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
375 break;
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
376 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
377
131
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
378 if(!format) {
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
379 SDL_SetError("No supported encoding for 0x%x", spec->format);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
380 return(-1);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
381 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
382
131
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
383 spec->format = format;
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
384
131
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
385 AUDIO_INITINFO(&info);
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
386 info.play.channels = spec->channels;
131
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
387 if (ioctl(audio_fd, AUDIO_SETINFO, &info) == -1)
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
388 spec->channels = 1;
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
389 AUDIO_INITINFO(&info);
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
390 info.play.sample_rate = spec->freq;
131
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
391 (void)ioctl(audio_fd, AUDIO_SETINFO, &info);
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
392 (void)ioctl(audio_fd, AUDIO_GETINFO, &info);
5d08b230932e Fixed audio format selection for OpenBSD (thanks Peter!)
Sam Lantinga <slouken@libsdl.org>
parents: 121
diff changeset
393 spec->freq = info.play.sample_rate;
37
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
394 /* Allocate mixing buffer */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
395 mixlen = spec->size;
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
396 mixbuf = (Uint8*)SDL_AllocAudioMem(mixlen);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
397 if(mixbuf == NULL) {
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
398 return(-1);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
399 }
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
400 memset(mixbuf, spec->silence, spec->size);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
401
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
402 /* Get the parent process id (we're the parent of the audio thread) */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
403 parent = getpid();
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
404
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
405 #ifdef DEBUG_AUDIO
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
406 OBSD_Status(this);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
407 #endif
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
408
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
409 /* We're ready to rock and roll. :-) */
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
410 return(0);
3ad7157c6cfa Added native OpenBSD audio driver (thanks vedge!)
Sam Lantinga <slouken@lokigames.com>
parents:
diff changeset
411 }