Hello,
I am investigating problems I'm having with recording over long periods. I'm using a Layla3G and tested various ALSA versions including 1.0.14 and 1.0.16 on different machines.
I've noticed that when I open the first pair of subdevices, my request for 1000ms buffer size is handled differently to other devices:
$ ./test_buffers "hw:Layla3G,0,0" 1000 buffer_size=16384 period_size=128
$ ./test_buffers "hw:Layla3G,0,2" 1000 buffer_size=32768 period_size=256
$ ./test_buffers "hw:Layla3G,0,4" 1000 buffer_size=32768 period_size=256
$ ./test_buffers "hw:Layla3G,0,6" 1000 buffer_size=32768 period_size=256
If I try other buffer sizes, I can see is a limit to buffer size of 16384 samples on the ,0 subdevice, which is also affecting the chosen period size. But only on the first subdevice. Is there a reason, or is this a bug?
Also, there seem to be failures at certain buffer sizes:
$ ./test_buffers "hw:Layla3G,0,2" 429 buffer_size=18912 period_size=96
$ ./test_buffers "hw:Layla3G,0,2" 430 set_buffer_time_near: Invalid argument
$ ./test_buffers "hw:Layla3G,0,2" 431 buffer_size=19008 period_size=96
Can anyone explain to me what's going on here, or is this also a bug?
The overall problem I'm investigating is snd_pcm_readi() returning incomplete buffers after running for long periods until another snd_pcm_prepare(). It seems possible that this is related.
Any help is greatly appreciated.
Thanks,
Mark