Index: mythmusic/mythmusic/aacdecoder.cpp
===================================================================
--- mythmusic/mythmusic/aacdecoder.cpp	(revision 16487)
+++ mythmusic/mythmusic/aacdecoder.cpp	(working copy)
@@ -13,6 +13,7 @@
 #ifdef __STDC_LIMIT_MACROS
 #define FAAD_MODIFIED
 #endif
+#define FAAD_MODIFIED
 
 #include <iostream>
 #include <string>
@@ -123,7 +124,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: mythmusic/mythmusic/vorbisdecoder.cpp
===================================================================
--- mythmusic/mythmusic/vorbisdecoder.cpp	(revision 16487)
+++ mythmusic/mythmusic/vorbisdecoder.cpp	(working copy)
@@ -115,7 +115,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);
Index: mythmusic/mythmusic/avfdecoder.cpp
===================================================================
--- mythmusic/mythmusic/avfdecoder.cpp	(revision 16487)
+++ mythmusic/mythmusic/avfdecoder.cpp	(working copy)
@@ -92,7 +92,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);
Index: mythmusic/mythmusic/flacdecoder.cpp
===================================================================
--- mythmusic/mythmusic/flacdecoder.cpp	(revision 16487)
+++ mythmusic/mythmusic/flacdecoder.cpp	(working copy)
@@ -218,7 +218,9 @@
             ulong sz = output_bytes < bks ? output_bytes : bks;
 
             int samples = (sz*8)/(chan*bitspersample);
-            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: mythmusic/mythmusic/cddecoder.cpp
===================================================================
--- mythmusic/mythmusic/cddecoder.cpp	(revision 16487)
+++ 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);
Index: mythmusic/mythmusic/maddecoder.cpp
===================================================================
--- mythmusic/mythmusic/maddecoder.cpp	(revision 16487)
+++ mythmusic/mythmusic/maddecoder.cpp	(working copy)
@@ -299,14 +299,16 @@
             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);
                 output_at = output_bytes;
             } else {
                 unlock();
-                usleep(500);
+                usleep(5000);
                 lock();
                 done = user_stop;
             }
