diff options
author | Max Kellermann <max@duempel.org> | 2008-11-12 08:32:21 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-11-12 08:32:21 +0100 |
commit | b67a8e4d6e532c465dca6b68de6cc8e378069c03 (patch) | |
tree | 9d6143593d26f996eb719e59cb34819725994bfc | |
parent | 432da18e44aaf5f6c62d50a033cb6fe0a9bea148 (diff) | |
download | mpd-b67a8e4d6e532c465dca6b68de6cc8e378069c03.tar.gz mpd-b67a8e4d6e532c465dca6b68de6cc8e378069c03.tar.xz mpd-b67a8e4d6e532c465dca6b68de6cc8e378069c03.zip |
aac: shift the input buffer before the full check
When the buffer was full, but everything was already consumed,
fillAacBuffer() would not attempt to flush and refill it.
-rw-r--r-- | src/decoder/aac_plugin.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/decoder/aac_plugin.c b/src/decoder/aac_plugin.c index aed121308..1817f9cf4 100644 --- a/src/decoder/aac_plugin.c +++ b/src/decoder/aac_plugin.c @@ -53,13 +53,14 @@ static void fillAacBuffer(AacBuffer * b) { size_t rest, bread; - if (b->bytesIntoBuffer >= sizeof(b->buffer)) + if (b->bytesConsumed > 0) + aac_buffer_shift(b, b->bytesConsumed); + + rest = sizeof(b->buffer) - b->bytesIntoBuffer; + if (rest == 0) /* buffer already full */ return; - aac_buffer_shift(b, b->bytesConsumed); - - rest = sizeof(b->buffer) - b->bytesIntoBuffer; bread = decoder_read(b->decoder, b->inStream, (void *)(b->buffer + b->bytesIntoBuffer), rest); |