From cf32181b70116309b3a33c8f6bf017a0d0a33089 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Mon, 29 Sep 2014 05:42:24 +0200 Subject: avcodec/put_bits: Add rebase_put_bits() Reviewed-by: Benoit Fouet Signed-off-by: Michael Niedermayer --- libavcodec/put_bits.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'libavcodec/put_bits.h') diff --git a/libavcodec/put_bits.h b/libavcodec/put_bits.h index 8081fb9ea5..8858caaacc 100644 --- a/libavcodec/put_bits.h +++ b/libavcodec/put_bits.h @@ -62,6 +62,24 @@ static inline void init_put_bits(PutBitContext *s, uint8_t *buffer, s->bit_buf = 0; } +/** + * Rebase the bit writer onto a reallocated buffer. + * + * @param buffer the buffer where to put bits + * @param buffer_size the size in bytes of buffer, + * must be larger than the previous size + */ +static inline void rebase_put_bits(PutBitContext *s, uint8_t *buffer, + int buffer_size) +{ + av_assert0(8*buffer_size > s->size_in_bits); + + s->buf_end = buffer + buffer_size; + s->buf_ptr = buffer + (s->buf_ptr - s->buf); + s->buf = buffer; + s->size_in_bits = 8 * buffer_size; +} + /** * @return the total number of bits written to the bitstream. */ -- cgit v1.2.3