diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/inputPlugins/mp3_plugin.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/inputPlugins/mp3_plugin.c b/src/inputPlugins/mp3_plugin.c index 7838624ab..b20118da4 100644 --- a/src/inputPlugins/mp3_plugin.c +++ b/src/inputPlugins/mp3_plugin.c @@ -835,15 +835,17 @@ static int mp3Read(mp3DecodeData * data, OutputBuffer * cb, DecoderControl * dc, for (i = 0; i < (data->synth).pcm.length; i++) { mpd_sint16 *sample; + samplesLeft--; + if (!data->decodedFirstFrame && (i < data->dropSamplesAtStart)) { continue; } else if (data->dropSamplesAtEnd && - (data->currentFrame == (data->maxFrames - data->dropFramesAtEnd))) { - samplesLeft--; - /* stop decoding, since samples were dropped */ - if (samplesLeft < data->dropSamplesAtEnd) - return DECODE_BREAK; + (data->currentFrame == (data->maxFrames - data->dropFramesAtEnd)) && + (samplesLeft < data->dropSamplesAtEnd)) { + /* stop decoding, effectively dropping + * all remaining samples */ + return DECODE_BREAK; } sample = (mpd_sint16 *) data->outputPtr; |