2010/5/12 pl bossart <bossart.nospam@xxxxxxxxx> > > Some care would need to be taken with regards to detecting xruns. > > I think the alsa code currently uses the interrupt callback to detect > this. > > I have seen a Windows 7 machine happily loop the audio buffer > > uncontrollably, so I assume it has problems detecting xruns as well. > > When the PulseAudio timer fires, the use of snd_pcm_avail() will force > a call to .pointer and will detect underflows. PulseAudio modilfies > its watermark when underflows occur so that more time is allocated to > refilling the ring buffer. > There are probably some cases I didn't plan for, but on paper I don't > really see a show-stopper here. > > > Some sound card hardware only updates the hw pointer at around dma > > interrupt event time, so again using the interrupt is used to improve > > the accuracy of the hw pointer with interpolation used between > > interrupts. > > If the hardware doesn't provide an accurate hw pointer, then the > timer-based scheduling should not be used I agree. > How accurate do timer-based scheduling need ? e.g. accuracy up to +/- 5% of period size or the watermark is too low for those sound card can PA provide option to change the initial watermark ? > > > Some sound card hardware has very small hardware buffers, so PA will > > have to be waking up as often as the dma interrupts in order to keep > > the audio hardware buffers full enough. > > In how many cased would PA have to wake up less often than the DMA > interrupt? > > This patch is mainly for music playback where you have more than 2s > buffered in the ring buffer. Do you mean that those application require low latency will fail with underrun ? seem the usuage of PA is quite limited Can PA provide an option to increase the number of wake up for those desktop user which power consumption is not important ? ( default- fragments ) it seem (disable timer option ) of new PA version is not as same as the Traditional mode of old PA version anymore > PulseAudio will wake-up after 1.9s or so, > as the ring buffer becomes empty, and when it does the wake-up may be > grouped with other system events with the timer slack. Having one or > more interrupts in the middle or the ring buffer will reduce the > efficiency of sleep modes that are being introduced with Moorestown > and future Atom-based SOCs. > So again this patch isn't for everyone. All standard disclaimers > apply, if you have a pre-existing conditon tell your doctor etc. If > there's a 4K ring buffer, this is not useful. au88x0 has 4 set of hardware registers each with 4 K buffers ( i.e. total 16 K bytes) PA work quite nicely with 2 periods per buffer on PA 1.0.13 but some user reported cracking noise when new PA 1.0.14 or later version use 8 periods per buffer > If your hardware is > broken, stay the course with the current solution. If PulseAudio is > disabled in your distro, this is of no interest to you. In all these > cases, this patch doesn't change anything, the behavior is the same. > But if you want to optimize for power and latency isn't a concern, > then these interrupts can be disabled and need to. > > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel