1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
14 explicit BitReader(const MediaByteBuffer
* aBuffer
);
15 BitReader(const MediaByteBuffer
* aBuffer
, size_t aBits
);
16 BitReader(const uint8_t* aBuffer
, size_t aBits
);
18 uint32_t ReadBits(size_t aNum
);
19 bool ReadBit() { return ReadBits(1) != 0; }
20 uint32_t ReadU32() { return ReadBits(32); }
23 // Read the UTF-8 sequence and convert it to its 64-bit UCS-4 encoded form.
24 // Return 0xfffffffffffffff if sequence was invalid.
26 // Read unsigned integer Exp-Golomb-coded.
28 // Read signed integer Exp-Golomb-coded.
31 // Return the number of bits parsed so far;
32 size_t BitCount() const;
33 // Return the number of bits left.
34 size_t BitsLeft() const;
36 // Return RBSP bit length.
37 static uint32_t GetBitLength(const MediaByteBuffer
* aNAL
);
42 const size_t mOriginalBitSize
;
43 size_t mTotalBitsLeft
;
44 size_t mSize
; // Size left in bytes
45 uint32_t mReservoir
; // Left-aligned bits
46 size_t mNumBitsLeft
; // Number of bits left in reservoir.
49 } // namespace mozilla
51 #endif // BIT_READER_H_