# HG changeset patch # User Matti Hamalainen # Date 1103964542 0 # Node ID c27763d388d9f1f3ad8b55e0824a65a8291f5843 # Parent e040962f4f4c0a0acf01862d49dfda036333526e Fixed oversampling buffer overflow problems. diff -r e040962f4f4c -r c27763d388d9 src/xmms-sid.c --- a/src/xmms-sid.c Thu Dec 23 18:02:00 2004 +0000 +++ b/src/xmms-sid.c Sat Dec 25 08:49:02 2004 +0000 @@ -386,25 +386,22 @@ audioGot = myStatus.sidPlayer->plrFillBuffer(&myStatus, oversampleBuffer, (XS_AUDIOBUF_SIZE * myStatus.oversampleFactor)); + audioGot /= myStatus.oversampleFactor; + /* Execute rate-conversion with filtering */ - audioGot = xs_rateconv_filter( - audioBuffer, oversampleBuffer, - myStatus.audioFormat, - myStatus.oversampleFactor, - XS_AUDIOBUF_SIZE); + if (xs_rateconv_filter(audioBuffer, oversampleBuffer, + myStatus.audioFormat, myStatus.oversampleFactor, + audioGot) < 0) + { + XSERR("Oversampling rate-conversion pass failed.\n"); + XS_MUTEX_LOCK(xs_status); + xs_status.isError = TRUE; + XS_MUTEX_UNLOCK(xs_status); + goto xs_err_exit; + } } else audioGot = myStatus.sidPlayer->plrFillBuffer(&myStatus, audioBuffer, XS_AUDIOBUF_SIZE); - /* Check for errors */ - if (audioGot < 0) - { - XSERR("Audio rendering or rate-conversion failed.\n", - XS_MUTEX_LOCK(xs_status); - xs_status.isError = TRUE; - XS_MUTEX_UNLOCK(xs_status); - goto xs_err_exit; - } - /* I <3 visualice/haujobb */ xs_plugin_ip.add_vis_pcm( xs_plugin_ip.output->written_time(), @@ -414,7 +411,7 @@ /* Wait a little */ while (xs_status.isPlaying && (xs_status.currSong == myStatus.currSong) && - ((guint) xs_plugin_ip.output->buffer_free() < audioGot)) + (xs_plugin_ip.output->buffer_free() < audioGot)) xmms_usleep(500); /* Output audio */