Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] Re: Patch: fidbirq() with recovery after lost intr
Ralph,
recently I've run some tests checking for data integrity when you reuse
the old half-buffer and output both the old half-buffer and new half-buffer
in the same interrupt. I used the fidbirq() modified like this:
static
void fidbirq (unsigned long data)
{
struct av7110_s *av7110 = (struct av7110_s*) data;
u8 *mem=(u8 *)(av7110->saa->grabbing);
int num=512;
int field=0x80&saa7146_read(av7110->saa_mem, PSR);
if (field) {
num=1024; /* output both half-buffers */
} else {
num=0; /* have a coffee break */
}
av7110->tsf=field;
if (av7110->feeding && mem[0]==0x47)
dvb_dmx_swfilter_packets(&av7110->demux, mem, num);
}
During broadcasting the 16 TV channels from 3 NOVA cards this really prints
out some corrupted TS packets (bad CRC_32) which means that the DMA
sometimes overwrites the very beginning of the old half-buffer. Broadcasting
from only 1 NOVA card reports no corruption at all.
Taking into consideration the number of interrupts per second generated by 3
cards and the rate how often this corruption happens (~10 per minute) I think
it's better to use the old half-buffer in case of missed interrupt than
to throw away 512 TS packets.
Could you perhaps run this test in your environment and report results?
Regards,
M.
--------------------------------------------------------------------------
---- ----
---- Marian Durkovic network manager ----
---- ----
---- Slovak Technical University Tel: +421 2 524 51 301 ----
---- Computer Centre, Nam. Slobody 17 Fax: +421 2 524 94 351 ----
---- 812 43 Bratislava, Slovak Republic E-mail: md@bts.sk ----
---- ----
--------------------------------------------------------------------------
--
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.
Home |
Main Index |
Thread Index