diff -r -u -X diff.exclude release.19345.1212a/mythtv/libs/libmythtv/mpeg/mpegstreamdata.cpp release.19345.1212b/mythtv/libs/libmythtv/mpeg/mpegstreamdata.cpp
--- mythtv/libs/libmythtv/mpeg/mpegstreamdata.cpp	2008-12-12 06:30:07.000000000 -0600
+++ mythtv/libs/libmythtv/mpeg/mpegstreamdata.cpp	2008-12-13 11:12:43.000000000 -0600
@@ -932,7 +932,7 @@
     {
         if (buffer[pos] != SYNC_BYTE || resync)
         {
-            int newpos = ResyncStream(buffer, pos, len);
+            int newpos = ResyncStream(buffer, pos, len, resync);
             if (newpos == -1)
                 return len - pos;
             if (newpos == -2)
@@ -999,11 +999,16 @@
     return true;
 }
 
-int MPEGStreamData::ResyncStream(unsigned char *buffer, int curr_pos, int len)
+int MPEGStreamData::ResyncStream(unsigned char *buffer, int curr_pos, int len, bool force)
 {
     // Search for two sync bytes 188 bytes apart, 
     int pos = curr_pos;
     int nextpos = pos + TSPacket::SIZE;
+    if (force) // The sync bytes might match but the packet processing failed
+    {
+        pos++;
+        nextpos++;
+    }
     if (nextpos >= len)
         return -1; // not enough bytes; caller should try again
     
diff -r -u -X diff.exclude release.19345.1212a/mythtv/libs/libmythtv/mpeg/mpegstreamdata.h release.19345.1212b/mythtv/libs/libmythtv/mpeg/mpegstreamdata.h
--- mythtv/libs/libmythtv/mpeg/mpegstreamdata.h	2008-03-15 23:22:05.000000000 -0500
+++ mythtv/libs/libmythtv/mpeg/mpegstreamdata.h	2008-12-13 11:11:07.000000000 -0600
@@ -293,7 +293,7 @@
     void ProcessPMT(const ProgramMapTable *pmt);
     void ProcessEncryptedPacket(const TSPacket&);
 
-    static int ResyncStream(unsigned char *buffer, int curr_pos, int len);
+    static int ResyncStream(unsigned char *buffer, int curr_pos, int len, bool force);
 
     void UpdateTimeOffset(uint64_t si_utc_time);
 
