1ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang/* 2ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * Copyright (c) 2013 The WebM project authors. All Rights Reserved. 3ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 4ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * Use of this source code is governed by a BSD-style license 5ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * that can be found in the LICENSE file in the root of the source 6ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * tree. An additional intellectual property rights grant can be found 7ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * in the file PATENTS. All contributing project authors may 8ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * be found in the AUTHORS file in the root of the source tree. 9ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang */ 10ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 115ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#ifndef VP9_DECODER_VP9_READ_BIT_BUFFER_H_ 125ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#define VP9_DECODER_VP9_READ_BIT_BUFFER_H_ 13ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 14ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#include <limits.h> 15ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 16ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang#include "vpx/vpx_integer.h" 17ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 18b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifdef __cplusplus 19b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianextern "C" { 20b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif 21b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 22b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramaniantypedef void (*vp9_rb_error_handler)(void *data); 23ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 24ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuangstruct vp9_read_bit_buffer { 25ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang const uint8_t *bit_buffer; 26ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang const uint8_t *bit_buffer_end; 27ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang size_t bit_offset; 28ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 29ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang void *error_handler_data; 30ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang vp9_rb_error_handler error_handler; 31ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang}; 32ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 33b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramaniansize_t vp9_rb_bytes_read(struct vp9_read_bit_buffer *rb); 34b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 35b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianint vp9_rb_read_bit(struct vp9_read_bit_buffer *rb); 36b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 37b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianint vp9_rb_read_literal(struct vp9_read_bit_buffer *rb, int bits); 38b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 39b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanianint vp9_rb_read_signed_literal(struct vp9_read_bit_buffer *rb, int bits); 40b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian 41b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#ifdef __cplusplus 42b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian} // extern "C" 43b08e2e23eec181e9951df33cd704ac294c5407b6Vignesh Venkatasubramanian#endif 4491037db265ecdd914a26e056cf69207b4f50924ehkuang 455ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang#endif // VP9_DECODER_VP9_READ_BIT_BUFFER_H_ 46