freebsd-nq/sys/dev/sound/pcm
Alexander Leidinger b611c801f0 MFp4 the sound Google Summer of Code project:
The goal was to sync with the OSSv4 API 4Front Technologies uses in their
proprietary OSS driver. This was successful as far as possible. The part
of the API which is stable is implemented, for the rest there are some
stubs already.

New system ioctls:
 - SNDCTL_SYSINFO - obtain audio system info (version, # of audio/midi/
   mixer devices, etc.)
 - SNDCTL_AUDIOINFO - fetch details about a specific audio device
 - SNDCTL_MIXERINFO - fetch details about a specific mixer device

New audio ioctls:
 - Sync groups (SNDCTL_DSP_SYNCGROUP/SNDCTL_DSP_SYNCSTART) which allow
   triggered playback/recording on multiple devices (even across processes
   simultaneously).
 - Peak meters (SNDCTL_DSP_GETIPEAKS/SNDCTL_DSP_GETOPEAKS) - can query
   audio drivers for peak levels (needs driver support, disabled for now).
 - Per channel playback/recording levels -
   SNDCTL_DSP_{GET,SET}{PLAY,REC}VOL.  Note that these are still in name
   only, just wrapping around the AC97-style mixer at the moment. The next
   step is to push them down to the drivers.

Audio ioctls still under development by 4Front (for which stubs may exist
in this commit):
 - SNDCTL_GETNAME, SNDCTL_{GET,SET}{SONG,LABEL}
 - SNDCTL_DSP_{GET,SET}_CHNORDER
 - SNDCTL_MIX_ENUMINFO, SNDCTL_MIX_EXTINFO - (might be documented enough in
   the OSS releases to work on this.  These ioctls cover the cool "twiddle
   any knob on your card" features.)

Missing:
 - SNDCTL_DSP_COOKEDMODE -- this ioctl is used to give applications direct
   access to a card's buffers, bypassing the feeder architecture.  It's
   a toughy -- "someone" needs to decide :
   (a) if this is desireable, and (b) if it's reasonably feasible.

Updates for driver writers:
 So far, only two routines to the channel class (in channel_if.m) are added.
 One is for fetching a list of discrete supported playback/recording rates
 of a channel, and the other is for fetching peak level info (useful for
 drawing peak meters).  Interested parties may want to help pushing down
 SNDCTL_DSP_{GET,SET}{PLAY,REC}VOL into the drivers.

To use the new stuff you need to rebuild the sound drivers or your kernel
(depending on if you use modules or not) and to install soundcard.h (a
buildworld/installworld handles this).

Sponsored by:	Google SoC 2006
Submitted by:	ryanb
Many thanks to:	4Front Technologies for their cooperation, explanations
		and the nice license of their soundcard.h.
2006-09-23 20:45:47 +00:00
..
ac97_if.m Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
ac97_patch.c The cmi9739_patch function which is referenced by ac97.c (rev. 1.56) now... 2005-10-02 15:50:22 +00:00
ac97_patch.h The cmi9739_patch function which is referenced by ac97.c (rev. 1.56) now... 2005-10-02 15:50:22 +00:00
ac97.c Add codec id support for Analog Device AD1986 AC'97 codec. 2006-01-07 05:20:46 +00:00
ac97.h sys/dev/sound/pcm/ac97.c: 2005-10-02 15:37:40 +00:00
buffer.c MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
buffer.h MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
channel_if.m MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
channel.c MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
channel.h MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
dsp.c MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
dsp.h MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
fake.c - fake.c 2005-09-10 17:47:39 +00:00
feeder_fmt.c Fix typos and clean up some comments. 2006-01-25 21:13:46 +00:00
feeder_if.m Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
feeder_rate.c - Rename hw.snd.unit to hw.snd.default_unit to make the purpose more obvious. 2006-06-18 14:14:41 +00:00
feeder_volume.c Update my email address, so people know where the exact / 2005-11-14 18:37:59 +00:00
feeder.c Remove some dead code. 2006-02-23 19:23:55 +00:00
feeder.h Various fixups: 2006-01-22 15:06:49 +00:00
mixer_if.m Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
mixer.c MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
mixer.h MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
sndstat.c sys/dev/sound/pcm/sndstat.c: 2005-10-02 15:43:57 +00:00
sound.c MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
sound.h MFp4 the sound Google Summer of Code project: 2006-09-23 20:45:47 +00:00
vchan.c - Rename hw.snd.unit to hw.snd.default_unit to make the purpose more obvious. 2006-06-18 14:14:41 +00:00
vchan.h Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00