Index: libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- libs/libmythtv/NuppelVideoPlayer.cpp	(revision 8235)
+++ libs/libmythtv/NuppelVideoPlayer.cpp	(working copy)
@@ -2784,6 +2784,15 @@
 #ifdef USING_DIRECTX
         audioOutput->Reset();
 #endif
+        if (decoder) 
+        {
+            bool disable = audio_stretchfactor < 0.99 || 
+                audio_stretchfactor > 1.01;
+            decoder->DisableAC3PassThrough(disable);
+            VERBOSE(VB_IMPORTANT, QString("stretchfactor %1 disable %2")
+                    .arg(audio_stretchfactor)
+                    .arg(disable));
+        }
     }
 
     //cout << "setting unpaused" << endl << endl;
Index: libs/libmythtv/avformatdecoder.cpp
===================================================================
--- libs/libmythtv/avformatdecoder.cpp	(revision 8235)
+++ libs/libmythtv/avformatdecoder.cpp	(working copy)
@@ -177,7 +177,7 @@
       ccd(new CCDecoder(this)),
       // Audio
       audioSamples(new short int[AVCODEC_MAX_AUDIO_FRAME_SIZE]),
-      allow_ac3_passthru(false),
+      disable_ac3_passthru(false), allow_ac3_passthru(false), 
       // Audio selection
       wantedAudioStream(),    selectedAudioStream(),
       // Subtitle selection
@@ -449,6 +449,33 @@
 #endif
 }
 
+void AvFormatDecoder::DisableAC3PassThrough(bool disable)
+{
+    AVStream *curstream = NULL;
+    AVCodecContext *codec_ctx = NULL;
+    curstream = ic->streams[selectedAudioStream.av_stream_index];
+    if (!curstream)
+        return;
+    codec_ctx = curstream->codec;        
+    if (!codec_ctx)
+        return;
+
+    bool do_ac3_passthru = (allow_ac3_passthru && !transcoding &&
+                            !disable_ac3_passthru &&
+                            (codec_ctx->codec_id == CODEC_ID_AC3));
+
+    disable_ac3_passthru = disable;
+
+    if (disable_ac3_passthru == do_ac3_passthru)
+    {
+        // Force ac3_passthru state to be reanalyzed
+        VERBOSE(VB_AUDIO, QString("DisableAC3PassThrough: %1")
+                .arg(disable_ac3_passthru));
+
+        setCurrentAudioTrack(currentAudioTrack);
+    }
+}
+
 bool AvFormatDecoder::CanHandle(char testbuf[2048], const QString &filename)
 {
     av_register_all();
@@ -2467,6 +2494,7 @@
         assert(curstream->codec);
         codec_ctx = curstream->codec;        
         bool do_ac3_passthru = (allow_ac3_passthru && !transcoding &&
+                                !disable_ac3_passthru &&
                                 (codec_ctx->codec_id == CODEC_ID_AC3));
         info = AudioInfo(codec_ctx->codec_id,
                          codec_ctx->sample_rate, codec_ctx->channels,
Index: libs/libmythtv/avformatdecoder.h
===================================================================
--- libs/libmythtv/avformatdecoder.h	(revision 8235)
+++ libs/libmythtv/avformatdecoder.h	(working copy)
@@ -83,6 +83,7 @@
     void CloseContext();
     void Reset(void);
     void Reset(bool reset_video_data = true, bool seek_reset = true);
+    void DisableAC3PassThrough(bool disable);
 
     /// Perform an av_probe_input_format on the passed data to see if we
     /// can decode it with this class.
@@ -232,6 +233,7 @@
 
     // Audio
     short int        *audioSamples;
+    bool              disable_ac3_passthru;
     bool              allow_ac3_passthru;
 
     AudioInfo         audioIn;
Index: libs/libmythtv/decoderbase.cpp
===================================================================
--- libs/libmythtv/decoderbase.cpp	(revision 8235)
+++ libs/libmythtv/decoderbase.cpp	(working copy)
@@ -62,6 +62,11 @@
     ateof = false;
 }
 
+void DecoderBase::DisableAC3PassThrough(bool disable)
+{
+    (void)disable;
+}
+
 void DecoderBase::SeekReset(long long newKey, int skipFrames, bool needFlush)
 {
     (void)newKey, (void)skipFrames, (void)needFlush;
Index: libs/libmythtv/decoderbase.h
===================================================================
--- libs/libmythtv/decoderbase.h	(revision 8235)
+++ libs/libmythtv/decoderbase.h	(working copy)
@@ -18,6 +18,7 @@
     virtual ~DecoderBase();
 
     virtual void Reset(void);
+    virtual void DisableAC3PassThrough(bool disable);
 
     virtual int OpenFile(RingBuffer *rbuffer, bool novideo,
                          char testbuf[2048]) = 0;
