Add streaming: browser clients for volumetric adaptive streaming - #49
Merged
Merged
Conversation
A sibling of reconstruction/, holding the client side rather than the methods. system/ClientCore is platform-free streaming logic — segment loop, MCKP ABR, bandwidth estimator — shared by a Node and a browser client behind one ClientPlatform contract. system/WebClient has five pages: our adaptive mesh system, ViVo and NAVA point clouds over a WebSocket-to-TCP bridge, Vega splats and NeVo panels. Copied from the 4DVideoStreaming research repo, so the ladder solver, the baseline servers and the corpora still live there; see the README.
Drop system/Client, which held nothing but a captured viewpoint fixture, and move that under tests/fixtures; test_camera_pose now looks in both places so one file works here and in the research repo. Remove the unreferenced manifest.mpd.json that rode along with the server directory. Rewrite the README around getting the demo up and adding a method, instead of describing the layout.
This was referenced Sep 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds
open4d/streaming, a sibling ofopen4d/reconstruction: that holds themethods, this holds the clients that deliver and play them.
Five systems on one page, side by side — our adaptive textured-mesh system,
ViVo and NAVA point clouds, Vega splats, NeVo panels. Three of the five adapt;
the chooser says which, because a fixed-quality player and an adaptive one look
identical on a fast link.
What is in it
system/ClientCore— platform-free streaming logic (segment loop, MCKP ABR,bandwidth estimation, metrics) behind a seven-capability
ClientPlatformcontract, so a Node client and a browser client run the same code. A
desktop/browser difference is then a real difference in the system under
test, not a difference between two hand-written clients.
system/WebClient— five pages, the chooser, and a WebSocket↔TCP bridge forthe point-cloud baselines, which serve over raw TCP a browser cannot open.
system/Server— publishes the per-segment bitrate ladder and serves media.tile_ladder.py— lets ViVo and NAVA serve prepared Draco tiles without theRGB-D source they were derived from. It refuses to fabricate the capture rig
it does not have, rather than returning plausible calibration.
Scope and caveats
Not runnable from this repo alone. The ladder solver, the baseline servers
and the encoded corpora stay in the research repo;
streaming/README.mdsaysso up front rather than letting someone discover it by running it.
Vendored, not a submodule, matching how
reconstruction/holds its methods.PROVENANCErecords the source commit andscripts/check-sync.shreportswhether the two copies have drifted (exit 1 on drift, 2 if it cannot check).
Tests: 292 of 294 pass standalone. The other two cross-check the JavaScript
decoders against the authoritative Python implementations byte for byte — the
check you lose if the two are allowed to drift — so they need the research repo
on
PYTHONPATH. The exact invocation is in the README.This branch is scoped to the streaming addition only: 87 files, all under
open4d/streaming/. It is cut frommain, not fromstreaming-abstractions,which carries 49 unrelated commits.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.