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
|