iOS invalidates VideoToolbox sessions when the app is backgrounded.
FFmpeg's generic reconfig path restarts the session, but for AV1 every
inter frame then errors until the next keyframe, so mpv counted 3
consecutive errors and permanently fell back to software decoding
(heat/battery drain). The previous app-side polling recovery worked but
each reinit caused a refresh seek (audio flush + time jump).
The fork release (yattee/MPVKit 1.0.1, mpv v0.41.0 / FFmpeg n8.1.2)
carries an FFmpeg patch that fixes this at the decoder layer: on
session-level failure it keeps outputting the last successfully decoded
frame instead of erroring, retries the session restart with a 30-frame
backoff while backgrounded, and resumes live decode at the next
keyframe. Audio never stops, no seek, hardware decoding recovers
transparently - matching H.264/HEVC behavior.
The app-side recovery machinery (runHwdecRecoveryCheck) is no longer
needed and has been removed.
With Atmos "Continuous Audio Output" enabled, some HDMI routes report
32 output channels, which mpv's audiounit AO cannot open - playback
stays silent while other (AVPlayer-based) apps work fine.
Update MPVKit to 0.41.0-n8.1.2, which builds mpv's avfoundation AO
(AVSampleBufferAudioRenderer, previously macOS-only) for iOS/tvOS
(mpvkit/MPVKit#73), and prefer it on tvOS via ao=avfoundation,audiounit
so mpv still falls back to audiounit if it fails to initialize. iOS and
macOS audio outputs are unchanged.
The MPVKit pin must be exactVersion: SwiftPM sorts the pre-release
identifier below 0.41.0, so a range starting at 0.41.0 never resolves
to it. Note this tag also bumps FFmpeg from 8.0 to n8.1.1.
New Release-DeveloperID configuration gates Sparkle behind a SPARKLE
compile flag so the App Store Release build stays Sparkle-free. Adds
SPUStandardUpdaterController wrapper, Check for Updates menu command,
Advanced Settings section with beta channel toggle, and a Ruby script
plus GitHub Actions job that signs each release and publishes the
appcast to gh-pages for consumption by Sparkle and Homebrew cask.
This commit implements a workaround for MPVKit shipping frameworks as
shallow bundles, which are incompatible with macOS Developer ID
distribution requirements.
Changes:
1. Raised macOS deployment target to 14.0
- Matches MPVKit's minimum requirement
- Previous: 11.0
- New: 14.0
2. Added Run Script phase to convert frameworks
- Converts MPVKit frameworks from shallow to versioned bundles
- Required for macOS Developer ID code signing
- Runs after framework embedding
- Converts all 28 MPVKit frameworks during build
3. Modified fastlane build process
- Build and archive without export
- Create PKG directly from archive
- Avoids extended attribute issues from export process
4. Pinned MPVKit to specific commit
- Commit: e7e914a70e943f0d4f050c9ede793af8f6e74ad7
- Ensures consistent framework structure
Known Issues:
- Some frameworks (Libplacebo, Libluajit) have signature issues after
conversion that still prevent successful notarization
- This is a workaround; the root issue should be fixed in MPVKit by
providing macOS-compatible versioned bundle frameworks
See minimal reproduction project at:
/tmp/MPVKit-Notarization-Issue/MPVKitNotarizationTest/
Related: MPVKit should provide macOS-specific XCFrameworks with
versioned bundles for proper Developer ID distribution support.
🤖 Generated with Claude Code (https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
This reverts commit 4d953b0871.
Dependecies issue:
[09:16:19]: ▸ local binary target 'Libshaderc_combined' does not contain expected binary artifact named 'Libshaderc_combined'local binary target 'Libplacebo' does not contain expected binary artifact named 'Libplacebo'2024-01-13 09:16:19.223 xcodebuild[5250:23030] Writing error result bundle to /var/folders/mm/pltwc2yj1jx192t6dzy9zsrr0000gn/T/ResultBundle_2024-13-01_09-16-0019.xcresult
[09:16:20]: ▸ fatalErrorxcodebuild: error: Could not resolve package dependencies:
[09:16:20]: ▸ local binary target 'Libshaderc_combined' does not contain expected binary artifact named 'Libshaderc_combined'
[09:16:20]: ▸ local binary target 'Libplacebo' does not contain expected binary artifact named 'Libplacebo'
[09:16:20]: ▸ fatalError