mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-10-15 07:11:28 +08:00
79 lines
1.9 KiB
Markdown
79 lines
1.9 KiB
Markdown
## Metadata Decoder
|
|
|
|
### DecodeMetadata()
|
|
|
|
~~~~~
|
|
void DecodeMetadata() {
|
|
ParseMetadataCount();
|
|
|
|
for (i = 0; i < num_att_metadata; ++i) {
|
|
ParseAttributeMetadataId(i);
|
|
DecodeMetadataElement(att_metadata[i]);
|
|
}
|
|
DecodeMetadataElement(file_metadata);
|
|
}
|
|
~~~~~
|
|
{:.draco-syntax}
|
|
|
|
|
|
### ParseMetadataCount()
|
|
|
|
~~~~~
|
|
void ParseMetadataCount() {
|
|
num_att_metadata varUI32
|
|
}
|
|
~~~~~
|
|
{:.draco-syntax}
|
|
|
|
|
|
### ParseAttributeMetadataId()
|
|
|
|
~~~~~
|
|
void ParseAttributeMetadataId(index) {
|
|
att_metadata_id[index] varUI32
|
|
}
|
|
~~~~~
|
|
{:.draco-syntax}
|
|
|
|
|
|
### ParseMetadataElement()
|
|
|
|
~~~~~
|
|
void ParseMetadataElement(metadata) {
|
|
metadata.num_entries varUI32
|
|
for (i = 0; i < metadata.num_entries; ++i) {
|
|
metadata.name_size[i] UI8
|
|
metadata.name[i] I8[size]
|
|
metadata.value_size[i] UI8
|
|
metadata.value[i] I8[size]
|
|
}
|
|
metadata.num_sub_metadata varUI32
|
|
}
|
|
~~~~~
|
|
{:.draco-syntax}
|
|
|
|
|
|
### ParseSubMetadataName()
|
|
|
|
~~~~~
|
|
void ParseSubMetadataName(metadata, index) {
|
|
metadata.sub_metadata_name_size[index] UI8
|
|
metadata.sub_metadata_name[index] I8[size]
|
|
}
|
|
~~~~~
|
|
{:.draco-syntax}
|
|
|
|
|
|
### DecodeMetadataElement()
|
|
|
|
~~~~~
|
|
void DecodeMetadataElement(metadata) {
|
|
ParseMetadataElement(metadata);
|
|
for (i = 0; i < metadata.num_sub_metadata; ++i) {
|
|
ParseSubMetadataName(metadata, i);
|
|
DecodeMetadataElement(metadata.sub_metadata[i]);
|
|
}
|
|
}
|
|
~~~~~
|
|
{:.draco-syntax}
|