/* bitstream.h Copyright (c) 2003-2025 HandBrake Team This file is part of the HandBrake source code Homepage: . It may be used under the terms of the GNU General Public License v2. For full terms see the file COPYING file or visit http://www.gnu.org/licenses/gpl-2.0.html */ #ifndef HANDBRAKE_BITSTREAM_H #define HANDBRAKE_BITSTREAM_H #include typedef struct { uint8_t *buf; uint32_t pos; uint32_t buf_size; } hb_bitstream_t; void hb_bitstream_init(hb_bitstream_t *bs, uint8_t *buf, uint32_t bufsize, int clear); void hb_bitstream_put_bytes(hb_bitstream_t *bs, uint8_t *bytes, uint32_t num_bytes); void hb_bitstream_put_bits(hb_bitstream_t *bs, uint32_t bits, uint32_t num_bits); uint32_t hb_bitstream_peak_bits(hb_bitstream_t *bs, uint32_t num_bits); uint32_t hb_bitstream_get_bits(hb_bitstream_t *bs, uint32_t num_bits); void hb_bitstream_skip_bytes(hb_bitstream_t *bs, uint32_t num_bytes); void hb_bitstream_skip_bits(hb_bitstream_t *bs, uint32_t num_bits); uint32_t hb_bitstream_get_bit_position(hb_bitstream_t *bs); void hb_bitstream_set_bit_position(hb_bitstream_t *bs, uint32_t bitPos); uint8_t * hb_bitstream_get_buffer(hb_bitstream_t *bs); uint32_t hb_bitstream_get_count_of_bytes(hb_bitstream_t *bs); uint32_t hb_bitstream_get_count_of_bits(hb_bitstream_t *bs); uint32_t hb_bitstream_get_count_of_used_bytes(hb_bitstream_t *bs); uint32_t hb_bitstream_get_remaining_bits(hb_bitstream_t *bs); #endif // HANDBRAKE_BITSTREAM_H