Index: libs/libmythtv/dtvrecorder.cpp
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/dtvrecorder.cpp,v
retrieving revision 1.9
diff -u -r1.9 dtvrecorder.cpp
--- libs/libmythtv/dtvrecorder.cpp	23 Feb 2005 05:04:36 -0000	1.9
+++ libs/libmythtv/dtvrecorder.cpp	30 Mar 2005 07:40:54 -0000
@@ -83,7 +83,6 @@
 
     _first_keyframe = 0;
     _position_within_gop_header = 0;
-    _scanning_pes_header_for_gop = false;
     _keyframe_seen = false;
     _last_gop_seen = 0;
     _last_seq_seen = 0;
@@ -97,12 +96,11 @@
     bool noPayload = !tspacket->HasPayload();
     bool payloadStart = tspacket->PayloadStart();
 
-    if (noPayload | (!payloadStart & !_scanning_pes_header_for_gop))
-        return; // not scanning or no payload to scan
+    if (noPayload)
+        return; // no payload to scan
 
     if (payloadStart)
     { // packet contains start of PES packet
-        _scanning_pes_header_for_gop = true; // start scanning for PES headers
         _position_within_gop_header = 0; // start looking for first byte of pattern
     }
 
@@ -113,10 +111,9 @@
     //   00 00 01 B8: group_start_code
     //   00 00 01 B3: seq_start_code
     //   (there are others that we don't care about)
-    unsigned int i = tspacket->AFCOffset(); // borked if AFCOffset > 188
     long long frameSeenNum = _frames_seen_count;
     const unsigned char *buffer = tspacket->data();
-    for (;(i+1<TSPacket::SIZE) && _scanning_pes_header_for_gop; i++)
+    for (unsigned int i = tspacket->AFCOffset(); i+1<TSPacket::SIZE; i++)
     {
         const unsigned char k = buffer[i];
         if (0 == _position_within_gop_header)
@@ -127,7 +124,7 @@
         {
             if (0x01 != k)
             {
-                _position_within_gop_header = (k) ? 0 : 2;
+                _position_within_gop_header = (k == 0x00) ? 2 : 0;
                 continue;
             }
             const unsigned char k1 = buffer[i+1];
@@ -156,19 +153,20 @@
 #endif
                 HandleKeyframe();
                 _last_keyframe_seen = _last_gop_seen = frameSeenNum;
-            } else if (0xB3 == k1 && ((_last_gop_seen+MAX_KEYFRAME_DIFF)<frameSeenNum))
+            } else if (0xB3 == k1)
             {   //   00 00 01 B3: seq_start_code
+                if ((_last_gop_seen+MAX_KEYFRAME_DIFF)<frameSeenNum)
+                {
 #if DEBUG_FIND_KEY_FRAMES
-                VERBOSE(VB_RECORD, QString("seq sc(%1) wc(%2) lgop(%3) lseq(%4)").
+                    VERBOSE(VB_RECORD, QString("seq sc(%1) wc(%2) lgop(%3) lseq(%4)").
                         arg(_frames_seen_count).arg(_frames_written_count).
                         arg(_last_gop_seen).arg(_last_seq_seen));
 #endif
-                HandleKeyframe();
-                _last_keyframe_seen = _last_seq_seen = frameSeenNum;
+                    HandleKeyframe();
+                    _last_keyframe_seen = frameSeenNum;
+                }
+                _last_seq_seen = frameSeenNum;
             }
-            // video slice ... end of "interesting" headers
-            if (0x01 <= k1 && k1 <= 0xAF)
-                _scanning_pes_header_for_gop = false;
             _position_within_gop_header = 0;
         }
     }
Index: libs/libmythtv/dtvrecorder.h
===================================================================
RCS file: /var/lib/mythcvs/mythtv/libs/libmythtv/dtvrecorder.h,v
retrieving revision 1.4
diff -u -r1.4 dtvrecorder.h
--- libs/libmythtv/dtvrecorder.h	26 Jan 2005 09:04:46 -0000	1.4
+++ libs/libmythtv/dtvrecorder.h	30 Mar 2005 07:40:54 -0000
@@ -18,9 +18,8 @@
   public:
     DTVRecorder::DTVRecorder() : 
         _first_keyframe(0), _position_within_gop_header(0),
-        _scanning_pes_header_for_gop(0), _keyframe_seen(false),
-        _last_keyframe_seen(0), _last_gop_seen(0), _last_seq_seen(0),
-        _stream_fd(-1), _error(false),
+        _keyframe_seen(false), _last_keyframe_seen(0), _last_gop_seen(0),
+        _last_seq_seen(0), _stream_fd(-1), _error(false),
         _request_recording(false), _request_pause(false), _wait_for_keyframe_option(true),
         _recording(false), _paused(false), _wait_for_keyframe(true),
         _buffer(0), _buffer_size(0),
@@ -62,7 +61,6 @@
     // used for scanning pes header for group of pictures header
     int _first_keyframe;
     int _position_within_gop_header;
-    bool _scanning_pes_header_for_gop;
     bool _keyframe_seen;
     long long _last_keyframe_seen, _last_gop_seen, _last_seq_seen;
 
