cat / goq
clone

turns a linux box into a private steam streaming appliance: plug in, tap your key, play from another computer

perf: hold media payloads behind Arc to drop per-client frame copies

Dami committed c8d7846
MediaObjectV3 and MediaFrame stored their compressed access unit as an
owned Vec<u8>. The host builds one object/frame per connected client per
encoded frame, so every fanout copied the whole payload out of the
shared EncodedFrame.data: Arc<[u8]> via .as_ref().to_vec() — N full
payload copies per frame for N clients.

Both payload fields now hold Arc<[u8]>, and the two constructors take
impl Into<Arc<[u8]>>. The host build sites clone the Arc (a refcount
bump, zero payload copy); the wire format is unchanged (payload is
written as raw bytes with no serde), and the receive paths convert the
freshly-read buffer into the Arc exactly once.
commit
c8d78469cb8e114f6114b75710769dda07614267
parent
28d94b5185eb47c07c522c7438f1958ad0c8f097
author
Dami <dami.etoile@gmail.com>
4 files changed, +23 -8
Mcrates/sigil-host/src/server/media_v3.rs2+-
Mcrates/sigil-host/src/server/moq.rs2+-
Mcrates/sigil-protocol/src/media.rs12+++++++++---
Mcrates/sigil-protocol/src/media_v3.rs15++++++++++++---
M crates/sigil-host/src/server/media_v3.rs +1 -1
M crates/sigil-host/src/server/moq.rs +1 -1
M crates/sigil-protocol/src/media.rs +9 -3
M crates/sigil-protocol/src/media_v3.rs +12 -3