diff options
author | Max Kellermann <max@duempel.org> | 2008-08-26 08:27:11 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-08-26 08:27:11 +0200 |
commit | b7ad3e4121e38ff69ee188ae61289e07f0cb1d0f (patch) | |
tree | 1618c014330e74a94b41b6822e6cffff4378e64a /src/inputPlugins | |
parent | a3cc928c711f78366eba0a009115ffa0982102ff (diff) | |
download | mpd-b7ad3e4121e38ff69ee188ae61289e07f0cb1d0f.tar.gz mpd-b7ad3e4121e38ff69ee188ae61289e07f0cb1d0f.tar.xz mpd-b7ad3e4121e38ff69ee188ae61289e07f0cb1d0f.zip |
aac: moved code to aac_buffer_shift()
Shifting from the buffer queue is a common operation, and should be
provided as a separate function. Move code to aac_buffer_shift() and
add a bunch of assertions.
Diffstat (limited to 'src/inputPlugins')
-rw-r--r-- | src/inputPlugins/aac_plugin.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/inputPlugins/aac_plugin.c b/src/inputPlugins/aac_plugin.c index 55c211c70..2705e9b80 100644 --- a/src/inputPlugins/aac_plugin.c +++ b/src/inputPlugins/aac_plugin.c @@ -37,6 +37,19 @@ typedef struct { int atEof; } AacBuffer; +static void aac_buffer_shift(AacBuffer * b, size_t length) +{ + assert(length >= b->bytesConsumed); + assert(length <= b->bytesConsumed + b->bytesIntoBuffer); + + memmove(b->buffer, b->buffer + length, + b->bytesConsumed + b->bytesIntoBuffer - length); + + length -= b->bytesConsumed; + b->bytesConsumed = 0; + b->bytesIntoBuffer -= length; +} + static void fillAacBuffer(AacBuffer * b) { size_t bread; @@ -45,13 +58,7 @@ static void fillAacBuffer(AacBuffer * b) /* buffer already full */ return; - if (b->bytesConsumed > 0 && b->bytesIntoBuffer > 0) { - memmove((void *)b->buffer, (void *)(b->buffer + - b->bytesConsumed), - b->bytesIntoBuffer); - } - - b->bytesConsumed = 0; + aac_buffer_shift(b, b->bytesConsumed); if (!b->atEof) { size_t rest = FAAD_MIN_STREAMSIZE * AAC_MAX_CHANNELS - |