[alsa-devel] [RFC] ALSA: Reduce delay for a blocking pcm_drain.
Clemens Ladisch
clemens at ladisch.de
Mon Sep 30 10:45:52 CEST 2013
Dylan Reid wrote:
> This patch addresses two issues related to calling snd_pcm_drain.
>
> If no_period_wakeup is set, then snd_pcm_drain would wait
> MAX_SCHEDULE_TIMEOUT jiffies, without a wakeup pending this will leave
> the calling task blocked indefinitely.
no_period_wakeup is used by applications that do _not_ want to use any
of ALSA's blocking functions (and thus want to avoid the interrupt
overhead) and use their own timers instead. This also applies to
snd_pcm_drain.
Is there any actual application that tries to use snd_pcm_drain together
with no_period_wakeup?
> Also if the stream is running with period wakeups but with a long
> period, the delay could be seconds. If only a small part of the
> buffer is being used, this is unnecessary.
Wakeup at period boundaries is part of the ALSA API. (This is all what
periods are for.)
> Instead wait for the remaining samples to play out, plus one
> millisecond.
The device's clock and the Linux system clock might have larger
differences. The only reliable synchronization source is the period
interrupt.
Regards,
Clemens
More information about the Alsa-devel
mailing list