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