mirror of
https://github.com/yattee/yattee.git
synced 2026-08-05 23:01:28 +00:00
155a5a48a0def939ea747eb4e38962488308e2b3
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.
Yattee 2 is in the works! A new version of the app is being built with a refreshed experience. It pairs with the new Yattee Server — a self-hosted backend powered by yt-dlp that supports 1000+ sites. Join the TestFlight beta to try early builds, and check the new documentation site at docs.yattee.stream for guides, roadmap and changelog.
Features
- Native user interface built with SwiftUI with customization settings
- Player queue and history
- Player component with custom controls, gestures and support for 4K playback
- Fullscreen, Picture in Picture and background audio playback
- SponsorBlock, configurable categories to skip
License
Yattee and its components is shared on AGPL v3 license.
Languages
Swift
96.1%
Ruby
3.4%
C
0.4%
Shell
0.1%
