[pulseaudio-commits] src/modules

Tanu Kaskinen tanuk at kemper.freedesktop.org
Fri Dec 6 03:05:56 PST 2013


 src/modules/alsa/alsa-util.c |    4 ++++
 1 file changed, 4 insertions(+)

New commits:
commit 826c8f69d34ef49e86fe0ab6c93c1ffba8916131
Author: Lars-Peter Clausen <lars at metafoo.de>
Date:   Sat Nov 30 18:07:24 2013 +0100

    alsa: Disable timer-scheduling for PCMs with the BATCH flag
    
    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.
    
    Signed-off-by: Lars-Peter Clausen <lars at metafoo.de>

diff --git a/src/modules/alsa/alsa-util.c b/src/modules/alsa/alsa-util.c
index 75f5858..4b24e47 100644
--- a/src/modules/alsa/alsa-util.c
+++ b/src/modules/alsa/alsa-util.c
@@ -245,6 +245,10 @@ int pa_alsa_set_hw_params(
     if (!pa_alsa_pcm_is_hw(pcm_handle))
         _use_tsched = false;
 
+    /* The PCM pointer is only updated with period granularity */
+    if (snd_pcm_hw_params_is_batch(hwparams))
+        _use_tsched = false;
+
 #if (SND_LIB_VERSION >= ((1<<16)|(0<<8)|24)) /* API additions in 1.0.24 */
     if (_use_tsched) {
 



More information about the pulseaudio-commits mailing list