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