Make VMESH the standalone format for all codecs - #60
Conversation
Carry native codec payloads in the Open4D V3C profile, preserve them through USDC round trips, and expose native sequence decoding. Add concise notebooks and regression coverage alongside the tested codec, I/O, and streaming fixes.
…o further_vmesh_testing # Conflicts: # open4d/webclients/system/Server/server.js
Replace private V3C carriage and retired compressed output types with validated VMESH profiles, explicit migration, and compressed USD interchange. Harden browser routes and codec numerical handling, and add regression and optional-dependency CI coverage.
|
Important Review skippedToo many files! This PR contains 138 files, which is 38 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (138)
You can disable this status message by setting the
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- Make OPEN4D_NATIVE_TIMEOUT opt-in so long native encodes are not killed, and report invalid values as CodecError. - Allow single-frame N4MC encodes and legacy .n4d migration again. - Enforce the NPZ/RLE decode size bound at encode time so the codec never writes artifacts it cannot read; size the RLE member bound for its worst case, vectorize the run-length check and open each frame archive once. - Keep can_decode a boolean probe via contains_codec, while codec inference still surfaces the specific damaged/archived/retired-wrapper diagnostic. - Align the Vega decode annotations and README with its NativeSequence result. - Detect native USD from layer metadata before a full open, so mesh USD is parsed once. - Use NEURAL_CODECS in is_mesh_profile, drop an unused import and document how stream() treats fps for timed sources. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
What changed
All twelve public compression methods now write standalone
.vmeshfiles with VMESH-owned framing, metadata and validated native payload profiles. Loading detects the embedded codec; older exports require explicit migration. Compressed USD interchange preserves the complete VMESH artifact through aVMESHprim.The change also fixes codec numerical regressions, validates malformed payloads before decoding, migrates browser frame delivery to VMESH, and hardens browser server paths and study sessions. CI now exercises the streamer/browser, native C# numerical contracts, and the full Python suite with research dependencies. Installed-wheel coverage includes a VMESH round trip and the public codec registry.
Verification
Local validation on macOS / Apple Silicon, Python 3.13:
python -m pytest -q: 834 passed, 71 skipped with available optional dependencies; clean development-only environment: 651 passed, 177 skipped.python -m pytest open4d/streamer/streamer_tests: 563 passed.node --test open4d/webclients/tests/*.js open4d/webclients/system/Server/test_*.js: 344 passed, 15 skipped; WebClient production build passed.pip check, I/O/CLI/VMESH/streaming smoke, benchmark smoke, source compilation, local documentation links and provenance checks passed.GitHub CI: all 26 jobs passed on
1809cbf(verified run). This includes Python 3.10–3.13, clean installations on Linux/macOS/Windows, the full research tier (869 passed, 36 conditional skips), all 563 streamer tests, 344 JavaScript passes / 15 skips, 28 native numerical passes, and 3 actual GIF-rendering tests. The isolated visualization suite also passes independently of test import order.Safety checklist
Remaining limitations
Fresh native V-DMC/Faster V-DMC dataset runs could not be repeated today: the codec host times out on SSH, and the local unmodified native source requires an x86 build configuration. CUDA, camera, external-dataset and upstream-reference-dependent tests remain conditional. Re-run the native dataset matrix when the codec host is reachable.
VMESH is a standalone custom format; MPEG interoperability is not claimed for the container. Native research decoding still requires trusted payloads and its configured runtime, as documented in
SECURITY.md. Publication remains blocked by the existing provenance ledger.