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.
---

 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 55c211c..2705e9b 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 -


-------------------------------------------------------------------------
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