Mercurial > sdl-ios-xcode
annotate src/audio/openbsd/SDL_openbsdaudio.c @ 1118:65f4b2dd46b7
Date: Wed, 17 Aug 2005 11:23:40 -0400
From: Matt L <prometheus.uw@gmail.com>
To: "Ryan C. Gordon" <icculus@clutteredmind.org>
Subject: SDL Patch
Hio,
I saw your last call on the mailing list. Here's a patch which I
submitted about two weeks ago which hasn't made it in.
In the current sdl.m4, there's a bug where if your configure.ac, you
have AC_LANG(C++) specified, it won't properly compile and link the SDL
test program when you run the configure script. This is because only the
default CFLAGS is overriden in sdl.m4, and in the patch below, I've
fixed it so it overrides CXXFLAGS as well, allowing it to work with g++.
author | Ryan C. Gordon <icculus@icculus.org> |
---|---|
date | Thu, 18 Aug 2005 06:06:02 +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 } |