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

1.3 KiB

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 }