Commit Graph

22 Commits

Author SHA1 Message Date
Nils Petter Skålerud
7515ceea5b FFmpeg, iOS: Automatically grab FFmpeg version in Info.plist manifest
Our iOS FFmpeg provisioning includes build info.plist manifest files
for the FFMpeg framework files. This manifest includes the version of
FFmpeg that we are deploying. This version string is currently
hardcoded and does not match the version we are actually building.

This patch changes the 'install-ffmpeg-ios.sh' script to
programmatically grab the FFmpeg version from our related scripts, and
inserts it in the info.plist manifest.

Task-number: QTBUG-136480
Change-Id: Iafeaade2ff6f2a933a0ba48749af459eef37ab51
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
(cherry picked from commit c3b80178ee)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-10-29 06:42:07 +00:00
Nils Petter Skålerud
0a2446205f Coin, FFmpeg, iOS: Add output parameter to 'install-ffmpeg-ios.sh'
This patch adds an optional parameter to the provisioning script
'install-ffmpeg-ios.sh', allowing us to override the output directory
for which the finalized library is installed.

This is particularly useful for local builds, where we often need
multiple different versions of FFmpeg installed, for different Qt
versions.

This patch has no impact for existing coin workflows.

Pick-to: 6.9 6.8
Change-Id: Ib0764eb29b84ae8badcfb48424f86316f3b2b650
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit 0e5937c8a4)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-06-25 19:48:02 +00:00
Nils Petter Skålerud
2f2c8bf347 Coin, FFmpeg, iOS: Apply 'prefix' consistently
In the provisioning script 'install-ffmpeg-ios.sh', we have a variable
'prefix' controlling where to install the finalized library. The value
of this prefix is sometimes hardcoded into some of the temporary build
directories, making the script break if we actually modify the 'prefix'
variable. This means we currently cannot easily change the output
directory.

This patch modifies 'install-ffmpeg-ios.sh' so that the 'prefix' is
applied consistently throughout the script, allowing us to change
the output directory in the future.

