[mythtv] Latest cvs - atscstreamdata.cpp - PSIP packet failed CRC
check
Eric Anderson
rico99 at sbcglobal.net
Thu Dec 30 08:00:06 UTC 2004
Hi -
I'm not sure if others have run into this particular problem before,
but I was
getting a steady stream of PSIP errors from my local CBS station (KPIX).
I put some printf's in to see if there was any pattern to the errors.
And it
turns out there was...
All of the packets with errors had TableID=0xCC. But not all packets
with
TableID = 0xCC had errors.
-> If anyone hasn't seen this before and wants to look at this in
detail (but
needs a sample stream), send me a mail and I can get you one. <-
Okay, so I don't claim to know much about PSIP, but from the comments,
0xCC is ETT (extended text table). And from looking at the code, we're
not
doing anything with ETT anyway (ie, DECODE_ETT = 0). So what to do?
Perhaps the CRC computation for ETT packets is different?
Anyway, for me, this helped to eliminate the errors (and means my
backend
spends less time logging these to /var/log/...) :
--- atscstreamdata.cpp~ 2004-12-07 21:26:33.000000000 -0800
+++ atscstreamdata.cpp 2004-12-29 23:39:28.060748276 -0800
@@ -61,8 +61,9 @@
if (!psip)
return;
const int version = psip->Version();
- if (!psip->IsGood()) {
- VERBOSE(VB_IMPORTANT, QString("PSIP packet failed CRC check"));
+ // CRC computation for ETT seems to be broken? Ignore it for now.
+ if (!psip->IsGood() && (psip->TableID() != 0xCC)) {
+ VERBOSE(VB_IMPORTANT, QString("PSIP packet failed CRC check"));
HT_RETURN;
}
if (!psip->IsCurrent()) // we don't cache the next table, for now
The simple idea is -- only report a CRC error for non-ETT packets.
(Not sure if there's any other problems associated with this.)
Regards.
-Eric
More information about the mythtv-dev
mailing list