1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
$NetBSD: patch-ac,v 1.9 2008/04/07 15:36:19 bjs Exp $
--- examples/sndfile-play.c.orig 2006-08-31 05:22:07.000000000 -0400
+++ examples/sndfile-play.c
@@ -34,16 +34,21 @@
#include <sys/time.h>
#endif
-#if defined (__linux__)
+#if defined (__linux__) || defined(USE_OSS)
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/soundcard.h>
+ #ifndef DEV_DSP
+ #define DEV_DSP "/dev/dsp"
+ #endif
+
#elif (defined (__MACH__) && defined (__APPLE__))
#include <Carbon.h>
#include <CoreAudio/AudioHardware.h>
-#elif (defined (sun) && defined (unix))
+#elif (defined (sun) && defined (unix)) || \
+ defined (USE_SUN)
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/audioio.h>
@@ -339,7 +344,7 @@ alsa_write_float (snd_pcm_t *alsa_dev, f
** Linux/OSS functions for playing a sound.
*/
-#if defined (__linux__)
+#if defined (__linux__) || defined(USE_OSS)
static int linux_open_dsp_device (int channels, int srate) ;
@@ -408,7 +413,7 @@ static int
linux_open_dsp_device (int channels, int srate)
{ int fd, stereo, fmt ;
- if ((fd = open ("/dev/dsp", O_WRONLY, 0)) == -1 &&
+ if ((fd = open (DEV_DSP, O_WRONLY, 0)) == -1 &&
(fd = open ("/dev/sound/dsp", O_WRONLY, 0)) == -1)
{ perror ("linux_open_dsp_device : open ") ;
exit (1) ;
@@ -819,7 +824,12 @@ win32_play (int argc, char *argv [])
** Solaris.
*/
-#if (defined (sun) && defined (unix)) /* ie Solaris */
+#if (defined (sun) && defined (unix)) || \
+ defined (USE_SUN)
+
+#ifndef SUN_DEV
+#define SUN_DEV "/dev/audio"
+#endif
static void
solaris_play (int argc, char *argv [])
@@ -844,8 +854,8 @@ solaris_play (int argc, char *argv [])
} ;
/* open the audio device - write only, non-blocking */
- if ((audio_fd = open ("/dev/audio", O_WRONLY | O_NONBLOCK)) < 0)
- { perror ("open (/dev/audio) failed") ;
+ if ((audio_fd = open (SUN_DEV, O_WRONLY | O_NONBLOCK)) < 0)
+ { perror ("open ("SUN_DEV") failed") ;
return ;
} ;
@@ -858,6 +868,9 @@ solaris_play (int argc, char *argv [])
audio_info.play.encoding = AUDIO_ENCODING_LINEAR ;
audio_info.play.gain = AUDIO_MAX_GAIN ;
audio_info.play.balance = AUDIO_MID_BALANCE ;
+#if defined(__NetBSD__) || defined(__OpenBSD__)
+ audio_info.mode = AUMODE_PLAY | AUMODE_PLAY_ALL;
+#endif
if ((error = ioctl (audio_fd, AUDIO_SETINFO, &audio_info)))
{ perror ("ioctl (AUDIO_SETINFO) failed") ;
@@ -926,7 +939,7 @@ main (int argc, char *argv [])
return 1 ;
} ;
-#if defined (__linux__)
+#if defined (__linux__) || defined (USE_OSS)
#if HAVE_ALSA_ASOUNDLIB_H
if (access ("/proc/asound/cards", R_OK) == 0)
alsa_play (argc, argv) ;
@@ -935,7 +948,8 @@ main (int argc, char *argv [])
linux_play (argc, argv) ;
#elif (defined (__MACH__) && defined (__APPLE__))
macosx_play (argc, argv) ;
-#elif (defined (sun) && defined (unix))
+#elif (defined (sun) && defined (unix)) || \
+ defined (USE_SUN)
solaris_play (argc, argv) ;
#elif (OS_IS_WIN32 == 1)
win32_play (argc, argv) ;
|