Index: mythvideo/mythvideo/videodlg.h
===================================================================
--- mythvideo/mythvideo/videodlg.h	(revision 9728)
+++ mythvideo/mythvideo/videodlg.h	(working copy)
@@ -26,10 +26,10 @@
         
         virtual ~VideoDialog();
         
-        virtual void playVideo(Metadata *someItem);
+        virtual void playVideo(Metadata *someItem, bool wantsAltPlayer);
         
-        QString getHandler(Metadata *someItem);
-        QString getCommand(Metadata *someItem);
+        QString getHandler(Metadata *someItem, bool wantsAltPlayer);
+        QString getCommand(Metadata *someItem, bool wantsAltPlayer);
         bool checkParentPassword();
         GenericTree *getVideoTreeRoot(void);
         
@@ -46,6 +46,7 @@
         void exitWin();
         virtual void slotParentalLevelChanged() {cerr << "VideoDialog::parseContainer" << endl;}
         virtual void slotWatchVideo();
+        virtual void slotAltWatchVideo();
             
     protected:
         virtual void updateBackground(void);
@@ -63,6 +64,7 @@
         int currentParentalLevel;        
         bool isFileBrowser;
         bool isFlatList;
+        bool hasAltPlayer;
         Metadata* curitem;
         MythPopupBox* popup;
         bool expectingPopup;
Index: mythvideo/mythvideo/globalsettings.cpp
===================================================================
--- mythvideo/mythvideo/globalsettings.cpp	(revision 9728)
+++ mythvideo/mythvideo/globalsettings.cpp	(working copy)
@@ -205,6 +205,18 @@
     return gc;
 };
 
+static HostLineEdit *VideoAlternatePlayer()
+{
+    HostLineEdit *gc = new HostLineEdit("VideoAlternatePlayer");
+    gc->setLabel(QObject::tr("Alternate Player"));
+    gc->setValue("");
+    gc->setHelpText(QObject::tr("If, for some reason, the default player "
+                    "doesn't play a video, you can play it in the alternate "
+                    "player by hitting the INFO button and selecting 'Watch "
+                    "In Alternate Player'"));
+    return gc;
+};
+
 static HostSpinBox *VideoGalleryRows()
 {
     HostSpinBox *gc = new HostSpinBox("VideoGalleryRowsPerPage", 2, 5, 1);
@@ -285,5 +297,6 @@
     VerticalConfigurationGroup* playersettings = new VerticalConfigurationGroup(false);
     playersettings->setLabel(QObject::tr("Player Settings"));
     playersettings->addChild(VideoDefaultPlayer());
+    playersettings->addChild(VideoAlternatePlayer());
     addChild(playersettings);
 }
Index: mythvideo/mythvideo/videotree.cpp
===================================================================
--- mythvideo/mythvideo/videotree.cpp	(revision 9728)
+++ mythvideo/mythvideo/videotree.cpp	(working copy)
@@ -32,6 +32,7 @@
     current_parental_level = gContext->GetNumSetting("VideoDefaultParentalLevel", 1);
 
     file_browser = gContext->GetNumSetting("VideoTreeNoDB", 0);
+    hasAltPlayer = gContext->GetSetting("VideoAlternatePlayer") != "";
 
     //
     //  Theme and tree stuff
@@ -351,7 +352,7 @@
 {
     if(node_number > -1)
     {
-        playVideo(curitem);        
+        playVideo(curitem, false);        
     }
 }
 
@@ -498,6 +499,8 @@
         if(info)
         {
             focusButton = popup->addButton(tr("Watch This Video"), this, SLOT(slotWatchVideo())); 
+            if(hasAltPlayer)
+                popup->addButton(tr("Watch In Alternate Player"), this, SLOT(slotAltWatchVideo()));
             popup->addButton(tr("View Full Plot"), this, SLOT(slotViewPlot()));
         }
         else
@@ -593,20 +596,32 @@
     cancelPopup();
     
     if (curitem)
-        playVideo(curitem);
+        playVideo(curitem, false);
     else
         cerr << "no Item to watch" << endl;
 
 }
 
