Commit Graph
9 Commits
Author SHA1 Message Date
oleksandr df857c7424 feat(hyperhdr): add the protocol codec and the network thread
proto encodes registration, image and clear requests with the
[u32 big-endian length][flatbuffer] framing and decodes the replies. client
drives them from a thread: it connects while frames flow, applies the pacer,
sends keepalives and reconnects with backoff.
2026-09-12 10:09:42 +03:00
oleksandr de88dd5799 feat(convert): add BGRx to RGB24 conversion with downscaling
Box filter for integer scale factors, fixed-point area averaging otherwise.
The source view is bounds-checked so a short or misdescribed PipeWire buffer
is reported instead of read out of range.
2026-09-12 10:09:41 +03:00
oleksandr c50a55cf79 feat(stats): add the counters shared by the capture and network threads 2026-09-12 10:09:25 +03:00
oleksandr a2fc524619 feat(pacing): add send pacing, reconnect backoff and log rate limiting
Pure scheduling logic with an injected `now`, so the rules of spec 4.3.6
(fps cap, keepalive, idle clear, heartbeat) are unit-testable without I/O.
2026-09-12 10:09:24 +03:00
oleksandr b3993be5cd feat(slot): add the latest-frame-wins hand-off between threads
The PipeWire thread publishes into a single slot and the network thread takes
from it, swapping buffers instead of copying so the steady state does not
allocate. An older pending frame is dropped when a newer one arrives.
2026-09-12 10:09:23 +03:00
oleksandr 9855d1e18a feat(config): add the CLI and environment configuration
Parses the WxH sizes, clamps them against the HyperHDR message limit and
carries the HyperHDR server constants (max message size, default timeout).
2026-09-12 10:09:09 +03:00
oleksandr 617296afae feat(hyperhdr): vendor the flatbuffers schemas and generated bindings
The .fbs files come from HyperHDR (see schema/NOTICE); the *_generated.rs
files are flatc output regenerated by scripts/regen-fbs.sh, which refuses to
run unless flatc matches the pinned flatbuffers crate.
2026-09-12 10:08:56 +03:00
oleksandr 623fab55e5 build: add cargo manifest and MIT license
Rust 2021, MSRV 1.85. flatbuffers is pinned to an exact version because the
generated bindings must match the flatc that produced them.
2026-09-12 10:08:29 +03:00
oleksandr 722d99675e chore: initial commit 2026-09-12 10:02:53 +03:00