Repository navigation
Re-pin Android to 8.1.3.1 and move the umbrella to 8.1.3.1 - #11
Merged
Merged
Conversation
FFmpegKit.Android 8.1.3.1 moves Android to FFmpeg 8.1.3 and fixes a freeze: FFmpeg's SIGXCPU handler left Mono's threads suspended after a collection. Consumers of this umbrella only get that fix through the pin. iOS and Mac stay on FFmpeg 8.1.2, so one FFmpegVersion can no longer describe every platform. Per the maintainer's decision it now follows the newest FFmpeg any pin ships, and the revision restarts at 1. Rewrite the props comment and the agent rule that assumed all pins move together, and refresh the version examples in the docs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With Microsoft.Maui.Controls 9.0.30 the sample never draws its first frame on an iOS 26 simulator: the main thread spins in a UIKit layout loop under Shell's tab bar controller, before any page or FFmpeg code runs. The published 8.1.2.3 hangs the same way, so the gate on net9.0-ios18.0 could not pass whatever this release changes. 9.0.120, the newest 9.0.x, starts and converts. Only the sample moves; the package's own net9 Controls floor stays at 9.0.30. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
States the FFmpeg version per platform, because Android (8.1.3) and iOS and Mac (8.1.2) no longer share one, and carries the SIGXCPU freeze fix. Merging this note is the release. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟢 Approval recommended
No active review issues remain for the Android binding update and related sample, versioning, and release-documentation changes.
No open issues 🎉
What changed in this PR
Updates the FFmpegKit.Net umbrella to 8.1.3.1, bringing Android’s FFmpeg 8.1.3 update and freeze fix through the binding dependency. iOS and macOS remain on FFmpeg 8.1.2, with no public API changes. The added release note triggers release on merge.
Changes:
- Updates the exact Android binding pin and matching package-test expectation.
- Raises the sample’s net9 MAUI Controls dependency to
9.0.120to address the reported iOS 26 startup hang. - Documents independent platform versions and refreshes build examples and release notes.
| File | Description |
|---|---|
tests/FFmpegKit.Net.PackageTests/Packages.cs |
Updates the expected Android binding version. |
samples/FFmpegKit.Net.Sample/FFmpegKit.Net.Sample.csproj |
Raises net9 MAUI Controls and explains the workaround. |
README.md |
Clarifies how package versions reflect differing platform FFmpeg versions. |
docs/release-notes/8.1.3.1.md |
Adds platform versions, Android fixes and reported validation. |
docs/BUILD.md |
Refreshes package and device-test command examples. |
Directory.Build.props |
Sets umbrella version 8.1.3.1 and the Android binding pin. |
build/BuildNugets.sh |
Updates usage comments, including the Mac pin example. |
.github/copilot-instructions.md |
Aligns versioning guidance and examples with independent platform updates. |
Review effort: Balanced
This branch was successfully deployed
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.
Closes #10
Re-pins
FFmpegKit.Net.*.Androidfrom8.1.2.5to8.1.3.1, which moves Android to FFmpeg8.1.3and brings theSIGXCPUfreeze fix. iOS (8.1.2.3) and Mac (8.1.2.2) stay on FFmpeg8.1.2.As the maintainer decided on 2026-10-30, the umbrella becomes
8.1.3.1(FFmpegVersion8.1.3,FFmpegKitBindingRevision1), and the release note states the FFmpeg version per platform. Merging this PR is the release: it addsdocs/release-notes/8.1.3.1.md.API changes: none.
Worth checking in review
samples/FFmpegKit.Net.Sample: net9Microsoft.Maui.Controlsgoes from 9.0.30 to 9.0.120. This is outside the F2 brief and has its own commit. Under version-policy rule 3 it goes in this change, because thenet9.0-ios18.0sample gate cannot pass without it. On 9.0.30 the app never draws a frame on an iOS 26 simulator: the main thread spins in UIKit layout under-[UITabBarController _updateLayoutForStatusBarAndInterfaceOrientation], before any page or FFmpeg code runs. The published8.1.2.3hangs the same way, so this PR did not cause it. CI only builds the sample, so it never showed up. The package's own net9 Controls floor stays at 9.0.30..github/copilot-instructions.md: the rule "a new FFmpeg line changesFFmpegVersionand all three pins" no longer matches the decision above, so it is rewritten.Test report — FFmpegKit.Net 8.1.3.1-local.20261030153311
Toolchain: Xcode 26.0.1 for both bands, .NET SDK 9.0.320 and 10.0.403. Workloads: SDK 9 ios/macos 26.0.9783, android 35.0.105, maui 9.0.120; SDK 10 android 36.1.118, with
net10.0-ios26.0/net10.0-macos26.0built by the 26.0.11017 SDK packs. iOS simulator: iOS 26.0.1 (the CI line). Android emulator: API 35 arm64. net8 builds used an unprivileged pack root with the 8.0.33 Mono and AOT packs.origin/master,Fullonly[8.1.3.1], iOS[8.1.2.3], Mac[8.1.2.2]; licencesMIT AND LGPL-3.0-only/MIT AND GPL-3.0-onlyas expectedtests/FFmpegKit.Net.UnitTeststests/FFmpegKit.Net.PackageTestsFFMPEGKIT_E2E_DONE PASS passed=11 failed=0, 3 runs of 3;ffmpeg version n8.1.3FFMPEGKIT_E2E_DONE PASS passed=11 failed=0;ffmpeg version n8.1.3FFMPEGKIT_E2E_DONE PASS;ffmpeg version n8.1.2FFMPEGKIT_E2E_DONE PASS;ffmpeg version n8.1.2FFMPEGKIT_E2E_DONE PASS;ffmpeg version n8.1.2Success in 0.1s! … (108,521 / 100,870 / 27,731 bytes), one PID, no ANRGC.Collect()every second from a local test file: 104 collections, no freeze8.1.2.38.1.2.5and FFmpegn8.1.2: collections stop at #18, FFmpeg starts one second later, no result after 90 sSuccess(extra run, because the pin changed)8.1.2.3, see aboveSuccess in 0.1s! … (109,957 bytes),(104,435 bytes),Success in 0s! … (27,731 bytes)320x240, 3s, mpeg4, resizeSuccess in 0.1s! … (109,957 bytes)8.1.2.3binding; macOS by the host test, its only coveragenet10.0-androiddotnet new mauioutside the repo,FFmpegKit.Net.Full.Maui8.1.3-beta.11.26restored from nuget.org with Android8.1.3.1:Success in 0s! (46,623 bytes),ffmpeg version n8.1.3,IFFmpegKitinjected, 10 forced collections after FFmpeg, app alivenet10.0-ios(SDKiphonesimulator27.1)8.1.2.3:Success in 0s! (49,001 bytes),ffmpeg version n8.1.2, 10 forced collectionsSuccess(CI only builds this head)masterhas the same pin, and this PR does not change itNot run locally: other variants on devices (
Audio,FullGpl,Https,HttpsGpl,Min,MinGpl), which go through the same client code and were all run on the Android binding in sbokatuk/FFmpegKit.Android#23; net8 and net9 device tests on Android; any physical device. CI coversVideoon net8 and net10.The forced-GC test matters because the sample's conversions take 0.1 s and allocate little: in the plain run, the last garbage collection in the log came before the first conversion, so that run alone proves nothing about the freeze.
🤖 Generated with Claude Code