[pulseaudio-discuss] [alsa-devel] [PATCH] alsa: Disable timer-scheduling for PCMs with the BATCH flag

Takashi Iwai tiwai at suse.de
Tue Dec 3 00:24:16 PST 2013


At Tue, 3 Dec 2013 08:47:07 +0800,
Raymond Yau 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.
> > >
> > >
> > > If the playback position is reported in steps instead of monotonic
> > increasing ?
> > >
> > > does this mean that you also need to increase rewind_safeguard to one
> > period
> > > or modifiy snd_pcm_rewindable ?
> >
> >
> > Yes that makes sense. The safeguard should probably be 1.5 periods or 1
> > period + fixed value, since it will always take some time from when the
> > hardware reaches the next period to when userspace is notified about this.
> >
> > I'm unfortunately not that familiar with pulseaudio. Maybe there is a
> > better
> > way to fix this problem then to disable tsched. If anybody wants to
> > recreate
> > the issue it can easily be emulated by applying the following patch to your
> > kernel:
> >
> >
> does all alsa drivers with SNDRV_PCM_INFO_PATCH update the playback/capture
> position in period interrupt ?

In general, yes.

> usb-audio seem update when each URB send/receive (in 1ms intervals)

The usb-audio driver behaved in a BATCH way in the very early version,
but it was improved.  So we can get rid of the flag from this driver
now.

> ymfpci driver also update hwptr in 5ms interval but no SNDRV_PCM_INFO_PATCH
> and no constraint in period time must be interval of 5 ms

It's a subtle driver bug.  Feel free to fix it if you have a test
hardware :)  Otherwise, better not to touch such an old code.


Takashi


More information about the pulseaudio-discuss mailing list