hang: cross-broadcast track references in renditions#1371
hang: cross-broadcast track references in renditions#1371
Conversation
Add an optional `broadcast` field on video/audio renditions that points
at the broadcast publishing the track, expressed as a relative path
("../source", etc.). Lets a worker author a downstream catalog that
sidecars unchanged renditions against an upstream broadcast without
republishing the bytes. Watchers resolve the field against the catalog
broadcast's path and subscribe on the same connection.
- moq-lite: new `PathRelative` type and `Path::resolve` for `..`-aware
resolution, with full unit coverage.
- @moq/hang: mirror `resolveBroadcast` helper for the browser side.
- @moq/watch: `Broadcast.trackBroadcast` looks up the override broadcast
with lifetime tied to the calling Effect; audio/video decoder + MSE
backends use it.
- rs/hang/examples/subscribe.rs: demonstrate consumer-side resolution
via `OriginConsumer::announced_broadcast`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (23)
WalkthroughThis change adds optional broadcast reference support to audio and video track configurations. A new optional 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
✨ Simplify code
Tip 💬 Introducing [Slack Agent](https://www.coderabbit.ai/agent): Turn conversations into code.Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.
Built for teams:
One agent for your entire SDLC. Right inside Slack. 👉 Get your free trial and get 200 agent minutes per Slack user (a $50 value). 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. Review rate limit: 7/8 reviews remaining, refill in 7 minutes and 30 seconds.Comment |
Summary
broadcastfield on video/audio rendition configs (e.g."../source") so a downstream catalog can reference tracks published in another broadcast without republishing bytes.PathRelativetype +Path::resolveinmoq-lite(Rust) with full unit coverage; mirrorresolveBroadcasthelper for@moq/hang.@moq/watchBroadcast.trackBroadcast(effect, configBroadcast)looks up the override broadcast on the same connection; audio/video decoder + MSE backends honor it. The Rustsubscribeexample demonstrates the consumer flow viaOriginConsumer::announced_broadcast.Test plan
cargo test --all-targets(incl. newPathRelative/resolvetests + serde round-trip incatalog::root)bun run --filter='*' testjust checkbroadcast: "../source", watch via@moq/watchand confirm the watcher subscribes against the source broadcast🤖 Generated with Claude Code