Merge pull request #249 from google/spec_change_size

Spec: Update buffer size reading
This commit is contained in:
FrankGalligan 2017-10-20 10:50:35 -07:00 committed by GitHub
commit b5bdbe7c82
4 changed files with 21 additions and 18 deletions

View File

@ -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

View File

@ -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]
} }
} }
~~~~~ ~~~~~

View File

@ -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}

View File

@ -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);