wiki:Specs/Command/RAUM_SEEKTABLE

Version 2 (modified by ph3-der-loewe, 5 years ago) (diff)

Added meaning of seekpoint flags

The RAUM_SEEKTABLE command is used in RAUM? files to define seektables. Such a seektable is a list of points within the file with byte offsets so the decoder can seek (jump) faster within the file.

Data Structure

Seektable

Offset Size/Type? Meaning
0 uint8 Version (Always zero)
1 uint16 Number of points in table
3 n*seekpoint Seekpoints
... padding Padding (zero bytes)

Seekpoint

Offset Size/Type? Meaning
0 uint8 Event
1 uint8 Flags
2 uint16 option Stream ID
... uint16/32/64 Start Position (stream pos)
... sint16/32/64 Start Offset
... uint16/32/64 option End Position (stream pos)
... sint16/32/64 option End Offset

Seekpoint flags

Value Meaning
0x01 Point is a command (Event is command ID), if unset Event is special event
0x02 Point has end position and offset
0x04 Point has stream ID
0x08 Reserved for future use
0x10 Reserved for future use
0x20 Reserved for future use

The upper two bits are set to the so called size mask. It tells the size of the stream position and offset information as listed above. Valid values for the size mask are:

Value Meaning
0x00 The data is encoded in relative 16 bit signed integers
0x40 The data is encoded in absolute 32 bit signed integers
0x80 The data is encoded in absolute 64 bit signed integers
0xC0 The data is encoded in relative 32 bit signed integers