Index: mythtv/libs/libmythtv/customedit.cpp
===================================================================
--- mythtv/libs/libmythtv/customedit.cpp	(revision 20830)
+++ mythtv/libs/libmythtv/customedit.cpp	(working copy)
@@ -257,6 +257,14 @@
     m_cfrom << "";
     m_csql << "FIND_IN_SET('AVC', program.videoprop) = 0 ";
 
+    m_clause->insertItem(tr("Only shows with in-vision signing"));
+    m_cfrom << "";
+    m_csql << "FIND_IN_SET('SIGNED', program.subtitletypes) > 0";
+
+    m_clause->insertItem(tr("Only shows with in-vision subtitles"));
+    m_cfrom << "";
+    m_csql << "FIND_IN_SET('ONSCREEN', program.subtitletypes) > 0";
+
     m_clause->insertItem(tr("Limit by category"));
     m_cfrom << "";
     if (p->category > "")
Index: mythtv/programs/mythfrontend/globalsettings.cpp
===================================================================
--- mythtv/programs/mythfrontend/globalsettings.cpp	(revision 20830)
+++ mythtv/programs/mythfrontend/globalsettings.cpp	(working copy)
@@ -3291,6 +3291,16 @@
     return bs;
 }
 
+static GlobalSpinBox *GRWSRecPriority()
+{
+    GlobalSpinBox *bs = new GlobalSpinBox("WSRecPriority", -99, 99, 1);
+    bs->setLabel(QObject::tr("Widescreen Recording Priority"));
+    bs->setHelpText(QObject::tr("Additional priority when a showing "
+                    "is marked as widescreen in the TV listings."));
+    bs->setValue(0);
+    return bs;
+}
+
 static GlobalSpinBox *GRAutoRecPriority()
 {
     GlobalSpinBox *bs = new GlobalSpinBox("AutoRecPriority", -99, 99, 1);
@@ -3303,6 +3313,63 @@
     return bs;
 }
 
