Repository navigation
build(ios): move MPVKit to 1.1.0-n9.0.2 - #78
Merged
Merged
Conversation
MPVKit 0.41.0 configured FFmpeg with --enable-nonfree. No nonfree library was enabled, but the flag alone made the FFmpeg libraries report their license as "nonfree and unredistributable". MPVKit 1.0.0 dropped the flag, and the libraries in this release report LGPL version 3 or later. 1.1.0-n9.0.2 is 1.0.0 with FFmpeg 9.0.2 in place of 8.1.2. FFmpeg 8.1 reuses an HTTP connection after asking the server to close it. When the server closes it without saying so in its reply, every seek fails and a .ts file ends before it starts. FFmpeg 9.0 has the upstream fixes.
MPVKit's libraries are static archives, so the linker puts them in the app's executable. The notices said each one was a framework in the app's Frameworks folder.
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
Three documentation references name nonexistent MPVKit 1.1.0 instead of the exact 1.1.0-n9.0.2 release.
0 open findings
What changed in this PR
Updates the iOS app to MPVKit 1.1.0-n9.0.2, incorporating FFmpeg 9.0.2 and corrected licensing information.
Changes:
- Updates Swift Package Manager references and lock metadata.
- Revises third-party licensing details.
- Updates iOS documentation, though several references omit the release suffix.
| File | Description |
|---|---|
THIRD_PARTY_NOTICES.md |
Updates FFmpeg, MPVKit, linking, and target details. |
docs/ios.md |
Updates the documented MPVKit version. |
apps/ios/DESIGN.md |
Revises dependency and linking documentation. |
apps/desktop/src-tauri/gen/apple/project.yml |
Pins the new MPVKit release. |
apps/desktop/src-tauri/gen/apple/max-video-player.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved |
Records the new tag and matching revision. |
apps/desktop/src-tauri/gen/apple/max-video-player.xcodeproj/project.pbxproj |
Updates the generated Xcode package requirement. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
MPVKit tags its releases as 1.1.0-n9.0.2, and there's no plain 1.1.0 tag, so the short name pointed nowhere.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves the iOS app from MPVKit 0.41.0 to 1.1.0-n9.0.2.
Why
MPVKit 0.41.0 configured FFmpeg with
--enable-nonfree. It didn't enable any nonfree library, but the flag alone makesavcodec_license()and the other license functions report "nonfree and unredistributable". That's the wrong thing to ship in an App Store build that relies on the LGPL. MPVKit 1.0.0 dropped the flag (mpvkit/MPVKit#78). In this build all seven FFmpeg libraries report "LGPL version 3 or later", and the app binary contains--enable-version3with no--enable-gplor--enable-nonfree.Why 1.1.0 and not 1.0.0
1.0.0 ships FFmpeg 8.1.2, and its HTTP client has a bug that stopped the test
.tsfile from playing. FFmpeg sendsConnection: closeon every request, but 8.1 added a "soft seek" that sends the next request on the same connection unless the server's reply also saidConnection: close. A server that closes the connection without saying so, such as Python'shttp.server, makes the seek fail with "End of file", and mpv gives up on the file. nginx, Apache, Go and Node echo the header, so most IPTV servers wouldn't hit it, but it's still a regression.FFmpeg fixed it on master in bd51105 and f87323a. Neither went into 8.1.3, and both are in 9.0.2. MPVKit 1.1.0-n9.0.2 is 1.0.0 with only FFmpeg changed, built with the same options.
1.0.0 also builds every library for iOS 15, so the linker warning about uavs3d needing 17.5 is gone. The app stays at 17.5.
Docs
THIRD_PARTY_NOTICES.mdnames FFmpeg 9.0.2 and MPVKit 1.1.0-n9.0.2. It also corrects an earlier mistake. MPVKit's libraries are static archives linked into the app's executable, not frameworks in theFrameworksfolder.docs/ios.mdandapps/ios/DESIGN.mdname the new version.Testing
In the iPhone 17 Pro simulator:
.ts, file.ts, HLS and HEVC.mkvtest channels all play..tsplays and seeks from a server that closes connections without saying so. That's the case that failed with 1.0.0.