[alsa-devel] PROBLEM: SIS7019 stops recording after 42 min
linux at schou.dk
Mon Jun 21 07:56:05 CEST 2010
2010/6/20 David Dillow <dave at thedillows.org>:
> You caught the correct files, yes. Did that command produce 10 second
> pauses? If not, then I need to see the same information from the rec
> command you were using to reproduce the issue before. It may be easier
> to just run the rec command for a moment to collect the data rather than
> wait the 40+ minutes to see if arecord also demonstrates the issue.
Over night I have been running arecord several times. Alle wav-files
are much below the expected size 264600000 bytes (44100*2*60s*50min).
The file size recorded
189900842/(44100*2*60) = 35.88
Only 35 minutes of recording but I was running in 50min.
It seems that arecord loses more sample than I have seen with sox-rec.
> I'm guessing that rec (sox) is using the mmap interface, and
> I've not done much with that -- though perhaps there is a bug in sox's
> overrun handling. You could enable SND_PCM_XRUN_DEBUG to see if overruns
> are happening when sox starts taking 10 seconds.
How do I enable SND_PCM_XRUN_DEBUG with sox?
> Getting overruns on SiS 550 based devices isn't entirely surprising, as
> it doesn't have a huge amount of horsepower or memory.
Well, I usually don't have problem with that. I have samba running but
I don't access the recorded files while recording, so it is not a
Right now uptime says
load average: 0.19, 0.21, 0.18
but strace and top is the bad guys, not arecord.
>> The error does occur with rate 8000 8bit (the default).
> Do you mean 'does not occur'? That may be more expected -- 8khz/8bit has
> approximately 9% of the data as 44.1khz/16bit.
Sorry, yes you are right.
>> > Can you try using arecord? You can use options to tell it how to
>> > configure the PCM. Especially interesting will be to configure 2 periods
>> > per buffer vs whatever rec uses. 2 periods per buffer uses the hardware
>> > interrupts to clock out periods, where as 3+ uses a more complex
>> > mechanism. You can also use -M to use mmap vs not.
>> Options like this?
>> strace -tt -o arec.log arecord -c 1 -r 44100 -f S16 -M arec.wav
I tried this one:
arecord -c 1 -r 44100 -f S16 -M -D hw:0,0 -v arec.wav
but it did not change anything. Still the files are much too small.
Recording WAVE 'arec.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Mono
Hardware PCM card 0 'SiS7019' device 0 subdevice 0
Its setup is:
stream : CAPTURE
access : MMAP_INTERLEAVED
format : S16_LE
subformat : STD
channels : 1
rate : 44100
exact rate : 44100 (44100/1)
msbits : 16
buffer_size : 22050
period_size : 5513
period_time : 125011
tick_time : 0
tstamp_mode : NONE
period_step : 1
sleep_min : 0
avail_min : 5513
xfer_align : 5513
start_threshold : 1
stop_threshold : 22050
silence_size : 0
boundary : 1944986400
overrun!!! (at least 4.368 ms long)
state : XRUN
tstamp : 1277092780.323362792
delay : 0
avail : 27562
avail_max : 27562
# grep avail arec-stdout2.log | sort | uniq -c
6 avail : 22053
13 avail : 22055
2 avail : 22058
1 avail : 22059
10 avail : 22060
4 avail : 22062
1 avail : 22063
2 avail : 22064
10975 avail : 27562
5 avail : 33075
2 avail : 38588
6 avail_max : 22053
13 avail_max : 22055
2 avail_max : 22058
1 avail_max : 22059
10 avail_max : 22060
4 avail_max : 22062
1 avail_max : 22063
2 avail_max : 22064
10975 avail_max : 27562
5 avail_max : 33075
2 avail_max : 38588
2 avail_min : 5513
So most often 'avail' is 27562 after an overrun when running arecord.
I think it would be better to test with sox-rec but which options
should be used?
More information about the Alsa-devel