Commit Graph

450 Commits

Author SHA1 Message Date
Geoffrey McRae
5eca9a687f [client/idd] network: process only damaged PyroWave blocks
Limit GPU encoding and client decoding to damage-derived regions.
Preserve per-level sparse transform state and cover mirrored inverse
edges.

Keep cumulative canonical packets so dropped frames remain recoverable.
2026-11-06 14:40:30 +11:00
Geoffrey McRae
ccdcad14ca [client/idd] network: send cumulative PyroWave updates 2026-11-06 14:40:26 +11:00
Geoffrey McRae
0fecbe4989 [idd] network: bind clipboard to input authority 2026-11-06 14:40:26 +11:00
Geoffrey McRae
8ca2edbcc6 [idd] network: retain and replay the latest frame
Keep one pending source frame before the first subscriber connects.
Replay completed encodes with fresh delivery timing and frame IDs.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
cbb7835158 [idd] clipboard: arbitrate ownership by active client 2026-11-06 14:37:38 +11:00
Geoffrey McRae
450d20c8d8 [client/idd] network: tolerate transient wireless stalls 2026-11-06 14:37:38 +11:00
Geoffrey McRae
50177afe79 [idd] network: enforce configurable video bitrate 2026-11-06 14:37:38 +11:00
Geoffrey McRae
6aea2496f0 [idd] network: make video chroma configurable 2026-11-06 14:37:38 +11:00
Geoffrey McRae
967b43f4a8 [idd] network: preserve desktop chroma detail 2026-11-06 14:37:38 +11:00
Geoffrey McRae
bdf5fed38d [client/idd] network: implement tiled video transport 2026-11-06 14:37:38 +11:00
Geoffrey McRae
e14d5dd3c9 [idd] audio: support concurrent transport sources
Keep a stable target per transport binding and fan playback and state
notifications out to every active source. Serialize capture and clock
authority while preserving exact BUSY retries and failure cleanup.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
b6e0bd55fc [idd] network: preserve video sessions during reconfigure
A video configuration epoch can advance while client feedback for the
previous epoch is still in flight. Treat structurally valid stale video
control packets as obsolete instead of terminating the QUIC session.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
da5af3d478 [idd] network: recover video after display reconfiguration
Reset reusable D3D12 command queues before rebuilding the encoder.

Treat a committed frame graph as recovery from transient device loss.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
abc0ed0654 [idd] network: finish fragmented video frames
Preserve a partially transmitted frame while replacing queued stale
frames. Continuous capture can otherwise discard every frame before the
client receives its final fragment.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
3909a70950 [idd] capture: accept effective texture alignment
Ignore runtime-selected alignment when comparing frame textures.

This allows software-adapter products through publication and routing.

