Merge main into dev#1750
Merged
Merged
Conversation
…1746) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
Brings the FLV (Flash Video / RTMP) container support and the moq-relay /health liveness-probe change from main into dev. Conflict resolution adapts the new FLV importer/exporter (written against main's anyhow-based moq-mux API) to dev's refactored APIs: - moq-mux's custom crate::Error type: FLV's anyhow-returning decoder arms go through .map_err(Into::into), matching the ts dispatch. - Frame now carries a duration field; FLV frames set duration: None. - TrackProducer.name is private: use .name(); unique_track takes a TrackInfo (Legacy tracks declare the microsecond timescale). - The catalog consumer is now generic (crate::catalog::Consumer<E>) and async; FLV export mirrors the ts export structure. - HLS moved to the moq_hls crate on dev, so moq-cli imports flv from moq_mux::container and hls from moq_hls.
kixelated
enabled auto-merge (squash)
June 16, 2026 03:06
The dynamic_track_request_can_publish_media test called the now-async subscribe_catalog/subscribe_media without .await, so moq-ffi's test build failed (a pre-existing breakage on dev that this merge inherits). Add the missing .await at both call sites, matching every other call site in the file.
kixelated
disabled auto-merge
June 16, 2026 03:28
3 tasks
kixelated
added a commit
that referenced
this pull request
Jun 17, 2026
Resolve conflicts in favor of dev's refactored APIs, since dev's implementations supersede main's API-preserving workarounds: - moq-mux FLV + moq-cli + moq-mux import: keep dev's async catalog Consumer and crate::Error style (dev already had main's FLV content from the earlier #1750 merge). - moq-json: drop main's cloned-consumer test; dev intentionally removed Consumer: Clone and renamed TrackConsumer -> TrackSubscriber. - Cargo.toml/lock: take main's release version bumps (kio 0.4, moq-audio 0.0.4, moq-json 0.0.3, moq-video 0.0.4), keep dev-only crates (moq-hls, moq-vaapi) and dev's newer qmux 0.1.3. - JS: keep dev's net-layer fan-out + TrackRequest custom tracks; drop main's js/hang catalog Producer/Consumer and fan-out-in-Json.Producer reimplementations (js/json, js/publish, js/watch broadcast). - video: merge keeps both dev's maxPixels and main's maxScale. - py/go/docs: keep dev's wrapper layout; accept main's go IsAuthError helper and moq-relay 0.12.10 changelog entry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Merges
mainintodev, bringing two commits that landed onmainafter the last sync:moq-mux(Add FLV (Flash Video / RTMP) container support to moq-mux #1745)moq-relay/healthplain liveness probe, droppingsysinfo(feat(moq-relay): make /health a plain liveness probe, drop sysinfo #1746)Conflicts and how they were resolved
Two files conflicted. The substantive work was adapting the new FLV importer/exporter (authored against
main's anyhow-basedmoq-muxAPI) todev's refactored APIs:rs/moq-mux/src/import.rs+rs/moq-mux/src/container/flv/*—devgavemoq-muxa customcrate::Errortype instead ofanyhow. The FLV decoder methods still returnanyhow::Result, andcrate::ErrorhasFrom<anyhow::Error>, so the FLV dispatch arms convert with.map_err(Into::into)exactly like thetsarms. Also adapted to otherdevchanges:Framegained adurationfield → FLV frames setduration: None.TrackProducer::nameis now a private field exposed via.name();unique_tracknow takes aTrackInfo(Legacy tracks declare the microsecond timescale, matching the other Legacy importers).crate::catalog::Consumer<E>, default()); FLV export mirrors thetsexport structure (Streamtrait import,awaited constructor).dev's test idioms (BroadcastInfo::new().produce(),consumer.track(&name).subscribe(None).await).rs/moq-cli/src/publish.rs—devmoved HLS into themoq_hlscrate whilemainadded FLV undermoq_mux::container. Merged sohlscomes frommoq_hlsandflv/fmp4/tsfrommoq_mux::container; fixed a semantic merge where the FLV match arm returned a barePublishDecoderinstead of aSource::Stream(...). Added theFlvvariant to theformat_codecmatch insubscribe.rs.Follow-up fix in this PR
CI (
just check) surfaced a pre-existing test-compile failure ondev:rs/moq-ffi/src/test.rs'sdynamic_track_request_can_publish_mediacalled the now-asyncsubscribe_catalog/subscribe_mediawithout.await(every other call site in the file already awaits). Since the merge inherits it and it blocks CI, this PR adds the two missing.awaits. Verified by compilingorigin/devin a clean worktree that the breakage predates this merge.Test plan
cargo check -p moq-mux -p moq-cli(clean)cargo check -p moq-ffi --tests(clean after the.awaitfix)cargo test -p moq-mux flv— 7/7 passcargo clippy -p moq-mux -p moq-cli --all-targets(clean)moq-gstfails to build in my local environment due to a missing systemgstreamerlib (unrelated to this change); CI builds it under Nix.(Written by Claude)