diff -r eb855f5c9f38 linux/drivers/media/dvb/ttpci/av7110.c
--- linux/drivers/media/dvb/ttpci/av7110.c	Sun Dec 14 09:28:07 2008 -0200
+++ linux/drivers/media/dvb/ttpci/av7110.c	Sun Dec 14 15:18:44 2008 +0100
@@ -616,7 +616,12 @@ static void gpioirq(unsigned long cookie
 		len = 0;
 		if (av7110->debitype & 0x100) {
 			spin_lock(&av7110->aout.lock);
-			len = av7110_pes_play(av7110->debi_virt, &av7110->aout, 2048);
+			if (dvb_ringbuffer_avail(&av7110->aout) < A_THRESH_LO && !av7110->audio_fill)
+				av7110->audio_fill = true;
+			else if (dvb_ringbuffer_avail(&av7110->aout) > A_THRESH_HI && av7110->audio_fill)
+				av7110->audio_fill = false;
+			if (!av7110->audio_fill)
+				len = av7110_pes_play(av7110->debi_virt, &av7110->aout, 2048);
 			spin_unlock(&av7110->aout.lock);
 		}
 		if (len <= 0 && (av7110->debitype & 0x200)
diff -r eb855f5c9f38 linux/drivers/media/dvb/ttpci/av7110.h
--- linux/drivers/media/dvb/ttpci/av7110.h	Sun Dec 14 09:28:07 2008 -0200
+++ linux/drivers/media/dvb/ttpci/av7110.h	Sun Dec 14 15:18:44 2008 +0100
@@ -132,11 +132,16 @@ struct av7110 {
 
 	void		       *iobuf;	 /* memory for all buffers */
 	struct dvb_ringbuffer	avout;   /* buffer for video or A/V mux */
-#define AVOUTLEN (128*1024)
+//#define AVOUTLEN (128*1024)
+#define AVOUTLEN (1280*1024)
 	struct dvb_ringbuffer	aout;    /* buffer for audio */
 #define AOUTLEN (64*1024)
 	void		       *bmpbuf;
 #define BMPLEN (8*32768+1024)
+	bool                    audio_fill;
+#define A_THRESH_LO	2000
+#define A_THRESH_HI	20000
+
 
 	/* bitmap buffers and states */
 
