Does snd-oxygen provide this position with granularity which is less
than
the minimum period size ?
Yes. Its DMA controller uses a burst size of 32 bytes. The pointer
registers
are documented as reporting the position with 4-byte accuracy, but there
were
problems when the period/buffer sizes were not aligned to 32 bytes. I've
set
the minimum period size to 64 bytes, just to be safe.
The brust size is usually added to the constriants but the application cannot deduce this value
err = snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 32);
For those audio controllers have FIFO buffer, the application must keep the FIFO buffer full at any time for glitch free.
Someone may argue that keeping at least one frame above FIFO threshold is just enough
http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081509.h...
I don't understand why the minimum buffer size can be less than FIFO size