At 00:04 on Thu, Jul 26 2018, Takashi wrote:
Is it required that all available data has been committed between calls to snd_pcm_ioplug_avail_update() on an IO plugin capture stream?
Yes, the capture data is committed. The snd_pcm_ioplug_hw_ptr_update() should have reported the amount of data the slave PCM can actually transfer. Hence the transfer call thereafter must fulfill the whole requested data.
But what I see is that snd_pcm_rate_avail_update() commits data in the slave PCM in units of slave->period_size (via snd_pcm_rate_grab_next_period()), which means that if there is a partial period in the slave PCM mmap it will not be committed.
In other words, not all the available data will be commmitted before the next call to snd_pcm_ioplug_avail_update(). This means that the data will be discarded the next time that snd_pcm_ioplug_avail_update() is called.
Rob.