--- mplayer.c.orig 2004-07-14 10:25:47.000000000 +0100 +++ mplayer.c 2004-08-20 17:16:12.848643481 +0100 @@ -2180,12 +2183,11 @@ time_frame=delay-sh_audio->delay; // delay = amount of audio buffered in soundcard/driver - if(delay>0.25) delay=0.25; else - if(delay<0.10) delay=0.10; - if(time_frame>delay*0.6){ + if(delay>0.25) delay=0.25; + if(time_frame>delay*0.25){ // sleep time too big - may cause audio drops (buffer underrun) frame_time_remaining=1; - time_frame=delay*0.5; + time_frame=delay*0.25; } } else { @@ -2241,7 +2243,11 @@ } -//if(!frame_time_remaining){ // should we display the frame now? +// If frame_time_remaining is non_zero then we are worried about audio underflow +// and haven't paused long enough to display the frame yet. +// Go back and supply more audio +if (frame_time_remaining) continue; + //====================== FLIP PAGE (VIDEO BLT): ========================= --- ../../../mplayer-1.0_pre5-r2.orig/work/MPlayer-1.0pre5/libao2/ao_alsa.c 2004-07-14 16:46:33.000000000 +0100 +++ libao2/ao_alsa.c 2004-08-05 07:28:18.000000000 +0100 @@ -470,7 +467,7 @@ } //sets buff/chunksize if its set manually - if (ao_data.buffersize) { + if (ao_data.buffersize > 0) { switch (ao_data.buffersize) { case 1: