[alsa-devel] Question about tsched=0 on PulseAudio

Kuninori Morimoto kuninori.morimoto.gx at renesas.com
Thu May 18 07:12:49 CEST 2017


Hi Takashi-san

> > We noticed that our PulseAudio has crackling / skipping noise
> > which doesn't happen on normal aplay.
> > And it was removed if we do below
> > 
> > 	load-module module-hal-detect tsched=0
> > 
> > According to google, it say
> > 
> > 	tsched Since 0.9.11. Use system-timer based model (aka glitch-free).
> > 	Defaults to 1 (enabled). If your hardware does not return accurate timing
> > 	information (e.g. Creative sound cards) you can try to set tsched=0 to
> > 	enable the interupt based timing which was used in 0.9.10 and before.
> > 
> > Here, what does this "return accurate timing information" mean ?
> > Is it struct snd_pcm_ops::pointer ??
> 
> Yes.  Also runtime->delay is taken into account.
> 
> Both information have to be accurate enough.  With tsched=1, the
> period update is basically ignored and PA tries to update the buffer
> at its own timing.  The samples to be updated are determined by avail
> and delay values of snd_pcm_status, which are calculated from hw_ptr,
> appl_ptr and delay in the kernel.
> 
> Also, such a problem might be some memory coherency issue.

OK, thank you for your explanation.
My current driver updates snd_pcm_ops::pointer only when DMA transfer was
finished, but I guess it needs to adjust to update it during transfer, too.
I think I can use dmaengine_tx_status() for this purpose.
I don't know how to know about delay, but I will try update pointer as 1st step.

Best regards
---
Kuninori Morimoto


More information about the Alsa-devel mailing list