Index: libs/libmythtv/NuppelVideoPlayer.h
===================================================================
--- libs/libmythtv/NuppelVideoPlayer.h	(revision 8891)
+++ libs/libmythtv/NuppelVideoPlayer.h	(working copy)
@@ -569,6 +573,7 @@
     bool       m_playing_slower;
     bool       decode_extra_audio;
     float      m_stored_audio_stretchfactor;
+    bool       audio_paused;
 
     // Audio warping stuff
     bool       usevideotimebase;
Index: libs/libmythtv/NuppelVideoPlayer.cpp
===================================================================
--- libs/libmythtv/NuppelVideoPlayer.cpp	(revision 8891)
+++ libs/libmythtv/NuppelVideoPlayer.cpp	(working copy)
@@ -159,6 +160,7 @@
       avsync_oldavg(0),             refreshrate(0),
       lastsync(false),              m_playing_slower(false),
       m_stored_audio_stretchfactor(1.0),
+      audio_paused(false),
       // Audio warping stuff
       usevideotimebase(false), 
       warpfactor(1.0f),             warpfactor_avg(1.0f),
@@ -282,7 +284,10 @@
     //cout << "stopping other threads" << endl;
     PauseVideo(waitvideo);
     if (audioOutput)
+    {
+        audio_paused = true;
         audioOutput->Pause(true);
+    }
     if (ringBuffer)
         ringBuffer->Pause();
 
@@ -304,7 +309,7 @@
 
     UnpauseVideo();
     if (audioOutput && unpauseaudio)
-        audioOutput->Pause(false);
+        audio_paused = false;
     if (ringBuffer)
         ringBuffer->Unpause();
 
@@ -352,7 +358,11 @@
     {
         prebuffering = prebuffer;
         if (audioOutput && !paused)
-            audioOutput->Pause(prebuffering);
+        {
+            if (prebuffering)
+                audioOutput->Pause(prebuffering);
+            audio_paused = prebuffering;
+        }
     }
 
     if (!prebuffering)
@@ -1929,6 +1960,9 @@
     videoOutput->ProcessFrame(frame, osd, videoFilters, pipplayer);
     videofiltersLock.unlock();
 
+    if (audioOutput && !audio_paused && audioOutput->GetPause())
+        audioOutput->Pause(false);
+
     AVSync();
 
     videoOutput->DoneDisplayingFrame();
@@ -2361,7 +2397,11 @@
     }
 
     if (audioOutput)
+    {
+        audio_paused = true;
+        audioOutput->Pause(true);   // always start audio off as paused
         audioOutput->SetStretchFactor(audio_stretchfactor);
+    }
     next_play_speed = audio_stretchfactor;
 
     if (!InitVideo())
