cvs commit: src/sys/dev/sound/pcm channel.c channel_if.m
ariff at FreeBSD.org
Fri Mar 16 17:16:28 UTC 2007
ariff 2007-03-16 17:16:24 UTC
FreeBSD src repository
sys/dev/sound/pcm channel.c channel_if.m feeder_fmt.c
- Macros cleanups, prefer inlined min() over MIN().
- Rework chn_read()/chn_write() for better dead interrupt detection
policy. Reduce scheduling overhead by doing pure 5 seconds sleep
before giving up, instead of several cycle of brute micro sleeping.
- Avoid calling wakeup_one() for non-sleeping channel (for example,
vchan parent channel).
- EWOULDBLOCK -> EAGAIN.
- Fix possible divide-by-zero panic on chn_sync().
- Re-enforce ^2 blocksize policy, since there are too many broken
userland apps that blindly assume it without even trying to do
- New channel method - CHANNEL_SETFRAGMENTS(), a refined version of
CHANNEL_SETBLOCKSIZE(). It accept _both_ blocksize and blockcount
arguments, so the driver internals will have better hints for
buffering and timing calculations.
- Hook FEEDER_SWAPLR into feederchain building process.
- Unified version of various filters, avoiding duplications.
- malloc()less feeder_fmt. Informations can be retrieved dynamically
by doing table lookup on static data. For cases such as converting
from stereo to mono or reducing bit depth where input data is larger
than output, cycle remaining available free space until it has been
exhausted and start kicking 8 bytes reservoir space from there to
complete the remaining requested count.
- Introduce FEEDER_SWAPLR. Few super broken hardwares (found on several
extremely cheap uaudio stick, possibly others) mistakenly wired left
and right channels wrongly, screwing output or input.
Revision Changes Path
1.115 +286 -197 src/sys/dev/sound/pcm/channel.c
1.7 +13 -0 src/sys/dev/sound/pcm/channel_if.m
1.22 +928 -1057 src/sys/dev/sound/pcm/feeder_fmt.c
More information about the cvs-all