Hello
Is there any documentation/rationale for how pcm_dsnoop works in snd_pcm_{dsnoop_}status? I am particularly wondering about the ordering of the snd_pcm_dsnoop_sync_ptr and the snd_pcm_status call on the slave pcm.
I see occasional spikes (>1000 frames) of difference between the slave pcm hwpointer after the snd_pcm_status call on it and the pointers in the dsnoop pcm, and a correspondingly bad avail count. I suspect the mismatches are due to process scheduling (the slave pcm status is delayed because the application process not running and the hardware progresses during that delay). Does this seem plausible? If so, could the code be simplified to reduce the the number of systemcalls needed? The status of the slave pcm seems to provide much of the information used to sync the pointers. Or is there some other way to get a tighter coupling between the dsnoop status htstamp and avail count?
Regards, /henrik