Files

33 lines
666 B
C++
Raw Permalink Normal View History

2026-01-16 22:45:06 -05:00
#ifndef AXIO_CBITSTREAMINWRAPPER_H
#define AXIO_CBITSTREAMINWRAPPER_H
2025-12-17 13:44:30 -05:00
#include <cstdint>
class IInputStream;
class CBitStreamInWrapper
{
public:
enum EChunkSize
{
2018-12-16 13:52:10 -07:00
k8Bit = 8, k16Bit = 16, k32Bit = 32
};
private:
2025-12-17 13:44:30 -05:00
IInputStream *mpSourceStream = nullptr;
EChunkSize mChunkSize{};
uint32_t mBitPool = 0;
uint32_t mBitsRemaining = 0;
public:
2025-12-17 13:44:30 -05:00
explicit CBitStreamInWrapper(IInputStream *pStream, EChunkSize ChunkSize = k32Bit);
void SetChunkSize(EChunkSize Size);
2025-12-17 13:44:30 -05:00
long ReadBits(uint32_t NumBits, bool ExtendSignBit = true);
bool ReadBit();
private:
void ReplenishPool();
};
2026-01-16 22:45:06 -05:00
#endif // AXIO_CBITSTREAMINWRAPPER_H