Index: libs/libmythtv/datadirect.h
===================================================================
--- libs/libmythtv/datadirect.h	(revision 21445)
+++ libs/libmythtv/datadirect.h	(working copy)
@@ -97,6 +97,7 @@
     QString   stationid; // 12
     QDateTime time;
     QTime     duration;
+    int       sd_runtime;
     bool      repeat;
     bool      isnew;
     bool      stereo;
@@ -125,6 +126,7 @@
     QString mpaaRating;  // 5
     QString starRating;  // 5
     QTime   duration;
+    int     sd_runtime;
     QString year;        // 4
     QString showtype;    // 30
     QString colorcode;   // 20
Index: libs/libmythtv/datadirect.cpp
===================================================================
--- libs/libmythtv/datadirect.cpp	(revision 21445)
+++ libs/libmythtv/datadirect.cpp	(working copy)
@@ -70,6 +70,7 @@
 DataDirectSchedule::DataDirectSchedule() :
     programid(""),              stationid(""),
     time(QDateTime()),          duration(QTime()),
+    sd_runtime(0),
     repeat(false),              isnew(false),
     stereo(false),              dolby(false),
     subtitled(false),
@@ -83,6 +84,7 @@
     programid(""),  seriesid(""),      title(""),
     subtitle(""),   description(""),   mpaaRating(""),
     starRating(""), duration(QTime()), year(""),
+    sd_runtime(0),
     showtype(""),   colorcode(""),     originalAirDate(QDate()),
     syndicatedEpisodeNumber("")
 {
@@ -340,13 +342,13 @@
             "     ( programid,    title,       subtitle,       "
             "       description,  showtype,    category_type,  "
             "       mpaarating,   starrating,  stars,          "
-            "       runtime,      year,        seriesid,       "
+            "       runtime,      sd_runtime,  year,       seriesid,       "
             "       colorcode,    syndicatedepisodenumber, originalairdate) "
             "VALUES "
             "     (:PROGRAMID,   :TITLE,      :SUBTITLE,       "
             "      :DESCRIPTION, :SHOWTYPE,   :CATTYPE,        "
             "      :MPAARATING,  :STARRATING, :STARS,          "
-            "      :RUNTIME,     :YEAR,       :SERIESID,       "
+            "      :RUNTIME,     :SD_RUNTIME,  :YEAR,       :SERIESID,       "
             "      :COLORCODE,   :SYNDNUM,    :ORIGAIRDATE)    ");
 
         query.bindValue(":PROGRAMID",   curr_program.programid);
@@ -359,6 +361,7 @@
         query.bindValue(":STARRATING",  curr_program.starRating);
         query.bindValue(":STARS",       staravg);
         query.bindValue(":RUNTIME",     curr_program.duration);
+        query.bindValue(":SD_RUNTIME",  curr_program.duration);
         query.bindValue(":YEAR",        curr_program.year);
         query.bindValue(":SERIESID",    curr_program.seriesid);
         query.bindValue(":COLORCODE",   curr_program.colorcode);
