diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 784d696..f02ff06 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ permissions: {} jobs: check: - uses: devenvy/ffmpeg-build/.github/workflows/check.yml@ea6844557eaf26b6357d0345137131377382deea # v0.0.17 + uses: devenvy/ffmpeg-build/.github/workflows/check.yml@df711faccfd4aaf3a93cb54a7968c5d2931d3579 # v0.0.18 permissions: contents: read # the workflows: actionlint (mistakes) and zizmor (GitHub Actions security) @@ -50,7 +50,7 @@ jobs: run: test "${CHECK}" = success && test "${LINT}" = success merge: needs: result - uses: devenvy/ffmpeg-build/.github/workflows/automerge.yml@ea6844557eaf26b6357d0345137131377382deea # v0.0.17 + uses: devenvy/ffmpeg-build/.github/workflows/automerge.yml@df711faccfd4aaf3a93cb54a7968c5d2931d3579 # v0.0.18 permissions: contents: write pull-requests: write diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a1bb30f..2e06d36 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,7 +12,7 @@ permissions: {} jobs: release: - uses: devenvy/ffmpeg-build/.github/workflows/build.yml@ea6844557eaf26b6357d0345137131377382deea # v0.0.17 + uses: devenvy/ffmpeg-build/.github/workflows/build.yml@df711faccfd4aaf3a93cb54a7968c5d2931d3579 # v0.0.18 permissions: contents: write # the GitHub releases with: diff --git a/.github/workflows/update-lock.yml b/.github/workflows/update-lock.yml index 2afd7ed..de1eb26 100644 --- a/.github/workflows/update-lock.yml +++ b/.github/workflows/update-lock.yml @@ -14,7 +14,7 @@ permissions: {} jobs: update: - uses: devenvy/ffmpeg-build/.github/workflows/update-lock.yml@ea6844557eaf26b6357d0345137131377382deea # v0.0.17 + uses: devenvy/ffmpeg-build/.github/workflows/update-lock.yml@df711faccfd4aaf3a93cb54a7968c5d2931d3579 # v0.0.18 permissions: actions: write contents: write diff --git a/docs/install.md b/docs/install.md index baad71a..e6b1c62 100644 --- a/docs/install.md +++ b/docs/install.md @@ -49,7 +49,8 @@ $env:PATH = "C:\ffmpeg;$env:PATH" The DLLs sit beside `ffmpeg.exe`. To link from MSVC or CMake, take the `-dev` archive: `include/` and the `lib/*.lib` import libraries. Vulkan comes with the GPU driver. `win-arm64` has no NVENC/NVDEC, AMF, QSV or SVT-AV1 (none exist for -Windows on ARM); it decodes in hardware through D3D11VA, DXVA2 and Media Foundation. +Windows on ARM); it decodes in hardware through D3D11VA, DXVA2 and Media Foundation. VMAF is omitted on Windows +ARM64 because the current upstream release needs a source fix with this toolchain. ## macOS @@ -78,11 +79,13 @@ and x86_64 devices). Hardware decode uses MediaCodec. The minimum is Android 9 ( `ffmpeg--ios-.tar.gz` holds one dynamic `.xcframework` per `libav*` library, each with the device (`ios-arm64`), simulator (`ios-sim-arm64`) and Mac Catalyst (arm64 + x64 in one slice) builds. Add them to your Xcode -target; Xcode picks the slice. Hardware decode uses VideoToolbox. The iOS 14.0 minimum applies to Catalyst. +target; Xcode picks the slice. iOS hardware decode uses VideoToolbox. The iOS 14.0 minimum applies to Catalyst. - The simulator slice leaves out x264, x265, kvazaar, libvpx, libaom, Opus and libass (they don't build for the arm64 simulator); test that work on a device. - Mac Catalyst has no SecureTransport, so it takes TLS like Linux: none in `lgplv2`. +- Mac Catalyst omits VideoToolbox because the current FFmpeg and SDK combination needs source changes. Its + software codecs remain available. - The `v3` frameworks link MoltenVK in for FFmpeg's Vulkan filters; nothing to embed or configure. On Mac Catalyst, also link `-framework IOKit`. diff --git a/ffmpeg-build.yml b/ffmpeg-build.yml index 9428d3c..3b10546 100644 --- a/ffmpeg-build.yml +++ b/ffmpeg-build.yml @@ -9,6 +9,8 @@ notify: { new-ffmpeg: true } # on an older driver. 13.0.x patch releases still arrive. Tracking issue: #54. pin: nvenc: '13.0' + # Match the native font stack verified by the cleaned engine. + fontconfig: '2.15' bases: common: with: [openh264, dav1d, openjpeg, jxl, zimg, vmaf, lcms2, vorbis, mp3lame, speex, gsm, soxr, chromaprint, @@ -24,7 +26,7 @@ bases: linux-musl: with: [aom, vpx, opus, freetype, fribidi, harfbuzz, ass, drm, fontconfig, nvenc, svtav1, vaapi, webp] maccatalyst: - with: [aom, vpx, opus, freetype, fribidi, harfbuzz, ass, videotoolbox] + with: [aom, vpx, opus, freetype, fribidi, harfbuzz, ass] osx: with: [aom, vpx, opus, freetype, fribidi, harfbuzz, ass, audiotoolbox, fontconfig, securetransport, svtav1, videotoolbox, webp] @@ -477,96 +479,112 @@ targets: with: [openssl, nvenc, vaapi, drm, vpl, vulkan, placebo, shaderc, kvazaar, svtav1] maccatalyst-arm64-gplv2: platform: maccatalyst-arm64 + allow-removal: [videotoolbox] license: gplv2 ffmpeg: "9" base: [common, maccatalyst] with: [gnutls, x264, x265] maccatalyst-arm64-gplv2-ffmpeg8: platform: maccatalyst-arm64 + allow-removal: [videotoolbox] license: gplv2 ffmpeg: "8" base: [common, maccatalyst] with: [gnutls, x264, x265] maccatalyst-arm64-gplv3: platform: maccatalyst-arm64 + allow-removal: [videotoolbox] license: gplv3 ffmpeg: "9" base: [common, maccatalyst, gplv3] with: [openssl, vulkan, placebo, x264, x265] maccatalyst-arm64-gplv3-ffmpeg8: platform: maccatalyst-arm64 + allow-removal: [videotoolbox] license: gplv3 ffmpeg: "8" base: [common, maccatalyst, gplv3] with: [openssl, vulkan, placebo, shaderc, x264, x265] maccatalyst-arm64-lgplv2: platform: maccatalyst-arm64 + allow-removal: [videotoolbox] license: lgplv2 ffmpeg: "9" base: [common, maccatalyst] with: [kvazaar] maccatalyst-arm64-lgplv2-ffmpeg8: platform: maccatalyst-arm64 + allow-removal: [videotoolbox] license: lgplv2 ffmpeg: "8" base: [common, maccatalyst] with: [kvazaar] maccatalyst-arm64-lgplv3: platform: maccatalyst-arm64 + allow-removal: [videotoolbox] license: lgplv3 ffmpeg: "9" base: [common, maccatalyst, lgplv3] with: [openssl, vulkan, placebo, kvazaar] maccatalyst-arm64-lgplv3-ffmpeg8: platform: maccatalyst-arm64 + allow-removal: [videotoolbox] license: lgplv3 ffmpeg: "8" base: [common, maccatalyst, lgplv3] with: [openssl, vulkan, placebo, shaderc, kvazaar] maccatalyst-x64-gplv2: platform: maccatalyst-x64 + allow-removal: [videotoolbox] license: gplv2 ffmpeg: "9" base: [common, maccatalyst] with: [gnutls, x264, x265] maccatalyst-x64-gplv2-ffmpeg8: platform: maccatalyst-x64 + allow-removal: [videotoolbox] license: gplv2 ffmpeg: "8" base: [common, maccatalyst] with: [gnutls, x264, x265] maccatalyst-x64-gplv3: platform: maccatalyst-x64 + allow-removal: [videotoolbox] license: gplv3 ffmpeg: "9" base: [common, maccatalyst, gplv3] with: [openssl, vulkan, placebo, x264, x265] maccatalyst-x64-gplv3-ffmpeg8: platform: maccatalyst-x64 + allow-removal: [videotoolbox] license: gplv3 ffmpeg: "8" base: [common, maccatalyst, gplv3] with: [openssl, vulkan, placebo, shaderc, x264, x265] maccatalyst-x64-lgplv2: platform: maccatalyst-x64 + allow-removal: [videotoolbox] license: lgplv2 ffmpeg: "9" base: [common, maccatalyst] with: [kvazaar] maccatalyst-x64-lgplv2-ffmpeg8: platform: maccatalyst-x64 + allow-removal: [videotoolbox] license: lgplv2 ffmpeg: "8" base: [common, maccatalyst] with: [kvazaar] maccatalyst-x64-lgplv3: platform: maccatalyst-x64 + allow-removal: [videotoolbox] license: lgplv3 ffmpeg: "9" base: [common, maccatalyst, lgplv3] with: [openssl, vulkan, placebo, kvazaar] maccatalyst-x64-lgplv3-ffmpeg8: platform: maccatalyst-x64 + allow-removal: [videotoolbox] license: lgplv3 ffmpeg: "8" base: [common, maccatalyst, lgplv3] @@ -669,48 +687,64 @@ targets: with: [vulkan, placebo, shaderc, kvazaar] win-arm64-gplv2: platform: win-arm64 + without: [vmaf] + allow-removal: [libvmaf] license: gplv2 ffmpeg: "9" base: [common, win] with: [x264, x265] win-arm64-gplv2-ffmpeg8: platform: win-arm64 + without: [vmaf] + allow-removal: [libvmaf] license: gplv2 ffmpeg: "8" base: [common, win] with: [x264, x265] win-arm64-gplv3: platform: win-arm64 + without: [vmaf] + allow-removal: [libvmaf] license: gplv3 ffmpeg: "9" base: [common, win, gplv3] with: [vulkan, placebo, x264, x265] win-arm64-gplv3-ffmpeg8: platform: win-arm64 + without: [vmaf] + allow-removal: [libvmaf] license: gplv3 ffmpeg: "8" base: [common, win, gplv3] with: [vulkan, placebo, shaderc, x264, x265] win-arm64-lgplv2: platform: win-arm64 + without: [vmaf] + allow-removal: [libvmaf] license: lgplv2 ffmpeg: "9" base: [common, win] with: [kvazaar] win-arm64-lgplv2-ffmpeg8: platform: win-arm64 + without: [vmaf] + allow-removal: [libvmaf] license: lgplv2 ffmpeg: "8" base: [common, win] with: [kvazaar] win-arm64-lgplv3: platform: win-arm64 + without: [vmaf] + allow-removal: [libvmaf] license: lgplv3 ffmpeg: "9" base: [common, win, lgplv3] with: [vulkan, placebo, kvazaar] win-arm64-lgplv3-ffmpeg8: platform: win-arm64 + without: [vmaf] + allow-removal: [libvmaf] license: lgplv3 ffmpeg: "8" base: [common, win, lgplv3] diff --git a/ffmpeg.lock b/ffmpeg.lock index 8d38d5e..73138da 100644 --- a/ffmpeg.lock +++ b/ffmpeg.lock @@ -1,5 +1,5 @@ # ffmpeg.lock - written only by `ffmpeg-build update` / `ffmpeg-build lock`. Do not edit. -engine: 0.0.17 +engine: 0.0.18 ffmpeg: "8": { version: 8.1.3, sha256: 7138d28c96d9d3e3af4ee3d8cad72741f8ffb40da90c1112235dea3ecd3178a3 } "9": { version: 9.0.2, sha256: 8c3850283eb25fa026482078a04051e0be17347b09ef81a0849bec15a96e002e } @@ -9,7 +9,7 @@ libraries: brotli: { version: 1.2.1, commit: db24a98aed38a16de78cc05ca15cdd8dc2a0d92d } chromaprint: { version: 1.6.2, commit: 3b38c100022bdfb49be7797c4828a476f1621d55 } dav1d: { version: 1.5.4, commit: 54706fc6bc0cdecab7e9593974a4039cc038fca7 } - fontconfig: { version: 2.18.3, commit: 0f236723a3c26bd9745e32ba2b3ee21e5f809295 } + fontconfig: { version: 2.15.0, commit: 72b9a48f57de6204d99ce1c217b5609ee92ece9b } freetype: { version: 2.15.0, commit: 37515cf56ba3349656049edbed89ffc6f6466f2d } fribidi: { version: 1.0.17, commit: b93119f5fdc7ea47672cc304c1455ffa6dfe7536 } gmp: { version: 6.3.0, sha256: a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898 }