Index: libs/libmythtv/dbcheck.cpp
===================================================================
--- libs/libmythtv/dbcheck.cpp	(revision 16422)
+++ libs/libmythtv/dbcheck.cpp	(working copy)
@@ -10,11 +10,12 @@
 #include "mythdbcon.h"
 #include "datadirect.h" // for DataDirectProcessor::FixProgramIDs
 #include "dbutil.h"
+#include "videodisplayprofile.h" // for "1214"
 
 #define MINIMUM_DBMS_VERSION 5
 
 /// This is the DB schema version expected by the running MythTV instance.
-const QString currentDatabaseVersion = "1213";
+const QString currentDatabaseVersion = "1214";
 
 static bool UpdateDBVersionNumber(const QString &newnumber);
 static bool performActualUpdate(const QString updates[], QString version,
@@ -3579,6 +3580,45 @@
         return false;
     }
 
+    if (dbver == "1213")
+    {
+        VERBOSE(VB_IMPORTANT, "In 1213 upg");
+        MSqlQuery query(MSqlQuery::InitCon());
+        query.prepare("SELECT hostname "
+                      "FROM displayprofilegroups "
+                      "GROUP BY hostname");
+        bool ok = query.exec();
+        while (ok && query.next())
+        {
+            QString host = query.value(0).toString();
+            QStringList profiles = VideoDisplayProfile::GetProfiles(host);
+            if (profiles.contains("High Quality") &&
+                profiles.contains("Normal") &&
+                profiles.contains("Slim"))
+            {
+                continue;
+            }
+
+            VideoDisplayProfile::CreateNewProfiles(host);
+            profiles = VideoDisplayProfile::GetProfiles(host);
+            QString profile = VideoDisplayProfile::GetDefaultProfileName(host);
+
+            VERBOSE(VB_IMPORTANT, QString("In 1213 upg(%1): p %2")
+                    .arg(host).arg(profile));
+
+            if (profiles.contains("Normal") &&
+                (profile=="CPU++" || profile=="CPU+" || profile=="CPU--"))
+            {
+                VideoDisplayProfile::SetDefaultProfileName("Normal", host);
+            }
+        }
+
+        const QString updates[] = { "" };
+        if (!performActualUpdate(updates, "1214", dbver))
+            return false;
+    }
+
+
 //"ALTER TABLE cardinput DROP COLUMN preference;" in 0.22
 //"ALTER TABLE channel DROP COLUMN atscsrcid;" in 0.22
 //"ALTER TABLE recordedmarkup DROP COLUMN offset;" in 0.22
Index: libs/libmythtv/videodisplayprofile.h
===================================================================
--- libs/libmythtv/videodisplayprofile.h	(revision 16422)
+++ libs/libmythtv/videodisplayprofile.h	(working copy)
@@ -131,6 +131,8 @@
 
     static void        DeleteProfiles(const QString &hostname);
     static void        CreateProfiles(const QString &hostname);
+    static void        CreateOldProfiles(const QString &hostname);
+    static void        CreateNewProfiles(const QString &hostname);
 
     static QStringList GetVideoRenderers(const QString &decoder);
     static QString     GetVideoRendererHelp(const QString &renderer);
