mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-06-04 11:25:44 +08:00
78 lines
1.9 KiB
Markdown
78 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) {
|
|
sz = metadata.key_size[i] UI8
|
|
metadata.key[i] I8[sz]
|
|
sz = metadata.value_size[i] UI8
|
|
metadata.value[i] I8[sz]
|
|
}
|
|
metadata.num_sub_metadata varUI32
|
|
}
|
|
~~~~~
|
|
{:.draco-syntax}
|
|
|
|
|
|
### ParseSubMetadataKey()
|
|
|
|
~~~~~
|
|
void ParseSubMetadataKey(metadata, index) {
|
|
sz = metadata.sub_metadata_key_size[index] UI8
|
|
metadata.sub_metadata_key[index] I8[sz]
|
|
}
|
|
~~~~~
|
|
{:.draco-syntax}
|
|
|
|
|
|
### DecodeMetadataElement()
|
|
|
|
~~~~~
|
|
void DecodeMetadataElement(metadata) {
|
|
ParseMetadataElement(metadata);
|
|
for (i = 0; i < metadata.num_sub_metadata; ++i) {
|
|
ParseSubMetadataKey(metadata, i);
|
|
DecodeMetadataElement(metadata.sub_metadata[i]);
|
|
}
|
|
}
|
|
~~~~~
|
|
{:.draco-syntax}
|