feat(video+desktop): camera capture, video UI, E2E AEAD wiring, test fixes
Blockers 4 & 5: browser getUserMedia → JPEG IPC → Rust I420 pipeline; remote video strip renders decoded frames via canvas; EncryptingTransport wraps QuinnTransport so WZP AEAD is applied to all media (C2 fix). Test fixes: HandshakeResult.session destructuring across relay/client/crypto integration tests; video_codecs field added to all CallOffer/CallAnswer structs; wzp-video pipeline_roundtrip integration tests added. PRD docs: five Kimi-ready specs for E2E encryption, Android NDK 0.9 migration, quality upgrade flow, wire-format hardening, and clippy debt. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -84,6 +84,9 @@
|
||||
<button id="vd-spk-btn" class="vd-btn" title="Speaker (s)">
|
||||
<span id="vd-spk-icon">Spk</span>
|
||||
</button>
|
||||
<button id="vd-cam-btn" class="vd-btn" title="Camera (v)">
|
||||
<span id="vd-cam-icon">Cam</span>
|
||||
</button>
|
||||
<button id="vd-end-btn" class="vd-btn vd-end" title="Leave voice (q)">
|
||||
<span>End</span>
|
||||
</button>
|
||||
@@ -98,6 +101,11 @@
|
||||
</div>
|
||||
</div>
|
||||
<div id="vd-stats" class="vd-stats"></div>
|
||||
<!-- Video strip: remote (canvas) + local preview (video element) -->
|
||||
<div id="vd-video-strip" class="vd-video-strip hidden">
|
||||
<canvas id="vd-remote-video" class="vd-video-tile" width="320" height="180"></canvas>
|
||||
<video id="vd-local-video" class="vd-video-tile" autoplay muted playsinline></video>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user