Pick-to: 6.9 6.8
Change-Id: I3458984aa22f8c82ed4d0bfac8ac8e71356e8789
Reviewed-by: Simo Fält <simo.falt@qt.io>
(cherry picked from commit d72ace1a0d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
2025-06-25 19:47:58 +00:00
Nils Petter Skålerud
9c7e564d7e Coin, iOS, FFmpeg: Stop installing .dylibs in iOS FFmpeg provisioning
On iOS we no longer deploy FFmpeg .dylibs directly. As such, there is
no need to install the .dylibs during provisoning.

This patch removes this installation step during provisioning.

Pick-to: 6.9 6.8
Change-Id: I6f901113caca4b8d602490ba05db0c9dacb8f80d
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2025-04-29 06:15:00 +00:00
Nils Petter Skålerud
d39ac6a4ec iOS, FFmpeg: Add variable for controlling minimum iOS version
Currently this script relies on hard-coded values specify minimum
iOS version to link against.

This patch unifies the hard-coded values into a single variable.

No functional changes.

Pick-to: 6.9 6.8
Change-Id: I12bddeb53f0fe3388ea55c841a9864722a1d5f82
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2025-04-04 16:57:51 +00:00
Nils Petter Skålerud
c4315452cb iOS, FFmpeg: Improve variable naming in FFmpeg provisioning
Currently this script overwrites a local variables and reuses it for
a (slightly) different purpose. This makes the code a bit hard to
follow.

This patch introduces a separate local variable to improve readability.

No functional changes.

Pick-to: 6.9 6.8
Change-Id: Ifa1904482f498d9b380d1ed19ab6b0104afda19b
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
2025-04-01 05:36:01 +01:00
Nils Petter Skålerud
aa613ed85d iOS, FFmpeg: Replace arm64-simulator build with x86_64
Currently this provisioning script builds for arm64 architecture
when on iOS simulator. Qt ships x86_64 binaries for iOS simulator, and
we should build FFmpeg similarly.

This patch introduces support for x86_64-simulator in the iOS FFmpeg
provisioning script and uses it in place of arm64-simulator.

Pick-to: 6.9 6.8
Task-number: QTQAINFRA-7034
Change-Id: Ie93cffba51924cd1d78651d20dec211817cb0cef
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
2025-04-01 05:35:53 +01:00
Timur Pocheptsov
d7d7c522b6 install-ffmpeg-ios.sh: remove redundant configure options
While writing a documentation for FFmpeg build on iOS it was found that
many options are redundant. Remove them to simplify the provisioning
script and to reduce the amount of cargo cult code.

Pick-to: 6.8 6.9
Fixes: QTBUG-133502
Change-Id: I26aab49365eaca83bcdbfeb86de0638ac701bb80
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2025-04-01 04:35:47 +00:00
Timur Pocheptsov
a4110ed94f FFmpeg: reduce the number of frameworks we create
to the same libraries we build e.g. on macOS. Also, clean up the
script a bit removing a duplicate configure option.

Pick-to: 6.9 6.8
Task-number: QTBUG-133502
Change-Id: If06aad102783bc3025155d3427aa68d87ad4d179
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
2025-02-27 12:34:41 +00:00
Timur Pocheptsov
1968adc126 Update provisioning script to build FFmpeg for iOS
as xcframeworks, so that we can provide both arm64 and arm64-simulator
versions (the former can be used in App Store, the latter when
working with a simulator).

Pick-to: 6.8 6.9
Task-number: QTBUG-132313
Change-Id: Ic683f58dffcef8a06adb4a915c4e3abc4ab219e5
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
2025-01-27 22:31:52 +01:00
Artem Dyomin
51dad84914 Add ffmpeg-installation-utils.sh file
There're code duplications in install-ffmpeg scripts.
Let's have a file with FFmpeg installation utils and reuse
the functionality on unix platforms.
The utility functions make the code more robust and get
around code duplications.

Pick-to: 6.9 6.8 6.5
Change-Id: I28639d18c7110109e52ff09ce602da52f8857281
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
2025-01-10 08:35:00 +01:00
Timur Pocheptsov
ae8395afa7 Build ffmpeg for iOS as frameworks
While dylibs embedded in app bundle work locally on a device,
Apple Connect rejects such an app complaining about missing
Swift Runtime Support. Instead we must create frameworks.

Pick-to: 6.9 6.8
Task-number: QTBUG-130813
Change-Id: Ifd6eed227478bc29702b3b59968fcbfe2839ca82
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
2024-12-18 15:42:14 +02:00
Pavel Dubsky
154b41a260 Update FFmpeg version to n7.1
Task-number: QTBUG-129510
Pick-to: 6.8 6.5
Change-Id: I15a801c0c0568b26486e5bb2065a1d0d1d151951
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Tero Heikkinen <tero.heikkinen@qt.io>
2024-12-10 14:30:53 +00:00
Tero Heikkinen
6569f201c1 Fix macOS ffmpeg ios parallel compiling to cause resource starvation
Add -j4 to limit how many cores is used to build ffmpeg-ios binaries.
Error in logs: "posix_spawn failed: Resource temporarily unavailable"

Task-number: QTQAINFRA-6803
Pick-to: 6.8
Change-Id: I3fb56cdbe4cbda8f779852b0a16121916aa5a1d4
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
Reviewed-by: Jukka Jokiniva <jukka.jokiniva@qt.io>
2024-12-10 16:30:31 +02:00
Pavel Dubsky
f2535cdcef Update FFmpeg version to n7.0.2
Task-number: QTBUG-127868
Pick-to: 6.8 6.7 6.5
Change-Id: I95f8f021cd23fdb35eb171d4609bf204878e105d
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
2024-08-17 10:50:01 +02:00
Pavel Dubsky
a68d7302cd Update FFmpeg version to n7.0.1
Fixes: QTBUG-126687
Pick-to: 6.8 6.7 6.5
Change-Id: I327a33a65aaa0285a93fa228f47d6914623f8d3d
Reviewed-by: Dimitrios Apostolou <jimis@qt.io>
2024-07-26 00:11:22 +00:00
Pavel Dubsky
49c03849e3 Use single installation archive for FFmpeg provisioning on all platforms
Fixes: QTBUG-125955
Pick-to: 6.8
Change-Id: Ibfa97e3d765eb3c4ff5613004bc881e49ddf10e9
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
2024-07-09 18:43:13 +00:00
Timur Pocheptsov
c099afdd45 Update provisioning script to build FFmpeg as dynamic libs
Previously, iOS (where we mostly using static linking) was also using
FFmpeg built as static libs, now switch to dynamic libraries, as
it was already done for macOS. Requires changes in cmake file in
qtmultimedia in order to configure with -DQT_DEPLOY_FFMPEG=TRUE.

Pick-to: 6.8
Fixes: QTBUG-120991
Change-Id: I0b014f24db3127697b76c6d1774437faae64a7c8
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
2024-06-21 19:56:22 +02:00
Pavel Dubsky
eb8bbfe971 Update FFmpeg version to n7.0
Fixes: QTBUG-124482
Pick-to: 6.8 6.7 6.5
Change-Id: I69727981344d935151f19148960c711b65cb2307
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
2024-06-20 04:56:19 +00:00
Tony Sarajärvi
f074859391 Fix shellcheck problems
Change-Id: I277fd923f62aa5888d7e18c89471909732da30e5
Reviewed-by: Liang Qi <liang.qi@qt.io>
2024-04-28 06:06:50 +00:00
Artem Dyomin
45220efb3a Update ffmpeg: explicitly refer to the latest release 6.1.1
Pick-to: 6.7 6.6 6.5
Change-Id: I231c5cdc6155de0d1ea98220a90ecc0f910b34d6
Reviewed-by: Lars Knoll <lars@knoll.priv.no>
2024-02-21 13:27:56 +00:00
Timur Pocheptsov
65695bc38b QtMultimedia - build ffmpeg plugin for iOS
Minimal preliminary script for building ffmpeg for iOS.

Change-Id: Ie210db8cd50b5a757fcc6d6258c3ebdf4fc53c51
Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
2024-02-03 08:40:15 +00:00