[alsa-devel] [pulseaudio-discuss] [PATCH] alsa: Disable timer-scheduling for PCMs with the BATCH flag
Raymond Yau
superquad.vortex2 at gmail.com
Tue Dec 3 01:47:07 CET 2013
> >
> > 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 ?
usb-audio seem update when each URB send/receive (in 1ms intervals)
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
the rewind_safeguard is affected by the size of FIFO buffer as you cannot
rewind any data in FIFO buffer of DSP/ sound controller
More information about the Alsa-devel
mailing list