pass the buffer size to init_get_bits() in bytes.
authorAndre Noll <maan@systemlinux.org>
Sun, 18 Oct 2009 16:58:33 +0000 (18:58 +0200)
committerAndre Noll <maan@systemlinux.org>
Wed, 18 Nov 2009 18:34:22 +0000 (19:34 +0100)
bitstream.h
wmadec_filter.c

index f54ae62..4f94f69 100644 (file)
@@ -128,18 +128,13 @@ static inline unsigned int get_bits1(struct getbit_context *s)
  * bytes larger then the actual read bits * because some optimized bitstream
  * readers read 32 or 64 bit at once and could read over the end.
  *
  * bytes larger then the actual read bits * because some optimized bitstream
  * readers read 32 or 64 bit at once and could read over the end.
  *
- * \param bit_size The size of the buffer in bits.
+ * \param bit_size The size of the buffer in bytes.
  */
 static inline void init_get_bits(struct getbit_context *s,
  */
 static inline void init_get_bits(struct getbit_context *s,
-               const uint8_t *buffer, int bit_size)
+               const uint8_t *buffer, int size)
 {
 {
-       int buffer_size = (bit_size + 7) >> 3;
-       if (buffer_size < 0 || bit_size < 0) {
-               buffer_size = bit_size = 0;
-               buffer = NULL;
-       }
        s->buffer = buffer;
        s->buffer = buffer;
-       s->buffer_end = buffer + buffer_size;
+       s->buffer_end = buffer + size;
        s->index = 0;
 }
 
        s->index = 0;
 }
 
index 401dfd2..c181fdf 100644 (file)
@@ -1157,7 +1157,7 @@ static int wma_decode_superframe(struct private_wmadec_data *pwd, void *data,
                return 0;
        buf_size = pwd->ahi.block_align;
        samples = data;
                return 0;
        buf_size = pwd->ahi.block_align;
        samples = data;
-       init_get_bits(&pwd->gb, buf, buf_size * 8);
+       init_get_bits(&pwd->gb, buf, buf_size);
        if (pwd->use_bit_reservoir) {
                /* read super frame header */
                skip_bits(&pwd->gb, 4); /* super frame index */
        if (pwd->use_bit_reservoir) {
                /* read super frame header */
                skip_bits(&pwd->gb, 4); /* super frame index */
@@ -1187,7 +1187,7 @@ static int wma_decode_superframe(struct private_wmadec_data *pwd, void *data,
 
                        /* XXX: bit_offset bits into last frame */
                        init_get_bits(&pwd->gb, pwd->last_superframe,
 
                        /* XXX: bit_offset bits into last frame */
                        init_get_bits(&pwd->gb, pwd->last_superframe,
-                               MAX_CODED_SUPERFRAME_SIZE * 8);
+                               MAX_CODED_SUPERFRAME_SIZE);
                        /* skip unused bits */
                        if (pwd->last_bitoffset > 0)
                                skip_bits(&pwd->gb, pwd->last_bitoffset);
                        /* skip unused bits */
                        if (pwd->last_bitoffset > 0)
                                skip_bits(&pwd->gb, pwd->last_bitoffset);
@@ -1205,7 +1205,7 @@ static int wma_decode_superframe(struct private_wmadec_data *pwd, void *data,
                /* read each frame starting from bit_offset */
                pos = bit_offset + 4 + 4 + pwd->byte_offset_bits + 3;
                init_get_bits(&pwd->gb, buf + (pos >> 3),
                /* read each frame starting from bit_offset */
                pos = bit_offset + 4 + 4 + pwd->byte_offset_bits + 3;
                init_get_bits(&pwd->gb, buf + (pos >> 3),
-                       (MAX_CODED_SUPERFRAME_SIZE - (pos >> 3)) * 8);
+                       (MAX_CODED_SUPERFRAME_SIZE - (pos >> 3)));
                len = pos & 7;
                if (len > 0)
                        skip_bits(&pwd->gb, len);
                len = pos & 7;
                if (len > 0)
                        skip_bits(&pwd->gb, len);