Fix #958: switch MPVKit to yattee fork with AV1 VideoToolbox session recovery

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.
This commit is contained in:
Arkadiusz Fal
2026-07-28 08:14:50 +02:00
parent c93b7388e9
commit 155a5a48a0
2 changed files with 12 additions and 12 deletions

View File

@@ -1218,6 +1218,14 @@
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
378CF2FF2EF21783002C1CD7 /* XCRemoteSwiftPackageReference "MPVKit" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/yattee/MPVKit.git";
requirement = {
kind = exactVersion;
version = 1.0.1;
};
};
370E71962F9A1A41000E04B2 /* XCRemoteSwiftPackageReference "Sparkle" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/sparkle-project/Sparkle";
@@ -1234,14 +1242,6 @@
minimumVersion = 12.8.0;
};
};
378CF2FF2EF21783002C1CD7 /* XCRemoteSwiftPackageReference "MPVKit" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/mpvkit/MPVKit.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 1.0.0;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */

View File

@@ -1,13 +1,13 @@
{
"originHash" : "263c985773143365961084fa2985b6cfc81ede4476036a7c65b223ed7ced8b32",
"originHash" : "3936a4172c132dff2ced455a1771e12f4759645440fa59d5b93f5a78b68d3ee4",
"pins" : [
{
"identity" : "mpvkit",
"kind" : "remoteSourceControl",
"location" : "https://github.com/mpvkit/MPVKit.git",
"location" : "https://github.com/yattee/MPVKit.git",
"state" : {
"revision" : "288527dffbc6d3e63cce147fc7b520c64a791603",
"version" : "1.0.0"
"revision" : "671d3484b00f438407564573a4e188631d81bc90",
"version" : "1.0.1"
}
},
{