5#ifndef PACKAGER_MEDIA_BASE_BIT_READER_H_
6#define PACKAGER_MEDIA_BASE_BIT_READER_H_
11#include <absl/log/check.h>
13#include <packager/macros/classes.h>
24 BitReader(
const uint8_t* data,
size_t size);
38 DCHECK_LE(num_bits,
sizeof(T) * 8);
40 bool ret = ReadBitsInternal(num_bits, &temp);
41 *out =
static_cast<T
>(temp);
46 bool ReadBits(
size_t num_bits,
bool* out) {
47 DCHECK_EQ(num_bits, 1u);
49 bool ret = ReadBitsInternal(num_bits, &temp);
72 bool condition_read =
true;
75 return condition_read == condition ?
SkipBits(num_bits) :
true;
92 return 8 * bytes_left_ + num_remaining_bits_in_curr_byte_;
103 bool ReadBitsInternal(
size_t num_bits, uint64_t* out);
108 void UpdateCurrByte();
111 const uint8_t* data_;
114 size_t initial_size_;
124 size_t num_remaining_bits_in_curr_byte_;
All the methods that are virtual are virtual for mocking.