Index: mythplugins/mythmusic/mythmusic/playbackbox.cpp
===================================================================
--- mythplugins/mythmusic/mythmusic/playbackbox.cpp	(revision 10180)
+++ mythplugins/mythmusic/mythmusic/playbackbox.cpp	(working copy)
@@ -1815,7 +1815,7 @@
         adevice = gContext->GetSetting("MusicAudioDevice");
  
     // TODO: Error checking that device is opened correctly!
-    output = AudioOutput::OpenAudio(adevice, 16, 2, 44100, 
+    output = AudioOutput::OpenAudio(adevice, "default", 16, 2, 44100,
                                     AUDIOOUTPUT_MUSIC, true,
                                     false /* AC3/DTS pass through */);
     output->setBufferSize(outputBufferSize * 1024);
Index: mythplugins/mythphone/mythphone/audiodrv.cpp
===================================================================
--- mythplugins/mythphone/mythphone/audiodrv.cpp	(revision 10180)
+++ mythplugins/mythphone/mythphone/audiodrv.cpp	(working copy)
@@ -835,7 +835,7 @@
         cerr << "Cannot have matching spk and mic devices in this mode, should have chosen OSS mode\n";
     else
     {
-        mythOutput = AudioOutput::OpenAudio(spkDevice, 16, 1, 8000,
+        mythOutput = AudioOutput::OpenAudio(spkDevice, "default", 16, 1, 8000,
                                             AUDIOOUTPUT_TELEPHONY, true,
                                             false /* AC3/DTS pass through */);
         if (mythOutput)
Index: mythplugins/mythphone/mythphone/tone.cpp
===================================================================
--- mythplugins/mythphone/mythphone/tone.cpp	(revision 10180)
+++ mythplugins/mythphone/mythphone/tone.cpp	(working copy)
@@ -305,7 +305,7 @@
         return;
 
 #else
-    mythOutput = AudioOutput::OpenAudio(devName, 16, 1, 8000,
+    mythOutput = AudioOutput::OpenAudio(devName, "default", 16, 1, 8000,
                                         AUDIOOUTPUT_TELEPHONY, true,
                                         false /* AC3/DTS pass through */);
     if (mythOutput)
Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp	(revision 10180)
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp	(working copy)
@@ -188,7 +188,8 @@
       osd(NULL),                    timedisplay(NULL),
       dialogname(""),               dialogtype(0),
       // Audio stuff
-      audioOutput(NULL),            audiodevice("/dev/dsp"),
+      audioOutput(NULL),
+      audiodevice("/dev/dsp"),      audio_passthrudevice("default"),
       audio_channels(2),            audio_bits(-1),
       audio_samplerate(44100),      audio_stretchfactor(1.0f),
       // Picture-in-Picture
@@ -623,8 +624,9 @@
     if (!audioOutput && !using_null_videoout)
     {
         bool setVolume = gContext->GetNumSetting("MythControlsVolume", 1);
-        audioOutput = AudioOutput::OpenAudio(audiodevice, audio_bits,
-                                             audio_channels, audio_samplerate, 
+        audioOutput = AudioOutput::OpenAudio(audiodevice, audio_passthrudevice,
+                                             audio_bits, audio_channels,
+                                             audio_samplerate,
                                              AUDIOOUTPUT_VIDEO,
                                              setVolume, audio_passthru);
         if (!audioOutput)
Index: mythtv/libs/libmythtv/NuppelVideoPlayer.h
===================================================================
--- mythtv/libs/libmythtv/NuppelVideoPlayer.h	(revision 10180)
+++ mythtv/libs/libmythtv/NuppelVideoPlayer.h	(working copy)
@@ -122,6 +122,7 @@
     void SetNoAudio(void)                     { no_audio_out = true; }
     void SetNullVideo(void)                   { using_null_videoout = true; }
     void SetAudioDevice(QString device)       { audiodevice = device; }
+    void SetAudioPassThruDevice(QString device) { audio_passthrudevice = device; }
     void SetFileName(QString lfilename)       { filename = lfilename; }
     void SetExactSeeks(bool exact)            { exactseeks = exact; }
     void SetAutoCommercialSkip(int autoskip);
@@ -652,6 +653,7 @@
     // Audio stuff
     AudioOutput *audioOutput;
     QString  audiodevice;
+    QString  audio_passthrudevice;
     int      audio_channels;
     int      audio_bits;
     int      audio_samplerate;
Index: mythtv/libs/libmythtv/tv_play.cpp
===================================================================
--- mythtv/libs/libmythtv/tv_play.cpp	(revision 10180)
+++ mythtv/libs/libmythtv/tv_play.cpp	(working copy)
@@ -1286,6 +1286,7 @@
     nvp->SetRecorder(recorder);
     nvp->SetAudioSampleRate(gContext->GetNumSetting("AudioSampleRate", 44100));
     nvp->SetAudioDevice(gContext->GetSetting("AudioOutputDevice"));
+    nvp->SetAudioPassThruDevice(gContext->GetSetting("PassThruOutputDevice"));
     nvp->SetLength(playbackLen);
     nvp->SetExactSeeks(gContext->GetNumSetting("ExactSeeking", 0));
     nvp->SetAutoCommercialSkip(autoCommercialSkip);
@@ -1358,6 +1359,7 @@
     pipnvp->SetRecorder(piprecorder);
     pipnvp->SetAudioSampleRate(gContext->GetNumSetting("AudioSampleRate", 44100));
     pipnvp->SetAudioDevice(gContext->GetSetting("AudioOutputDevice"));
+    pipnvp->SetAudioPassThruDevice(gContext->GetSetting("PassThruOutputDevice"));
     pipnvp->SetExactSeeks(gContext->GetNumSetting("ExactSeeking", 0));
     pipnvp->SetLiveTVChain(piptvchain);
 
Index: mythtv/libs/libmyth/audiooutputjack.h
===================================================================
--- mythtv/libs/libmyth/audiooutputjack.h	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputjack.h	(working copy)
@@ -12,7 +12,8 @@
 class AudioOutputJACK : public AudioOutputBase
 {
   public:
-    AudioOutputJACK(QString audiodevice, int laudio_bits, 
+    AudioOutputJACK(QString audiodevice, QString passthrudevice,
+                    int laudio_bits,
                     int laudio_channels, int laudio_samplerate,
                     AudioOutputSource source,
                     bool set_initial_vol, bool laudio_passthru);
Index: mythtv/libs/libmyth/audiooutputbase.h
===================================================================
--- mythtv/libs/libmyth/audiooutputbase.h	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputbase.h	(working copy)
@@ -23,7 +23,8 @@
 class AudioOutputBase : public AudioOutput
 {
  public:
-    AudioOutputBase(QString audiodevice, int laudio_bits,
+    AudioOutputBase(QString audiodevice, QString passthrudevice,
+                    int laudio_bits,
                     int laudio_channels, int laudio_samplerate,
                     AudioOutputSource source,
                     bool set_initial_vol, bool laudio_passthru);
@@ -110,6 +111,7 @@
     int fragment_size;
     long soundcard_buffer_size;
     QString audiodevice;
+    QString passthrudevice;
 
     bool audio_passthru;
 
Index: mythtv/libs/libmyth/audiooutputalsa.cpp
===================================================================
--- mythtv/libs/libmyth/audiooutputalsa.cpp	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputalsa.cpp	(working copy)
@@ -10,11 +10,12 @@
 #include "audiooutputalsa.h"
     
 
-AudioOutputALSA::AudioOutputALSA(QString audiodevice, int laudio_bits, 
+AudioOutputALSA::AudioOutputALSA(QString audiodevice, QString passthrudevice,
+                                 int laudio_bits,
                                  int laudio_channels, int laudio_samplerate,
                                  AudioOutputSource source,
                                  bool set_initial_vol, bool laudio_passthru)
-    : AudioOutputBase(audiodevice, laudio_bits,
+    : AudioOutputBase(audiodevice, passthrudevice, laudio_bits,
                       laudio_channels, laudio_samplerate, source,
                       set_initial_vol, laudio_passthru)
 {
@@ -45,12 +46,13 @@
     pcm_handle = NULL;
     numbadioctls = 0;
 
-    QString real_device = audiodevice;
-    if (audio_passthru)
-        real_device.append(":{ AES0 0x02 }");
-    
+    QString real_device = audio_passthru ? passthrudevice : audiodevice;
+
+    VERBOSE(VB_GENERAL, QString("Opening ALSA audio device '%1'.")
+            .arg(real_device));
+
     err = snd_pcm_open(&pcm_handle, real_device,
-          SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK); 
+                       SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK);
 
     if (err < 0)
     { 
Index: mythtv/libs/libmyth/audiooutputca.cpp
===================================================================
--- mythtv/libs/libmyth/audiooutputca.cpp	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputca.cpp	(working copy)
@@ -37,11 +37,12 @@
                        AudioBufferList *ioData);
 
 
-AudioOutputCA::AudioOutputCA(QString audiodevice, int laudio_bits, 
+AudioOutputCA::AudioOutputCA(QString audiodevice, QString passthrudevice,
+                             int laudio_bits,
                              int laudio_channels, int laudio_samplerate,
                              AudioOutputSource source,
                              bool set_initial_vol, bool laudio_passthru)
-    : AudioOutputBase(audiodevice, laudio_bits,
+    : AudioOutputBase(audiodevice, passthrudevice, laudio_bits,
                       laudio_channels, laudio_samplerate, source,
                       set_initial_vol, laudio_passthru)
 {
Index: mythtv/libs/libmyth/audiooutputjack.cpp
===================================================================
--- mythtv/libs/libmyth/audiooutputjack.cpp	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputjack.cpp	(working copy)
@@ -21,11 +21,12 @@
 #include "bio2jack.h"
 }
 
-AudioOutputJACK::AudioOutputJACK(QString audiodevice, int laudio_bits, 
+AudioOutputJACK::AudioOutputJACK(QString audiodevice, QString passthrudevice,
+                                 int laudio_bits,
                                  int laudio_channels, int laudio_samplerate,
                                  AudioOutputSource source,
                                  bool set_initial_vol, bool laudio_passthru)
-    : AudioOutputBase(audiodevice, laudio_bits,
+    : AudioOutputBase(audiodevice, passthrudevice, laudio_bits,
                       laudio_channels, laudio_samplerate, source,
                       set_initial_vol, laudio_passthru)
 {
@@ -54,7 +55,10 @@
     unsigned long jack_port_flags=JackPortIsPhysical;
     unsigned int jack_port_name_count=0;
     const char *jack_port_name=NULL;
-    
+
+    VERBOSE(VB_GENERAL, QString("Opening JACK audio device '%1'.")
+            .arg(audiodevice));
+
     if (!audiodevice.isEmpty()) {
         jack_port_flags = 0;
         jack_port_name_count = 1;
Index: mythtv/libs/libmyth/audiooutputoss.h
===================================================================
--- mythtv/libs/libmyth/audiooutputoss.h	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputoss.h	(working copy)
@@ -13,7 +13,8 @@
 class AudioOutputOSS : public AudioOutputBase
 {
 public:
-    AudioOutputOSS(QString audiodevice, int laudio_bits, 
+    AudioOutputOSS(QString audiodevice, QString passthrudevice,
+                   int laudio_bits,
                    int laudio_channels, int laudio_samplerate,
                    AudioOutputSource source, bool set_initial_vol,
                    bool laudio_passthru);
Index: mythtv/libs/libmyth/audiooutputbase.cpp
===================================================================
--- mythtv/libs/libmyth/audiooutputbase.cpp	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputbase.cpp	(working copy)
@@ -13,8 +13,8 @@
 #include <unistd.h>
 
 
-AudioOutputBase::AudioOutputBase(QString audiodevice, int, 
-                                 int, int,
+AudioOutputBase::AudioOutputBase(QString audiodevice, QString passthrudevice,
+                                 int, int, int,
                                  AudioOutputSource source,
                                  bool set_initial_vol,
                                  bool /*laudio_passthru*/)
@@ -23,6 +23,7 @@
     pthread_mutex_init(&avsync_lock, NULL);
     pthread_cond_init(&audio_bufsig, NULL);
     this->audiodevice = audiodevice;
+    this->passthrudevice = passthrudevice;
 
     output_audio = 0;
     audio_bits = -1;
@@ -141,9 +142,6 @@
     
     numlowbuffer = 0;
 
-    VERBOSE(VB_GENERAL, QString("Opening audio device '%1'.")
-            .arg(audiodevice));
-    
     // Actually do the device specific open call
     if (!OpenDevice())
     {
Index: mythtv/libs/libmyth/audiooutput.cpp
===================================================================
--- mythtv/libs/libmyth/audiooutput.cpp	(revision 10180)
+++ mythtv/libs/libmyth/audiooutput.cpp	(working copy)
@@ -32,15 +32,22 @@
 #include "audiooutputjack.h"
 #endif
 
-AudioOutput *AudioOutput::OpenAudio(QString audiodevice, int audio_bits, 
+AudioOutput *AudioOutput::OpenAudio(QString audiodevice, QString passthrudevice,
+                                    int audio_bits,
                                     int audio_channels, int audio_samplerate,
                                     AudioOutputSource source,
                                     bool set_initial_vol, bool audio_passthru)
 {
+    if (passthrudevice=="" || passthrudevice.lower()=="default")
+    {
+        passthrudevice = audiodevice;
+    }
+
     if (audiodevice.startsWith("ALSA:"))
     {
 #ifdef USE_ALSA
-        return new AudioOutputALSA(audiodevice.remove(0, 5), audio_bits,
+        return new AudioOutputALSA(audiodevice.remove(0, 5),
+                                   passthrudevice.remove(0, 5), audio_bits,
                                    audio_channels, audio_samplerate, source,
                                    set_initial_vol, audio_passthru);
 #else
@@ -51,14 +58,15 @@
     }
     else if (audiodevice.startsWith("NULL"))
     {
-        return new AudioOutputNULL(audiodevice, audio_bits,
+        return new AudioOutputNULL(audiodevice, passthrudevice, audio_bits,
                                    audio_channels, audio_samplerate, source,
                                    set_initial_vol, audio_passthru);
     }
     else if (audiodevice.startsWith("ARTS:"))
     {
 #ifdef USE_ARTS
-        return new AudioOutputARTS(audiodevice.remove(0, 5), audio_bits,
+        return new AudioOutputARTS(audiodevice.remove(0, 5),
+                                   passthrudevice.remove(0, 5), audio_bits,
                                    audio_channels, audio_samplerate, source,
                                    set_initial_vol, audio_passthru);
 #else
@@ -70,7 +78,8 @@
     else if (audiodevice.startsWith("JACK:"))
     {
 #ifdef USE_JACK
-        return new AudioOutputJACK(audiodevice.remove(0, 5), audio_bits,
+        return new AudioOutputJACK(audiodevice.remove(0, 5),
+                                   passthrudevice.remove(0, 5), audio_bits,
                                    audio_channels, audio_samplerate, source,
                                    set_initial_vol, audio_passthru);
 #else
@@ -81,17 +90,17 @@
     }
 #if defined(USING_DIRECTX)
     else
-        return new AudioOutputDX(audiodevice, audio_bits,
+        return new AudioOutputDX(audiodevice, passthrudevice, audio_bits,
                                  audio_channels, audio_samplerate, source,
                                  set_initial_vol, audio_passthru);
 #elif defined(USING_OSS)
     else
-        return new AudioOutputOSS(audiodevice, audio_bits,
+        return new AudioOutputOSS(audiodevice, passthrudevice, audio_bits,
                                   audio_channels, audio_samplerate, source,
                                   set_initial_vol, audio_passthru);
 #elif defined(CONFIG_DARWIN)
     else
-        return new AudioOutputCA(audiodevice, audio_bits,
+        return new AudioOutputCA(audiodevice, passthrudevice, audio_bits,
                                  audio_channels, audio_samplerate, source,
                                  set_initial_vol, audio_passthru);
 #endif
Index: mythtv/libs/libmyth/audiooutputca.h
===================================================================
--- mythtv/libs/libmyth/audiooutputca.h	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputca.h	(working copy)
@@ -17,7 +17,8 @@
 class AudioOutputCA : public AudioOutputBase
 {
 public:
-    AudioOutputCA(QString audiodevice, int laudio_bits, 
+    AudioOutputCA(QString audiodevice, QString passthrudevice,
+                  int laudio_bits,
                   int laudio_channels, int laudio_samplerate,
                   AudioOutputSource source,
                   bool set_initial_vol, bool laudio_passthru);
Index: mythtv/libs/libmyth/audiooutputoss.cpp
===================================================================
--- mythtv/libs/libmyth/audiooutputoss.cpp	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputoss.cpp	(working copy)
@@ -25,11 +25,12 @@
 #include "audiooutputoss.h"
 #include "util.h"
 
-AudioOutputOSS::AudioOutputOSS(QString audiodevice, int laudio_bits, 
+AudioOutputOSS::AudioOutputOSS(QString audiodevice, QString passthrudevice,
+                               int laudio_bits,
                                int laudio_channels, int laudio_samplerate,
                                AudioOutputSource source, bool set_initial_vol,
                                bool laudio_passthru)
-    : AudioOutputBase(audiodevice, laudio_bits,
+    : AudioOutputBase(audiodevice, passthrudevice, laudio_bits,
                       laudio_channels, laudio_samplerate, source,
                       set_initial_vol, laudio_passthru)
 {
Index: mythtv/libs/libmyth/audiooutputarts.cpp
===================================================================
--- mythtv/libs/libmyth/audiooutputarts.cpp	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputarts.cpp	(working copy)
@@ -7,11 +7,12 @@
 #include "mythcontext.h"
 #include "audiooutputarts.h"
 
-AudioOutputARTS::AudioOutputARTS(QString audiodevice, int audio_bits, 
+AudioOutputARTS::AudioOutputARTS(QString audiodevice, QString passthrudevice,
+                                 int audio_bits,
                                  int audio_channels, int audio_samplerate,
                                  AudioOutputSource source,
                                  bool set_initial_vol, bool audio_passthru)
-    : AudioOutputBase(audiodevice, audio_bits, audio_channels,
+    : AudioOutputBase(audiodevice, passthrudevice, audio_bits, audio_channels,
                       audio_samplerate, source, set_initial_vol,
                       audio_passthru)
 {
Index: mythtv/libs/libmyth/audiooutputdx.cpp
===================================================================
--- mythtv/libs/libmyth/audiooutputdx.cpp	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputdx.cpp	(working copy)
@@ -96,10 +96,10 @@
 
 
 AudioOutputDX::AudioOutputDX(
-    QString laudiodevice, int laudio_bits,
+    QString laudiodevice,  QString lpassthrudevice, int laudio_bits,
     int laudio_channels, int laudio_samplerate,
     AudioOutputSource lsource, bool lset_initial_vol, bool laudio_passthru)
-    : AudioOutputBase(laudiodevice, laudio_bits,
+  : AudioOutputBase(laudiodevice, lpassthrudevice, laudio_bits,
                       laudio_channels, laudio_samplerate,
                       lsource, lset_initial_vol, laudio_passthru),
       dsound_dll(NULL),
Index: mythtv/libs/libmyth/audiooutputnull.h
===================================================================
--- mythtv/libs/libmyth/audiooutputnull.h	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputnull.h	(working copy)
@@ -24,9 +24,10 @@
 class AudioOutputNULL : public AudioOutputBase
 {
 public:
-    AudioOutputNULL(QString audiodevice, int laudio_bits, 
-                   int laudio_channels, int laudio_samplerate,
-                   AudioOutputSource source,
+    AudioOutputNULL(QString audiodevice, QString passthrudevice,
+                    int laudio_bits,
+                    int laudio_channels, int laudio_samplerate,
+                    AudioOutputSource source,
                     bool set_initial_vol, bool laudio_passthru);
     virtual ~AudioOutputNULL();
 
Index: mythtv/libs/libmyth/audiooutput.h
===================================================================
--- mythtv/libs/libmyth/audiooutput.h	(revision 10180)
+++ mythtv/libs/libmyth/audiooutput.h	(working copy)
@@ -18,7 +18,8 @@
 {
  public:
     // opens one of the concrete subclasses
-    static AudioOutput *OpenAudio(QString audiodevice, int audio_bits, 
+    static AudioOutput *OpenAudio(QString audiodevice, QString passthrudevice,
+                                  int audio_bits,
                                   int audio_channels, int audio_samplerate,
                                   AudioOutputSource source,
                                   bool set_initial_vol, bool audio_passthru);
Index: mythtv/libs/libmyth/audiooutputnull.cpp
===================================================================
--- mythtv/libs/libmyth/audiooutputnull.cpp	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputnull.cpp	(working copy)
@@ -16,13 +16,14 @@
 #include "mythcontext.h"
 #include "audiooutputnull.h"
 
-AudioOutputNULL::AudioOutputNULL(QString audiodevice, int laudio_bits, 
+AudioOutputNULL::AudioOutputNULL(QString audiodevice, QString passthrudevice,
+                                 int laudio_bits,
                                  int laudio_channels, int laudio_samplerate,
                                  AudioOutputSource source, bool set_initial_vol,
                                  bool laudio_passthru)
-               : AudioOutputBase(audiodevice, laudio_bits, laudio_channels,
-                                 laudio_samplerate, source, set_initial_vol,
-                                 laudio_passthru)
+               : AudioOutputBase(audiodevice, passthrudevice, laudio_bits,
+                                 laudio_channels, laudio_samplerate, source,
+                                 set_initial_vol, laudio_passthru)
 {
     locked_audio_channels = laudio_channels;
     locked_audio_bits = laudio_bits;
@@ -38,6 +39,8 @@
 
 bool AudioOutputNULL::OpenDevice()
 {
+    VERBOSE(VB_GENERAL, "Opening NULL audio device.");
+    
     fragment_size = NULLAUDIO_OUTPUT_BUFFER_SIZE / 2;
     soundcard_buffer_size = NULLAUDIO_OUTPUT_BUFFER_SIZE;
     
Index: mythtv/libs/libmyth/audiooutputarts.h
===================================================================
--- mythtv/libs/libmyth/audiooutputarts.h	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputarts.h	(working copy)
@@ -14,7 +14,7 @@
 class AudioOutputARTS : public AudioOutputBase
 {
   public:
-     AudioOutputARTS(QString audiodevice, int audio_bits, 
+     AudioOutputARTS(QString audiodevice, QString passthrudevice, int audio_bits, 
                      int audio_channels, int audio_samplerate,
                      AudioOutputSource source,
                      bool set_initial_vol, bool laudio_passthru);
Index: mythtv/libs/libmyth/audiooutputdx.h
===================================================================
--- mythtv/libs/libmyth/audiooutputdx.h	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputdx.h	(working copy)
@@ -17,7 +17,8 @@
 class AudioOutputDX : public AudioOutputBase
 {
 public:
-    AudioOutputDX(QString audiodevice, int audio_bits, 
+    AudioOutputDX(QString audiodevice, QString passthrudevice,
+                  int audio_bits,
                   int audio_channels, int audio_samplerate,
                   AudioOutputSource source,
                   bool set_initial_vol, bool laudio_passthru);
Index: mythtv/libs/libmyth/audiooutputalsa.h
===================================================================
--- mythtv/libs/libmyth/audiooutputalsa.h	(revision 10180)
+++ mythtv/libs/libmyth/audiooutputalsa.h	(working copy)
@@ -16,7 +16,8 @@
 class AudioOutputALSA : public AudioOutputBase
 {
   public:
-    AudioOutputALSA(QString audiodevice, int laudio_bits, 
+    AudioOutputALSA(QString audiodevice, QString passthrudevice,
+                    int laudio_bits,
                     int laudio_channels, int laudio_samplerate,
                     AudioOutputSource source,
                     bool set_initial_vol, bool laudio_passthru);
Index: mythtv/programs/mythfrontend/globalsettings.cpp
===================================================================
--- mythtv/programs/mythfrontend/globalsettings.cpp	(revision 10180)
+++ mythtv/programs/mythfrontend/globalsettings.cpp	(working copy)
@@ -43,6 +43,21 @@
     return gc;
 }
 
+static HostComboBox *PassThroughOutputDevice()
+{
+    HostComboBox *gc = new HostComboBox("PassThruOutputDevice", true);
+
+    gc->setLabel(QObject::tr("Passthrough output device"));
+    gc->addSelection(QObject::tr("Default"), "Default");
+    gc->addSelection("ALSA:iec958:{ AES0 0x02 }", "ALSA:iec958:{ AES0 0x02 }");
+
+    gc->setHelpText(QObject::tr("Audio output device to use for AC3 and "
+                    "DTS passthrough. Default is the same as Audio output "
+                    "device. This value is currently only used with ALSA "
+                    "sound output."));
+    return gc;
+}
+
 static HostCheckBox *MythControlsVolume()
 {
     HostCheckBox *gc = new HostCheckBox("MythControlsVolume");
@@ -2275,6 +2290,7 @@
          setUseLabel(false);
 
          addChild(AudioOutputDevice());
+         addChild(PassThroughOutputDevice());
          addChild(AC3PassThrough());
 #ifdef CONFIG_DTS
          addChild(DTSPassThrough());
