Skip to content

refactor(moq-video)!: rename Rate to FrameRate - #6653

Merged
kixelated merged 4 commits into
mainfrom
quest/m1/api-audit/frame-rate
Oct 25, 2026
Merged

kixelated merged 4 commits into
mainfrom
quest/m1/api-audit/frame-rate

Conversation

@kixelated

@kixelated kixelated commented Oct 24, 2026 •

Copy link
Copy Markdown
Collaborator

Completes quest/m1/api-audit/frame-rate.md, a child of the api-audit epic.

Summary

moq_video::Rate is now moq_video::FrameRate, the name the bindings already use (moq_video_frame_rate in C, VideoFrameRate in C++, FrameRate in the Python, Swift, Kotlin, Go, and Dart wrappers). RateError is FrameRateError alongside it. Every use in moq-video, moq-transcode, moq-cli, moq-boy, moq-c, moq-ffi, and the CARLA bridge demo is updated; moq_net::bandwidth::Rate and moq_shaper::Rate are untouched.

The quest file and its link in the epic README are deleted.

Public API and wire impact

  • moq-video (published): breaking rename Rate -> FrameRate, RateError -> FrameRateError. Methods, error variants, and MAX_FRAMES_PER_SECOND are unchanged. MIGRATE.md has an entry under ## Unreleased.
  • moq-transcode: active::Rendition::framerate() and Error::Framerate now name moq_video::FrameRate/FrameRateError; same types, so no separate migration beyond the moq-video rename.
  • moq-ffi, moq-c, and every binding: no change. The exported FFI and C ABI already used the FrameRate name.
  • JS: no frame rate type exists (the catalog carries a plain number), so nothing to mirror.
  • Wire: none.

Decisions made without asking

  • Renamed RateError to FrameRateError too, so the error carries the same name as its type.
  • Renamed the private module file rate.rs to frame_rate.rs to match the type, like size.rs holds Size.
  • Added the MIGRATE entry to moq-video only: moq-transcode's own API did not change shape.

Checks

  • just fix
  • just check
  • quest check
  • just test interop --all: every case passed except one rust -> js-native-node opus timestamp gap, the known load flake tracked by quest/m1/test-flakes-2/interop-timestamp-gap.md. This diff is a type rename with no runtime change, and the moq-ffi diff touches no exported FFI item or generated binding.

🤖 Generated with Claude Code

(Written by Claude Opus 5.5)

kixelated and others added 2 commits October 24, 2026 09:28
The bindings already call the type FrameRate (moq_video_frame_rate in C,
VideoFrameRate in C++, FrameRate in every wrapper), so the core type takes
the same name. RateError becomes FrameRateError alongside it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kixelated kixelated changed the title One frame rate name refactor(moq-video)!: rename Rate to FrameRate Oct 24, 2026
@kixelated
kixelated marked this pull request as ready for review October 24, 2026 17:00
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-25T04:54:45.990455Z 4273e51 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 6 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: e4fc65e2-e2f5-4d9e-8259-56fc00758f7e
Commits

Reviewing files that changed from the base of the PR and between 1a2b732 and 4273e51.

