A metadata definition consists of:
- a bit, being 0 if the metadata set is empty, 1 otherwise.
Then, if the set is not empty:
Then, for that number:
- a variable length integer representing the number of bytes in the tag name.
- that same number of bytes, representing the tag name. The typical C string terminating NUL is not included.
- a variable length integer representing the number of bytes in the value.
- that same number of bytes, representing the value. This value may be any stream of arbitrary data, but is encouraged to be UTF-8, though this is not mandatory and should not be assumed. No terminating NUL. Note that a terminating NUL might not make sense in the first place if the metadata contents are binary.
- a warp.
Then, the data for this metadata pair ends.
Next, we have a warp.
Next, the data ends.