Bug 1708422: part 16) Rename `mozInlineSpellChecker::SpellCheckerTimeSlice` to `mozIn...
[gecko.git] / dom / media / BitWriter.h
blob9531345cd3e5f315b0c15a9a608d76029f81d6a5
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/. */
5 #ifndef BIT_WRITER_H_
6 #define BIT_WRITER_H_
8 #include "mozilla/RefPtr.h"
10 namespace mozilla {
12 class MediaByteBuffer;
14 class BitWriter {
15 public:
16 explicit BitWriter(MediaByteBuffer* aBuffer);
17 virtual ~BitWriter();
18 void WriteBits(uint64_t aValue, size_t aBits);
19 void WriteBit(bool aValue) { WriteBits(aValue, 1); }
20 void WriteU8(uint8_t aValue) { WriteBits(aValue, 8); }
21 void WriteU32(uint32_t aValue) { WriteBits(aValue, 32); }
22 void WriteU64(uint64_t aValue) { WriteBits(aValue, 64); }
24 // Write unsigned integer into Exp-Golomb-coded. 2^32-2 at most
25 void WriteUE(uint32_t aValue);
27 // Write RBSP trailing bits.
28 void CloseWithRbspTrailing();
30 // Return the number of bits written so far;
31 size_t BitCount() const { return mPosition * 8 + mBitIndex; }
33 private:
34 RefPtr<MediaByteBuffer> mBuffer;
35 size_t mPosition = 0;
36 uint8_t mBitIndex = 0;
39 } // namespace mozilla
41 #endif // BIT_WRITER_H_