forcing more sound buffering
Julian Stacey
jhs at berklix.org
Wed Jan 16 17:51:04 PST 2008
Hi multimedia@ people,
I had sticky (intermittent breaks) sound on 2 slow hosts with 7-PRERELEASE
The causes of the stickiness are various &/or compound,
(eg slow CPU, DMA off (must be on mine), & PS2 mouse Giant
on 7 generic src/ etc) & I ve been reading & posting over
on stable@ about issues, & noting my configs for hosts lapd
& lapn at: http://berklix.com/~jhs/hardware/laptops/index.html#hosts
Issues causing breaks are dealt with on stable@, not here, but
sound specific work- rounds to breaks discussed here:
/boot/loader.conf:
hw.snd.feeder_buffersize=65536 # default 16384, read only after boot.
# Helped my intermittent music playing a lot (for .wav perfect,
mp3 improved from awful.
Maybe it should be ref'd in more manuals/ docs?
& docs should explain what it is: Buffer size in bytes maybe ?
& how it relates to max delay expected from disc feeding
audio data. ie (I'm guessing, it's late & I haven't
read source yet) if file reports eg
audio_01.mp3: MPEG ADTS, layer III, v1, 128 kBits, 44.1 kHz, JntStereo
Does 64K give me just a half second of buffer ?
(not enough here !)
I guess ksmp3play uses less internal buffering than mplayer, ? With a .jpg:
133MHz hw.snd.feeder_buffersize=16384 mplayer : ran a bit rough.
133MHz hw.snd.feeder_buffersize=65536 ksmp3play : awful
133MHz hw.snd.feeder_buffersize=65536 mplayer : still a bit broken.
166MHz hw.snd.feeder_buffersize=16384 ksmp3play : awful
166MHz hw.snd.feeder_buffersize=16384 mplayer: : much better
166MHz hw.snd.feeder_buffersize=65536 ksmp3play : broke up
166MHz hw.snd.feeder_buffersize=65536 mplayer : pretty good, not perfect.
hw.snd.feeder_buffersize Max is 64K.
I need more. Dont know if 64K is a horrible Intel
'86 IO seg limit, or just random choice. I'll try to tweak it.
What is the lowest speed CPU for playing `normal mp3 music (ie `file' above)
Am I being over ambitious or reasonable ?
What about decompression load on CPUs, buffering etc ?
BTW I earlier tried tweaking hw.snd.latency (without knowing what it was)
beyond max 10, but despite tweaking header (below) it went silent > 10.
Anything else I should be tweaking ?
-------
http://berklix.com/~jhs/src/bsd/fixes/freebsd/src/jhs/sys/dev/sound/pcm/channel.h.REL=ALL.diff
Experimental patch for my slow 7-PRERELEASE hosts by jhs@@berklix.com
to allow more than hw.snd.latency=10 in /boot/loader.conf
It applies & runs, but if you use above 10, no sound.
If you reduce to 5, sound seems somewhat worse, more interrupted,
but even with this patch, beyond 10 it goes silent.
See Also http://berklix.com/~jhs/hardware/laptops/index.html#sound
*** 7.0-PRERELEASE-ctm-79/src/sys/dev/sound/pcm/channel.h Wed Jan 16 16:19:03 2008
--- jhs-experimental/src/sys/dev/sound/pcm/channel.h Wed Jan 16 16:20:37 2008
***************
*** 343,349 ****
#define CHN_N_TRIGGER 0x00000010
#define CHN_LATENCY_MIN 0
! #define CHN_LATENCY_MAX 10
#define CHN_LATENCY_DEFAULT 5
#define CHN_POLICY_MIN CHN_LATENCY_MIN
#define CHN_POLICY_MAX CHN_LATENCY_MAX
--- 343,350 ----
#define CHN_N_TRIGGER 0x00000010
#define CHN_LATENCY_MIN 0
! /* #define CHN_LATENCY_MAX 10 JJDEBUG */
! #define CHN_LATENCY_MAX 40 /* used by channel.c & feeder.c */
#define CHN_LATENCY_DEFAULT 5
#define CHN_POLICY_MIN CHN_LATENCY_MIN
#define CHN_POLICY_MAX CHN_LATENCY_MAX
-------
Julian
--
Julian Stacey. Munich Consultant: BSD Linux Unix. http://berklix.com
More information about the freebsd-multimedia
mailing list