@@ -425,6 +428,7 @@
 
 bool DDStructureParser::characters(const QString& pchars)
 {
+    int h, m;
     // cerr << "Characters : " << pchars << "\n";
     if (pchars.trimmed().isEmpty())
         return true;
@@ -512,9 +516,10 @@
     else if (currtagname == "runTime")
     {
         QString runtimestr = pchars;
-        QTime runtime = QTime(runtimestr.mid(2,2).toInt(),
-                              runtimestr.mid(5,2).toInt(), 0, 0);
+        QTime runtime = QTime(h = runtimestr.mid(2,2).toInt(),
+                              m = runtimestr.mid(5,2).toInt(), 0, 0);
         curr_program.duration = runtime;
+        curr_program.sd_runtime = h * 60 + m;
     }
     else if (currtagname == "originalAirDate")
     {
@@ -648,7 +653,7 @@
         "       parttotal,               seriesid,        originalairdate, "
         "       showtype,                category_type,   colorcode,       "
         "       syndicatedepisodenumber, tvrating,        mpaarating,      "
-        "       programid )      "
+        "       programid,               sd_runtime )      "
         "SELECT chanid,                  scheduletime,    endtime,         "
         "       title,                   subtitle,        description,     "
         "       year,                    stars,           isrepeat,        "
@@ -657,7 +662,7 @@
         "       parttotal,               seriesid,        originalairdate, "
         "       showtype,                category_type,   colorcode,       "
         "       syndicatedepisodenumber, tvrating,        mpaarating,      "
-        "       dd_program.programid "
+        "       dd_program.programid,    sd_runtime "
         "FROM channel, dd_schedule, dd_program "
         "WHERE ((dd_schedule.programid = dd_program.programid)  AND "
         "       (channel.xmltvid       = dd_schedule.stationid) AND "
@@ -847,7 +852,7 @@
         "    stereo,        subtitled,   subtitletypes,   videoprop,       "
         "    audioprop,     hdtv,        closecaptioned,  partnumber,      "
         "    parttotal,     seriesid,    originalairdate, colorcode,       "
-        "    syndicatedepisodenumber,                                      "
+        "    syndicatedepisodenumber,    sd_runtime,                       "
         "                   programid,   listingsource)                    "
         "  SELECT                                                          "
         "    dd_v_program.chanid,                                          "
@@ -861,7 +866,7 @@
         "    (dolby << 3) | stereo,                                        "
         "                   hdtv,        closecaptioned,  partnumber,      "
         "    parttotal,     seriesid,    originalairdate, colorcode,       "
-        "    syndicatedepisodenumber,                                      "
+        "    syndicatedepisodenumber,    sd_runtime,                       "
         "                   dd_v_program.programid,                        "
         "                               :LSOURCE                           "
         "FROM (dd_v_program, channel) "
@@ -1406,6 +1411,7 @@
         "  title varchar(120),           subtitle varchar(150), "
         "  description text,             mpaarating char(5),    "
         "  starrating char(5),           runtime time,          "
+        "  sd_runtime smallint unsigned, "
         "  year char(4),                 showtype char(30),     "
         "  category_type char(64),       colorcode char(20),    "
         "  originalairdate date,         syndicatedepisodenumber char(20), "
@@ -1416,7 +1422,8 @@
         "( chanid int unsigned NOT NULL, starttime datetime NOT NULL, "
         "  endtime datetime,             title varchar(128),          "
         "  subtitle varchar(128),        description text,            "
-        "  category varchar(64),         category_type varchar(64),   "
+        "  category varchar(64),         sd_runtime smallint unsigned, "
+        "  category_type varchar(64),   "
         "  airdate year,                 stars float unsigned,        "
         "  previouslyshown tinyint,      isrepeat bool,               "
         "  stereo bool,                  dolby bool,                  "
Index: libs/libmythtv/programdata.cpp
===================================================================
--- libs/libmythtv/programdata.cpp	(revision 21445)
+++ libs/libmythtv/programdata.cpp	(working copy)
@@ -168,6 +168,7 @@
     partnumber      = other.partnumber;
     parttotal       = other.parttotal;
     syndicatedepisodenumber = other.syndicatedepisodenumber;
+    sd_runtime      = other.sd_runtime;
     subtitleType    = other.subtitleType;
     audioProps      = other.audioProps;
     videoProps      = other.videoProps;
@@ -537,6 +538,8 @@
         !match.syndicatedepisodenumber.isEmpty())
         lsyndicatedepisodenumber = match.syndicatedepisodenumber;
 
+    QString lsd_runtime = sd_runtime;
+
     query.prepare(
         "UPDATE program "
         "SET title          = :TITLE,     subtitle      = :SUBTITLE, "
@@ -549,6 +552,7 @@
         "    audioprop      = :AUDIOPROP, videoprop     = :VIDEOPROP, "
         "    partnumber     = :PARTNO,    parttotal     = :PARTTOTAL, "
         "    syndicatedepisodenumber = :SYNDICATENO, "
+	"    sd_runtime     = :SD_RUNTIME, "
         "    airdate        = :AIRDATE,   originalairdate=:ORIGAIRDATE, "
         "    listingsource  = :LSOURCE, "
         "    seriesid       = :SERIESID,  programid     = :PROGRAMID, "
@@ -575,6 +579,7 @@
     query.bindValue(":PARTNO",      lpartnumber);
     query.bindValue(":PARTTOTAL",   lparttotal);
     query.bindValue(":SYNDICATENO", lsyndicatedepisodenumber);
+    query.bindVAlue(":SD_RUNTIME",  lsd_runtime);
     query.bindValue(":AIRDATE",     lairdate?QString::number(lairdate):"0000");
     query.bindValue(":ORIGAIRDATE", loriginalairdate);
     query.bindValue(":LSOURCE",     llistingsource);
@@ -705,6 +710,7 @@
         "  subtitletypes,  audioprop,      videoprop, "
         "  partnumber,     parttotal, "
         "  syndicatedepisodenumber, "
+	"  sd_runtime, "
         "  airdate,        originalairdate,listingsource, "
         "  seriesid,       programid,      previouslyshown ) "
         "VALUES ("
@@ -715,6 +721,7 @@
         " :SUBTYPES,      :AUDIOPROP,     :VIDEOPROP, "
         " :PARTNUMBER,    :PARTTOTAL, "
         " :SYNDICATENO, "
+	" :SD_RUNTIME, "
         " :AIRDATE,       :ORIGAIRDATE,   :LSOURCE, "
         " :SERIESID,      :PROGRAMID,     :PREVSHOWN) ");
 
@@ -738,6 +745,7 @@
     query.bindValue(":PARTNUMBER",  partnumber);
     query.bindValue(":PARTTOTAL",   parttotal);
     query.bindValue(":SYNDICATENO", syndicatedepisodenumber);
+    query.bindValue(":SD_RUNTIME",  sd_runtime);
     query.bindValue(":AIRDATE",     airdate ? QString::number(airdate):"0000");
     query.bindValue(":ORIGAIRDATE", originalairdate);
     query.bindValue(":LSOURCE",     listingsource);
@@ -832,6 +840,7 @@
         "  subtitletypes,  audioprop,      videoprop, "
         "  partnumber,     parttotal, "
         "  syndicatedepisodenumber, "
+	"  sd_runtime, "
         "  airdate,        originalairdate,listingsource, "
         "  seriesid,       programid,      previouslyshown, "
         "  stars,          showtype,       title_pronounce, colorcode ) "
@@ -844,6 +853,7 @@
         " :SUBTYPES,      :AUDIOPROP,     :VIDEOPROP, "
         " :PARTNUMBER,    :PARTTOTAL, "
         " :SYNDICATENO, "
+	" :SD_RUNTIME, "
         " :AIRDATE,       :ORIGAIRDATE,   :LSOURCE, "
         " :SERIESID,      :PROGRAMID,     :PREVSHOWN, "
         " :STARS,         :SHOWTYPE,      :TITLEPRON,      :COLORCODE)");