Files selected for processing: 50
  • demo/carla/bridge/src/stream.rs
  • quest/m1/api-audit/README.md
  • quest/m1/api-audit/frame-rate.md
  • rs/moq-boy/src/video.rs
  • rs/moq-c/src/test.rs
  • rs/moq-c/src/video.rs
  • rs/moq-cli/src/play/media.rs
  • rs/moq-cli/src/publish.rs
  • rs/moq-ffi/src/video.rs
  • rs/moq-transcode/src/active.rs
  • rs/moq-transcode/src/catalog.rs
  • rs/moq-transcode/src/error.rs
  • rs/moq-transcode/src/lib.rs
  • rs/moq-transcode/src/rung.rs
  • rs/moq-video/MIGRATE.md
  • rs/moq-video/examples/d3d11-resize-probe.rs
  • rs/moq-video/examples/encode-presets.rs
  • rs/moq-video/src/capture/mediafoundation.rs
  • rs/moq-video/src/capture/mod.rs
  • rs/moq-video/src/capture/mode.rs
  • rs/moq-video/src/capture/pipewire.rs
  • rs/moq-video/src/capture/pipewire/camera.rs
  • rs/moq-video/src/capture/pump.rs
  • rs/moq-video/src/capture/v4l2.rs
  • rs/moq-video/src/capture/wgc.rs
  • rs/moq-video/src/capture/wgc/native.rs
  • rs/moq-video/src/capture/x11.rs
  • rs/moq-video/src/decode/backend/mediacodec.rs
  • rs/moq-video/src/decode/backend/nvdec.rs
  • rs/moq-video/src/decode/backend/vaapi.rs
  • rs/moq-video/src/decode/consumer.rs
  • rs/moq-video/src/decode/decoder.rs
  • rs/moq-video/src/decode/vui.rs
  • rs/moq-video/src/encode/backend/mediacodec.rs
  • rs/moq-video/src/encode/backend/mediafoundation.rs
  • rs/moq-video/src/encode/backend/mod.rs
  • rs/moq-video/src/encode/backend/nvenc.rs
  • rs/moq-video/src/encode/backend/openh264.rs
  • rs/moq-video/src/encode/backend/v4l2.rs
  • rs/moq-video/src/encode/backend/vaapi.rs
  • rs/moq-video/src/encode/backend/videotoolbox.rs
  • rs/moq-video/src/encode/encoder.rs
  • rs/moq-video/src/encode/producer.rs
  • rs/moq-video/src/encode/sink.rs
  • rs/moq-video/src/frame/cuda_test.rs
  • rs/moq-video/src/frame_rate.rs
  • rs/moq-video/src/lib.rs
  • rs/moq-video/src/render/renderer.rs
  • rs/moq-video/src/size.rs
  • rs/moq-video/src/v4l2.rs

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 4a221cf1-1409-474a-afa0-d44c157de0b0
Commits

Reviewing files that changed from the base of the PR and between 89492e3 and 1a2b732.

Files selected for processing: 50
  • demo/carla/bridge/src/stream.rs
  • quest/m1/api-audit/README.md
  • quest/m1/api-audit/frame-rate.md
  • rs/moq-boy/src/video.rs
  • rs/moq-c/src/test.rs
  • rs/moq-c/src/video.rs
  • rs/moq-cli/src/play/media.rs
  • rs/moq-cli/src/publish.rs
  • rs/moq-ffi/src/video.rs
  • rs/moq-transcode/src/active.rs
  • rs/moq-transcode/src/catalog.rs
  • rs/moq-transcode/src/error.rs
  • rs/moq-transcode/src/lib.rs
  • rs/moq-transcode/src/rung.rs
  • rs/moq-video/MIGRATE.md
  • rs/moq-video/examples/d3d11-resize-probe.rs
  • rs/moq-video/examples/encode-presets.rs
  • rs/moq-video/src/capture/mediafoundation.rs
  • rs/moq-video/src/capture/mod.rs
  • rs/moq-video/src/capture/mode.rs
  • rs/moq-video/src/capture/pipewire.rs
  • rs/moq-video/src/capture/pipewire/camera.rs
  • rs/moq-video/src/capture/pump.rs
  • rs/moq-video/src/capture/v4l2.rs
  • rs/moq-video/src/capture/wgc.rs
  • rs/moq-video/src/capture/wgc/native.rs
  • rs/moq-video/src/capture/x11.rs
  • rs/moq-video/src/decode/backend/mediacodec.rs
  • rs/moq-video/src/decode/backend/nvdec.rs
  • rs/moq-video/src/decode/backend/vaapi.rs
  • rs/moq-video/src/decode/consumer.rs
  • rs/moq-video/src/decode/decoder.rs
  • rs/moq-video/src/decode/vui.rs
  • rs/moq-video/src/encode/backend/mediacodec.rs
  • rs/moq-video/src/encode/backend/mediafoundation.rs
  • rs/moq-video/src/encode/backend/mod.rs
  • rs/moq-video/src/encode/backend/nvenc.rs
  • rs/moq-video/src/encode/backend/openh264.rs
  • rs/moq-video/src/encode/backend/v4l2.rs
  • rs/moq-video/src/encode/backend/vaapi.rs
  • rs/moq-video/src/encode/backend/videotoolbox.rs
  • rs/moq-video/src/encode/encoder.rs
  • rs/moq-video/src/encode/producer.rs
  • rs/moq-video/src/encode/sink.rs
  • rs/moq-video/src/frame/cuda_test.rs
  • rs/moq-video/src/frame_rate.rs
  • rs/moq-video/src/lib.rs
  • rs/moq-video/src/render/renderer.rs
  • rs/moq-video/src/size.rs
  • rs/moq-video/src/v4l2.rs
Files with no reviewable changes: 2
  • quest/m1/api-audit/README.md
  • quest/m1/api-audit/frame-rate.md

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 1 remain after this review.

Walkthrough

The public Rust video API renames Rate and RateError to FrameRate and FrameRateError. Capture, encoding, decoding, transcoding, examples, and application callers now use the renamed types. The documented frame-rate validation, calculations, defaults, and selection behavior remain unchanged. The migration guide adds import-renaming instructions, and the audit note and checklist item for the rename are removed.

Priority: Low

Merge Risk: Minimal · up to 1a2b7

The rename appears ready to merge after normal checks; no actionable merge-blocking risk is identified.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 67.65% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 170 functions across 47 files. (1 skipped… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Title check Passed The title clearly and concisely describes the primary breaking change: renaming Rate to FrameRate in moq-video.
Description check Passed The description directly explains the type renames, affected components, API impact, migration guidance, and validation results. It is related to the changeset.
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 67.65% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 170 functions across 47 files. (1 skipped: 1 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

Finishing Touches
✨ Simplify code
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@kixelated

Copy link
Copy Markdown
Collaborator Author

@codex review

(Written by Claude Opus 5.5)

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

Reviewed commit: 7e73617802

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary for head 7e73617:

  • Maintainer approved the merge; Codex reviewed this head with no major findings and a thumbs-up.
  • Required checks pass; only the optional CodeQL Analyze (rust) was still running.
  • quest check --base origin/main passes; the PR deletes quest/m1/api-audit/frame-rate.md and its link.
  • Main has moved since the last merge into this branch; a local test merge is clean and adds no new uses of the old moq_video::Rate name.
  • No changes pushed during merge.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 24, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 24, 2026
@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary for head 4273e51:

  • Took over the stale quest:merge hold. The previous queue attempt failed only in check dart with "the moq_ffi build hook rebuilt moq-ffi", the known mbx low-disk flake tracked by quest/m0/ci/mbx-low-disk.md, not this diff.
  • Merged origin/main (no rebase). Conflicts: quest/m1/api-audit/README.md (main finished media-trim, this PR finishes frame-rate; both lines dropped) and rs/moq-video/src/encode/sink.rs (main's moq-dev/moq#6517 removed applied() and its tests; took main's side).
  • Grepped the repo, bindings, docs, and JS for new uses of moq_video::Rate/RateError from main: none. Remaining Rate hits are moq_net::bandwidth::Rate and moq_shaper::Rate.
  • just check and quest check pass; Codex 👍 on this head.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 25, 2026
Merged via the queue into main with commit c8b426b Oct 25, 2026
10 checks passed
@kixelated
kixelated deleted the quest/m1/api-audit/frame-rate branch October 25, 2026 05:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant