Index: libs/libmythtv/programinfo.h
===================================================================
--- libs/libmythtv/programinfo.h	(revision 20067)
+++ libs/libmythtv/programinfo.h	(working copy)
@@ -321,8 +321,9 @@
 
     // Resolution Set/Get
     void SetResolution(uint width, uint height, long long frame);
+    int GetWidth(void);
     int GetHeight(void);
-    void SetVidpropHeight(int height);
+    void SetVidpropHeight(int width, int height);
 
     // GUI stuff
     void showDetails(void) const;
@@ -359,6 +360,7 @@
     QString chanstr;
     QString chansign;
     QString channame;
+    uint m_videoWidth;
     uint m_videoHeight;
 
     int recpriority;
Index: libs/libmythtv/tv_rec.cpp
===================================================================
--- libs/libmythtv/tv_rec.cpp	(revision 20067)
+++ libs/libmythtv/tv_rec.cpp	(working copy)
@@ -1083,6 +1083,7 @@
     int filelen = -1;
     pauseNotify = false;
     ispip = false;
+    int recWidth;
     int recHeight;
 
     if (recorder && HasFlags(kFlagRecorderRunning))
@@ -1092,8 +1093,9 @@
         filelen = (int)((float)GetFramesWritten() / GetFramerate());
 
         // Get the height and set the videoprops
+        recWidth = curRecording->GetWidth();
         recHeight = curRecording->GetHeight(); 
-        curRecording->SetVidpropHeight(recHeight);
+        curRecording->SetVidpropHeight(recWidth, recHeight);
 
         QString message = QString("DONE_RECORDING %1 %2")
             .arg(cardid).arg(filelen);
Index: libs/libmythtv/programinfo.cpp
===================================================================
--- libs/libmythtv/programinfo.cpp	(revision 20067)
+++ libs/libmythtv/programinfo.cpp	(working copy)
@@ -160,6 +160,7 @@
 
     record = NULL;
 
+    m_videoWidth = 0;
     m_videoHeight = 0;
 }
 
@@ -265,6 +266,7 @@
     lastInUseTime = other.lastInUseTime;
     record = NULL;
 
+    m_videoWidth = other.m_videoWidth;
     m_videoHeight = other.m_videoHeight;
 
     positionMapDBReplacement = other.positionMapDBReplacement;
@@ -3087,10 +3089,42 @@
     return m_videoHeight;
 }
 
+/** \fn ProgramInfo::GetWidth(void)
+ *  \brief Gets overall average width.
+ */
+int ProgramInfo::GetWidth(void)
+{
+    MSqlQuery query(MSqlQuery::InitCon());
+
+    query.prepare("SELECT recordedmarkup.DATA FROM recordedmarkup"
+                  " WHERE recordedmarkup.chanid = :CHANID"
+                  " AND recordedmarkup.starttime = :STARTTIME"
+                  " AND recordedmarkup.type = 30"
+                  " GROUP BY recordedmarkup.data ORDER BY"
+                  " SUM((SELECT IFNULL(rm.mark, recordedmarkup.mark)"
+                  " FROM recordedmarkup AS rm WHERE rm.chanid = recordedmarkup.chanid"
+                  " AND rm.starttime = recordedmarkup.starttime AND"
+                  " rm.type = recordedmarkup.type AND"
+                  " rm.mark > recordedmarkup.mark"
+                  " ORDER BY rm.mark ASC LIMIT 1)"
+                  " - recordedmarkup.mark) DESC LIMIT 1;");
+    query.bindValue(":CHANID", chanid);
+    query.bindValue(":STARTTIME", recstartts);
+
+    if (query.exec() && query.next())
+    {
+        m_videoWidth = query.value(0).toInt();
+    }
+    else
+        m_videoWidth = 0;
+
+    return m_videoWidth;
+}
+
 /** \fn ProgramInfo::SetVidpropHeight(int height)
  *  \brief Sets overall average height flag in videoprops.
  */
-void ProgramInfo::SetVidpropHeight(int height)
+void ProgramInfo::SetVidpropHeight(int width, int height)
 {
     MSqlQuery query(MSqlQuery::InitCon());
 
@@ -3098,9 +3132,10 @@
     " CONCAT_WS(',', IF(videoprop = '', NULL, videoprop), :VALUE)"
     " WHERE chanid = :CHANID AND starttime = :STARTTIME;");
 
-    if (height > 700 && height < 800)
+    if (height > 700 && height < 800 && width < 1400)
     {
-        VERBOSE(VB_IMPORTANT, QString("Recording designated 720p because height was %1").arg(height));
+        VERBOSE(VB_IMPORTANT, QString("Recording designated 720p because width was %1 "
+                                      "and height was %2").arg(width).arg(height));
         videoproperties |= VID_720;
 
         query.bindValue(":VALUE", "720");
@@ -3112,9 +3147,10 @@
             MythDB::DBError("UpdateRes", query);
 
     }
-    else if (height > 1000 && height < 1100)
+    else if (height > 1000 && height < 1100 || width >= 1400)
     {
-        VERBOSE(VB_IMPORTANT, QString("Recording designated 1080i/p because height was %1").arg(height));
+        VERBOSE(VB_IMPORTANT, QString("Recording designated 1080i/p because width was %1 "
+                                      "and height was %2").arg(width).arg(height));
         videoproperties |= VID_1080;
 
         query.bindValue(":VALUE", "1080");
