[alsa-devel] commit bd5389278c96f585afcac4058420e4f3ac201d2a introduce big problem

Scott Jiang scott.jiang.linux at gmail.com
Tue Nov 8 10:16:33 CET 2011


Hi Takash,

commit bd5389278c96f585afcac4058420e4f3ac201d2a
Author: Takashi Iwai <tiwai at suse.de>
Date:   Fri Aug 21 01:18:00 2009 +0200

    pcm: workaround for avoiding automatic start in mmap mode

    In the normal mmap mode, the stream isn't started automatically even after
    the data >= start_threshold has been written.   However, in the
    mmap-emulation mode, the stream is started because it uses
    snd_pcm_write_areas() internally.

    As a workaround for this inconsistency, start_threshold value is changed
    dynamically in sw_parmams and mmap_commit callbacks in mmap-emul plugin.
    Meanwhile, start_threshold for slave PCM is set to boundary so that only
    this plugin (or the one over it) can control the start of the stream.

    This will fix problems in some apps using pulse plugin in the mmap mode.

    Signed-off-by: Takashi Iwai <tiwai at suse.de>

src/pcm/pcm_mmap_emul.c

This commit caused codec using mmap-emul plugin can't work.
My config file list below:

bfin-ad1836.pcm.default {
        @args [ CARD ]
        @args.CARD {
                type string
        }
        type plug
        slave.pcm {
                type mmap_emul
                slave.pcm {
                        type hw
                        card $CARD
                        format S32_LE
                        rate 48000
                }
        }
}

Alsa will not send SNDRV_PCM_IOCTL_START to driver.
But if I revert this patch only, the sound will be bad. I guess there
must be something else to do.

Regards,
Scott


More information about the Alsa-devel mailing list