Skip to content

mpv-ios v0.1.1

Choose a tag to compare

@github-actions github-actions released this 12 Sep 09:44
· 16 commits to main since this release

Prebuilt libmpv XCFramework and MPVKit Swift Package for iOS.

Assets:

  • Libmpv.xcframework.zip — binary framework only
  • MPVKit-v0.1.1.zip — full Swift Package (framework included)
  • checksum.txt — SHA-256 checksum for binaryTarget(url:checksum:) in a remote Package.swift

Added

  • Touch gesture support in mpv-ios-player, ported from mpv-android's
    TouchGestures.kt: swipe-to-seek, swipe-to-adjust-volume,
    swipe-to-adjust-brightness, and tap gestures (left/right fixed-seek,
    center play/pause), plus the tap-to-toggle-controls fallback for plain
    taps that don't trigger a gesture. New reusable MPVTouchGestures
    headless gesture recognizer in MPVKit (no UIKit/SwiftUI dependency),
    wired into MPVPlayerView/PlayerViewModel (docs/RESEARCH.md #26).
  • Control Center/lock-screen media controls and Picture in Picture support,
    with MediaSessionManager, PictureInPictureRenderer,
    PictureInPictureCoordinator, and the required iOS background/rendering
    integration (docs/RESEARCH.md #27).
  • Playlist management with loading, append, navigation, removal, movement,
    clearing, shuffling, playlist UI, and Control Center next/previous-track
    commands, using per-entry property reads and explicit refresh after
    playlist-move (docs/RESEARCH.md #28).
  • Runtime hardware/software decoder selection with active-decoder
    observation and a decoder picker integrated into the track-selection UI
    (docs/RESEARCH.md #29).
  • Subtitle styling controls for delay, scale, position, text color, and
    background color through a dedicated SubtitleStyleSheet (docs/RESEARCH.md #30).
  • Video scaling and interpolation controls covering spatial/chroma/downscale/
    temporal scaling, interpolation, aspect mode, zoom, rotation, panscan, and
    unscaled-video behavior through a dedicated VideoSettingsSheet
    (docs/RESEARCH.md #31).
  • Persistent playback-position saving and removal using mpv's built-in
    watch-later mechanism, triggered on stop and app backgrounding
    (docs/RESEARCH.md #32).
  • A playback statistics overlay showing codec, resolution, FPS, hardware
    decoder, bitrate, A/V sync, dropped frames, and cache state, with periodic
    updates while visible (docs/RESEARCH.md #33).
  • Orientation controls with auto, landscape, portrait, and unlocked modes,
    including tap-to-toggle and long-press selection backed by a new
    AppDelegate orientation controller (docs/RESEARCH.md #34).

Fixed

  • MPVPlayer.swift: loadFile(_:mode:) was declared twice in the same
    MPVCore extension (an exact duplicate introduced when playlist
    support was added), causing an "invalid redeclaration" compile error.
    Removed the duplicate, kept the more fully-commented version under the
    "Playlist" section (docs/RESEARCH.md #35).
  • MPVPlayerView.swift: the drag-gesture handler called
    touchGestures.touchMoved(at:), but MPVTouchGestures declares it as
    touchMoved(to:), causing an "incorrect argument label" compile error.
    Fixed the call site to use to: (docs/RESEARCH.md #36).

Dependency versions pinned at this release:

Dependency Version
lua 5.2.4
unibreak 7.0
harfbuzz 14.4.0
fribidi 1.0.16
freetype 2.14.3
mbedtls 3.6.5
libxml2 2.15.4
iOS minimum target 13.0
mpv (git ref) master
ffmpeg (git ref) master
dav1d (git ref) master
libass (git ref) master
libplacebo (git ref) master

See docs/RESEARCH.md for the full build/porting
log, and README.md for integration steps.