Index: libs/libmythtv/videodisplayprofile.cpp
===================================================================
--- libs/libmythtv/videodisplayprofile.cpp	(revision 16422)
+++ libs/libmythtv/videodisplayprofile.cpp	(working copy)
@@ -902,8 +902,40 @@
 bool VideoDisplayProfile::DeleteProfileGroup(
     const QString &groupname, const QString &hostname)
 {
+    bool ok = true;
     MSqlQuery query(MSqlQuery::InitCon());
+    MSqlQuery query2(MSqlQuery::InitCon());
+
     query.prepare(
+        "SELECT profilegroupid "
+        "FROM displayprofilegroups "
+        "WHERE name     = :NAME AND "
+        "      hostname = :HOST ");
+
+    query.bindValue(":NAME", groupname);
+    query.bindValue(":HOST", hostname);
+
+    if (!query.exec() || !query.isActive())
+    {
+        MythContext::DBError("delete_profile_group 1", query);
+        ok = false;
+    }
+    else
+    {
+        while (query.next())
+        {
+            query2.prepare("DELETE FROM displayprofiles "
+                           "WHERE profilegroupid = :PROFID");
+            query2.bindValue(":PROFID", query.value(0).toUInt());
+            if (!query2.exec())
+            {
+                MythContext::DBError("delete_profile_group 2", query2);
+                ok = false;
+            }
+        }
+    }
+
+    query.prepare(
         "DELETE FROM displayprofilegroups "
         "WHERE name     = :NAME AND "
         "      hostname = :HOST");
@@ -913,17 +945,17 @@
 
     if (!query.exec())
     {
-        MythContext::DBError("delete_profile_group", query);
-        return false;
+        MythContext::DBError("delete_profile_group 3", query);
+        ok = false;
     }
 
-    return true;
+    return ok;
 }
 
-void VideoDisplayProfile::CreateProfiles(const QString &hostname)
+void VideoDisplayProfile::CreateOldProfiles(const QString &hostname)
 {
-    DeleteProfiles(hostname);
-
+    (void) QObject::tr("CPU++", "Sample: No hardware assist");
+    DeleteProfileGroup("CPU++", hostname);
     uint groupid = CreateProfileGroup("CPU++", hostname);
     CreateProfile(groupid, 1, ">", 0, 0, "", 0, 0,
                   "ffmpeg", 1, "xv-blit", "softblend", true,
@@ -932,6 +964,8 @@
                   "ffmpeg", 1, "quartz-blit", "softblend", true,
                   "linearblend", "linearblend", "");
 
+    (void) QObject::tr("CPU+", "Sample: Hardware assist HD only");
+    DeleteProfileGroup("CPU+", hostname);
     groupid = CreateProfileGroup("CPU+", hostname);
     CreateProfile(groupid, 1, "<=", 720, 576, ">", 0, 0,
                   "ffmpeg", 1, "xv-blit", "softblend", true,
@@ -949,6 +983,8 @@
                   "libmpeg2", 1, "xv-blit", "chromakey", false,
                   "bobdeint", "onefield", "");
 
+    (void) QObject::tr("CPU--", "Sample: Hardware assist all");
+    DeleteProfileGroup("CPU--", hostname);
     groupid = CreateProfileGroup("CPU--", hostname);
     CreateProfile(groupid, 1, "<=", 720, 576, ">", 0, 0,
                   "ivtv", 1, "ivtv", "ivtv", true,
@@ -967,6 +1003,63 @@
                   "none", "none", "");
 }
 
