Index: themes/blue/ui.xml
===================================================================
--- themes/blue/ui.xml	(revision 19485)
+++ themes/blue/ui.xml	(working copy)
@@ -917,6 +917,14 @@
           <filename>type/watched.png</filename>
           <position>302,106</position>
       </image>
+      <image name="720" draworder="6">
+        <filename>720.png</filename>
+        <position>337,106</position>
+      </image>
+      <image name="1080" draworder="6">
+        <filename>1080.png</filename>
+        <position>337,106</position>
+      </image>
       <image name="processing" draworder="6">
         <filename>processing.png</filename>
         <position>20,106</position>
Index: themes/G.A.N.T/ui.xml
===================================================================
--- themes/G.A.N.T/ui.xml	(revision 19485)
+++ themes/G.A.N.T/ui.xml	(working copy)
@@ -1363,6 +1363,14 @@
           <filename>watched.png</filename>
           <position>300,195</position>
       </image>
+      <image name="1080" draworder="6">
+        <filename>1080.png</filename>
+        <position>335,195</position>
+      </image>
+      <image name="720" draworder="6">
+        <filename>720.png</filename>
+        <position>335,195</position>
+      </image>
 
 
     </container>
Index: libs/libmythtv/dbcheck.cpp
===================================================================
--- libs/libmythtv/dbcheck.cpp	(revision 19485)
+++ libs/libmythtv/dbcheck.cpp	(working copy)
@@ -18,7 +18,7 @@
 #define MINIMUM_DBMS_VERSION 5,0,15
 
 /// This is the DB schema version expected by the running MythTV instance.
-const QString currentDatabaseVersion = "1227";
+const QString currentDatabaseVersion = "1228";
 
 static bool UpdateDBVersionNumber(const QString &newnumber);
 static bool performActualUpdate(
@@ -4385,6 +4385,19 @@
             return false;
     }
 
+    if (dbver == "1227")
+    {
+        const char *updates[] = {
+"ALTER TABLE recordedprogram CHANGE COLUMN videoprop videoprop "
+"    SET('HDTV', 'WIDESCREEN', 'AVC', '720', '1080') NOT NULL; ",
+NULL
+};
+
+        if (!performActualUpdate(updates, "1228", dbver))
+            return false;
+    }
+
+
     return true;
 }
 
Index: libs/libmythtv/programinfo.h
===================================================================
--- libs/libmythtv/programinfo.h	(revision 19485)
+++ libs/libmythtv/programinfo.h	(working copy)
@@ -95,6 +95,8 @@
     VID_HDTV          = 0x01,
     VID_WIDESCREEN    = 0x02,
     VID_AVC           = 0x04,
+    VID_720           = 0x08,
+    VID_1080          = 0x10,
 };
 
 // if SubtitleTypes changes, the audioprop column in program and
@@ -316,8 +318,10 @@
     void SetAspectChange(MarkTypes type, long long frame,
                          uint customAspect);
 
-    // Resolution Set
+    // Resolution Set/Get
     void SetResolution(uint width, uint height, long long frame);
+    int GetHeight(void);
+    void SetVidpropHeight(int height);
 
     // GUI stuff
     void showDetails(void) const;
@@ -354,8 +358,8 @@
     QString chanstr;
     QString chansign;
     QString channame;
+    uint tall;
 
-
     int recpriority;
     QString recgroup;
     QString playgroup;
Index: libs/libmythtv/tv_rec.cpp
===================================================================
--- libs/libmythtv/tv_rec.cpp	(revision 19485)
+++ libs/libmythtv/tv_rec.cpp	(working copy)
@@ -1083,6 +1083,7 @@
     int filelen = -1;
     pauseNotify = false;
     ispip = false;
+    int recHeight;
 
     if (recorder && HasFlags(kFlagRecorderRunning))
     {
@@ -1090,6 +1091,10 @@
         // may not be constant if using a DTV based recorder.
         filelen = (int)((float)GetFramesWritten() / GetFramerate());
 
+        // Get the height and set the videoprops
+        recHeight = curRecording->GetHeight(); 
+        curRecording->SetVidpropHeight(recHeight);
+
         QString message = QString("DONE_RECORDING %1 %2")
             .arg(cardid).arg(filelen);
         MythEvent me(message);
Index: libs/libmythtv/programinfo.cpp
===================================================================
--- libs/libmythtv/programinfo.cpp	(revision 19485)
+++ libs/libmythtv/programinfo.cpp	(working copy)
@@ -3026,6 +3026,85 @@
         MythDB::DBError("Resolution insert", query);
 }
 
