draco/docs/spec/sequential.quantization.attribute.decoder.md
Frank Galligan 4efc3d27cc Update bitstream spec
This PR is associated with #134.
2017-07-22 22:35:54 -07:00

52 lines
1.3 KiB
Markdown

## Sequential Quantization Attribute Decoder
~~~~~
Initialize(...) {
SequentialIntegerAttributeDecoder_Initialize()
}
~~~~~
{:.draco-syntax }
### DecodeIntegerValues()
~~~~~
DecodeIntegerValues(point_ids) {
// REMOVE < DRACO_BITSTREAM_VERSION(2, 0)
// DecodeQuantizedDataInfo()
num_components = attribute()->components_count();
for (i = 0; i < num_components; ++i) {
min_value_[i] F32
}
max_value_dif_ F32
quantization_bits_ UI8
// REMOVE < DRACO_BITSTREAM_VERSION(2, 0)
SequentialIntegerAttributeDecoder::DecodeIntegerValues()
}
~~~~~
{:.draco-syntax }
### DequantizeValues()
~~~~~
DequantizeValues(num_values) {
max_quantized_value = (1 << (quantization_bits_)) - 1;
num_components = attribute()->components_count();
entry_size = sizeof(float) * num_components;
quant_val_id = 0;
out_byte_pos = 0;
for (i = 0; i < num_values; ++i) {
for (c = 0; c < num_components; ++c) {
value = dequantizer.DequantizeFloat(values()->at(quant_val_id++));
value = value + min_value_[c];
att_val[c] = value;
}
attribute()->buffer()->Write(out_byte_pos, att_val, entry_size);
out_byte_pos += entry_size;
}
}
~~~~~
{:.draco-syntax }