The previous patch made mp3Read() flush the output buffer in every
iteration, which means we can eliminate the flush check after invoking
mp3Read().
---

 src/inputPlugins/mp3_plugin.c |   18 +-----------------
 1 files changed, 1 insertions(+), 17 deletions(-)

diff --git a/src/inputPlugins/mp3_plugin.c b/src/inputPlugins/mp3_plugin.c
index 27f26db..43be7dc 100644
--- a/src/inputPlugins/mp3_plugin.c
+++ b/src/inputPlugins/mp3_plugin.c
@@ -168,7 +168,6 @@ typedef struct _mp3DecodeData {
        int foundXing;
        int foundFirstFrame;
        int decodedFirstFrame;
-       int flush;
        unsigned long bitRate;
        InputStream *inStream;
        struct audio_dither dither;
@@ -193,7 +192,6 @@ static void initMp3DecodeData(mp3DecodeData * data, 
InputStream * inStream)
        data->foundXing = 0;
        data->foundFirstFrame = 0;
        data->decodedFirstFrame = 0;
-       data->flush = 1;
        data->inStream = inStream;
        data->layer = 0;
        memset(&(data->dither), 0, sizeof(struct audio_dither));
@@ -421,7 +419,6 @@ static int decodeNextFrameHeader(mp3DecodeData * data, 
MpdTag ** tag,
                                ERROR("unrecoverable frame level error "
                                      "(%s).\n",
                                      mad_stream_errorstr(&data->stream));
-                               data->flush = 0;
                                return DECODE_BREAK;
                        }
                }
@@ -474,7 +471,6 @@ static int decodeNextFrame(mp3DecodeData * data)
                                ERROR("unrecoverable frame level error "
                                      "(%s).\n",
                                      mad_stream_errorstr(&data->stream));
-                               data->flush = 0;
                                return DECODE_BREAK;
                        }
                }
@@ -955,10 +951,8 @@ static int mp3Read(mp3DecodeData * data, struct decoder 
*decoder,
                                           data->elapsedTime,
                                           data->bitRate / 1000,
                                           (replayGainInfo != NULL) ? 
*replayGainInfo : NULL);
-                       if (cmd == DECODE_COMMAND_STOP) {
-                               data->flush = 0;
+                       if (cmd == DECODE_COMMAND_STOP)
                                return DECODE_BREAK;
-                       }
 
                        data->outputPtr = data->outputBuffer;
                }
@@ -1080,16 +1074,6 @@ static int mp3_decode(struct decoder * decoder, 
InputStream * inStream)
        decoder_initialized(decoder, &audio_format, data.totalTime);
 
        while (mp3Read(&data, decoder, &replayGainInfo) != DECODE_BREAK) ;
-       /* send last little bit if not DECODE_COMMAND_STOP */
-       if (decoder_get_command(decoder) != DECODE_COMMAND_STOP &&
-           data.outputPtr != data.outputBuffer && data.flush) {
-               decoder_data(decoder, NULL,
-                            data.inStream->seekable,
-                            data.outputBuffer,
-                            data.outputPtr - data.outputBuffer,
-                            data.elapsedTime, data.bitRate / 1000,
-                            replayGainInfo);
-       }
 
        if (replayGainInfo)
                freeReplayGainInfo(replayGainInfo);


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Musicpd-dev-team mailing list
Musicpd-dev-team@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team

Reply via email to