mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-06-04 11:25:44 +08:00
Merge pull request #249 from google/spec_change_size
Spec: Update buffer size reading
This commit is contained in:
commit
b5bdbe7c82
@ -71,6 +71,9 @@ byte.
|
|||||||
|
|
||||||
* All values of att_metadata_id must equal a value stored in att_dec_unique_id.
|
* All values of att_metadata_id must equal a value stored in att_dec_unique_id.
|
||||||
|
|
||||||
|
* When parsing a value, that value can be assigned to a variable after the value has been parsed.
|
||||||
|
* E.g. sz = buffer_size varUI32
|
||||||
|
* buffer UI8[sz]
|
||||||
|
|
||||||
### General Conventions
|
### General Conventions
|
||||||
|
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
|
|
||||||
~~~~~
|
~~~~~
|
||||||
void ParseEdgebreakerTraversalStandardSymbolData() {
|
void ParseEdgebreakerTraversalStandardSymbolData() {
|
||||||
eb_symbol_buffer_size varUI64
|
sz = eb_symbol_buffer_size varUI64
|
||||||
eb_symbol_buffer size * UI8
|
eb_symbol_buffer UI8[sz]
|
||||||
}
|
}
|
||||||
~~~~~
|
~~~~~
|
||||||
{:.draco-syntax }
|
{:.draco-syntax }
|
||||||
@ -17,8 +17,8 @@ void ParseEdgebreakerTraversalStandardSymbolData() {
|
|||||||
~~~~~
|
~~~~~
|
||||||
void ParseEdgebreakerTraversalStandardFaceData() {
|
void ParseEdgebreakerTraversalStandardFaceData() {
|
||||||
eb_start_face_buffer_prob_zero UI8
|
eb_start_face_buffer_prob_zero UI8
|
||||||
eb_start_face_buffer_size varUI32
|
sz = eb_start_face_buffer_size varUI32
|
||||||
eb_start_face_buffer size * UI8
|
eb_start_face_buffer UI8[sz]
|
||||||
}
|
}
|
||||||
~~~~~
|
~~~~~
|
||||||
{:.draco-syntax }
|
{:.draco-syntax }
|
||||||
@ -30,8 +30,8 @@ void ParseEdgebreakerTraversalStandardFaceData() {
|
|||||||
void ParseEdgebreakerTraversalStandardAttributeConnectivityData() {
|
void ParseEdgebreakerTraversalStandardAttributeConnectivityData() {
|
||||||
for (i = 0; i < num_attribute_data; ++i) {
|
for (i = 0; i < num_attribute_data; ++i) {
|
||||||
attribute_connectivity_decoders_prob_zero[i] UI8
|
attribute_connectivity_decoders_prob_zero[i] UI8
|
||||||
attribute_connectivity_decoders_size[i] varUI32
|
sz = attribute_connectivity_decoders_size[i] varUI32
|
||||||
attribute_connectivity_decoders_buffer[i] size * UI8
|
attribute_connectivity_decoders_buffer[i] UI8[sz]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
~~~~~
|
~~~~~
|
||||||
|
@ -42,10 +42,10 @@ void ParseAttributeMetadataId(index) {
|
|||||||
void ParseMetadataElement(metadata) {
|
void ParseMetadataElement(metadata) {
|
||||||
metadata.num_entries varUI32
|
metadata.num_entries varUI32
|
||||||
for (i = 0; i < metadata.num_entries; ++i) {
|
for (i = 0; i < metadata.num_entries; ++i) {
|
||||||
metadata.key_size[i] UI8
|
sz = metadata.key_size[i] UI8
|
||||||
metadata.key[i] I8[size]
|
metadata.key[i] I8[sz]
|
||||||
metadata.value_size[i] UI8
|
sz = metadata.value_size[i] UI8
|
||||||
metadata.value[i] I8[size]
|
metadata.value[i] I8[sz]
|
||||||
}
|
}
|
||||||
metadata.num_sub_metadata varUI32
|
metadata.num_sub_metadata varUI32
|
||||||
}
|
}
|
||||||
@ -57,8 +57,8 @@ void ParseMetadataElement(metadata) {
|
|||||||
|
|
||||||
~~~~~
|
~~~~~
|
||||||
void ParseSubMetadataKey(metadata, index) {
|
void ParseSubMetadataKey(metadata, index) {
|
||||||
metadata.sub_metadata_key_size[index] UI8
|
sz = metadata.sub_metadata_key_size[index] UI8
|
||||||
metadata.sub_metadata_key[index] I8[size]
|
metadata.sub_metadata_key[index] I8[sz]
|
||||||
}
|
}
|
||||||
~~~~~
|
~~~~~
|
||||||
{:.draco-syntax}
|
{:.draco-syntax}
|
||||||
|
@ -51,15 +51,15 @@ void DecodeTaggedSymbols(num_values, num_components, out_values) {
|
|||||||
l_rans_base = rans_precision * 4;
|
l_rans_base = rans_precision * 4;
|
||||||
num_symbols_ varUI32
|
num_symbols_ varUI32
|
||||||
BuildSymbolTables(num_symbols_, lut_table_, probability_table_);
|
BuildSymbolTables(num_symbols_, lut_table_, probability_table_);
|
||||||
bytes_encoded varUI64
|
size varUI64
|
||||||
encoded_data UI8[size]
|
encoded_data UI8[size]
|
||||||
|
|
||||||
RansInitDecoder(ans_, &encoded_data[0], bytes_encoded, l_rans_base);
|
RansInitDecoder(ans_, &encoded_data[0], size, l_rans_base);
|
||||||
for (i = 0; i < num_values; i += num_components) {
|
for (i = 0; i < num_values; i += num_components) {
|
||||||
RansRead(ans_, l_rans_base, rans_precision,
|
RansRead(ans_, l_rans_base, rans_precision,
|
||||||
lut_table_, probability_table_, &bit_length);
|
lut_table_, probability_table_, &size);
|
||||||
for (j = 0; j < num_components; ++j) {
|
for (j = 0; j < num_components; ++j) {
|
||||||
val f[bit_length]
|
val f[size]
|
||||||
out_values.push_back(val);
|
out_values.push_back(val);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -82,9 +82,9 @@ void DecodeRawSymbols(num_values, out_values) {
|
|||||||
rans_precision = 1 << rans_precision_bits;
|
rans_precision = 1 << rans_precision_bits;
|
||||||
l_rans_base = rans_precision * 4;
|
l_rans_base = rans_precision * 4;
|
||||||
BuildSymbolTables(num_symbols_, lut_table_, probability_table_);
|
BuildSymbolTables(num_symbols_, lut_table_, probability_table_);
|
||||||
bytes_encoded varUI64
|
size varUI64
|
||||||
buffer UI8[size]
|
buffer UI8[size]
|
||||||
RansInitDecoder(ans_, &buffer[0], bytes_encoded, l_rans_base);
|
RansInitDecoder(ans_, &buffer[0], size, l_rans_base);
|
||||||
for (i = 0; i < num_values; ++i) {
|
for (i = 0; i < num_values; ++i) {
|
||||||
RansRead(ans_, l_rans_base, rans_precision,
|
RansRead(ans_, l_rans_base, rans_precision,
|
||||||
lut_table_, probability_table_, &val);
|
lut_table_, probability_table_, &val);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user