@@ -872,6 +882,7 @@
     query.bindValue(":PARTNUMBER",  partnumber);
     query.bindValue(":PARTTOTAL",   parttotal);
     query.bindValue(":SYNDICATENO", syndicatedepisodenumber);
+    query.bindValue(":SD_RUNTIME",  sd_runtime);
     query.bindValue(":AIRDATE",     airdate ? QString::number(airdate):"0000");
     query.bindValue(":ORIGAIRDATE", originalairdate);
     query.bindValue(":LSOURCE",     listingsource);
@@ -1236,6 +1247,7 @@
         "      showtype        = :SHOWTYPE   AND "
         "      colorcode       = :COLORCODE  AND "
         "      syndicatedepisodenumber = :SYNDICATEDEPISODENUMBER AND "
+	"      sd_runtime      = :SD_RUNTIME AND "
         "      programid       = :PROGRAMID");
 
     QString cattype = myth_category_type_to_string(pi.categoryType);
@@ -1262,6 +1274,7 @@
     query.bindValue(":SHOWTYPE",   pi.showtype);
     query.bindValue(":COLORCODE",  pi.colorcode);
     query.bindValue(":SYNDICATEDEPISODENUMBER", pi.syndicatedepisodenumber);
+    query.bindValue(":SD_RUNTIME,  pi.sd_runtime);
     query.bindValue(":PROGRAMID",  pi.programId);
 
     if (query.exec() && query.next())
Index: libs/libmythtv/programdata.h
===================================================================
--- libs/libmythtv/programdata.h	(revision 21445)
+++ libs/libmythtv/programdata.h	(working copy)
@@ -74,6 +74,7 @@
         partnumber(0),
         parttotal(0),
         syndicatedepisodenumber(QString::null),
+        sd_runtime(0),
         subtitleType(0),
         audioProps(0),
         videoProps(0),
@@ -100,6 +101,7 @@
         credits(NULL),
         partnumber(0),           parttotal(0),
         syndicatedepisodenumber(QString("")),
+        sd_runtime(0),
         subtitleType(_subtitleType),
         audioProps(_audioProps), videoProps(_videoProps),
         categoryType(_category_type),
@@ -149,6 +151,7 @@
     uint16_t      partnumber;
     uint16_t      parttotal;
     QString       syndicatedepisodenumber;
+    unsigned int  sd_runtime;
     unsigned char subtitleType;
     unsigned char audioProps;
     unsigned char videoProps;
Index: libs/libmyth/programinfo.cpp
===================================================================
--- libs/libmyth/programinfo.cpp	(revision 21445)
+++ libs/libmyth/programinfo.cpp	(working copy)
@@ -214,6 +214,7 @@
 
     seriesid(other.seriesid),
     programid(other.programid),
+    sd_runtime(other.sd_runtime),
     catType(other.catType),
 
     sortTitle(other.sortTitle),
