Index: mythplugins/mythmusic/mythmusic/aacdecoder.cpp
===================================================================
--- mythplugins/mythmusic/mythmusic/aacdecoder.cpp	(revision 20586)
+++ mythplugins/mythmusic/mythmusic/aacdecoder.cpp	(working copy)
@@ -136,7 +136,9 @@
             ulong sz = output_bytes < bks ? output_bytes : bks;
 
 	    int samples = (sz * 8) / (channels * 16);
-	    if (output()->AddSamples(output_buf, samples, -1))
+            bool ok = (output()->GetAudioBufferedTime() <= 500);
+            if (ok) ok = output()->AddSamples(output_buf, samples, -1);
+            if (ok)
 	      {
 		output_bytes -= sz;
 		memmove(output_buf, output_buf + sz, output_bytes);
Index: mythplugins/mythmusic/mythmusic/avfdecoder.cpp
===================================================================
--- mythplugins/mythmusic/mythmusic/avfdecoder.cpp	(revision 20586)
+++ mythplugins/mythmusic/mythmusic/avfdecoder.cpp	(working copy)
@@ -103,7 +103,8 @@
             ulong sz = output_bytes < bks ? output_bytes : bks;
 
             int samples = (sz*8)/(m_channels*16);
-            if (output()->AddSamples(output_buf, samples, -1))
+            if (ok) ok = output()->AddSamples(output_buf, samples, -1);
+            if (ok)
             {
                 output_bytes -= sz;
                 memmove(output_buf, output_buf + sz, output_bytes);
Index: mythplugins/mythmusic/mythmusic/cddecoder.cpp
===================================================================
--- mythplugins/mythmusic/mythmusic/cddecoder.cpp	(revision 20586)
+++ mythplugins/mythmusic/mythmusic/cddecoder.cpp	(working copy)
@@ -70,7 +70,9 @@
             ulong sz = output_bytes < bks ? output_bytes : bks;
 
             int samples = (sz*8)/(chan*16);
-            if (output()->AddSamples(output_buf, samples, -1))
+            bool ok = (output()->GetAudioBufferedTime() <= 500);
+            if (ok) ok = output()->AddSamples(output_buf, samples, -1);
+            if (ok)
             {
                 output_bytes -= sz;
                 memmove(output_buf, output_buf + sz, output_bytes);
