Index: libs/libmythtv/playgroup.cpp
===================================================================
--- libs/libmythtv/playgroup.cpp	(revision 22291)
+++ libs/libmythtv/playgroup.cpp	(working copy)
@@ -6,6 +6,7 @@
 #include <iostream>
 #include "playgroup.h"
 #include "programinfo.h"
+#include "videoouttypes.h"
 
 // A parameter associated with the profile itself
 class PlayGroupDBStorage : public SimpleDBStorage
@@ -125,6 +126,57 @@
     }
 };
 
+class AspectOverrideModeSetting : public ComboBoxSetting, public PlayGroupDBStorage
+{
+  public:
+    AspectOverrideModeSetting(const PlayGroup& _parent) :
+        ComboBoxSetting(this), 
+	PlayGroupDBStorage(this, _parent, "aspectoverridemode")
+    {
+        setLabel(QObject::tr("Aspect Ratio"));
+        setHelpText(QObject::tr("Change the default Aspect Ratio. "));
+    }
+
+    void Load(void)
+    {
+        for (int j = kAspect_Off; j < kAspect_END; j++)
+        {
+            // swap 14:9 and 16:9
+            int i = ((kAspect_14_9 == j) ? kAspect_16_9 :
+                    ((kAspect_16_9 == j) ? kAspect_14_9 : j));
+
+            addSelection(toString((AspectOverrideMode) i), QString("%1").arg(i));
+        }
+
+        PlayGroupDBStorage::Load();
+    }
+
+};
+
+class AdjustFillModeSetting : public ComboBoxSetting, public PlayGroupDBStorage
+{
+  public:
+    AdjustFillModeSetting(const PlayGroup& _parent) :
+        ComboBoxSetting(this), 
+	PlayGroupDBStorage(this, _parent, "adjustfillmode")
+    {
+        setLabel(QObject::tr("Fill Mode"));
+        setHelpText(QObject::tr("Change the default Fill Modeo. "));
+    }
+
+    void Load(void)
+    {
+        for (int i = kAdjustFill_Off; i < kAdjustFill_END; i++)
+        {
+            addSelection(toString((AdjustFillMode) i), QString("%1").arg(i));
+        }
+
+        PlayGroupDBStorage::Load();
+    }
+
+};
+
+
 PlayGroup::PlayGroup(QString _name)
     : name(_name)
 {
@@ -136,6 +188,8 @@
     cgroup->addChild(new SkipBack(*this));
     cgroup->addChild(new JumpMinutes(*this));
     cgroup->addChild(new TimeStretch(*this));
+    cgroup->addChild(new AspectOverrideModeSetting(*this));
+    cgroup->addChild(new AdjustFillModeSetting(*this));
 
     addChild(cgroup);
 };
Index: libs/libmythtv/dbcheck.cpp
===================================================================
--- libs/libmythtv/dbcheck.cpp	(revision 22291)
+++ libs/libmythtv/dbcheck.cpp	(working copy)
@@ -18,7 +18,7 @@
 #define MINIMUM_DBMS_VERSION 5,0,15
 
 /// This is the DB schema version expected by the running MythTV instance.
-const QString currentDatabaseVersion = "1244";
+const QString currentDatabaseVersion = "1245";
 
 static bool UpdateDBVersionNumber(const QString &newnumber);
 static bool performActualUpdate(
@@ -4896,6 +4896,19 @@
             return false;
     }
 
+    if (dbver == "1244")
+    {
+       const char *updates[] = {
+"ALTER TABLE playgroup ADD COLUMN aspectoverridemode INT NOT NULL DEFAULT 0;",
+"ALTER TABLE playgroup ADD COLUMN adjustfillmode INT NOT NULL DEFAULT 0;",
+"UPDATE playgroup SET aspectoverridemode = 0, adjustfillmode = 0;",
+NULL
+};
+        if (!performActualUpdate(updates, "1245", dbver))
+            return false;
+    }
+
+
 if (0) // apply at or near 0.22 release..
 {
     if (dbver == "XXXX")
Index: libs/libmythtv/playercontext.cpp
===================================================================
--- libs/libmythtv/playercontext.cpp	(revision 22291)
+++ libs/libmythtv/playercontext.cpp	(working copy)
@@ -47,6 +47,7 @@
     // DB values
     fftime(0), rewtime(0),
     jumptime(0), ts_normal(1.0f), ts_alt(1.5f),
+    overrideMode(kAspect_Off), adjustFillMode(kAdjustFill_Off),
     // locks
     playingInfoLock(QMutex::Recursive), deleteNVPLock(QMutex::Recursive),
     stateLock(QMutex::Recursive),
@@ -953,6 +954,8 @@
     jumptime     = PlayGroup::GetSetting(group, "jump", 10);
     ts_normal    = PlayGroup::GetSetting(group, "timestretch", 100) * 0.01f;
     ts_alt       = (ts_normal == 1.0f) ? 1.5f : 1.0f;
+    overrideMode = (AspectOverrideMode) PlayGroup::GetSetting(group, "aspectoverridemode", kAspect_Off);
+    adjustFillMode = (AdjustFillMode) PlayGroup::GetSetting(group, "adjustfillmode", kAdjustFill_Off);
 }
 
 void PlayerContext::SetPseudoLiveTV(
Index: libs/libmythtv/tv_play.cpp
===================================================================
--- libs/libmythtv/tv_play.cpp	(revision 22291)
+++ libs/libmythtv/tv_play.cpp	(working copy)
@@ -5129,8 +5129,14 @@
     {
         ctx->StartOSD(this);
         SetSpeedChangeTimer(25, __LINE__);
+
+	if (ctx->nvp) {
+            ctx->nvp->ToggleAspectOverride(ctx->overrideMode);
+            ctx->nvp->ToggleAdjustFill(ctx->adjustFillMode);
+	}
     }
 
+
     VERBOSE(VB_IMPORTANT, LOC + QString("StartPlayer(%1, %2, %3) -- end %4")
             .arg(find_player_index(ctx)).arg(StateToString(desiredState))
             .arg((wantPiP) ? "PiP" : "main").arg((ok) ? "ok" : "error"));
Index: libs/libmythtv/playercontext.h
===================================================================
--- libs/libmythtv/playercontext.h	(revision 22291)
+++ libs/libmythtv/playercontext.h	(working copy)
@@ -180,6 +180,8 @@
      */
     float               ts_normal; 
     float               ts_alt;
+    AspectOverrideMode  overrideMode;
+    AdjustFillMode      adjustFillMode;
 
     mutable QMutex      playingInfoLock;
     mutable QMutex      deleteNVPLock;
