Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/build-ffmpeg.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,14 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
- uses: actions/setup-python@v7
with:
python-version: "3.14"
- name: Make cache file
run: python scripts/cache.py
- name: Cache tarballs
id: cache-tarballs
uses: actions/cache@v5
uses: actions/cache@v6
with:
path: source
key: tarballs-${{ hashFiles('cache.txt') }}
Expand Down Expand Up @@ -74,7 +74,7 @@ jobs:
shell: ${{ matrix.shell }}
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
- uses: actions/setup-python@v7
with:
python-version: "3.14"
- name: Get sources
Expand Down Expand Up @@ -136,7 +136,7 @@ jobs:
arch: [ "armv7l", "ppc64le", "riscv64" ]
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
- uses: actions/setup-python@v7
with:
python-version: "3.14"
- name: Get sources
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,18 @@ Currently FFmpeg 9.0.2 is built with the following packages enabled for all plat
- dav1d 1.5.4
- libsvtav1 4.2.0
- vpx 1.17.0
- png 1.6.58
- png 1.6.59
- webp 1.6.0
- libvmaf 3.2.1
- x264 b35605ace3ddf7c1a5d67a2eb553f034aef41d55 (except armv7l)
- x265 4.3
- freetype 2.15.0
- fribidi 1.0.17
- harfbuzz 14.6.0
- harfbuzz 15.0.0
- libass 0.17.5

The following additional packages are also enabled on Linux:

- gnutls 3.8.13
- nettle 4.0
- unistring 1.4.2
- unistring 1.5
10 changes: 10 additions & 0 deletions patches/x265.patch
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,13 @@
endif()
endif()
if(ARM64)
@@ -1148,6 +1148,9 @@
add_library(x265-shared SHARED "${PROJECT_BINARY_DIR}/x265.def" ${ASM_OBJS}
${X265_RC_FILE} $<TARGET_OBJECTS:encoder> $<TARGET_OBJECTS:common>)
endif()
+ # x265-static and x265-shared both list ${ASM_OBJS}, so a parallel make
+ # assembles each object twice at once and can link a half-written file.
+ add_dependencies(x265-shared x265-static)
if(EXTRA_LIB)
target_link_libraries(x265-shared ${EXTRA_LIB})
endif()
4 changes: 2 additions & 2 deletions scripts/build-ffmpeg.py
Original file line number Diff line number Diff line change
Expand Up @@ -256,15 +256,15 @@ def main():
packages += [ffmpeg_package]

# Where libass finds the system's fonts. Linux has no provider without
# fontconfig. Its x86 assembly needs nasm; elsewhere it's plain C.
# fontconfig. It has x86 (nasm) and aarch64 assembly; elsewhere it's plain C.
for pkg in packages:
if pkg.name == "libass":
pkg.build_arguments += [
"-Dcoretext=" + ("enabled" if plat == "Darwin" else "disabled"),
"-Ddirectwrite=" + ("enabled" if plat == "Windows" else "disabled"),
"-Drequire-system-font-provider="
+ ("false" if plat == "Linux" else "true"),
"-Dasm=" + ("enabled" if is_x86 else "disabled"),
"-Dasm=" + ("enabled" if is_x86 or (is_arm and not is_arm32) else "disabled"),
]

# Disable runtime CPU detection for opus on Windows ARM64
Expand Down
2 changes: 0 additions & 2 deletions scripts/cibuildpkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,9 +225,7 @@ def _build_with_autoconf(self, package: Package, for_builder: bool) -> None:
]

if package.name == "x264":
# Disable asm on Windows ARM64 (no nasm available)
if platform.system() == "Windows" and platform.machine().lower() in {"arm64", "aarch64"}:
configure_args.append("--disable-asm")
# Specify host to ensure correct resource compiler target
configure_args.append("--host=aarch64-w64-mingw32")

