Expand description
Live stream (<out>/live/stream/, format version 4): after every live event the composed display cloud (point keys and
the owner zone of every point) is diffed against what the viewer shows and only the changes are written. Every shown
point owns a dense u32 slot id assigned here, so the viewer writes straight into its GPU buffers at index = id.
packs/e_<seq:04>.bin (little endian, no header) holds three sections in this order: n_add records of 20 B
(u32 id | f32 x y z | u8 r g b | u8 zone), n_move records of 20 B (u32 id | f32 x y z | u8 r g b | u8 pad=0, new position and colour), n_remove records of
4 B (u32 id). manifest.json (rewritten atomically after every event) lists the events with their counts and capacity
(max id + 1 used so far). A key that stays keeps its id (moved when its position changed by more than POSITION_EPS or its colour changed);
a key that leaves frees its id; a new key takes the lowest free id or capacity++. An id freed in an event is not handed
out in the same event. A zone change is a remove plus an add with a new id. Files are never overwritten.
Structs§
- Diff
Stream - Writer of the live diff stream.
- Event
Stats - What one
DiffStream::write_eventdid. - Heartbeat
- Progress heartbeat
<dir>/status.jsonof a running session (rewritten atomically; tiny). - KeyHasher
- Cheap hasher for the already well-mixed 64-bit pixel keys.
- Live
Stream - Live stream settings.
Constants§
- ADD_
BYTES - Bytes of an add record.
- FORMAT_
VERSION - Manifest format version.
- MOVE_
BYTES - Bytes of a move record.
- POSITION_
EPS - A point whose position moved by more than this (display units, any axis) is sent as a move.
- REMOVE_
BYTES - Bytes of a remove record.