+static GlobalSpinBox *GRSignLangRecPriority()
+{
+    GlobalSpinBox *bs = new GlobalSpinBox("SignLangRecPriority",
+                                            -99, 99, 1);
+    bs->setLabel(QObject::tr("Sign Language Recording Priority"));
+    bs->setHelpText(QObject::tr("Additional priority when a showing "
+                    "is marked as having in-vision sign language."));
+    bs->setValue(0);
+    return bs;
+}
+
+static GlobalSpinBox *GROnScrSubRecPriority()
+{
+    GlobalSpinBox *bs = new GlobalSpinBox("OnScrSubRecPriority",
+                                            -99, 99, 1);
+    bs->setLabel(QObject::tr("In-vision Subtitles Recording Priority"));
+    bs->setHelpText(QObject::tr("Additional priority when a showing "
+                    "is marked as having in-vision subtitles."));
+    bs->setValue(0);
+    return bs;
+}
+
+static GlobalSpinBox *GRCCRecPriority()
+{
+    GlobalSpinBox *bs = new GlobalSpinBox("CCRecPriority",
+                                            -99, 99, 1);
+    bs->setLabel(QObject::tr("Subtitles/CC Recording Priority"));
+    bs->setHelpText(QObject::tr("Additional priority when a showing "
+                    "is marked as having subtitles or closed captioning "
+                    "(CC) available."));
+    bs->setValue(0);
+    return bs;
+}
+
+static GlobalSpinBox *GRHardHearRecPriority()
+{
+    GlobalSpinBox *bs = new GlobalSpinBox("HardHearRecPriority",
+                                            -99, 99, 1);
+    bs->setLabel(QObject::tr("Hard of Hearing Priority"));
+    bs->setHelpText(QObject::tr("Additional priority when a showing "
+                    "is marked as having support for viewers with impaired "
+                    "hearing."));
+    bs->setValue(0);
+    return bs;
+}
+
+static GlobalSpinBox *GRAudioDescRecPriority()
+{
+    GlobalSpinBox *bs = new GlobalSpinBox("AudioDescRecPriority",
+                                            -99, 99, 1);
+    bs->setLabel(QObject::tr("Audio Described Priority"));
+    bs->setHelpText(QObject::tr("Additional priority when a showing "
+                    "is marked as being Audio Described."));
+    bs->setValue(0);
+    return bs;
+}
+
 static GlobalSpinBox *GRSingleRecordRecPriority()
 {
     GlobalSpinBox *bs = new GlobalSpinBox("SingleRecordRecPriority",
@@ -5007,9 +5074,20 @@
     sched->addChild(GRComplexPriority());
     sched->addChild(GRPrefInputRecPriority());
     sched->addChild(GRHDTVRecPriority());
+    sched->addChild(GRWSRecPriority());
     sched->addChild(GRAutoRecPriority());
     addChild(sched);
 
+    VerticalConfigurationGroup* access = new VerticalConfigurationGroup(false);
+    access->setLabel(QObject::tr("Accessibility Options"));
+
+    access->addChild(GRSignLangRecPriority());
+    access->addChild(GROnScrSubRecPriority());
+    access->addChild(GRCCRecPriority());
+    access->addChild(GRHardHearRecPriority());
+    access->addChild(GRAudioDescRecPriority());
+    addChild(access);
+
     VerticalConfigurationGroup* rtype = new VerticalConfigurationGroup(false);
     rtype->setLabel(QObject::tr("Recording Type Priority Settings"));
 
Index: mythtv/programs/mythbackend/scheduler.cpp
===================================================================
--- mythtv/programs/mythbackend/scheduler.cpp	(revision 20830)
+++ mythtv/programs/mythbackend/scheduler.cpp	(working copy)
@@ -2908,7 +2908,13 @@
     int complexpriority = gContext->GetNumSetting("ComplexPriority", 0);
     prefinputpri        = gContext->GetNumSetting("PrefInputPriority", 2);
     int hdtvpriority    = gContext->GetNumSetting("HDTVRecPriority", 0);
+    int wspriority      = gContext->GetNumSetting("WSRecPriority", 0);
     int autopriority    = gContext->GetNumSetting("AutoRecPriority", 0);
+    int slpriority      = gContext->GetNumSetting("SignLangRecPriority", 0);
+    int onscrpriority   = gContext->GetNumSetting("OnScrSubRecPriority", 0);
+    int ccpriority      = gContext->GetNumSetting("CCRecPriority", 0);
+    int hhpriority      = gContext->GetNumSetting("HardHearRecPriority", 0);
+    int adpriority      = gContext->GetNumSetting("AudioDescRecPriority", 0);
 
     int autostrata = autopriority * 2 + 1;
 
@@ -2919,8 +2925,35 @@
         "(cardinput.cardinputid = RECTABLE.prefinput) * %1").arg(prefinputpri);
 
     if (hdtvpriority)
-        pwrpri += QString(" + (program.hdtv > 0) * %1").arg(hdtvpriority);
+        pwrpri += QString(" + (program.hdtv > 0 OR "
+        "FIND_IN_SET('HDTV', program.videoprop) > 0) * %1").arg(hdtvpriority);
 
+    if (wspriority)
+        pwrpri += QString(" + "
+        "(FIND_IN_SET('WIDESCREEN', program.videoprop) > 0) * %1").arg(wspriority);
+
+    if (slpriority)
+        pwrpri += QString(" + "
+        "(FIND_IN_SET('SIGNED', program.subtitletypes) > 0) * %1").arg(slpriority);
+
+    if (onscrpriority)
+        pwrpri += QString(" + "
+        "(FIND_IN_SET('ONSCREEN', program.subtitletypes) > 0) * %1").arg(onscrpriority);
+
+    if (ccpriority)
+        pwrpri += QString(" + "
+        "(FIND_IN_SET('NORMAL', program.subtitletypes) > 0 OR "
+        "program.closecaptioned > 0 OR program.subtitled > 0) * %1").arg(ccpriority);
+
+    if (hhpriority)
+        pwrpri += QString(" + "
+        "(FIND_IN_SET('HARDHEAR', program.subtitletypes) > 0 OR "
+        "FIND_IN_SET('HARDHEAR', program.audioprop) > 0) * %1").arg(hhpriority);
+
+    if (adpriority)
+        pwrpri += QString(" + "
+        "(FIND_IN_SET('VISUALIMPAIR', program.audioprop) > 0) * %1").arg(adpriority);
+
     QString schedTmpRecord = recordTable;
 
     MSqlQuery result(dbConn);
