Date: Sun, 7 Jun 2009 19:12:08 +0000 (UTC) From: Ariff Abdullah <ariff@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/conf files options src/sys/dev/sound clone.c driver.c unit.c version.h src/sys/dev/sound/isa ad1816.c ess.c gusc.c mss.c sb16.c sb8.c sbc.c sndbuf_dma.c src/sys/dev/sound/macio aoa.c davbus.c i2s.c snapper.c tumbler.c ... Message-ID: <200906071914.n57JES16056787@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
ariff 2009-06-07 19:12:08 UTC
FreeBSD src repository
Modified files:
sys/conf files options
sys/dev/sound clone.c driver.c unit.c version.h
sys/dev/sound/isa ad1816.c ess.c gusc.c mss.c sb16.c sb8.c
sbc.c sndbuf_dma.c
sys/dev/sound/macio aoa.c davbus.c i2s.c snapper.c tumbler.c
sys/dev/sound/midi midi.c mpu401.c sequencer.c sequencer.h
sys/dev/sound/pci als4000.c atiixp.c aureal.c cmi.c
cs4281.c csa.c csapcm.c ds1.c emu10k1.c
emu10kx-midi.c emu10kx-pcm.c emu10kx.c
envy24.c envy24ht.c es137x.c fm801.c
ich.c maestro.c maestro3.c neomagic.c
solo.c spicds.c t4dwave.c via8233.c
via82c686.c vibes.c
sys/dev/sound/pci/hda hdac.c
sys/dev/sound/pcm ac97.c ac97_patch.c buffer.c buffer.h
channel.c channel.h channel_if.m dsp.c
dsp.h feeder.c feeder.h feeder_rate.c
feeder_volume.c mixer.c mixer.h sndstat.c
sound.c sound.h vchan.c vchan.h
sys/dev/sound/sbus cs4231.c
sys/dev/sound/usb uaudio.c uaudio.h uaudio_pcm.c
sys/modules/sound/sound Makefile
sys/sys soundcard.h
Added files:
sys/dev/sound/pcm feeder_chain.c feeder_eq.c
feeder_format.c feeder_matrix.c
feeder_mixer.c g711.h intpcm.h matrix.h
matrix_map.h pcm.h sndstat.h
sys/tools feeder_eq_mkfilter.awk
feeder_rate_mkfilter.awk
snd_fxdiv_gen.awk
Removed files:
sys/dev/sound/pcm fake.c feeder_fmt.c
Log:
SVN rev 193640 on 2009-06-07 19:12:08Z by ariff
Sound Mega-commit. Expect further cleanup until code freeze.
For a slightly thorough explaination, please refer to
[1] http://people.freebsd.org/~ariff/SOUND_4.TXT.html .
Summary of changes includes:
1 Volume Per-Channel (vpc). Provides private / standalone volume control
unique per-stream pcm channel without touching master volume / pcm.
Applications can directly use SNDCTL_DSP_[GET|SET][PLAY|REC]VOL, or for
backwards compatibility, SOUND_MIXER_PCM through the opened dsp device
instead of /dev/mixer. Special "bypass" mode is enabled through
/dev/mixer which will automatically detect if the adjustment is made
through /dev/mixer and forward its request to this private volume
controller. Changes to this volume object will not interfere with
other channels.
Requirements:
- SNDCTL_DSP_[GET|SET][PLAY|REC]_VOL are newer ioctls (OSSv4) which
require specific application modifications (preferred).
- No modifications required for using bypass mode, so applications
like mplayer or xmms should work out of the box.
Kernel hints:
- hint.pcm.%d.vpc (0 = disable vpc).
Kernel sysctls:
- hw.snd.vpc_mixer_bypass (default: 1). Enable or disable /dev/mixer
bypass mode.
- hw.snd.vpc_autoreset (default: 1). By default, closing/opening
/dev/dsp will reset the volume back to 0 db gain/attenuation.
Setting this to 0 will preserve its settings across device
closing/opening.
- hw.snd.vpc_reset (default: 0). Panic/reset button to reset all
volume settings back to 0 db.
- hw.snd.vpc_0db (default: 45). 0 db relative to linear mixer value.
2 High quality fixed-point Bandlimited SINC sampling rate converter,
based on Julius O'Smith's Digital Audio Resampling -
http://ccrma.stanford.edu/~jos/resample/. It includes a filter design
script written in awk (the clumsiest joke I've ever written)
- 100% 32bit fixed-point, 64bit accumulator.
- Possibly among the fastest (if not fastest) of its kind.
- Resampling quality is tunable, either runtime or during kernel
compilation (FEEDER_RATE_PRESETS).
- Quality can be further customized during kernel compilation by
defining FEEDER_RATE_PRESETS in /etc/make.conf.
Kernel sysctls:
- hw.snd.feeder_rate_quality.
0 - Zero-order Hold (ZOH). Fastest, bad quality.
1 - Linear Interpolation (LINEAR). Slightly slower than ZOH,
better quality but still does not eliminate aliasing.
2 - (and above) - Sinc Interpolation(SINC). Best quality. SINC
quality always start from 2 and above.
Rough quality comparisons:
- http://people.freebsd.org/~ariff/z_comparison/
3 Bit-perfect mode. Bypasses all feeder/dsp effects. Pure sound will be
directly fed into the hardware.
4 Parametric (compile time) Software Equalizer (Bass/Treble mixer). Can
be customized by defining FEEDER_EQ_PRESETS in /etc/make.conf.
5 Transparent/Adaptive Virtual Channel. Now you don't have to disable
vchans in order to make digital format pass through. It also makes
vchans more dynamic by choosing a better format/rate among all the
concurrent streams, which means that dev.pcm.X.play.vchanformat/rate
becomes sort of optional.
6 Exclusive Stream, with special open() mode O_EXCL. This will "mute"
other concurrent vchan streams and only allow a single channel with
O_EXCL set to keep producing sound.
Other Changes:
* most feeder_* stuffs are compilable in userland. Let's not
speculate whether we should go all out for it (save that for
FreeBSD 16.0-RELEASE).
* kobj signature fixups, thanks to Andriy Gapon <avg@freebsd.org>
* pull out channel mixing logic out of vchan.c and create its own
feeder_mixer for world justice.
* various refactoring here and there, for good or bad.
* activation of few more OSSv4 ioctls() (see [1] above).
* opt_snd.h for possible compile time configuration:
(mostly for debugging purposes, don't try these at home)
SND_DEBUG
SND_DIAGNOSTIC
SND_FEEDER_MULTIFORMAT
SND_FEEDER_FULL_MULTIFORMAT
SND_FEEDER_RATE_HP
SND_PCM_64
SND_OLDSTEREO
Manual page updates are on the way.
Tested by: joel, Olivier SMEDTS <olivier at gid0 d org>, too many
unsung / unnamed heroes.
Revision Changes Path
1.1415 +32 -5 src/sys/conf/files
1.675 +9 -0 src/sys/conf/options
1.5 +6 -2 src/sys/dev/sound/clone.c
1.22 +5 -1 src/sys/dev/sound/driver.c
1.47 +26 -27 src/sys/dev/sound/isa/ad1816.c
1.43 +27 -23 src/sys/dev/sound/isa/ess.c
1.20 +8 -8 src/sys/dev/sound/isa/gusc.c
1.113 +34 -30 src/sys/dev/sound/isa/mss.c
1.98 +20 -16 src/sys/dev/sound/isa/sb16.c
1.87 +17 -13 src/sys/dev/sound/isa/sb8.c
1.49 +4 -0 src/sys/dev/sound/isa/sbc.c
1.4 +4 -0 src/sys/dev/sound/isa/sndbuf_dma.c
1.4 +12 -6 src/sys/dev/sound/macio/aoa.c
1.4 +12 -6 src/sys/dev/sound/macio/davbus.c
1.4 +7 -1 src/sys/dev/sound/macio/i2s.c
1.3 +9 -3 src/sys/dev/sound/macio/snapper.c
1.3 +9 -3 src/sys/dev/sound/macio/tumbler.c
1.26 +19 -1 src/sys/dev/sound/midi/midi.c
1.5 +36 -18 src/sys/dev/sound/midi/mpu401.c
1.31 +20 -2 src/sys/dev/sound/midi/sequencer.c
1.10 +1 -1 src/sys/dev/sound/midi/sequencer.h
1.28 +24 -20 src/sys/dev/sound/pci/als4000.c
1.22 +19 -19 src/sys/dev/sound/pci/atiixp.c
1.37 +16 -12 src/sys/dev/sound/pci/aureal.c
1.47 +22 -18 src/sys/dev/sound/pci/cmi.c
1.28 +33 -26 src/sys/dev/sound/pci/cs4281.c
1.39 +7 -3 src/sys/dev/sound/pci/csa.c
1.42 +22 -19 src/sys/dev/sound/pci/csapcm.c
1.54 +33 -29 src/sys/dev/sound/pci/ds1.c
1.71 +37 -32 src/sys/dev/sound/pci/emu10k1.c
1.6 +11 -4 src/sys/dev/sound/pci/emu10kx-midi.c
1.12 +40 -36 src/sys/dev/sound/pci/emu10kx-pcm.c
1.16 +11 -3 src/sys/dev/sound/pci/emu10kx.c
1.17 +26 -23 src/sys/dev/sound/pci/envy24.c
1.19 +26 -23 src/sys/dev/sound/pci/envy24ht.c
1.72 +23 -23 src/sys/dev/sound/pci/es137x.c
1.34 +21 -16 src/sys/dev/sound/pci/fm801.c
1.104 +25 -25 src/sys/dev/sound/pci/hda/hdac.c
1.81 +13 -10 src/sys/dev/sound/pci/ich.c
1.38 +32 -48 src/sys/dev/sound/pci/maestro.c
1.36 +31 -27 src/sys/dev/sound/pci/maestro3.c
1.38 +15 -11 src/sys/dev/sound/pci/neomagic.c
1.46 +29 -25 src/sys/dev/sound/pci/solo.c
1.8 +4 -0 src/sys/dev/sound/pci/spicds.c
1.55 +32 -28 src/sys/dev/sound/pci/t4dwave.c
1.38 +25 -26 src/sys/dev/sound/pci/via8233.c
1.44 +16 -12 src/sys/dev/sound/pci/via82c686.c
1.28 +18 -14 src/sys/dev/sound/pci/vibes.c
1.75 +18 -13 src/sys/dev/sound/pcm/ac97.c
1.12 +4 -0 src/sys/dev/sound/pcm/ac97_patch.c
1.38 +76 -29 src/sys/dev/sound/pcm/buffer.c
1.18 +6 -5 src/sys/dev/sound/pcm/buffer.h
1.124 +985 -668 src/sys/dev/sound/pcm/channel.c
1.39 +149 -72 src/sys/dev/sound/pcm/channel.h
1.8 +29 -15 src/sys/dev/sound/pcm/channel_if.m
1.114 +635 -220 src/sys/dev/sound/pcm/dsp.c
1.14 +3 -1 src/sys/dev/sound/pcm/dsp.h
1.19 +0 -164 src/sys/dev/sound/pcm/fake.c (dead)
1.45 +36 -411 src/sys/dev/sound/pcm/feeder.c
1.16 +143 -43 src/sys/dev/sound/pcm/feeder.h
1.1 +843 -0 src/sys/dev/sound/pcm/feeder_chain.c (new)
1.1 +703 -0 src/sys/dev/sound/pcm/feeder_eq.c (new)
1.24 +0 -1435 src/sys/dev/sound/pcm/feeder_fmt.c (dead)
1.1 +300 -0 src/sys/dev/sound/pcm/feeder_format.c (new)
1.1 +825 -0 src/sys/dev/sound/pcm/feeder_matrix.c (new)
1.1 +402 -0 src/sys/dev/sound/pcm/feeder_mixer.c (new)
1.24 +1570 -469 src/sys/dev/sound/pcm/feeder_rate.c
1.7 +275 -118 src/sys/dev/sound/pcm/feeder_volume.c
1.1 +225 -0 src/sys/dev/sound/pcm/g711.h (new)
1.1 +136 -0 src/sys/dev/sound/pcm/intpcm.h (new)
1.1 +218 -0 src/sys/dev/sound/pcm/matrix.h (new)
1.1 +567 -0 src/sys/dev/sound/pcm/matrix_map.h (new)
1.66 +230 -43 src/sys/dev/sound/pcm/mixer.c
1.21 +13 -1 src/sys/dev/sound/pcm/mixer.h
1.1 +438 -0 src/sys/dev/sound/pcm/pcm.h (new)
1.29 +9 -12 src/sys/dev/sound/pcm/sndstat.c
1.1 +163 -0 src/sys/dev/sound/pcm/sndstat.h (new)
1.123 +171 -315 src/sys/dev/sound/pcm/sound.c
1.82 +204 -350 src/sys/dev/sound/pcm/sound.h
1.37 +659 -699 src/sys/dev/sound/pcm/vchan.c
1.6 +26 -8 src/sys/dev/sound/pcm/vchan.h
1.11 +20 -16 src/sys/dev/sound/sbus/cs4231.c
1.2 +5 -1 src/sys/dev/sound/unit.c
1.49 +58 -5 src/sys/dev/sound/usb/uaudio.c
1.11 +2 -0 src/sys/dev/sound/usb/uaudio.h
1.27 +17 -8 src/sys/dev/sound/usb/uaudio_pcm.c
1.3 +1 -1 src/sys/dev/sound/version.h
1.23 +15 -1 src/sys/modules/sound/sound/Makefile
1.51 +21 -1 src/sys/sys/soundcard.h
1.1 +467 -0 src/sys/tools/feeder_eq_mkfilter.awk (new)
1.1 +767 -0 src/sys/tools/feeder_rate_mkfilter.awk (new)
1.1 +142 -0 src/sys/tools/snd_fxdiv_gen.awk (new)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906071914.n57JES16056787>
