35template <
typename Derived_,
typename OutputIterator_>
36 requires std::output_iterator<OutputIterator_, uint8_t>
42 using Cache =
typename StreamTraits::StreamFlow;
61 constexpr int StreamChunkBitwidth =
65 constexpr int NumChunksNeeded =
chunk_bitwidth / StreamChunkBitwidth;
66 static_assert(NumChunksNeeded >= 1);
68 for (
int i = 0; i != NumChunksNeeded; ++i) {
70 cache.peek(StreamChunkBitwidth));
73 cache.skip(StreamChunkBitwidth);
93 if (
cache.fillLevel == 0) {
115 template <
typename U>
116 requires std::same_as<OutputIterator, std::remove_reference_t<U>>
125 cache.push(bits, count);
Declaration of the bitstream data structure.
OutputIterator_ OutputIterator
BitVacuumer(const BitVacuumer &)=delete
BitStreamTraits< Traits::Tag > StreamTraits
typename StreamTraits::StreamFlow Cache
BitVacuumer(BitVacuumer &&)=delete
void put(uint32_t bits, int count)
BitVacuumerTraits< Derived_ > Traits
BitVacuumer & operator=(BitVacuumer &&)=delete
BitVacuumer & operator=(const BitVacuumer &)=delete
static constexpr int chunk_bitwidth
constexpr RAWSPEED_READNONE Ttgt implicit_cast(Tsrc value)
int8_t getByteSwapped(int8_t v)
constexpr unsigned RAWSPEED_READNONE bitwidth(T unused={})