+/** \fn ProgramInfo::GetHeight(void)
+ *  \brief Gets overall average height.
+ */
+int ProgramInfo::GetHeight(void)
+{
+    MSqlQuery query(MSqlQuery::InitCon());
+
+    query.prepare("SELECT recordedmarkup.DATA FROM recordedmarkup"
+                  " WHERE recordedmarkup.chanid = :CHANID" 
+                  " AND recordedmarkup.starttime = :STARTTIME" 
+                  " AND recordedmarkup.type = 31"
+                  " 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.isActive() && query.size() > 0)
+    {
+        query.next();
+        tall = query.value(0).toInt();
+    }
+    else
+        tall = 0;
+
+    return tall;
+}
+
+/** \fn ProgramInfo::SetVidpropHeight(int height)
+ *  \brief Sets overall average height flag in videoprops.
+ */
+void ProgramInfo::SetVidpropHeight(int height)
+{
+
+    MSqlQuery query(MSqlQuery::InitCon());
+
+    query.prepare("UPDATE recordedprogram SET videoprop ="
+    " CONCAT_WS(',', IF(videoprop = '', NULL, videoprop), :VALUE)"
+    " WHERE chanid = :CHANID AND starttime = :STARTTIME;");
+
+    if (height > 700 && height < 800)
+    {
+        VERBOSE(VB_IMPORTANT, QString("Recording designated 720p because height was %1").arg(height));
+        videoproperties |= VID_720;
+
+        query.bindValue(":VALUE", "720");
+        query.bindValue(":CHANID", chanid);
+        query.bindValue(":STARTTIME", startts);
+
+        query.exec();
+        if (!query.isActive())
+        MythDB::DBError("UpdateRes", query);
+
+    }
+    else if (height > 1000 && height < 1100)
+    {
+        VERBOSE(VB_IMPORTANT, QString("Recording designated 1080i/p because height was %1").arg(height));
+        videoproperties |= VID_1080;
+
+        query.bindValue(":VALUE", "1080");
+        query.bindValue(":CHANID", chanid);
+        query.bindValue(":STARTTIME", startts);
+
+        query.exec();
+        if (!query.isActive())
+        MythDB::DBError("UpdateRes", query);
+    }
+    else
+    {
+        VERBOSE(VB_IMPORTANT, QString("Unknown type, recording height was %1").arg(height));
+        return;
+    }
+}
+
 /** \fn ProgramInfo::ReactivateRecording(void)
  *  \brief Asks the scheduler to restart this recording if possible.
  */
@@ -3853,6 +3932,10 @@
         attr += QObject::tr("Widescreen") + ", ";
     if  (videoprop & VID_AVC)
         attr += QObject::tr("AVC/H.264") + ", ";
+    if  (videoprop & VID_720)
+        attr += QObject::tr("720p Resolution") + ", ";
+    if  (videoprop & VID_1080)
+        attr += QObject::tr("1080i/p Resolution") + ", ";
 
     if (subtype & SUB_HARDHEAR)
         attr += QObject::tr("CC","Closed Captioned") + ", ";
Index: programs/mythfrontend/playbackbox.cpp
===================================================================
--- programs/mythfrontend/playbackbox.cpp	(revision 19485)
+++ programs/mythfrontend/playbackbox.cpp	(working copy)
@@ -943,6 +943,8 @@
 
             iconMap["hdtv"] = VID_HDTV;
             iconMap["widescreen"] = VID_WIDESCREEN;
+            iconMap["720"] = VID_720;
+            iconMap["1080"] = VID_1080;
 
             bool havevidicon = false;
 
@@ -957,7 +959,7 @@
                     {
                         itype->show();
                         // We only want one icon displayed
-                        havevidicon = true;
+                        //havevidicon = true;
                     }
                 }
             }
@@ -4781,6 +4783,9 @@
     iconMap["hdtv"]        = tr("Recording is in High Definition");
     iconMap["widescreen"]  = tr("Recording is in WideScreen");
 
+    iconMap["720"]        = tr("Recording is 720p Resolution");
+    iconMap["1080"]  = tr("Recording is 1080i/p Resolution");
+
     iconMap["watched"]     = tr("Recording has been watched");
     iconMap["preserved"]   = tr("Recording is preserved");
 
