-
Notifications
You must be signed in to change notification settings - Fork 398
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FFmpeg build: Update to 7.0 #6255
base: master
Are you sure you want to change the base?
Conversation
We will need to somehow build Android/iOS before this is merged. We include those from an external source right now (which we shouldn't be doing anyway) directly into the Source (iOS): https://github.com/arthenica/ffmpeg-kit as of this PR |
Yes, I already noticed this when I realized (in the other PR) that I completely forgot about mobile platforms. Even if ffmpeg-kit did have 7.0 releases out now, I still think it would make sense to do the build in here. Partly for control over the binaries and partly for size optimizations |
These were previously stripped from the binaries, but don't have to be generated in the first place.
- Use Android NDK preinstalled in GHA - Target ARMv7-A, ARMv8-A and (mostly for emulators) x86, x86_64 - Target API level 21 (Android 5+) - Always enable NEON (requirement for API level 21) - Collect binaries in osu.Framework.Android so they're bundled into the AAR/APK
765ee15
to
5456887
Compare
Added Android build. Looks good so far, but still needs testing (x86, x86_64 are probably not that important as they're most likely just used for emulators). I enabled NEON in all cases since the minimum supported API level (21) requires it:
Raising the API level to 21 means only Android 5+ is supported. A build for API levels < 21 would need to be built without the NDK (or with a very old version) and would probably require more work to get running. But if this is a goal, I can try to do that. |
21 is fine. It's what we specify in the props file anyway https://github.com/ppy/osu/blob/1f010c4bfd8236e817e1a13d9616827c97966db1/osu.Android.props#L3
|
Binaries from https://github.com/FreezyLemon/osu-framework/actions/runs/8791966661 seem to work fine in visual tests on both of my devices (one is armeabi-v7a, the other is arm64-v8a, don't care about x86 as it's irrelevant). So good to go from that angle. |
Added iOS build ( I looked at veldrid for the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
iOS build process needs to be revised, see discord.
prep and build are only separated in order to facilitate patching, and patching is easier before ./configure is run
After some coordination with @frenzibyte, I found this line in The binaries now seem to load, but the proper testing hasn't been done yet. |
Have tested and reported in #6256 (comment), this PR is good to go with regards to the iOS build scripts 👍 |
Build artifacts on my fork. For comparison: Last FFmpeg build on main repo
Binary sizes increase a bit on all platforms, can't do much to avoid that in this case.
Changes:
PR including the .NET-side migration: #6256
Files that should be manually removed when updating binaries:
libswscale.so.5
is replaced bylibswscale.so.8
)libavdevice
libavfilter
libcpufeatures
libc++_shared
libmobileffmpeg*
libswresample
libavdevice
libswresample
Note for later: There are some new hwaccels (vulkan, d3d12, metal?)