On Mon, 2010-06-21 at 19:42 +0200, Hans Schou wrote:
2010/6/21 David Dillow dave@thedillows.org:
I don't know the options available on sox, but if you can use arecord to reproduce, then that is probably the best tool for the job. Can you set it up to use two periods per buffer and see if you still can reproduce? Options would look like -B 250000 -F 125000. A second test with -B 1000000 -F 500000 would be interesting, if the hw can handle buffers of that size -- I don't recall offhand.
I have just started it with -B 250000 -F 125000 and get a lot of overrun. I skipped using strace to make less stress.
cmdline is now: arecord -B 250000 -F 125000 -c 1 -r 44100 -f S16 -M -D hw:0,0 -v arec.wav
overrun!!! (at least 0.201 ms long) Status: state : XRUN trigger_time: 1277140527.1826705 tstamp : 1277140527.2005279 delay : 0 avail : 16537 avail_max : 16537
This really makes me think the system just cannot keep up. Can you post the initial output to verify that it is getting two periods per buffer, please? If you are getting overruns and small files in that configuration, there is not much I think I do to help -- that uses the hardware's built-in support for generating the appropriate interrupts.
Also, does it do the same without the -M ? And you may wish to try longer and shorter periods to see if you get so many overruns.
Also, what storage are you using? Does it support DMA? PIO modes can be very slow...
I will hopefully have my hardware back up and running tonight; BTW, what distro are you using? I'm trying Fedora 13, but I'm expecting to run into trouble with the lack of cmov support on the processor.
Debian stable.
Thanks, I'll fall back to that if getting Fedora going looks to be more trouble than it is worth.
Dave