Log the first execution-stage failure per graph.
2026-11-06 14:37:38 +11:00
Geoffrey McRae
0992f695ad [client/idd] network: publish guest information 2026-11-06 14:37:38 +11:00
Geoffrey McRae
b7f36f39a2 [idd] network: support software video capture 2026-11-06 14:37:38 +11:00
Geoffrey McRae
70bbf180be [idd] transport: publish frame routes after ready 2026-11-06 14:37:38 +11:00
Geoffrey McRae
3b8f051164 [idd] network: accept acknowledged client requests 2026-11-06 14:37:38 +11:00
Geoffrey McRae
5f2e1e116c [client/idd] network: report connection shutdown errors 2026-11-06 14:37:38 +11:00
Geoffrey McRae
746a8d460d [idd] network: default to dual-stack listener 2026-11-06 14:37:38 +11:00
Geoffrey McRae
f47022d592 [idd] network: publish readiness after session setup 2026-11-06 14:37:38 +11:00
Geoffrey McRae
ab6ee5665a [idd] network: correct CNG certificate key metadata 2026-11-06 14:37:38 +11:00
Geoffrey McRae
93c18419cb [idd] transport: avoid redundant frame rebuilds 2026-11-06 14:37:38 +11:00
Geoffrey McRae
d1bbcbcb45 [idd] network: validate server certificate identity 2026-11-06 14:37:38 +11:00
Geoffrey McRae
1b9199355b [idd] network: handle invalid delivery values 2026-11-06 14:37:38 +11:00
Geoffrey McRae
9316493738 [idd] network: fix MSVC compilation 2026-11-06 14:37:38 +11:00
Geoffrey McRae
53c25dd5a9 [client/idd] network: add GPU video transport 2026-11-06 14:37:38 +11:00
Geoffrey McRae
d24d11c3b7 [client/idd] network: add clipboard and bulk transfer 2026-11-06 14:37:38 +11:00
Geoffrey McRae
a43227cba6 [client/idd] network: add bidirectional audio 2026-11-06 14:37:38 +11:00
Geoffrey McRae
ffa7f10085 [client/idd] network: bound pending QUIC sends 2026-11-06 14:37:38 +11:00
Geoffrey McRae
a67034b14f [client/idd] network: add recovery, cursor, and control 2026-11-06 14:37:38 +11:00
Geoffrey McRae
6dfba7519c [client/idd] network: add password authentication 2026-11-06 14:37:38 +11:00
Geoffrey McRae
5138f470b7 [client/idd] network: add negotiated input service 2026-11-06 14:37:38 +11:00
Geoffrey McRae
f15c0af653 [common] network: update protocol helpers 2026-11-06 14:37:38 +11:00
Geoffrey McRae
cd27ffb06e [idd] network: use shared identity constants 2026-11-06 14:37:38 +11:00
Geoffrey McRae
6eb7c1698c [common] network: use LGProtocol codecs 2026-11-06 14:37:38 +11:00
Geoffrey McRae
adf9ac3035 [common] network: add service payload codecs 2026-11-06 14:37:38 +11:00
Geoffrey McRae
90d2867a78 [idd] network: start QUIC control server 2026-11-06 14:37:37 +11:00
Geoffrey McRae
a3f822685c [build] msquic: add static network dependency 2026-11-06 14:37:37 +11:00
Geoffrey McRae
298577d25a [idd] network: provision persistent server identity 2026-11-06 14:37:37 +11:00
Geoffrey McRae
5dcfad9bb0 [idd] network: add transport session foundation 2026-11-06 14:37:37 +11:00
Geoffrey McRae
5ba1bda0c8 [common] network: define transport wire protocol 2026-11-06 14:37:37 +11:00
Geoffrey McRae
536516be19 [idd] postprocess: accept effective output alignment
Ignore the driver-selected texture alignment when validating external
compute-effect destinations.

Keep layout and resource flags in the comparison.
2026-11-06 14:37:37 +11:00
Geoffrey McRae
36e170d93a [client/idd] audio: support multiple playback clients
Replace the single-owner PCM queues with one shared LGMP SPMC stream.
Give each admitted client reliable state and an independent playback
cursor, while clients without clock authority resample locally.

Extend the audio protocol with per-client epochs and barriers.
Keep capture exclusive and bound authority backpressure so slow
secondary readers cannot affect the disciplined low-latency path.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
56f3305fe8 [client/idd] audio: prevent recording transport stalls
Give microphone data priority over replaceable clock feedback and
reduce feedback traffic on the shared client-to-host FIFO.

Retry short FIFO stalls outside the realtime thread and coalesce
consecutive packets in the existing fixed Windows buffers.

Avoid one broker write per tiny PipeWire quantum without adding
allocations or intentional capture latency.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
efc9952e74 [idd] audio: support 32-bit and common channel layouts
Advertise signed and floating-point 32-bit formats across mono,
stereo, quad, surround, 5.1, and 7.1 at every supported rate.

Carry sample encoding through the broker and LGMP protocol so integer
and floating-point streams remain distinct.

Expand packet, shared-memory, and ring capacity for eight-channel
32-bit audio.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
5681dcdbe7 [idd] audio: discipline playback clock from client
Forward coalesced feedback through the broker to the render clock.

Keep capture independent and apply the rate to WaveRT timing.

Bound and slew targets, then restore unity when feedback stalls.

Withdraw feedback after the watchdog makes fallback safe.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
bf7c76c8db [idd] audio: stop paused streams after playback
Keep initial playback prewarming, but announce STOP when a stream that
has already run enters PAUSE or ACQUIRE. Restart it when RUN returns.

Keep RUN history across owner changes so a paused stream is not
mistaken for a new prewarm generation.

Only announce capture while it is running. Derive active status flags
from the stream generations successfully announced to the client.
2026-11-06 14:34:25 +11:00
Geoffrey McRae
c162d760a1 [idd] audio: configure kernel driver debugging
Persist hardware-ID installation for the LGAudio WDK project and
enable deployment in every existing solution configuration.

This allows LGAudio to run as the kernel-debugger startup project.
2026-11-06 14:34:25 +11:00