Expand Down
18 changes: 9 additions & 9 deletions scripts/install-static-clang.sh
Original file line number Diff line number Diff line change
Expand Up @@ -20,19 +20,19 @@ case "${STATIC_CLANG_ARCH}" in
s390x) GO_ARCH=s390x;;
*) echo "No static-clang toolchain for ${CLANG_ARCH}">2; exit 1;;
esac
STATIC_CLANG_VERSION=21.1.8.1
STATIC_CLANG_VERSION=23.1.4.0
STATIC_CLANG_FILENAME="static-clang-linux-${GO_ARCH}.tar.xz"
STATIC_CLANG_URL="https://github.com/mayeut/static-clang-images/releases/download/v${STATIC_CLANG_VERSION}/${STATIC_CLANG_FILENAME}"
pushd /tmp
cat<<'EOF' | grep "${STATIC_CLANG_FILENAME}" > "${STATIC_CLANG_FILENAME}.sha256"
583980309e73fa753c0791e05deceac7cb06c5444956d61189f1d651941bcd8e static-clang-linux-386.tar.xz
f539f1fd24bcc07ecc220594022907865914236540091fbf189cb496a9a3751c static-clang-linux-amd64.tar.xz
d0c8b7fac4734cc8048fda3b1f33ccdf24d26f81a52df53348e5fa84ab4b203a static-clang-linux-arm.tar.xz
57fb9cf798b3a2c4b0f3c31c0b7fe3803b5319d2af075407e1aef0cd57882f65 static-clang-linux-arm64.tar.xz
5a2b296e9030d0320d9e4eac8859e5db0504cf1d4169981af233cb339292fa4c static-clang-linux-loong64.tar.xz
c8541b2d36f0fd8f13ddabe1292b6fb7550a742e76e0f1f70fb29fcee073be4a static-clang-linux-ppc64le.tar.xz
b311137f955b55139b02e8c1d7ec259628404a0563d136df7a817a33784bd2bf static-clang-linux-riscv64.tar.xz
de74fd8e5de244d36398684b2afa67add2311df6ccfa24f3c08a1d777ca814fa static-clang-linux-s390x.tar.xz
4070a2a3342eb93fcc686b974dcd663490bbe8da01c082924cce6e07675bcc85 static-clang-linux-386.tar.xz
6580146eab36228d9e10dbf280a67adb11ce5d4b0275ac14302fcbf4f722e2a3 static-clang-linux-amd64.tar.xz
41ecc4bda79a3db83fe6f1b719f368b201ed0ced614856c3ce32fa3f031ed6bf static-clang-linux-arm.tar.xz
501b34ca9d21bfa08a40d99eb5bd06664f6209a244bb2d52f007ad6fec977623 static-clang-linux-arm64.tar.xz
cc45b104c92201361446e20794c59011b4f9005f3601354b31f22ff4414e79f1 static-clang-linux-loong64.tar.xz
88097702c270ad3646ad47f90ad9d77b48aa321e04b33a24120d7b7ccbfdc927 static-clang-linux-ppc64le.tar.xz
775437eb73958e24328f36135f92cbe3db964771e5bd0354b0f1cffa5c784798 static-clang-linux-riscv64.tar.xz
1004c314ce1e0a14c216df0d350c8e5da3978085f269c8ee6cee03354b78c0d9 static-clang-linux-s390x.tar.xz
EOF
curl -fsSLO "${STATIC_CLANG_URL}"
sha256sum -c "${STATIC_CLANG_FILENAME}.sha256"
Expand Down
32 changes: 16 additions & 16 deletions scripts/pkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ def __lt__(self, other):
),
Package(
name="unistring",
source_url="https://ftp.gnu.org/gnu/libunistring/libunistring-1.4.2.tar.gz",
sha256="e82664b170064e62331962126b259d452d53b227bb4a93ab20040d846fec01d8",
source_url="https://ftp.gnu.org/gnu/libunistring/libunistring-1.5.tar.gz",
sha256="5b0ecd46cbf225375f20ab4056197e66a7ac590e2684c069af407ae3383c9d81",
),
Package(
name="nettle",
Expand Down Expand Up @@ -102,8 +102,8 @@ def __lt__(self, other):
),
Package(
name="png",
source_url="https://downloads.sourceforge.net/project/libpng/libpng16/1.6.58/libpng-1.6.58.tar.xz",
sha256="28eb403f51f0f7405249132cecfe82ea5c0ef97f1b32c5a65828814ae0d34775",
source_url="https://downloads.sourceforge.net/project/libpng/libpng16/1.6.59/libpng-1.6.59.tar.xz",
sha256="d80dd2a38a37f803cb9b6ac7b14bd6e74ddc3b654780a8380bdf93523fdb4389",
# avoid an assembler error on Windows
build_arguments=["PNG_COPTS=-fno-asynchronous-unwind-tables"],
),
Expand Down Expand Up @@ -184,8 +184,8 @@ def __lt__(self, other):
),
Package(
name="harfbuzz",
source_url="https://github.com/harfbuzz/harfbuzz/releases/download/14.6.0/harfbuzz-14.6.0.tar.xz",
sha256="d07a007327277708a2a73ae437887cdbaf282937f6d03ca5467723e9099af586",
source_url="https://github.com/harfbuzz/harfbuzz/releases/download/15.0.0/harfbuzz-15.0.0.tar.xz",
sha256="968536e9abd782f07f7954044c0c4020199fcdd39b41d221ec42d2a3be4a44df",
build_system="meson",
build_arguments=[
"--auto-features=disabled",
Expand Down Expand Up @@ -221,29 +221,29 @@ def __lt__(self, other):

alsa_package = Package(
name="alsa-lib",
source_url="https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.14.tar.bz2",
sha256="be9c88a0b3604367dd74167a2b754a35e142f670292ae47a2fdef27a2ee97a32",
source_url="https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.16.1.tar.bz2",
sha256="f740db7f488255944ffd4428416ee3390a96742856916433df468c281436480e",
build_arguments=["--disable-python"],
)

nvheaders_package = Package(
name="nv-codec-headers",
source_url="https://github.com/FFmpeg/nv-codec-headers/archive/refs/tags/n13.0.19.0.tar.gz",
sha256="86d15d1a7c0ac73a0eafdfc57bebfeba7da8264595bf531cf4d8db1c22940116",
source_url="https://github.com/FFmpeg/nv-codec-headers/archive/refs/tags/n13.0.19.1.tar.gz",
sha256="c293161bd92dac53f2f8fab08abcd4f96773c3644a57b23c2260b4be2311ab2f",
build_system="make",
)

amfheaders_package = Package(
name="amf-headers",
source_url="https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/download/v1.5.2/AMF-headers-v1.5.2.tar.gz",
sha256="d3c12eb324edf05e214608b6a395a51dd95770ed9d45520185d6c3a206811c99",
source_url="https://github.com/GPUOpen-LibrariesAndSDKs/AMF/releases/download/v1.5.3/AMF-headers-v1.5.3.tar.gz",
sha256="0f521ad98041f8001147cded4a660127f18b1c27a801a5cd691bda1fa48381be",
build_system="make",
)

libvpl_package = Package(
name="libvpl",
source_url="https://github.com/intel/libvpl/archive/refs/tags/v2.16.0.tar.gz",
sha256="d60931937426130ddad9f1975c010543f0da99e67edb1c6070656b7947f633b6",
source_url="https://github.com/intel/libvpl/archive/refs/tags/v2.17.0.tar.gz",
sha256="4de3e2faf1e8307fb282e4a43f443191810f6a6b0a484fffa7995ba1c814c6ec",
build_system="cmake",
build_arguments=[
"-DINSTALL_LIB=ON",
Expand All @@ -257,8 +257,8 @@ def __lt__(self, other):

nasm_package = Package(
name="nasm",
source_url="https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.xz",
sha256="1412a1c760bbd05db026b6c0d1657affd6631cd0a63cddb6f73cc6d4aa616148",
source_url="https://www.nasm.us/pub/nasm/releasebuilds/3.02/nasm-3.02.tar.xz",
sha256="87336eba53b4acfe917424ab5d500d2b0054d9f5148d35c2273ccf2cfb712f0d",
)

ffmpeg_package = Package(
Expand Down
Loading