On Sat, 2013-11-30 at 18:07 +0100, Lars-Peter Clausen wrote: > PCM Devices which have the BATCH flag set update the PCM pointer only with > period size granularity. Using timer based scheduling does not have any > advantage in this mode. For one devices which have that flag set usually update > the position pointer in software after getting the period interrupt. So > disabling the period interrupt is not possible for this kind of devices. > Furthermore writing to or reading from the buffer slice for the current period > is not possible since the position inside the buffer is not known. On the other > hand the tsched algorithm seems to get easily confused for this kind of > hardware, which results in garbled audio output. This typically means that timer > based scheduling needs to be manually disabled on systems with such devices. > Auto disabling tsched in this case allows these systems to run with the default > configuration. > > Signed-off-by: Lars-Peter Clausen <lars at metafoo.de> > --- > src/modules/alsa/alsa-util.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c > index 75f5858..4b24e47 100644 > --- a/src/modules/alsa/alsa-util.c > +++ b/src/modules/alsa/alsa-util.c > @@ -245,6 +245,10 @@ int pa_alsa_set_hw_params( > if (!pa_alsa_pcm_is_hw(pcm_handle)) > _use_tsched = false; > > + /* The PCM pointer is only updated with period granularity */ > + if (snd_pcm_hw_params_is_batch(hwparams)) > + _use_tsched = false; > + > #if (SND_LIB_VERSION >= ((1<<16)|(0<<8)|24)) /* API additions in 1.0.24 */ > if (_use_tsched) { > Thanks! I applied the patch. -- Tanu