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@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