[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