libkate: Format - warp

# Format - warp

A warp is a stream of bits along with its length, allowing to jump over it without regard to its actual contents. Its use allows older decoders to ignore additions to the bitstream format without having to know about them. Warps are the main mechanism used to allow Kate streams to maintain forward compatibility with new streams.

A warp consists of a variable length integer representing the number of data bits present in the warp, followed by that number of bits. The actual semantics of those data bits is irrelevant to the warp, as it acts as a container for those bits.

Jumping over a warp is simple: read the variable length integer, and read that number of bits, discarding them. If the number of bits was zero, this is the end of the warp. If not, there is another warp to read. This allows the warp to be used multiple times.