Index: libs/libmythtv/jobqueue.cpp
===================================================================
--- libs/libmythtv/jobqueue.cpp	(revision 7090)
+++ libs/libmythtv/jobqueue.cpp	(working copy)
@@ -1602,8 +1602,11 @@
             // Get new filesize
             struct stat st;
             long long filesize = 0;
+            long long orig_filesize = 0;
+            if (stat(filename.ascii(), &st) == 0)
+                orig_filesize = st.st_size;
             if (stat(tmpfile.ascii(), &st) == 0)
-            filesize = st.st_size;
+                filesize = st.st_size;
             // To save the original file...
             QString oldfile = filename;
             oldfile += ".old";
@@ -1616,8 +1619,10 @@
                 MSqlQuery query(MSqlQuery::InitCon());
                 QString querystr;
                 querystr = QString("DELETE FROM recordedmarkup WHERE "
-                                "chanid = '%1' AND starttime = '%2';")
-                                .arg(program_info->chanid).arg(startts);
+                                "chanid = '%1' AND starttime = '%2'"
+                                "AND type != '%3';")
+                                .arg(program_info->chanid).arg(startts)
+                                .arg(MARK_GOP_BYFRAME);
                 query.prepare(querystr);
                 query.exec();
 
@@ -1643,7 +1648,11 @@
             }
             if (filesize > 0)
                 program_info->SetFilesize(filesize);
-            ChangeJobStatus(jobID, JOB_FINISHED);
+
+            msg = QString("Finished. File size: %1 MB (saved %2 MB).")
+                          .arg(filesize/(1024*1024))
+                          .arg((orig_filesize - filesize)/(1024*1024));
+            ChangeJobStatus(jobID, JOB_FINISHED, msg);
         } else {
             // transcode didn't finish delete partial transcode
             filename += ".tmp";
Index: programs/mythtranscode/mpeg2trans.cpp
===================================================================
--- programs/mythtranscode/mpeg2trans.cpp	(revision 7090)
+++ programs/mythtranscode/mpeg2trans.cpp	(working copy)
@@ -299,12 +299,16 @@
     if (posMap.empty())
     {
         // no MARK_GOP_BYFRAME entries in the recordedmarkup table
-        // trying MARK_GOP_START
-        m_pginfo->GetPositionMap(posMap, MARK_GOP_START);
-        if (posMap.empty())
-        {
-            VERBOSE(VB_IMPORTANT, QString("No position map found, this is bad"));
-        }
+        // recordings from some setups have MARK_GOP_START entries
+        // in the recordedmarkup table.  These are sequentially
+        // numbered, not frame numbers.  We can't use them here.
+        // Regenerate the position map with MARK_GOP_BYFRAME
+
+        VERBOSE(VB_IMPORTANT, QString("Rebulding position map."));
+        if (BuildKeyframeIndex(infile, posMap) == TRANSCODE_EXIT_OK)
+            m_pginfo->SetPositionMap(posMap, MARK_GOP_BYFRAME);
+        else
+            VERBOSE(VB_IMPORTANT, QString("No position map and cound't rebuild it, this is bad"));
     }
 
     if (useCutlist)
