On Tue, Feb 14, 2006, Ingo Schneider wrote: > I hava a problem that I loose TS packets due to overruns of the SAA 7146 > DMA buffer when the system is under I/O load (e.g. backup). > > I modified the budget-core.c to give warning when the buffer is nearly > full to verify that this is really the cause (see code below). > The simplest thing would be to increase the buffer size. The current > size = 1024 TS packets, about 192k. Processing is done from the irq handler (well, actually from a tasklet triggered by irq). For a 30Mbit/s stream this buffer holds ~50ms worth of TS packets which are then pushed into a larger ringbuffer where it waits to be picked up by read() from the demux/dvr device. If the DMA buffer overflows you have an irq/tasklet latency problem. If your irqs/tasklets are delayed more than 50ms you need to find out why. First check hdparm settings if you have ATA disk. Second consider trying -rt kernel. If you just try to increase the buffer size the vpeirq might create similar latency problems for other drivers ;-/ IIRC the saa7146 has some hw bugs which restrict DMA settings. One thing you could try is to call vpeirq() directly from irq handler (i.e. replace the tasklet_schedule() call). HTH, Johannes _______________________________________________ linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb