\" $NetBSD: ossaudio.3,v 1.28 2022/12/04 11:25:09 uwe Exp $
\"
\" Copyright (c) 1997, 2020 The NetBSD Foundation, Inc.
\" All rights reserved.
\"
\" This code is derived from software contributed to The NetBSD Foundation
\" by Lennart Augustsson and Nia Alarie.
\"
\" Redistribution and use in source and binary forms, with or without
\" modification, are permitted provided that the following conditions
\" are met:
\" 1. Redistributions of source code must retain the above copyright
\" notice, this list of conditions and the following disclaimer.
\" 2. Redistributions in binary form must reproduce the above copyright
\" notice, this list of conditions and the following disclaimer in the
\" documentation and/or other materials provided with the distribution.
\"
\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
\" POSSIBILITY OF SUCH DAMAGE.
\"
Dd October 20, 2020
Dt OSSAUDIO 3
Os
Sh NAME
Nm ossaudio
Nd Open Sound System emulation
Sh LIBRARY
Lb libossaudio
Sh SYNOPSIS
In soundcard.h
Sh DESCRIPTION
The
Nm
library provides an emulation of the Open Sound System audio interface.
Pp
Use the native
Xr audio 4
and
Xr mixer 4
interfaces for new programs, and this emulation library only for
building code written for other operating systems.
Ss Mixer Control Map
The following table summarizes the mappings from native interface
device names to OSSv3 mixer controls.
Bl -column ".Sy Native Device Name" "SOUND_MIXER_SPEAKER"
It Sy "Native Device Name" Ta Sy "OSS Mixer Control"
It *.mic Ta SOUND_MIXER_MIC
It *.line Ta SOUND_MIXER_LINE
It *.cd Ta SOUND_MIXER_CD
It *.dac Ta SOUND_MIXER_PCM
It *.aux Ta SOUND_MIXER_LINE1
It *.record Ta SOUND_MIXER_IMIX
It *.master Ta SOUND_MIXER_VOLUME
It *.treble Ta SOUND_MIXER_TREBLE
It *.bass Ta SOUND_MIXER_BASS
It *.speaker Ta SOUND_MIXER_SPEAKER
It *.output Ta SOUND_MIXER_OGAIN
It *.input Ta SOUND_MIXER_IGAIN
It *.fmsynth Ta SOUND_MIXER_SYNTH
It *.midi Ta SOUND_MIXER_SYNTH
El
Sh COMPATIBILITY
The
Nm
interface aims to be compatible with the Open Sound System version 4, as
described in:
Pp
Rs
%A 4Front Technologies
%T OSS 4.x Programmer's Guide
%U
http://manuals.opensound.com/developer/
%D 2007
Re
Sh SEE ALSO
Xr ioctl 2 ,
Xr audio 4 ,
Xr midi 4 ,
Xr mixer 4
Sh HISTORY
The
Nm
library first appeared in
Nx 1.3 .
Pp
The Open Sound System up to version 3 was originally the preferred
API for writing audio code under Linux until ALSA became the new default
in Linux 2.6.
It remains the preferred API in
Fx
and Solaris, and a large body of code exists supporting it.
Sh BUGS
Bl -bullet
It
The emulation is incomplete.
Some less popular features are not emulated (e.g. sync groups), but the
essential ioctls used by the majority of software are covered.
It
Nx
Dv AUDIO_MIXER_SET
control types cannot be accurately represented in the OSSv4 mixer API,
so are treated as enums.
It
Per-stream volume (i.e.
Dv SNDCTL_DSP_SETPLAYVOL )
is not currently implemented as in OSSv4, and will instead modify the
global volume.
Applications need to provide samples with the appropriate gain.
It
Linux,
Fx ,
and Solaris provide
Pa /dev/dsp
and
Pa /dev/mixer
devices in place of the
Pa /dev/audio
and
Pa /dev/mixer
devices this compatibility layer must be accessed through on
Nx .
However, changing this is typically trivial when porting programs.
It
The emulation only covers
Fn ioctl ,
there are other differences as well.
E.g., on a write
that would block in non-blocking mode Linux returns
Er EINTR
whereas
Nx 1.3
returns
Er EAGAIN .
It
The emulation uses a #define for
Fn ioctl
so some obscure programs
can fail to compile.
El