On Wed, 25 Jul 2018 23:52:36 +0200, Rob Duncan 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.
The capture in ioplug is a sort of mmap emulation. On real hardware, the mmap data is already committed before update_avail is called, update_avail just follows the already committed amount. In the emulation mode, it's other way round; the data is committed at the point hwptr is update, i.e. avail_update is called.
Takashi
If this is not a requirement then there can still be uncommitted data in the mmap after the current appl_ptr. This data will get overwritten by the transfer call.
If it is a requirement then snd_pcm_rate_avail_update() seems to be doing the wrong thing, because it only commits in units of the period size, which means that there could be a partial period left in the mmap.
Can someone clarify what the contract is for these calls?
Thanks,
Rob. _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel