Conversation
Summary of ChangesHello @jpbusta10, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly expands the project's documentation by introducing a new VitePress-based site, offering comprehensive guides and examples for both Rust and TypeScript libraries. A major focus has been placed on enhancing CMAF/fMP4 support across the Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request primarily focuses on a major overhaul of the project's documentation, migrating it to VitePress. This involved adding new configuration files (.editorconfig, biome.jsonc, deno.lock, doc/.gitignore, doc/.vitepress/config.ts, doc/.vitepress/theme/custom.css, doc/.vitepress/theme/index.js, doc/bun.lock, doc/package.json, doc/public/icon.svg, doc/public/logo.svg, doc/worker.js, doc/wrangler.jsonc) and creating numerous new documentation pages covering architecture, authentication, deployment, core concepts, Rust and TypeScript libraries, examples, and Web Components. The documentation also saw updates to internal links to reflect the new structure. Concurrently, the project's media handling logic was enhanced to support CMAF/fMP4 fragments via Media Source Extensions (MSE) in the @moq/hang TypeScript library, introducing new MSE-specific audio and video sources, MIME type utilities, and passthrough mode for HLS ingestion in the Rust hang library. This involved changes to js/hang/src/container/codec.ts, js/hang/src/frame.ts, js/hang/src/util/mime.ts, js/hang/src/watch/audio/emitter.ts, js/hang/src/watch/audio/source-mse.ts, js/hang/src/watch/audio/source.ts, js/hang/src/watch/video/source-mse.ts, js/hang/src/watch/video/source.ts, rs/hang-cli/src/publish.rs, rs/hang/src/catalog/audio/mod.rs, rs/hang/src/catalog/container.rs, rs/hang/src/catalog/mod.rs, rs/hang/src/catalog/root.rs, rs/hang/src/catalog/video/mod.rs, rs/hang/src/error.rs, rs/hang/src/import/aac.rs, rs/hang/src/import/avc3.rs, rs/hang/src/import/decoder.rs, rs/hang/src/import/fmp4.rs, rs/hang/src/import/hls.rs, rs/hang/src/model/track.rs. Additionally, the strum dependency was removed from Cargo.lock and rs/hang/Cargo.toml, and server-side TLS certificate handling was improved in rs/hang-cli/src/server.rs, rs/moq-native/src/server.rs, rs/moq-relay/src/main.rs, rs/moq-relay/src/web.rs. Review comments highlighted several broken or outdated links in the new documentation, a TODO to remove ignoreDeadLinks: true in VitePress config, and suggested a more robust check for buffered media ranges in the MSE implementation.
Co-authored-by: Emil Santurio <emilsas@gmail.com>
Add passthrough mode for CMAF/HLS import and MSE playback support
This PR adds comprehensive CMAF/fMP4 support with passthrough mode for ingestion and Media Source Extensions (MSE) for efficient browser playback.
Changes
Rust/CLI Side
--passthroughflag tohang publish hlscommandjust pub-hlscommand to support passthrough mode via optional parameterTypeScript/Browser Side
SourceMSEclass for both audio and video tracksfmp4, playback automatically uses MSE instead of WebCodecsTechnical Details
Passthrough Mode:
The passthrough flag enables transport of complete CMAF fragments without re-encoding or decomposing them. This is particularly useful when you want to preserve the original CMAF structure.
MSE Implementation:
MediaSourceAPI for CMAF/fMP4 playbackUsage
Publish HLS with passthrough mode
just pub-hls bbb passthrough
Publish HLS without passthrough (default)
just pub-hls bbb
The browser will automatically use MSE for playback when the container is
fmp4, providing more efficient decoding and lower latency compared to WebCodecs for CMAF content.