diff options
author | Peter Kim <pk15950@gmail.com> | 2022-09-08 07:00:12 +0300 |
---|---|---|
committer | Peter Kim <pk15950@gmail.com> | 2022-09-08 07:00:12 +0300 |
commit | 00dcfdf916c69672210b006e62d966f1bc2fbeb7 (patch) | |
tree | 0cbb1b91fe26c750197126085b74224a795a103c /extern/draco/draco/src/draco/attributes/attribute_quantization_transform.h | |
parent | a39532670f6b668da7be5810fb1f844b82feeba3 (diff) | |
parent | d5934974219135102f364f57c45a8b1465e2b8d9 (diff) |
Merge branch 'master' into xr-devxr-dev
Diffstat (limited to 'extern/draco/draco/src/draco/attributes/attribute_quantization_transform.h')
-rw-r--r-- | extern/draco/draco/src/draco/attributes/attribute_quantization_transform.h | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/extern/draco/draco/src/draco/attributes/attribute_quantization_transform.h b/extern/draco/draco/src/draco/attributes/attribute_quantization_transform.h index 934856f2db7..f1122b680ab 100644 --- a/extern/draco/draco/src/draco/attributes/attribute_quantization_transform.h +++ b/extern/draco/draco/src/draco/attributes/attribute_quantization_transform.h @@ -37,14 +37,24 @@ class AttributeQuantizationTransform : public AttributeTransform { void CopyToAttributeTransformData( AttributeTransformData *out_data) const override; - void SetParameters(int quantization_bits, const float *min_values, + bool TransformAttribute(const PointAttribute &attribute, + const std::vector<PointIndex> &point_ids, + PointAttribute *target_attribute) override; + + bool InverseTransformAttribute(const PointAttribute &attribute, + PointAttribute *target_attribute) override; + + bool SetParameters(int quantization_bits, const float *min_values, int num_components, float range); bool ComputeParameters(const PointAttribute &attribute, const int quantization_bits); // Encode relevant parameters into buffer. - bool EncodeParameters(EncoderBuffer *encoder_buffer) const; + bool EncodeParameters(EncoderBuffer *encoder_buffer) const override; + + bool DecodeParameters(const PointAttribute &attribute, + DecoderBuffer *decoder_buffer) override; int32_t quantization_bits() const { return quantization_bits_; } float min_value(int axis) const { return min_values_[axis]; } @@ -52,16 +62,30 @@ class AttributeQuantizationTransform : public AttributeTransform { float range() const { return range_; } bool is_initialized() const { return quantization_bits_ != -1; } + protected: // Create portable attribute using 1:1 mapping between points in the input and // output attribute. - std::unique_ptr<PointAttribute> GeneratePortableAttribute( - const PointAttribute &attribute, int num_points) const; + void GeneratePortableAttribute(const PointAttribute &attribute, + int num_points, + PointAttribute *target_attribute) const; // Create portable attribute using custom mapping between input and output // points. - std::unique_ptr<PointAttribute> GeneratePortableAttribute( - const PointAttribute &attribute, const std::vector<PointIndex> &point_ids, - int num_points) const; + void GeneratePortableAttribute(const PointAttribute &attribute, + const std::vector<PointIndex> &point_ids, + int num_points, + PointAttribute *target_attribute) const; + + DataType GetTransformedDataType( + const PointAttribute &attribute) const override { + return DT_UINT32; + } + int GetTransformedNumComponents( + const PointAttribute &attribute) const override { + return attribute.num_components(); + } + + static bool IsQuantizationValid(int quantization_bits); private: int32_t quantization_bits_; |