21.09.2014 15:53, Clemens Ladisch wrote:
Raymond Yau wrote:
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.
Well, my friend has tested the card anyway, and I am afraid that the situation is in fact more complex than documented. Look how fast (8 samples per ioctl in a busy loop!) the card eats the first 256 samples. This is very suspicious, and I am not really sure whether we can actually perform a rewind over these 256 samples.
The "usual" step of the pointer updates (via snd_pcm_avail) is indeed 8 samples = 32 bytes with some fine-grained updates sometimes showing up in the middle, which matches the documented burst size.