From efb290073bfecfb051a9839ec30fb5c57524640d Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 30 Sep 2009 15:22:36 +0200 Subject: decoder_buffer: added function decoder_buffer_skip() --- src/decoder_buffer.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/decoder_buffer.c') diff --git a/src/decoder_buffer.c b/src/decoder_buffer.c index 76e9126e..b6fa9000 100644 --- a/src/decoder_buffer.c +++ b/src/decoder_buffer.c @@ -138,3 +138,29 @@ decoder_buffer_consume(struct decoder_buffer *buffer, size_t nbytes) assert(buffer->consumed <= buffer->length); } + +bool +decoder_buffer_skip(struct decoder_buffer *buffer, size_t nbytes) +{ + size_t length; + const void *data; + bool success; + + /* this could probably be optimized by seeking */ + + while (true) { + data = decoder_buffer_read(buffer, &length); + if (data != NULL) { + if (length > nbytes) + length = nbytes; + decoder_buffer_consume(buffer, length); + nbytes -= length; + if (nbytes == 0) + return true; + } + + success = decoder_buffer_fill(buffer); + if (!success) + return false; + } +} -- cgit v1.2.3