Index: mythtv/programs/mythbackend/scheduler.cpp
===================================================================
--- mythtv.orig/programs/mythbackend/scheduler.cpp	2006-05-04 19:55:03.000000000 +1000
+++ mythtv/programs/mythbackend/scheduler.cpp	2006-05-04 19:55:05.000000000 +1000
@@ -416,7 +416,7 @@
          << p->chanstr.rightJustify(4, ' ') << " " << p->chanid 
          << p->recstartts.toString("  dd hh:mm-").local8Bit()
          << p->recendts.toString("hh:mm  ").local8Bit()
-         << p->cardid << " " << p->inputid << "  " 
+         << p->cardid << " " << p->inputid << " " << p->mplexid << "  "
          << p->RecTypeChar() << " " << p->RecStatusChar() << " "
          << (QString::number(p->recpriority) + "/" + 
              QString::number(p->recpriority2)).rightJustify(5, ' ')
@@ -680,6 +680,8 @@
             continue;
         if (p->recendts <= q->recstartts || p->recstartts >= q->recendts)
             continue;
+        if (p->inputid == q->inputid && p->mplexid == q->mplexid)   // if mplex ids are the same don't conflict
+            continue;
         if (p->inputid == q->inputid && p->shareable)
             continue;
 
@@ -2019,7 +2021,8 @@
 "program.airdate, program.stars, program.originalairdate, RECTABLE.inactive, "
 "RECTABLE.parentid, ") + progfindid + ", RECTABLE.playgroup, "
 "oldrecstatus.recstatus, oldrecstatus.reactivate, " 
-"channel.recpriority + cardinput.recpriority, program.hdtv "
+"channel.recpriority + cardinput.recpriority, program.hdtv, "
+"channel.mplexid "
 + QString(
 "FROM recordmatch "
 
@@ -2157,6 +2160,7 @@
         p->chancommfree = result.value(23).toInt();
         p->cardid = result.value(24).toInt();
         p->inputid = result.value(25).toInt();
+        p->mplexid = result.value(41).toInt();
         p->shareable = result.value(26).toInt();
         p->seriesid = result.value(27).toString();
         p->programid = result.value(28).toString();
@@ -2276,7 +2280,7 @@
 "RECTABLE.starttime, RECTABLE.startdate, RECTABLE.endtime, RECTABLE.enddate, "
 "RECTABLE.startoffset, RECTABLE.endoffset, "
 "RECTABLE.title, RECTABLE.subtitle, RECTABLE.description, "
-"channel.channum, channel.callsign, channel.name "
+"channel.channum, channel.callsign, channel.name, channel.mplexid "
 "FROM RECTABLE "
 " INNER JOIN channel ON (channel.chanid = RECTABLE.chanid) "
 " LEFT JOIN recordmatch on RECTABLE.recordid = recordmatch.recordid "
@@ -2347,6 +2351,7 @@
         p->chanstr = result.value(12).toString();
         p->chansign = QString::fromUtf8(result.value(13).toString());
         p->channame = QString::fromUtf8(result.value(14).toString());
+        p->mplexid = result.value(15).toInt();
 
         p->schedulerid = p->startts.toString() + "_" + p->chanid;
 
@@ -2370,7 +2375,7 @@
 "channel.name, RECTABLE.recordid, RECTABLE.recgroup, RECTABLE.dupin, "
 "RECTABLE.dupmethod, channel.commfree, channel.channum, RECTABLE.station, "
 "RECTABLE.seriesid, RECTABLE.programid, RECTABLE.category, RECTABLE.findid, "
-"RECTABLE.playgroup "
+"RECTABLE.playgroup, channel.mplexid "
 "FROM RECTABLE "
 "LEFT JOIN channel ON channel.callsign = RECTABLE.station "
 "GROUP BY recordid "
@@ -2446,6 +2451,7 @@
             proginfo->programid = result.value(19).toString();
             proginfo->category = result.value(20).toString();
             proginfo->findid = result.value(21).toInt();
+            proginfo->mplexid = result.value(23).toInt();
             
             proginfo->recstartts = proginfo->startts;
             proginfo->recendts = proginfo->endts;
Index: mythtv/libs/libmythtv/programinfo.cpp
===================================================================
--- mythtv.orig/libs/libmythtv/programinfo.cpp	2006-05-04 19:55:03.000000000 +1000
+++ mythtv/libs/libmythtv/programinfo.cpp	2006-05-04 19:55:05.000000000 +1000
@@ -104,6 +104,7 @@
     sourceid = 0;
     inputid = 0;
     cardid = 0;
+    mplexid = 0;
     shareable = false;
     duplicate = false;
     schedulerid = "";
@@ -195,6 +196,7 @@
     sourceid = other.sourceid;
     inputid = other.inputid;
     cardid = other.cardid;
+    mplexid = other.mplexid;
     shareable = other.shareable;
     duplicate = other.duplicate;
     schedulerid = QDeepCopy<QString>(other.schedulerid);
@@ -283,6 +285,7 @@
     STR_TO_LIST(hostname)
     INT_TO_LIST(sourceid)
     INT_TO_LIST(cardid)
+    INT_TO_LIST(mplexid)
     INT_TO_LIST(inputid)
     INT_TO_LIST(recpriority)
     INT_TO_LIST(recstatus)
@@ -381,6 +384,7 @@
     STR_FROM_LIST(hostname)
     INT_FROM_LIST(sourceid)
     INT_FROM_LIST(cardid)
+    INT_FROM_LIST(mplexid)
     INT_FROM_LIST(inputid)
     INT_FROM_LIST(recpriority)
     ENUM_FROM_LIST(recstatus, RecStatusType)
@@ -2984,6 +2988,7 @@
         recstartts = found->recstartts;
         recendts = found->recendts;
         cardid = found->cardid;
+        mplexid = found->mplexid;
         inputid = found->inputid;
     }
     return found;
@@ -4085,6 +4090,7 @@
                 p->recstartts = s->recstartts;
                 p->recendts = s->recendts;
                 p->cardid = s->cardid;
+                p->mplexid = s->mplexid;
                 p->inputid = s->inputid;
                 p->dupin = s->dupin;
                 p->dupmethod = s->dupmethod;
Index: mythtv/libs/libmythtv/programinfo.h
===================================================================
--- mythtv.orig/libs/libmythtv/programinfo.h	2006-05-04 19:55:03.000000000 +1000
+++ mythtv/libs/libmythtv/programinfo.h	2006-05-04 19:55:05.000000000 +1000
@@ -300,6 +300,7 @@
     int sourceid;
     int inputid;
     int cardid;
+    int mplexid;
     bool shareable;
     bool duplicate;
 
