avcodec/put_bits: Add rebase_put_bits()
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 29 Sep 2014 03:42:24 +0000 (05:42 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 29 Sep 2014 13:22:37 +0000 (15:22 +0200)
Reviewed-by: Benoit Fouet <benoit.fouet@free.fr>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/put_bits.h

index 8081fb9..8858caa 100644 (file)
@@ -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.
  */