From c9f0d22f0ac19dcee7d1991020c75c8a3691b1b7 Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Fri, 7 May 2004 19:11:43 +0000 Subject: rewrite outputBuffer'ing abstraction a bit to be more effecient and easier to interface. Also, use outputBuffer abstraction for ogg git-svn-id: https://svn.musicpd.org/mpd/trunk@941 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/mp3_decode.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) (limited to 'src/mp3_decode.c') diff --git a/src/mp3_decode.c b/src/mp3_decode.c index 973f96541..d3a6a592e 100644 --- a/src/mp3_decode.c +++ b/src/mp3_decode.c @@ -468,21 +468,15 @@ int mp3Read(mp3DecodeData * data, OutputBuffer * cb, DecoderControl * dc) { if(data->outputPtr==data->outputBufferEnd) { ret = sendDataToOutputBuffer(cb,dc, - 0,data->outputBuffer, + data->outputBuffer, MP3_DATA_OUTPUT_BUFFER_SIZE, data->elapsedTime, data->bitRate/1000); if(ret == OUTPUT_BUFFER_DC_STOP) { return DECODE_BREAK; } - if(ret >= 0) { - memmove(data->outputBuffer, - data->outputBuffer+ret, - MP3_DATA_OUTPUT_BUFFER_SIZE- - ret); - data->outputPtr-=ret; - } - else data->outputPtr = data->outputBuffer; + + data->outputPtr = data->outputBuffer; if(ret == OUTPUT_BUFFER_DC_SEEK) break; } @@ -545,9 +539,12 @@ int mp3_decode(OutputBuffer * cb, AudioFormat * af, DecoderControl * dc) { while(mp3Read(&data,cb,dc)!=DECODE_BREAK); /* send last little bit if not dc->stop */ if(data.outputPtr!=data.outputBuffer && data.flush) { - sendDataToOutputBuffer(cb,dc,1,data.outputBuffer, + if(sendDataToOutputBuffer(cb,dc,data.outputBuffer, data.outputPtr-data.outputBuffer, - data.elapsedTime,data.bitRate/1000); + data.elapsedTime,data.bitRate/1000) == 0) + { + flushOutputBuffer(cb); + } } mp3DecodeDataFinalize(&data); -- cgit v1.2.3