+void VideoDisplayProfile::CreateNewProfiles(const QString &hostname)
+{
+    (void) QObject::tr("High Quality", "Sample: high quality");
+    DeleteProfileGroup("High Quality", hostname);
+    uint groupid = CreateProfileGroup("High Quality", hostname);
+    CreateProfile(groupid, 1, ">=", 1920, 1080, "", 0, 0,
+                  "ffmpeg", 2, "xv-blit", "softblend", true,
+                  "linearblend", "linearblend", "");
+    CreateProfile(groupid, 2, ">", 0, 0, "", 0, 0,
+                  "ffmpeg", 1, "xv-blit", "softblend", true,
+                  "yadifdoubleprocessdeint", "yadifdeint", "");
+    CreateProfile(groupid, 3, ">=", 1920, 1080, "", 0, 0,
+                  "ffmpeg", 2, "quartz-blit", "softblend", true,
+                  "linearblend", "linearblend", "");
+    CreateProfile(groupid, 4, ">", 0, 0, "", 0, 0,
+                  "ffmpeg", 1, "quartz-blit", "softblend", true,
+                  "yadifdoubleprocessdeint", "yadifdeint", "");
+
+    (void) QObject::tr("Normal", "Sample: average quality");
+    DeleteProfileGroup("Normal", hostname);
+    groupid = CreateProfileGroup("Normal", hostname);
+    CreateProfile(groupid, 1, ">=", 1280, 720, "", 0, 0,
+                  "ffmpeg", 1, "xv-blit", "softblend", false,
+                  "linearblend", "linearblend", "");
+    CreateProfile(groupid, 2, ">", 0, 0, "", 0, 0,
+                  "ffmpeg", 1, "xv-blit", "softblend", true,
+                  "greedyhdoubleprocessdeint", "kerneldeint", "");
+    CreateProfile(groupid, 3, ">=", 1280, 720, "", 0, 0,
+                  "ffmpeg", 1, "quartz-blit", "softblend", false,
+                  "linearblend", "linearblend", "");
+    CreateProfile(groupid, 4, ">", 0, 0, "", 0, 0,
+                  "ffmpeg", 1, "quartz-blit", "softblend", true,
+                  "greedyhdoubleprocessdeint", "kerneldeint", "");
+
+    (void) QObject::tr("Normal", "Sample: low CPU usage");
+    DeleteProfileGroup("Slim", hostname);
+    groupid = CreateProfileGroup("Slim", hostname);
+    CreateProfile(groupid, 1, ">=", 1280, 720, "", 0, 0,
+                  "ffmpeg", 1, "xv-blit", "softblend", false,
+                  "onefield", "onefield", "");
+    CreateProfile(groupid, 2, ">", 0, 0, "", 0, 0,
+                  "ffmpeg", 1, "xv-blit", "softblend", true,
+                  "linearblend", "linearblend", "");
+    CreateProfile(groupid, 3, ">=", 1280, 720, "", 0, 0,
+                  "ffmpeg", 1, "quartz-blit", "softblend", false,
+                  "onefield", "onefield", "");
+    CreateProfile(groupid, 4, ">", 0, 0, "", 0, 0,
+                  "ffmpeg", 1, "quartz-blit", "softblend", true,
+                  "linearblend", "linearblend", "");
+}
+
+void VideoDisplayProfile::CreateProfiles(const QString &hostname)
+{
+    CreateOldProfiles(hostname);
+    CreateNewProfiles(hostname);
+}
+
 QStringList VideoDisplayProfile::GetVideoRenderers(const QString &decoder)
 {
     QMutexLocker locker(&safe_lock);
Index: programs/mythfrontend/globalsettings.cpp
===================================================================
--- programs/mythfrontend/globalsettings.cpp	(revision 16422)
+++ programs/mythfrontend/globalsettings.cpp	(working copy)
@@ -1361,10 +1361,18 @@
     if (profiles.empty())
         return;
 
+    if (!profiles.contains("Normal") &&
+        !profiles.contains("High Quality") &&
+        !profiles.contains("Slim"))
+    {
+        VideoDisplayProfile::CreateNewProfiles(host);
+        profiles = VideoDisplayProfile::GetProfiles(host);
+    }
+
     QString profile = VideoDisplayProfile::GetDefaultProfileName(host);
     if (!profiles.contains(profile))
     {
-        profile = profiles[0];
+        profile = (profiles.contains("Normal")) ? "Normal" : profiles[0];
         VideoDisplayProfile::SetDefaultProfileName(profile, host);
     }
 
@@ -1372,7 +1380,7 @@
     grouptrigger->setLabel(QObject::tr("Current Video Playback Profile"));
     QStringList::const_iterator it;
     for (it = profiles.begin(); it != profiles.end(); it++)
-        grouptrigger->addSelection(*it);
+        grouptrigger->addSelection(QObject::tr(*it), *it);
 
     HorizontalConfigurationGroup *grp =
         new HorizontalConfigurationGroup(false, false, true, true);
