Mailing List archive

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

[linux-dvb] Re: Which CRC-code is used in TS of DVB?



Gregor Lawatscheck wrote:
At 23:26 26/05/2003, you wrote:

The decoder does not get the TS.

AFAIK there is no CRC in the TS but in the PES header? I haven't checked this, so I could be wrong.

Nevertheless: http://www.linuxtv.org/mailinglists/linux-dvb/2002/11-2002/msg00176.html is interesting, from Oct Nov 2002 where Holger speaks about CRC32 checking being broken in the av7110 firmware. Is this still the case and would that explain, why broken streams reliably manage to confuse and crash the decoder?

There are also other instances between
tuner and decoder which handle the TS or demuxed stream and can fail
because of a broken stream. And think of a soft-player. It increases
CPU-load dramatically if a soft-player has to handle bitstream error.

Holger told that CRC32 is implemented in the driver, it just has to be
activated.
it's implemented in the software path you use when you load the driver with hw_sections=0.


Now that sounds like it'll drop sections that didn't pass CRC32, doesn't it?
exactly.


I'm not aware CRC32 corrects anything. I personally just fear CRC32 errors, for example in archives etc. To me it's a checksum: According to http://www.cyberdyne-software.com/crc32.html CRC = "cyclic redundancy check(sum)". What do you do when the checksum fails? "Invert[ing] the wrong bits" is certainly beyond me.
CRC is a correctness check only, error correction is done by the FEC and RS decoder unit of the frontend (demodulator).

I actually thought the CRC32 was good exactly for the latter reason - error detection - passing it to the decoder with the notice: "hey, by the way, this data is broken, handle with care".
DVB uses the CRC32 to protect sensible data where single bit errors can cause fatal results. In these places we have to discard errornous data.


I'd like to believe otherwise. It'd be a great benefit to everyone if CRC32 from a budget card could be used to correct bitstream errors. I thought FEC (forward error correction) was for error correction of the bitstream - and surely that's done even for the budget cards...
FEC is done by the frontend for all MPEG packets, CRC32 by the demux for section data (and only if the userspace application requested the CRC32 check).

Holger



--
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index