+void VideoTree::slotAltWatchVideo()
+{
+    cancelPopup();
+    
+    if (curitem)
+        playVideo(curitem, true);
+    else
+        cerr << "no Item to watch" << endl;
 
-void VideoTree::playVideo(Metadata *someItem)
+}
+
+
+
+void VideoTree::playVideo(Metadata *someItem, bool wantsAltPlayer)
 {
     if (!someItem)
         return;
         
     QString filename = someItem->Filename();
-    QString handler = getHandler(someItem);
+    QString handler = getHandler(someItem, wantsAltPlayer);
     QString year = QString("%1").arg(someItem->Year());
     // See if this is being handled by a plugin..
     if(gContext->GetMainWindow()->HandleMedia(handler, filename, someItem->Plot(), 
@@ -616,7 +631,7 @@
         return;
     }
 
-    QString command = getCommand(someItem);
+    QString command = getCommand(someItem, wantsAltPlayer);
         
     
     QTime playing_time;
@@ -649,7 +664,7 @@
         if (parentItem->ChildID() > 0)
         {
             //Load up data about this child
-            command = getCommand(childItem);
+            command = getCommand(childItem, wantsAltPlayer);
             playing_time.start();
             myth_system((QString("%1 ") .arg(command)).local8Bit());
         }
@@ -671,7 +686,7 @@
 }
 
 
-QString VideoTree::getHandler(Metadata *someItem)
+QString VideoTree::getHandler(Metadata *someItem, bool wantsAltPlayer)
 {
     
     if (!someItem)
@@ -680,7 +695,13 @@
     QString filename = someItem->Filename();
     QString ext = someItem->Filename().section('.',-1);
 
-    QString handler = gContext->GetSetting("VideoDefaultPlayer");
+    QString handler = gContext->GetSetting(wantsAltPlayer ? "VideoAlternatePlayer": "VideoDefaultPlayer");
+    if (wantsAltPlayer && handler != "") 
+    {
+        // If user asked for the alternate player command, we don't check for 
+        // specialized player commands
+        return handler;
+    }
     QString special_handler = someItem->PlayCommand();
  
     //
@@ -724,13 +745,13 @@
     return handler;
 }
 
-QString VideoTree::getCommand(Metadata *someItem)
+QString VideoTree::getCommand(Metadata *someItem, bool wantsAltPlayer)
 {
     if (!someItem)
         return "";
         
     QString filename = someItem->Filename();
-    QString handler = getHandler(someItem);
+    QString handler = getHandler(someItem, wantsAltPlayer);
     QString arg;
     arg.sprintf("\"%s\"",
                 filename.replace(QRegExp("\""), "\\\"").utf8().data());
Index: mythvideo/mythvideo/videodlg.cpp
===================================================================
--- mythvideo/mythvideo/videodlg.cpp	(revision 9728)
+++ mythvideo/mythvideo/videodlg.cpp	(working copy)
@@ -43,6 +43,7 @@
 
     isFileBrowser = false;
     isFlatList = false;
+    hasAltPlayer = gContext->GetSetting("VideoAlternatePlayer") != "";
     video_list = new VideoList(_winName);
     video_tree_root = NULL;
     
@@ -178,17 +179,29 @@
     cancelPopup();
     
     if (curitem)
-        playVideo(curitem);
+        playVideo(curitem, false);
     else
         cerr << "no Item to watch" << endl;
 
 }
 
+void VideoDialog::slotAltWatchVideo()
+{
+    cancelPopup();
+    
+    if (curitem)
+        playVideo(curitem, true);
+    else
+        cerr << "no Item to watch" << endl;
 
-void VideoDialog::playVideo(Metadata *someItem)
+}
+
+
+
+void VideoDialog::playVideo(Metadata *someItem, bool wantsAltPlayer)
 {
     QString filename = someItem->Filename();
-    QString handler = getHandler(someItem);
+    QString handler = getHandler(someItem, wantsAltPlayer);
     QString year = QString("%1").arg(someItem->Year());
     // See if this is being handled by a plugin..
     if(gContext->GetMainWindow()->HandleMedia(handler, filename, someItem->Plot(), 
@@ -198,7 +211,7 @@
         return;
     }
 
-    QString command = getCommand(someItem);
+    QString command = getCommand(someItem, wantsAltPlayer);
         
     
     QTime playing_time;
@@ -231,7 +244,7 @@
         if (parentItem->ChildID() > 0)
         {
             //Load up data about this child
-            command = getCommand(childItem);
+            command = getCommand(childItem, wantsAltPlayer);
             playing_time.start();
             myth_system((QString("%1 ") .arg(command)).local8Bit());
         }
@@ -253,7 +266,7 @@
 }
 
 
-QString VideoDialog::getHandler(Metadata *someItem)
+QString VideoDialog::getHandler(Metadata *someItem, bool wantsAltPlayer)
 {
     
     if (!someItem)
@@ -262,7 +275,13 @@
     QString filename = someItem->Filename();
     QString ext = someItem->Filename().section('.',-1);
 
-    QString handler = gContext->GetSetting("VideoDefaultPlayer");
+    QString handler = gContext->GetSetting(wantsAltPlayer ? "VideoAlternatePlayer": "VideoDefaultPlayer");
+    if (wantsAltPlayer && handler != "")
+    {
+        // If user asked for the alternate player command, we don't check for 
+        // specialized player commands
+        return handler;
+    }
     QString special_handler = someItem->PlayCommand();
  
     //
@@ -306,13 +325,13 @@
     return handler;
 }
 
-QString VideoDialog::getCommand(Metadata *someItem)
+QString VideoDialog::getCommand(Metadata *someItem, bool wantsAltPlayer)
 {
     if (!someItem)
         return "";
         
     QString filename = someItem->Filename();
-    QString handler = getHandler(someItem);
+    QString handler = getHandler(someItem, wantsAltPlayer);
     QString arg;
     arg.sprintf("\"%s\"",
                 filename.replace(QRegExp("\""), "\\\"").utf8().data());
Index: mythvideo/mythvideo/videobrowser.cpp
===================================================================
--- mythvideo/mythvideo/videobrowser.cpp	(revision 9728)
+++ mythvideo/mythvideo/videobrowser.cpp	(working copy)
@@ -68,7 +68,7 @@
         handled = true;
 
         if ((action == "SELECT" || action == "PLAY") && curitem)
-            playVideo(curitem);
+            playVideo(curitem, false);
         else if (action == "INFO")
             doMenu(true);
         else if (action == "DOWN")
@@ -129,6 +129,8 @@
         if(info)
         {
             focusButton = popup->addButton(tr("Watch This Video"), this, SLOT(slotWatchVideo())); 
+            if(hasAltPlayer)
+                popup->addButton(tr("Watch In Alternate Player"), this, SLOT(slotAltWatchVideo()));
             popup->addButton(tr("View Full Plot"), this, SLOT(slotViewPlot()));
         }
         else
Index: mythvideo/mythvideo/videogallery.cpp
===================================================================
--- mythvideo/mythvideo/videogallery.cpp	(revision 9728)
+++ mythvideo/mythvideo/videogallery.cpp	(working copy)
@@ -489,6 +489,8 @@
         if(info)
         {
             focusButton = popup->addButton(tr("Watch This Video"), this, SLOT(slotWatchVideo()));
+            if(hasAltPlayer)
+                popup->addButton(tr("Watch In Alternate Player"), this, SLOT(slotAltWatchVideo()));
             popup->addButton(tr("View Full Plot"), this, SLOT(slotViewPlot()));
             popup->addButton(tr("View Details"), this, SLOT(handleVideoSelect()));
 
Index: mythvideo/mythvideo/videotree.h
===================================================================
--- mythvideo/mythvideo/videotree.h	(revision 9728)
+++ mythvideo/mythvideo/videotree.h	(working copy)
@@ -27,9 +27,9 @@
 
     void buildVideoList();
     
-    virtual void playVideo(Metadata *someItem);
-    QString getHandler(Metadata *someItem);
-    QString getCommand(Metadata *someItem);
+    virtual void playVideo(Metadata *someItem, bool wantsAltPlayer);
+    QString getHandler(Metadata *someItem, bool wantsAltPlayer);
+    QString getCommand(Metadata *someItem, bool wantsAltPlayer);
         
   public slots:
     void slotDoCancel();
@@ -38,6 +38,7 @@
     void slotViewPlot();
     void slotDoFilter();
     virtual void slotWatchVideo();
+    virtual void slotAltWatchVideo();
     
     void handleTreeListSelection(int, IntVector*);
     void handleTreeListEntry(int, IntVector*);
@@ -59,6 +60,7 @@
     void         wireUpTheme();
     int          current_parental_level;
     bool         file_browser;
+    bool         hasAltPlayer;
 
     //
     //  Theme-related "widgets"
