| Index: source/libvpx/vp9/decoder/vp9_dboolhuff.c
|
| ===================================================================
|
| --- source/libvpx/vp9/decoder/vp9_dboolhuff.c (revision 240950)
|
| +++ source/libvpx/vp9/decoder/vp9_dboolhuff.c (working copy)
|
| @@ -18,32 +18,28 @@
|
| // Even relatively modest values like 100 would work fine.
|
| #define LOTS_OF_BITS 0x40000000
|
|
|
| -
|
| int vp9_reader_init(vp9_reader *r, const uint8_t *buffer, size_t size) {
|
| - int marker_bit;
|
| -
|
| - r->buffer_end = buffer + size;
|
| - r->buffer = buffer;
|
| - r->value = 0;
|
| - r->count = -8;
|
| - r->range = 255;
|
| -
|
| - if (size && !buffer)
|
| + if (size && !buffer) {
|
| return 1;
|
| -
|
| - vp9_reader_fill(r);
|
| - marker_bit = vp9_read_bit(r);
|
| - return marker_bit != 0;
|
| + } else {
|
| + r->buffer_end = buffer + size;
|
| + r->buffer = buffer;
|
| + r->value = 0;
|
| + r->count = -8;
|
| + r->range = 255;
|
| + vp9_reader_fill(r);
|
| + return vp9_read_bit(r) != 0; // marker bit
|
| + }
|
| }
|
|
|
| void vp9_reader_fill(vp9_reader *r) {
|
| const uint8_t *const buffer_end = r->buffer_end;
|
| const uint8_t *buffer = r->buffer;
|
| - VP9_BD_VALUE value = r->value;
|
| + BD_VALUE value = r->value;
|
| int count = r->count;
|
| - int shift = BD_VALUE_SIZE - 8 - (count + 8);
|
| + int shift = BD_VALUE_SIZE - CHAR_BIT - (count + CHAR_BIT);
|
| int loop_end = 0;
|
| - const int bits_left = (int)((buffer_end - buffer)*CHAR_BIT);
|
| + const int bits_left = (int)((buffer_end - buffer) * CHAR_BIT);
|
| const int x = shift + CHAR_BIT - bits_left;
|
|
|
| if (x >= 0) {
|
| @@ -54,7 +50,7 @@
|
| if (x < 0 || bits_left) {
|
| while (shift >= loop_end) {
|
| count += CHAR_BIT;
|
| - value |= (VP9_BD_VALUE)*buffer++ << shift;
|
| + value |= (BD_VALUE)*buffer++ << shift;
|
| shift -= CHAR_BIT;
|
| }
|
| }
|
|
|