Skip to content

Merge main into dev#1750

Merged
kixelated merged 4 commits into
devfrom
claude/merge-main-into-dev-cyin68
Jun 16, 2026
Merged

Merge main into dev#1750
kixelated merged 4 commits into
devfrom
claude/merge-main-into-dev-cyin68

Conversation

@kixelated

@kixelated kixelated commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Merges main into dev, bringing two commits that landed on main after the last sync:

Conflicts and how they were resolved

Two files conflicted. The substantive work was adapting the new FLV importer/exporter (authored against main's anyhow-based moq-mux API) to dev's refactored APIs:

  • rs/moq-mux/src/import.rs + rs/moq-mux/src/container/flv/*dev gave moq-mux a custom crate::Error type instead of anyhow. The FLV decoder methods still return anyhow::Result, and crate::Error has From<anyhow::Error>, so the FLV dispatch arms convert with .map_err(Into::into) exactly like the ts arms. Also adapted to other dev changes:
    • Frame gained a duration field → FLV frames set duration: None.
    • TrackProducer::name is now a private field exposed via .name(); unique_track now takes a TrackInfo (Legacy tracks declare the microsecond timescale, matching the other Legacy importers).
    • The catalog consumer is now generic and async (crate::catalog::Consumer<E>, default ()); FLV export mirrors the ts export structure (Stream trait import, awaited constructor).
    • FLV test files updated to dev's test idioms (BroadcastInfo::new().produce(), consumer.track(&name).subscribe(None).await).
  • rs/moq-cli/src/publish.rsdev moved HLS into the moq_hls crate while main added FLV under moq_mux::container. Merged so hls comes from moq_hls and flv/fmp4/ts from moq_mux::container; fixed a semantic merge where the FLV match arm returned a bare PublishDecoder instead of a Source::Stream(...). Added the Flv variant to the format_codec match in subscribe.rs.

Follow-up fix in this PR

CI (just check) surfaced a pre-existing test-compile failure on dev: rs/moq-ffi/src/test.rs's dynamic_track_request_can_publish_media called the now-async subscribe_catalog/subscribe_media without .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 compiling origin/dev in 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 .await fix)
  • cargo test -p moq-mux flv — 7/7 pass
  • cargo clippy -p moq-mux -p moq-cli --all-targets (clean)
  • No conflict markers remain anywhere in the tree

moq-gst fails to build in my local environment due to a missing system gstreamer lib (unrelated to this change); CI builds it under Nix.

(Written by Claude)

kixelated and others added 3 commits June 15, 2026 23:49
…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
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
kixelated disabled auto-merge June 16, 2026 03:28
@kixelated
kixelated merged commit c9b7d79 into dev Jun 16, 2026
1 check failed
@kixelated
kixelated deleted the claude/merge-main-into-dev-cyin68 branch June 16, 2026 03:28
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants