Home | History | Annotate | Line # | Download | only in libossaudio
 $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 n soundcard.h .Sh DESCRIPTION The .Nm library provides an emulation of the Open Sound System audio interface.

p 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. l -column ".Sy Native Device Name" "SOUND_MIXER_SPEAKER" t Sy "Native Device Name" Ta Sy "OSS Mixer Control" t *.mic Ta SOUND_MIXER_MIC t *.line Ta SOUND_MIXER_LINE t *.cd Ta SOUND_MIXER_CD t *.dac Ta SOUND_MIXER_PCM t *.aux Ta SOUND_MIXER_LINE1 t *.record Ta SOUND_MIXER_IMIX t *.master Ta SOUND_MIXER_VOLUME t *.treble Ta SOUND_MIXER_TREBLE t *.bass Ta SOUND_MIXER_BASS t *.speaker Ta SOUND_MIXER_SPEAKER t *.output Ta SOUND_MIXER_OGAIN t *.input Ta SOUND_MIXER_IGAIN t *.fmsynth Ta SOUND_MIXER_SYNTH t *.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:

p .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 .

p 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 l -bullet t 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. t .Nx .Dv AUDIO_MIXER_SET control types cannot be accurately represented in the OSSv4 mixer API, so are treated as enums. t 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. t Linux, .Fx , and Solaris provide

a /dev/dsp and

a /dev/mixer devices in place of the

a /dev/audio and

a /dev/mixer devices this compatibility layer must be accessed through on .Nx . However, changing this is typically trivial when porting programs. t 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 . t The emulation uses a #define for .Fn ioctl so some obscure programs can fail to compile. .El