Index: libs/libmythtv/recordinginfo.h
===================================================================
--- libs/libmythtv/recordinginfo.h	(revision 24977)
+++ libs/libmythtv/recordinginfo.h	(working copy)
@@ -102,6 +102,7 @@
 
         uint findid,
 
+        bool commfree,
         uint subtitleType,
         uint videoproperties,
         uint audioproperties);
@@ -139,8 +140,10 @@
         RecordingDupInType dupin,
         RecordingDupMethodType dupmethod,
 
-        uint findid);
+        uint findid,
 
+        bool commfree);
+
     // Create ProgramInfo that overlaps the desired time on the
     // specified channel id.
     typedef enum {
Index: libs/libmythtv/recordinginfo.cpp
===================================================================
--- libs/libmythtv/recordinginfo.cpp	(revision 24977)
+++ libs/libmythtv/recordinginfo.cpp	(working copy)
@@ -90,6 +90,7 @@
 
     uint _findid,
 
+    bool _commfree,
     uint _subtitleType,
     uint _videoproperties,
     uint _audioproperties) :
@@ -121,6 +122,8 @@
     programflags |= _repeat ? FL_REPEAT : 0;
     programflags &= ~FL_REACTIVATE;
     programflags |= _reactivate ? FL_REACTIVATE : 0;
+    programflags &= ~FL_CHANCOMMFREE;
+    programflags |= _commfree ? FL_CHANCOMMFREE : 0;
 
     oldrecstatus = _oldrecstatus;
 
@@ -183,7 +186,9 @@
     RecordingDupInType _dupin,
     RecordingDupMethodType _dupmethod,
 
-    uint _findid) :
+    uint _findid,
+
+    bool _commfree) :
     ProgramInfo(
         _title, _subtitle, _description, _category,
         _chanid, _chanstr, _chansign, _channame, QString(),
@@ -204,6 +209,9 @@
     dupmethod = _dupmethod;
 
     findid = _findid;
+
+    programflags &= ~FL_CHANCOMMFREE;
+    programflags |= _commfree ? FL_CHANCOMMFREE : 0;
 }
 
 /** \brief Fills RecordingInfo for the program that air at
Index: libs/libmyth/programinfo.cpp
===================================================================
--- libs/libmyth/programinfo.cpp	(revision 24977)
+++ libs/libmyth/programinfo.cpp	(working copy)
@@ -790,15 +790,19 @@
     clear();
 
     MSqlQuery query(MSqlQuery::InitCon());
-    query.prepare("SELECT chanid, channum, callsign, name "
-                  "FROM channel "
-                  "WHERE chanid=:CHANID");
+    query.prepare(
+        "SELECT chanid, channum, callsign, name, outputfilters, commmethod "
+        "FROM channel "
+        "WHERE chanid=:CHANID");
     query.bindValue(":CHANID", _chanid);
     if (query.exec() && query.next())
     {
         chanstr  = query.value(1).toString();
         chansign = query.value(2).toString();
         channame = query.value(3).toString();
+        chanplaybackfilters = query.value(4).toString();
+        set_flag(programflags, FL_CHANCOMMFREE,
+                 query.value(5).toInt() == COMM_DETECT_COMMFREE);
     }
 
     chanid = _chanid;
Index: programs/mythbackend/scheduler.cpp
===================================================================
--- programs/mythbackend/scheduler.cpp	(revision 24977)
+++ programs/mythbackend/scheduler.cpp	(working copy)
@@ -3418,6 +3418,7 @@
 
             result.value(34).toUInt(),//findid
 
+            result.value(23).toInt() == COMM_DETECT_COMMFREE,//commfree
             result.value(39).toUInt(),//subtitleType
             result.value(38).toUInt(),//videoproperties
             result.value(40).toUInt());//audioproperties
@@ -3548,6 +3549,7 @@
         "       RECTABLE.dupin,       RECTABLE.dupmethod,   " // 19,20
         "       RECTABLE.findid,                            " // 21
         "       RECTABLE.startoffset, RECTABLE.endoffset    " // 22,23
+        "       channel.commmethod,                         " // 24
         "FROM RECTABLE "
         "INNER JOIN channel ON (channel.chanid = RECTABLE.chanid) "
         "LEFT JOIN recordmatch on RECTABLE.recordid = recordmatch.recordid "
@@ -3657,8 +3659,10 @@
             RecordingDupInType(result.value(19).toInt()),
             RecordingDupMethodType(result.value(20).toInt()),
 
-            result.value(21).toUInt());
+            result.value(21).toUInt(),
 
+            result.value(24).toInt() == COMM_DETECT_COMMFREE);
+
         tmpList.push_back(p);
     }
 
@@ -3682,6 +3686,7 @@
         "       RECTABLE.recordid,    RECTABLE.type,        " // 17,18
         "       RECTABLE.dupin,       RECTABLE.dupmethod,   " // 19,20
         "       RECTABLE.findid                             " // 21
+        "       channel.commmethod,                         " // 22
         "FROM RECTABLE "
         "LEFT JOIN channel ON channel.callsign = RECTABLE.station "
         "GROUP BY recordid "
@@ -3744,7 +3749,9 @@
             RecordingDupInType(result.value(19).toInt()),
             RecordingDupMethodType(result.value(20).toInt()),
 
-            result.value(21).toUInt()));
+            result.value(21).toUInt(),
+
+            result.value(22).toInt() == COMM_DETECT_COMMFREE));
     }
 }
 
