Welcome to mirror list, hosted at ThFree Co, Russian Federation.

symbol_bit_encoder.cc « bit_coders « compression « draco « src « dracoenc « draco « extern - git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 83834236fa5f595ce95eada360576c67b2628f05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "draco/compression/bit_coders/symbol_bit_encoder.h"

#include "draco/compression/entropy/symbol_encoding.h"

namespace draco {

void SymbolBitEncoder::EncodeLeastSignificantBits32(int nbits, uint32_t value) {
  DRACO_DCHECK_LE(1, nbits);
  DRACO_DCHECK_LE(nbits, 32);

  const int discarded_bits = 32 - nbits;
  value <<= discarded_bits;
  value >>= discarded_bits;

  symbols_.push_back(value);
}

void SymbolBitEncoder::EndEncoding(EncoderBuffer *target_buffer) {
  target_buffer->Encode(static_cast<uint32_t>(symbols_.size()));
  EncodeSymbols(symbols_.data(), static_cast<int>(symbols_.size()), 1, nullptr,
                target_buffer);
  Clear();
}

void SymbolBitEncoder::Clear() {
  symbols_.clear();
  symbols_.shrink_to_fit();
}

}  // namespace draco