Skip to content

feat: adapt generated camera values to hosted video - #4707

Closed
TomCC7 wants to merge 1 commit into
cc/feat/cdr-hosted-armfrom
cc/feat/cdr-hosted-camera
Closed

TomCC7 wants to merge 1 commit into
cc/feat/cdr-hosted-armfrom
cc/feat/cdr-hosted-camera

Conversation

@TomCC7

@TomCC7 TomCC7 commented Oct 20, 2026

Copy link
Copy Markdown
Member

Hosted camera mux inputs/outputs and all four hosted blueprint video bindings now use generated Image values. Existing camera selection, FPS cap, crop/resize, latency-strip and error-drop paths use external pixel helpers. WebRTC video remains RTP; its media adapter accepts generated values without putting viewer/media methods on message classes.

Parent: #4706. Message Encoding Refactor

Single-camera transformations copy and retain the exact source header; a new multicamera composite gets its own camera_mux header. Mixed RGB/BGR tiles are converted to the declared output encoding to preserve visible colors. Incompatible channel layouts remain rejected. Existing internal legacy image helpers remain accepted at the media boundary during dependency retirement; this is not a wire decoder fallback.

Changes Files Added Removed
Mux, media adapter and canonical blueprint bindings 3 56 31
Preserved behavior and end-to-end encoding tests 2 221 55
Camera contract and copyable manual checks 1 20 0
Installed-wheel CI 1 4 0

Manual offline acceptance (no camera, window, broker or robot):

DIMOS_TRANSPORT=lcm LCM_DEFAULT_URL=memq:// uv run pytest --noconftest --import-mode=importlib -o addopts='' -q dimos/teleop/hosted/test_camera_mux.py dimos/protocol/pubsub/impl/webrtc/providers/test_video_track.py

The integration test runs actual generated CDR encode/decode -> mux output port -> WebRTCVideoTransport -> actual CameraVideoTrack -> actual software H264 encoder. Only the external provider is mocked. Assertions cover RGB pixels, odd-dimension libx264 safety, exact17s+1ns source metadata, unchanged input, no provider connection attempt and encoded payloads. Other cases retain camera-switch/FPS/error behavior and test 16-bit display conversion, row padding, bad-frame recovery and all four blueprint map identities.

Validation: 29 source +29 isolated installed-wheel checks, strict typing across3 production files, configured scoped hooks pass except unavailable Nix. Wheel SHA256 674ac290db953dc1acaecf01afe4ba6d0c538dcf8c43d890dc3772ed905a0837. Fixtures now construct real mux modules and own cleanup rather than bypassing framework initialization.

Hosted Go2 typed commands/map/stats, teleop recording and other remaining graphs are still open; complete legacy dependency retirement is not claimed. Live broker negotiation, external operator changes and human/device acceptance are outside these offline tests. No CI polling, hardware, release, merge or history rewrite.

@TomCC7 TomCC7 closed this Oct 20, 2026
@TomCC7
TomCC7 deleted the cc/feat/cdr-hosted-camera branch October 20, 2026 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant