Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: Vdr "video data stream broken"



Andreas Share wrote:

Hmm, my skystar2 rev 2.6c/stv0299 dies within 2-3h, but my nova (like
budget-ci) and my ff rev 1.5 sometimes run for ~12h...

i have seen the skystar2 irq_handler calls dvb_dmx_swfilter_packets() more
often than the other cards

if (adapter->capturing != 0) {
dvb_dmx_swfilter_packets(dvbdmx, pb_dma_buf_cur_pos,
dw_default_packet_size / 188);
}

at: "u32 dw_default_packet_size = 188;"

so i think every call deliver one packet.

Yes it does, but if you look at dvb_dmx_swfilter_packets() it simply loops around passing the TS data 188 bytes at a time to another routine, so it should not make much difference.

What does "vmstat 1" report about the number of IRQ/s on your machine when the card is running?

I took a look at the Skystar buffer handling and it appears that it passes around 100kB of data in each interrupt, which is similar to the budget driver.

If you look at dvb_dmx_swfilter_packets() you'll see that it expects the TS packet to start with 0x47. Perhaps a problem causes it to lose sync and so all the packets get dropped. The patch attached should tell you when this occurs. You may see a few messages caused by transient errors, but the important thing is if you see a lot immeadiately before VDR reports the broken stream.

Currently the drivers assume that the hardware will always provide the TS stream perfectly aligned on 188 byte boundaries.

Jon

--- dvb_demux-orig.c	2004-07-10 16:13:34.190000000 +0100
+++ dvb_demux.c	2004-07-10 16:15:15.000000000 +0100
@@ -435,7 +435,8 @@
 	while (count--) {
                	if(buf[0] == 0x47) {
 		        dvb_dmx_swfilter_packet(demux, buf);
-		}
+		} else
+			printk("DVB Demux lost sync with TS\n");
 		buf += 188;
 	}
 

Home | Main Index | Thread Index