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>