16#ifndef DRACO_COMPRESSION_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_
17#define DRACO_COMPRESSION_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_
32template <
class BitEncoderT>
40 for (
int i = 0; i < 32; i++) {
41 folded_number_encoders_[i].StartEncoding();
43 bit_encoder_.StartEncoding();
47 void EncodeBit(
bool bit) { bit_encoder_.EncodeBit(bit); }
52 uint32_t selector = 1 << (nbits - 1);
53 for (
int i = 0; i < nbits; i++) {
54 const bool bit = (value & selector);
55 folded_number_encoders_[i].EncodeBit(bit);
56 selector = selector >> 1;
62 for (
int i = 0; i < 32; i++) {
63 folded_number_encoders_[i].EndEncoding(target_buffer);
65 bit_encoder_.EndEncoding(target_buffer);
70 for (
int i = 0; i < 32; i++) {
71 folded_number_encoders_[i].Clear();
76 std::array<BitEncoderT, 32> folded_number_encoders_;
77 BitEncoderT bit_encoder_;
Definition encoder_buffer.h:29
void EncodeLeastSignificantBits32(int nbits, uint32_t value)
Definition folded_integer_bit_encoder.h:51
void EndEncoding(EncoderBuffer *target_buffer)
Definition folded_integer_bit_encoder.h:61
FoldedBit32Encoder()
Definition folded_integer_bit_encoder.h:35
~FoldedBit32Encoder()
Definition folded_integer_bit_encoder.h:36
void EncodeBit(bool bit)
Definition folded_integer_bit_encoder.h:47
void StartEncoding()
Definition folded_integer_bit_encoder.h:39
Definition attribute_octahedron_transform.cc:21