[alsa-devel] Alsa-lib: Dmix slowptr latency behaviour

Matin Momin matinmomin at gmail.com
Tue Jun 20 12:29:26 CEST 2017


Hi Clemens,

> Matin Momin wrote:
>>> arecord -D"dsp" -r48000  -c2 -fs32_le | aplay -D"dmix1"

> To reduce the latency, reduce arecord's period size and/or aplay's
> buffer size.

 Actually, my aim is to understand if setting dmix slowptr to true
leads to increase in playback latency by buffer_time. Is it a known
issue or could it be because of the specific alsa device?

>> Now, in the same configuration if I disable slowptr in dmix1, the
>> delay comes down to 160 msecs, which corresponds exactly to buffer
>> time (85 msecs).

> Did you do multuple measurements?

Yes, and in each iteration I get reproducible measurements.

Regards,
Matin

PS: Please keep me in CC, I am not subscribed to the mailing list.



On Fri, Jun 16, 2017 at 11:03 AM, Matin Momin <matinmomin at gmail.com> wrote:
> Hi,
>
> On my embedded device, I am using a push mode simple alsa pipeline
> with following command
>
>> arecord -D"dsp" -r48000  -c2 -fs32_le | aplay -D"dmix1"
>
> where the asound conf looks this
> -------------------------------------------------------------------
> # This is the actual HW device
> pcm.dsp {
>         type hw
>         card 1
>         rate 48000
>         channels 2
>         format S32_LE
> }
> pcm.dmix1 {
>         type dmix
>         ipc_key 1024
>         ipc_key_add_uid false
>         ipc_perm 0666
>         slave.pcm "dsp"
>         slowptr true
> }
> -------------------------------------------------------------------
>
> I measured the pipeline delay by using Audacity on my PC, and
> measuring the difference in spike of audio recorded on the PC in a
> silent environment (1st spike will be from the actual sound and second
> will be from the output of my embedded device).
>
> Here I get a delay of around 245 msecs.
>
> Now, in the same configuration if I disable slowptr in dmix1, the
> delay comes down to 160 msecs, which corresponds exactly to buffer
> time (85 msecs).
>
> I want to know whether this is expected or is it an aberration?
>
> I have measured the userland time for the data to travel from
> alsa-lib/src/pcm/pcm_hw.c: snd_pcm_hw_readi() to
> alsa-lib/src/pcm/pcm_dmix.c:mix_areas() (By adding incremental numbers
> to each period recorded by arecord and seeing how much time they take
> to reach dmix). I cannot find any difference in absolute time
> difference with both slowptr true and false. Also, the critical hw_ptr
> and appl_ptr variables in pcm_hw and pcm_dmix also reflect same values
> for slowptr true and false.
>
> Is the above mentioned method to measure delay correct? If I don't see
> a delay here, where else should I look?
>
> The alsa-lib version is 1.1.0 and kernel is 3.8.13.
>
> Thanks in advance.
>
> Regards,
> Matin


More information about the Alsa-devel mailing list