| Index: source/libvpx/vp9/decoder/vp9_read_bit_buffer.c
|
| ===================================================================
|
| --- source/libvpx/vp9/decoder/vp9_read_bit_buffer.c (revision 293588)
|
| +++ source/libvpx/vp9/decoder/vp9_read_bit_buffer.c (working copy)
|
| @@ -10,20 +10,20 @@
|
| #include "vp9/decoder/vp9_read_bit_buffer.h"
|
|
|
| size_t vp9_rb_bytes_read(struct vp9_read_bit_buffer *rb) {
|
| - return (rb->bit_offset + CHAR_BIT - 1) / CHAR_BIT;
|
| + return (rb->bit_offset + 7) >> 3;
|
| }
|
|
|
| int vp9_rb_read_bit(struct vp9_read_bit_buffer *rb) {
|
| const size_t off = rb->bit_offset;
|
| - const size_t p = off / CHAR_BIT;
|
| - const int q = CHAR_BIT - 1 - (int)off % CHAR_BIT;
|
| - if (rb->bit_buffer + p >= rb->bit_buffer_end) {
|
| + const size_t p = off >> 3;
|
| + const int q = 7 - (int)(off & 0x7);
|
| + if (rb->bit_buffer + p < rb->bit_buffer_end) {
|
| + const int bit = (rb->bit_buffer[p] >> q) & 1;
|
| + rb->bit_offset = off + 1;
|
| + return bit;
|
| + } else {
|
| rb->error_handler(rb->error_handler_data);
|
| return 0;
|
| - } else {
|
| - const int bit = (rb->bit_buffer[p] & (1 << q)) >> q;
|
| - rb->bit_offset = off + 1;
|
| - return bit;
|
| }
|
| }
|
|
|
|
|