mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-06-22 23:10:23 +08:00

- Improved compression for triangular meshes (~10%) - Added WebAssembly decoder - Code cleanup + robustness fixes
30 lines
672 B
C++
30 lines
672 B
C++
#include "core/symbol_bit_encoder.h"
|
|
|
|
#include "core/symbol_encoding.h"
|
|
|
|
namespace draco {
|
|
|
|
void SymbolBitEncoder::EncodeLeastSignificantBits32(int nbits, uint32_t value) {
|
|
DCHECK_LE(1, nbits);
|
|
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(), symbols_.size(), 1, target_buffer);
|
|
Clear();
|
|
}
|
|
|
|
void SymbolBitEncoder::Clear() {
|
|
symbols_.clear();
|
|
symbols_.shrink_to_fit();
|
|
}
|
|
|
|
} // namespace draco
|