[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