DecoderBuffer: add method _need()

Move code from the FAAD decoder plugin.
This commit is contained in:
Max Kellermann
2014-07-12 01:33:12 +02:00
parent eabec967ec
commit b2b95cad20
3 changed files with 42 additions and 31 deletions

View File

@@ -117,21 +117,40 @@ decoder_buffer_fill(DecoderBuffer *buffer)
return true;
}
static const void *
decoder_buffer_head(const DecoderBuffer *buffer)
{
return buffer->data + buffer->consumed;
}
size_t
decoder_buffer_available(const DecoderBuffer *buffer)
{
return buffer->length - buffer->consumed;;
return buffer->length - buffer->consumed;
}
ConstBuffer<void>
decoder_buffer_read(const DecoderBuffer *buffer)
{
return {
buffer->data + buffer->consumed,
buffer->length - buffer->consumed
decoder_buffer_head(buffer),
decoder_buffer_available(buffer),
};
}
ConstBuffer<void>
decoder_buffer_need(DecoderBuffer *buffer, size_t min_size)
{
while (true) {
const auto available = decoder_buffer_available(buffer);
if (available >= min_size)
return { decoder_buffer_head(buffer), available };
if (!decoder_buffer_fill(buffer))
return nullptr;
}
}
void
decoder_buffer_consume(DecoderBuffer *buffer, size_t nbytes)
{