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/. */
8 #include "mozilla/RefPtr.h"
12 class MediaByteBuffer
;
16 explicit BitWriter(MediaByteBuffer
* aBuffer
);
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
; }
34 RefPtr
<MediaByteBuffer
> mBuffer
;
36 uint8_t mBitIndex
= 0;
39 } // namespace mozilla
41 #endif // BIT_WRITER_H_