Code reference: https://github.com/joyent/illumos-joyent/blob/master/usr/src/uts/common/sys/audio/audio_oss.h Add autoconf checks for: - SOUND_PCM_READ_RATE - SOUND_PCM_READ_CHANNELS - SOUND_PCM_READ_BITS Some platforms like SunOS (Illumos) may ship without SOUND_PCM_* functionality Thanks to Jonathan Perkin (Joyent) for Illumos code reference. --- configure.ac | 7 +++++++ src/utils/padsp.c | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/configure.ac b/configure.ac index b9cd3d1..31e1f33 100644 --- a/configure.ac +++ b/configure.ac @@ -769,6 +769,13 @@ AM_CONDITIONAL([HAVE_OSS_WRAPPER], [test "x$HAVE_OSS_WRAPPER" = "x1"]) AS_IF([test "x$HAVE_OSS_OUTPUT" = "x1"], AC_DEFINE([HAVE_OSS_OUTPUT], 1, [Have OSS output?])) AS_IF([test "x$HAVE_OSS_WRAPPER" = "x1"], AC_DEFINE([HAVE_OSS_WRAPPER], 1, [Have OSS wrapper (padsp)?])) +# Some platforms like SunOS (Illumos) may ship without SOUND_PCM_* functionality +if test "x$HAVE_OSS" = "x1"; then + AC_CHECK_DECLS([SOUND_PCM_READ_RATE], [], [], [[#include <sys/soundcard.h>]]) + AC_CHECK_DECLS([SOUND_PCM_READ_CHANNELS], [], [], [[#include <sys/soundcard.h>]]) + AC_CHECK_DECLS([SOUND_PCM_READ_BITS], [], [], [[#include <sys/soundcard.h>]]) +fi + #### CoreAudio support (optional) #### AC_ARG_ENABLE([coreaudio-output], diff --git a/src/utils/padsp.c b/src/utils/padsp.c index 5e336bb..943479b 100644 --- a/src/utils/padsp.c +++ b/src/utils/padsp.c @@ -2278,6 +2278,7 @@ static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) break; } +#if HAVE_DECL_SOUND_PCM_READ_RATE case SOUND_PCM_READ_RATE: debug(DEBUG_LEVEL_NORMAL, __FILE__": SOUND_PCM_READ_RATE\n"); @@ -2285,7 +2286,9 @@ static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) *(int*) argp = i->sample_spec.rate; pa_threaded_mainloop_unlock(i->mainloop); break; +#endif +#if HAVE_DECL_SOUND_PCM_READ_CHANNELS case SOUND_PCM_READ_CHANNELS: debug(DEBUG_LEVEL_NORMAL, __FILE__": SOUND_PCM_READ_CHANNELS\n"); @@ -2293,7 +2296,9 @@ static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) *(int*) argp = i->sample_spec.channels; pa_threaded_mainloop_unlock(i->mainloop); break; +#endif +#if HAVE_DECL_SOUND_PCM_READ_BITS case SOUND_PCM_READ_BITS: debug(DEBUG_LEVEL_NORMAL, __FILE__": SOUND_PCM_READ_BITS\n"); @@ -2301,6 +2306,7 @@ static int dsp_ioctl(fd_info *i, unsigned long request, void*argp, int *_errno) *(int*) argp = pa_sample_size(&i->sample_spec)*8; pa_threaded_mainloop_unlock(i->mainloop); break; +#endif case SNDCTL_DSP_GETOPTR: { count_info *info; -- 2.6.4