libkate: Format - metadata

# Format - metadata

A metadata definition consists of:

- a bit, being 0 if the metadata set is empty, 1 otherwise.

Then, if the set is not empty:

- a variable length integer representing the number of metadata pairs present in the set.

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.

Next, we have a warp.

Then, the data for this metadata pair ends.

Next, we have a warp.

Next, the data ends.