Skip to content

Ship ffmpeg with NVENC and NVDEC on aarch64 - #2074

Merged
ryanrhughes merged 1 commit into
masterfrom
ffmpeg-nvenc-aarch64
Nov 3, 2026
Merged

ryanrhughes merged 1 commit into
masterfrom
ffmpeg-nvenc-aarch64

Conversation

@dhh

@dhh dhh commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

On aarch64, this ships Arch Linux ARM's ffmpeg 2:9.0.2-2 with NVIDIA's encoders and decoders enabled again, as 2:9.0.2-2.1. It is carried the same way as aquamarine, and [omarchy] comes first in pacman.conf.

Why:

  • ALARM has built ffmpeg without ffnvcodec-headers, --enable-nvenc and --enable-nvdec since 2018 (28e86f7cb, f3e5cbe25; no reason given). That predates any aarch64 NVIDIA GPU.
  • On the GB10 (DGX Spark) and the N1x, nothing that encodes through ffmpeg can reach NVENC. gpu-screen-recorder, and with it omarchy screenrecord, fails with "neither h264, hevc nor av1 are supported".
  • The GPU itself encodes fine; Gliff's Vulkan Video path uses it.

The change against ALARM's PKGBUILD (72248ab7d):

  • ffnvcodec-headers added to makedepends.
  • --enable-nvdec --enable-nvenc.
  • An nvidia-utils optdepend.
  • arch=(aarch64) and pkgrel=2.1.

.omarchy/package.json sets "sync": false: the recipe follows ALARM's ffmpeg by hand. A newer ALARM build replaces it, without NVENC, until the upstream PR lands.

Upstream: archlinuxarm/PKGBUILDs#2234 makes the same change. Drop this carry once ALARM ships it.

Checked on a DGX Spark (GB10, nvidia-utils 615.78.08)

  • Build: bin/build --package ffmpeg --arch aarch64 builds ffmpeg-2:9.0.2-2.1-aarch64.pkg.tar.zst. Its libraries list h264_nvenc, hevc_nvenc and av1_nvenc.
  • Encode speed: the same configure encodes 1080p60 at 523 / 461 / 497 fps (H.264 / HEVC / AV1).
  • Compatibility: sonames and exported symbols match ALARM's 9.0.2-2. The only additions are 3 nvenc encoders, 10 *_cuvid decoders, 11 *_cuda filters and the cuda hwaccel. The installed gpu-screen-recorder 6.1.6 records through the new libraries, including the full 6016x3384 screen (HEVC).
  • Tests: tests/pinned-sources.sh, tests/package-metadata.sh and tests/pkgname-unique.sh pass.

🤖 Generated with Claude Code

Arch Linux ARM's ffmpeg 2:9.0.2-2 with ffnvcodec-headers, --enable-nvenc
and --enable-nvdec back. ALARM has left them out since 2018, so on the
NVIDIA GB10 and N1x nothing that encodes through ffmpeg reaches NVENC:
gpu-screen-recorder and omarchy screenrecord fail with "neither h264, hevc
nor av1 are supported". Same sonames and symbols, so packages built
against ALARM's ffmpeg use this one unchanged; NVENC and NVDEC load the
driver at run time.

aarch64 only, as 2:9.0.2-2.1, carried like aquamarine. Offered upstream as
archlinuxarm/PKGBUILDs#2234; drop it once ALARM enables them. Not synced
automatically: it follows ALARM's ffmpeg by hand until then.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ryanrhughes
ryanrhughes enabled auto-merge (squash) November 3, 2026 16:17
@greptile-apps

greptile-apps Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The PR appears safe to merge; no actionable issues were found.

Summary

Adds an aarch64-only ffmpeg carry at 2:9.0.2-2.1 with NVIDIA encoding and decoding enabled.

  • aarch64 FFmpeg can use NVIDIA GPUs for video encoding and decoding.

Acknowledged by dhh: the recipe follows ALARM by hand, and a newer ALARM build may replace it without NVIDIA support. This is intentional until upstream ships the change.

Reviews (1) · Last reviewed commit: "Ship ffmpeg with NVENC and NVDEC on aarc..." · Reviewed by Greptile

@ryanrhughes
ryanrhughes merged commit ec42318 into master Nov 3, 2026
9 checks passed
@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Publish succeeded → live

Packages: ffmpeg (aarch64, PR artifact)

  • edge/aarch64: ffmpeg-2:9.0.2-2.1-aarch64

Commit ec42318 · run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants