Skip to content

Recording (macOS): pin the keyframe interval and count dropped frames #937

Description

@EtienneLescot

Part of #920 (ranks 17 and 18). Effort S, risk low.

Problem

  • The keyframe interval is left to VideoToolbox (ScreenCaptureRecorder.swift sets no AVVideoMaxKeyFrameIntervalKey). The editor's scrub cost is the GOP length; Windows uses 1 s and Linux 0.5 s.
  • Frames the writer input refuses (isReadyForMoreMediaData false or append failing) are dropped without a count, so no macOS lever can be measured.

Proposal

  • Pin the keyframe interval (1 s, like Windows) with AVVideoMaxKeyFrameIntervalKey and AVVideoMaxKeyFrameIntervalDurationKey.
  • Count dropped frames and report them in the helper's stop event.

Verify

  • Swift unit test where the logic is pure (CI swift-macos-helper).
  • On a Mac: ffprobe -show_entries packet=flags shows a keyframe every second; the stop event reports the drop count.

Activity

  1. added
    status: fixed in mainWork is merged into main but may not be in a downloadable release yet.
    status: pending releaseMerged change is waiting for a packaged desktop release.
    on Sep 30, 2026
  2. added this to the Next Release milestone on Sep 30, 2026
  3. github-actions commented on Sep 30, 2026

    @github-actions
    Contributor

    Fixed by #938 and merged into main.

    This change is assigned to the Next Release release milestone and is not necessarily available in the latest downloadable desktop release yet. It is currently marked as status: pending release until a packaged release containing it is published.

  4. EtienneLescot commented on Sep 30, 2026

    @EtienneLescot
    CollaboratorAuthor

    Moved into v2.0.0 as part of the pre-release cut.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requeststatus: fixed in mainWork is merged into main but may not be in a downloadable release yet.status: pending releaseMerged change is waiting for a packaged desktop release.

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions