SVT-AV1
Author: Ludovic HENRY ludovic.henry@qti.qualcomm.com
Date: 2026-06-17
Scope: RISC-V (riscv64/linux) support status for SVT-AV1
Audience: Technical leadership, resource allocation strategy
Verification policy: Every claim is cross-referenced to a primary upstream source. Items that could not be verified against a second source are marked [NEEDS VERIFICATION].
1. Project Overview
SVT-AV1 is a production AV1 video encoder developed jointly by Intel and Netflix, formally adopted by the Alliance for Open Media (AOMedia) in August 2020. License: BSD-3-Clause Clear + AOMedia Patent License 1.0. The canonical repository is at gitlab.com/AOMediaCodec/SVT-AV1; the GitHub mirror at github.com/AOMediaCodec/SVT-AV1 holds no issues, no PRs, and no releases of its own.
Governance: AOMedia oversees the project. There is no MAINTAINERS.md; governance is through PR review by active corporate committers. Community communication uses Libera.chat #svt.
Corporate sponsors by commit count (GitLab contributors API):
| Company | Key contributors | Role |
|---|---|---|
| Intel | Christopher Degawa, Worth, hguermaz, psao123, Tomasz Szumski | Founding sponsor, x86 SIMD, core algorithm |
| Arm Ltd | Salome Thirot (310 commits), Li Zhang, Gerda Zsejke More | AArch64 NEON/SVE/SVE2 optimization |
| Meta | Sergey Sablin (228 commits), Hassene Tmar | Optimization, review |
| Cidana | Cidana-Developers | Multiple contributions |
| Vlitt | Taha Ben Romdhane, Khalil Khemakhem | Multiple contributions |
Community culture on new ports: The ARM port was driven entirely by Arm Ltd engineers over multiple years and is still not formally documented as a named support tier. A RISC-V port would require a similar sustained commitment from a RISC-V silicon vendor or RISE member. There is no formal process for proposing new architecture ports. CONTRIBUTING.md requires a contributor agreement assigning IP to AOMedia.
2. Port History and Upstreaming Timeline
| Date | Event | Source |
|---|---|---|
| 2019-05-17 (v0.5.0) | Initial public release, x86-64 only | CHANGELOG.md |
| 2022-01-16 | Debian first builds riscv64 package (v0.8.7+dfsg-1), C fallback only | buildd.debian.org |
| 2025-02-13 | Issue #2239 closed: libcpuinfo dependency made optional via MR !2384 (USE_CPUINFO CMake option), unblocking riscv64/ppc64le/s390x packaging |
GitLab issue #2239 |
| 2025-07-24 (v3.1.0) | libcpuinfo removed entirely (MR !2426, MR !2453); replaced with bundled AOM CPU detection returning flags=0 on unsupported architectures |
GitLab MR !2453 |
| 2026-03-23 (v4.1.0) | Current latest release; riscv64 still C-only, no RVV work | GitLab releases |
| 2026-03-26 | Debian sid builds v4.1.0+dfsg-1 on rv-osuosl-04, status “Installed” | buildd.debian.org |
Key contributor for riscv64 work: None. There is no upstream contributor on record for any RISC-V work. The only upstream acknowledgment of RISC-V is in issue #2239 (filed and closed February 2025) where a Fedora packager states explicitly: “svt-av1 offers no ASM optimizations for those other platforms anyway.”
Upstreaming status: Not applicable – no RISC-V port exists to upstream. The riscv64 builds in Debian and Ubuntu use the generic C fallback that has always been present; this is not a port, it is an absence of any RISC-V-specific code.
3. Upstream Support Tier
SVT-AV1 has no formal tier policy document. Docs/System-Requirements.md describes:
- Validated: x86-64 on Windows Server 2016, Ubuntu 16.04/18.04/20.04, macOS 64-bit
- Limited support: “Any architecture a valid C99 compiler can target” – described as compilable but with “varying limited support for non-x86 CPUs”
AArch64 is not formally named as a supported tier despite substantial Arm Ltd investment in NEON/SVE/SVE2 optimizations. RISC-V falls under the informal “limited support” (C fallback only) category.
| Criterion | amd64 | arm64 | riscv64 |
|---|---|---|---|
| Named in System-Requirements.md | Yes (validated) | No (de facto) | No |
| Hand-tuned SIMD | Yes (SSE2 through AVX-512, NASM) | Yes (NEON, NEON_DOTPROD, NEON_I8MM, SVE, SVE2) | No |
| CI in upstream GitLab | Yes | Yes (cross-compile in .gitlab/workflows/linux/) |
No |
Toolchain file in cmake/toolchains/ |
N/A (native) | Yes (aarch64_toolchain.cmake) |
No |
| Official upstream binary | No (source only) | No (source only) | No |
| Distro packages | Debian, Ubuntu, Arch, Gentoo | Debian, Ubuntu, Gentoo | Debian, Ubuntu, Gentoo (~riscv, testing) |
| Build mechanism | NASM + CMake SIMD dispatch | CMake SIMD dispatch, cross-toolchain | COMPILE_C_ONLY fallback |
4. Technical Architecture and RISC-V-Specific Subsystems
SVT-AV1 implements AV1 encoding in C with architecture-specific SIMD acceleration in separate subdirectories under Source/Lib/. There is no JIT or garbage collection; the performance-critical paths are all static SIMD dispatch at CMake configure time.
Architecture detection in CMakeLists.txt:
HAVE_X86_PLATFORM: triggered by_M_X64or__x86_64__HAVE_ARM_PLATFORM: triggered by__aarch64__or_M_ARM64- No
HAVE_RISCV_PLATFORMor equivalent
When neither flag is set (the riscv64 case), only C_DEFAULT is linked.
Component analysis:
| Component | amd64 | arm64 | riscv64 |
|---|---|---|---|
| DCT / transforms | Hand-tuned AVX2 + NASM assembly | NEON intrinsics + SVE | C scalar (missing) |
| Convolution / interpolation | AVX2 intrinsics | NEON + SVE | C scalar (missing) |
| SAD / variance | AVX2 | NEON + SVE | C scalar (missing) |
| CDEF | AVX2 | NEON + SVE | C scalar (missing) |
| Loop filter | AVX2 | NEON | C scalar (missing) |
| Quantization | AVX2 | NEON + SVE | C scalar (missing) |
| Temporal filtering | AVX2 | NEON + SVE | C scalar (missing) |
| Warp / affine | AVX2 | NEON + SVE | C scalar (missing) |
| Intra / inter prediction | AVX2 | NEON | C scalar (missing) |
| Wiener / restoration | AVX2 | NEON + SVE | C scalar (missing) |
| CPU feature detection | AOM x86.h CPUID (bundled) | AOM arm CPUID (bundled) | Returns flags=0, C fallback |
ISA directory file counts:
| Directory | File count | Architecture |
|---|---|---|
ASM_NEON |
84 files | AArch64 NEON |
ASM_SVE |
24 files | AArch64 SVE |
ASM_NEON_DOTPROD |
exists | AArch64 |
ASM_NEON_I8MM |
exists | AArch64 |
ASM_ARM_CRC32 |
exists | AArch64 |
ASM_SVE2 |
exists | AArch64 |
ASM_AVX2 |
65 files | x86 |
ASM_AVX512 |
exists | x86 |
ASM_SSE2 / ASM_SSSE3 / ASM_SSE4_1 |
exist | x86 |
ASM_RVV or ASM_RISCV |
does not exist | riscv64 – absent |
No __riscv, riscv64, or RISCV preprocessor guards appear anywhere in the codebase. No RVV intrinsics (vfloat32m1_t, vlse32_v_f32m1, etc.) are present. No Zba/Zbb/Zbc/Zv* extension usage exists.
5. Build System, Cross-Compilation, and Toolchain
Existing toolchain files (cmake/toolchains/):
aarch64_toolchain.cmake–CMAKE_SYSTEM_PROCESSOR=aarch64, usesaarch64-linux-gnu-{gcc,g++,gcc-ar}android_aarch64_toolchain.cmake– Android AArch64 variantpowerpc64le-linux-gnu.cmake– setsCMAKE_SYSTEM_PROCESSOR=ppc, setsCONFIG_RUNTIME_CPU_DETECT=0
No riscv64_toolchain.cmake exists. The powerpc64le file is the closest pattern for creating one.
Recommended build invocation for riscv64 cross-compilation (derived from Docs/ARM-Build-Guide.md pattern; no riscv64-specific guide exists):
cmake -B Bin/Release \
-S . \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_TOOLCHAIN_FILE=./cmake/toolchains/riscv64_toolchain.cmake \
-DCOMPILE_C_ONLY=ON
cmake --build Bin/Release -j
-DCOMPILE_C_ONLY=ON is not strictly required (riscv64 triggers neither platform guard, so C_DEFAULT is selected automatically) but makes the intent explicit and prevents any future platform-detection change from silently breaking the build.
Compiler version minimums (from Docs/Build-Guide.md and Docs/ARM-Build-Guide.md):
- GCC: 5.4.0 minimum (generic); 8.1.0+ for native AArch64
- Clang: 11 (Ubuntu 18.04/20.04 guidance)
- CMake: 3.16+ (general); 3.23+ for AArch64 cross-compilation
- NASM: 2.14+ (x86 only; not required for riscv64)
For riscv64, any GCC or Clang with riscv64-linux-gnu target support is sufficient. GCC 10+ or Clang 12+ are recommended for full C99/C11 support [NEEDS VERIFICATION – no riscv64-specific compiler guidance exists in the docs].
QEMU: No QEMU references exist anywhere in the repository. No QEMU-based test step is documented.
Relevant CMake flags for riscv64:
| Flag | Effect |
|---|---|
-DCOMPILE_C_ONLY=ON |
Explicitly skip all SIMD detection |
-DNATIVE=OFF |
Do not add -march=native (required for cross builds) |
-DBUILD_SHARED_LIBS=OFF |
Static library |
-DMINIMAL_BUILD=ON |
Reduces binary size |
-DENABLE_AVX512=OFF |
Not needed on riscv64 (auto-disabled), but safe to set |
Confirmed riscv64 build log evidence (Debian sid, v4.1.0+dfsg-1, built 2026-03-26 on rv-osuosl-04):
"Performing Test HAVE_X86_PLATFORM - Failed""Performing Test HAVE_ARM_PLATFORM - Failed""Checking C flag support for: [-mno-avx] - No"(flag unrecognized by riscv64 compiler)- All compiled objects receive
-DEN_AVX512_SUPPORT=0 - Build time: 20 minutes; installed size: 135.0 kB (vs amd64 which includes all SIMD objects)
6. Feature Coverage and Gap Analysis vs arm64 and amd64
Functional gaps: None. The C_DEFAULT path implements all encoding functions. riscv64 can encode AV1 video correctly. There are no known correctness issues specific to riscv64.
Performance gaps: All encode performance-critical paths (DCT, prediction, loop filtering, CDEF, temporal filtering, quantization) run as scalar C on riscv64. The arm64 build has 84 NEON files and 24 SVE files; the x86 build has 65+ AVX2 files plus SSE layers. No published benchmark comparing riscv64 vs arm64 or x86 exists in any accessible source.
The installed binary size on riscv64 is 135.0 kB vs full SIMD builds which are substantially larger (amd64 full build is larger due to multiple SIMD object layers). This smaller footprint is a direct result of absent SIMD code, not an architectural advantage.
Security hardening gaps: Data not available – no riscv64-specific security hardening analysis was found in any upstream source.
Floating-point semantics: No riscv64-specific floating-point issues are documented. Issue #2348 (open, floating-point FFT mismatch) is MSVC/x86-only and unrelated to riscv64.
| Feature | amd64 | arm64 | riscv64 |
|---|---|---|---|
| AV1 encode (correctness) | Yes | Yes | Yes (C fallback) |
| All presets (M0-M13) | Yes | Yes | Yes (but slow) |
| Multi-threading | Yes | Yes | Yes |
| SIMD acceleration | Full (SSE2 through AVX-512) | Full (NEON through SVE2) | None |
| CPU feature detection | CPUID-based | CPUID-based | Returns 0 (no SIMD) |
| RTC / low-latency mode | Yes | Yes | Yes (functional, not benchmarked) |
7. CI/CD Infrastructure
No riscv64 CI exists in SVT-AV1. The following files were read directly from the canonical GitLab repository and confirmed to contain zero occurrences of “riscv”:
.gitlab-ci.yml(root) – style check, static analysis, version consistency.gitlab/workflows/standard/.gitlab-ci.yml– cross-OS diff test: Linux x86_64, macOS x86, macOS m1 (ARM), Win64.gitlab/workflows/linux/.gitlab-ci.yml– cross-compilation for aarch64 and powerpc64le; no riscv64.gitlab/workflows/common/.gitlab-ci.yml– shared build/encode jobs; no riscv64.gitlab/workflows/nightly/.gitlab-ci.yml– single stub job on ubuntu:24.04; no riscv64.gitlab/workflows/bsd/.gitlab-ci.yml– no riscv64.gitlab/workflows/macos/.gitlab-ci.yml– no riscv64
The GitHub mirror contains no .github/ directory and no CI of any kind.
No RISE CI runners are used. No QEMU emulation step exists for non-native architectures.
| CI criterion | amd64 | arm64 | riscv64 |
|---|---|---|---|
| Build job | Yes | Yes (cross-compile, .gitlab/workflows/linux/) |
No |
| Encode/decode test | Yes | Yes | No |
| QEMU emulation | No | No | No |
| Hardware runner | Yes (x86 GitLab shared runners) | Yes (cross-compile on x86) | No |
| RISE runner | No | No | No |
| Release blocking | Yes | No (cross-compile only) | No |
8. Distribution and Release Status
Upstream releases: All releases (v4.1.0, v4.0.1, v4.0.0) ship source archives only (.zip, .tar.gz, .tar.bz2, .tar). No upstream binary assets exist for any architecture.
Distro packages:
| Distribution | Version | riscv64 status | Notes |
|---|---|---|---|
| Debian sid | 4.1.0+dfsg-1 | Installed | Built on rv-osuosl-04, 2026-03-26, 20 min, 135.0 kB installed |
| Ubuntu 24.04 Noble | 1.7.0+dfsg-2build1 | Available | libsvtav1enc1d1, 1207.6 kB; riscv64 explicitly listed |
| Gentoo | 4.1.0 | ~riscv (testing) |
Not stable; all versions marked testing on riscv |
| Arch Linux | 4.1.0-1 | x86_64 only | nasm listed as build dep; no riscv64 port |
| Arch Linux RISC-V (archriscv.felixc.at) | Unknown | Data not available | Search did not return package-specific results |
PyPI: Package svt-av1 does not exist on PyPI (HTTP 404). No wheels for any architecture.
RISE wheel builder: Redirects to PyPI, which returns 404. SVT-AV1 is not listed in the RISE wheel builder package index.
What a user must do to get a working riscv64 binary: Install from Debian or Ubuntu package repositories. The package is C-only with no SIMD. Alternatively, cross-compile from source using -DCOMPILE_C_ONLY=ON with a riscv64-linux-gnu toolchain. No upstream binary and no documented riscv64 build procedure exist.
Debian build history confirms continuous riscv64 builds since at least January 2022 (v0.8.7):
| Version | Build date | Build time |
|---|---|---|
| 4.1.0+dfsg-1 | 2026-03-26 | 20 min |
| 3.1.2+dfsg-2 | 2026-03-19 | 22 min |
| 2.3.0+dfsg-1 | 2024-12-14 | 20 min |
| 2.2.1+dfsg-2 | 2024-09-25 | 15 min |
| 2.1.0+dfsg-2 | 2024-07-08 | 11 min |
| 1.7.0+dfsg-2 | 2023-09-23 | 12 min |
| 0.8.7+dfsg-1 | 2022-01-16 | 6 min |
9. Dependencies
| Dependency | Role | riscv64 build | riscv64 test | riscv64 release | Notes |
|---|---|---|---|---|---|
| NASM / YASM | x86-64 assembly (SSE2 through AVX-512) | Not required | N/A | N/A | Skipped automatically by HAVE_X86_PLATFORM guard; riscv64 builds skip all NASM paths |
| aom CPU detection (bundled) | Runtime CPU feature detection | Builds | Functional (returns flags=0) |
Included | Bundled since v3.1.0; #else branch returns 0 for unsupported architectures; safe and correct on riscv64 |
| aom_dsp / aom_ports (bundled) | Entropy coding helpers, x86 CPUID | Builds | Functional | Included | aom_ports/x86.h only included under #ifdef ARCH_X86_64; aom_dsp is pure C |
| fastfeat (bundled) | FAST corner detection | Builds | Functional | Included | Pure C, no SIMD |
| safestringlib (bundled) | Safe string functions | Builds | Functional | Included | Pure C |
| googletest (bundled, test-only) | Unit tests | Builds | Functional | N/A | libgtest-dev available on riscv64 in Debian (v1.17.0) |
| libcpuinfo | CPU feature detection (removed) | N/A | N/A | N/A | Removed in v3.1.0 (July 2025) via MR !2453; previously blocked riscv64 packaging (issue #2239, resolved 2025-02-13) |
| pthreads | Multi-threading | Available | Functional | Included | Available on all Linux architectures |
| Valgrind headers (optional) | Suppress AVX2 paths under Valgrind | Available | Functional | Included | Valgrind has riscv64 support |
No critical blocking dependencies exist for riscv64 as of v4.1.0. The previously blocking dependency (libcpuinfo) was removed in v3.1.0.
Downstream consumers of SVT-AV1 on riscv64:
- FFmpeg: consumes SVT-AV1 via
ffmpeg_plugin/and thelibsvtav1encoder wrapper; riscv64 status tracked in./multimedia/ffmpeg.md - libavif: uses SVT-AV1 as its primary encoder backend; riscv64 status tracked in
./multimedia/libavif.md - libaom: provides the bundled CPU detection code now used by SVT-AV1; Debian sid libaom 3.13.1-2+b1 builds successfully on riscv64
11. Known Bugs and Active Issues
riscv64-specific issues:
| ID | Title | Status | Severity | Notes |
|---|---|---|---|---|
| #2239 | Please only depend on libcpuinfo for aarch64 and x86_64 | Closed (2025-02-13) | Packaging blocker | libcpuinfo blocked riscv64/ppc64le/s390x; resolved by MR !2384 then MR !2453 |
| #2214 | Stop relying on arbitrary code files in /thirdparty, use libraries instead | Open | Medium | Mentions riscv64 packaging blocked by bundled code; Fedora Bugzilla RH#2316282 linked |
Open general correctness bugs (not riscv64-specific):
| ID | Title | Status | Severity | Notes |
|---|---|---|---|---|
| #2372 | RTC residual MT non-determinism at M12/M13 on high-motion content | Open | High | Not architecture-specific |
| #2373 | Uninitialised value during libheif fuzzing | Open | Medium | Not architecture-specific |
| #2355 | Data race in mode decision | Open | Medium | Not architecture-specific |
| #2354 | Load of misaligned address and left shift of negative value (ASAN) | Open | Medium | Not architecture-specific |
| #2348 | MSVC /fp:strict floating-point FFT mismatch | Open | Low (MSVC only) | x86/MSVC-only; not riscv64 |
| #2356 | Crash in svt_aom_blend_a64_mask_avx2 | Open | Medium | x86-only |
No open riscv64-specific correctness bugs exist in the upstream tracker as of June 2026.
12. Objections and Upstream Blockers
Stated objections: Issue #2239 records a Fedora packager’s explicit statement: “svt-av1 offers no ASM optimizations for those other platforms anyway.” This reflects upstream’s position: riscv64 is an unsupported platform; C fallback works, but there is no investment interest from any current committer.
Technical blockers:
- No
HAVE_RISCV_PLATFORMCMake detection exists. A RISC-V SIMD contribution would need to add platform detection, acmake/toolchains/riscv64_toolchain.cmake, and at minimum oneASM_RVVdirectory with intrinsic implementations. - All 10 SIMD functional units (DCT, CDEF, SAD, loop filter, quantization, etc.) need RVV implementations. Arm Ltd required multiple engineer-years to produce the 84 NEON + 24 SVE files currently present. The scope for a competitive riscv64 port is comparable.
- There is no riscv64 CI to catch regressions. Any submitted RVV code would need CI infrastructure (QEMU or hardware runners) to be accepted.
Organizational blockers:
- No RISE funding or involvement with SVT-AV1 is documented. RISE blog, repos, and wheel builder contain no SVT-AV1 content.
- No RISC-V silicon vendor has filed an issue, MR, or mailing list post expressing intent to contribute.
- AOMedia IP assignment requirement in CONTRIBUTING.md means contributions require corporate legal sign-off, raising the bar above typical open-source contribution.
Acceptance probability: High for a correct, reviewed RVV contribution backed by a credible vendor, given that the ARM precedent (Arm Ltd driving the full NEON/SVE port) was accepted. Low without sustained corporate backing, given the IP policy and the scale of the SIMD gap.
13. Investment Analysis
RISE has no documented involvement with SVT-AV1. All work described below is currently uncovered.
13.1 Functional Enablement
The C fallback already builds and runs correctly on riscv64. Functional enablement is complete (no work required). The only open functional issue is #2214 (bundled third-party code, packaging friction), which is a Fedora/Red Hat concern and does not block riscv64 operation.
13.2 Performance Optimization
This is the dominant investment area. Every SIMD-accelerated encode path needs an RVV equivalent. Prioritized by encode time contribution:
- DCT/transforms (largest single contributor to encode time)
- SAD/variance (motion estimation – heavily vectorized on x86/ARM)
- CDEF and loop filtering
- Temporal filtering
- Intra/inter prediction
- Quantization
- Wiener/restoration
The arm64 precedent (84 NEON + 24 SVE files across ~3 engineer-years) sets the order-of-magnitude estimate for a competitive RVV port. A partial port targeting the top 3-4 components would capture the majority of achievable speedup.
13.3 CI/CD Infrastructure
riscv64 CI does not exist. Minimum viable CI: a QEMU riscv64 cross-compile job in the GitLab pipeline, following the pattern of the existing AArch64 cross-compile job in .gitlab/workflows/linux/. Hardware runner (RISC-V board or SiFive/SpacemiT hardware) would be needed for reliable performance regression testing.
13.4 Ecosystem Enablement
SVT-AV1 has no significant dependent package ecosystem of its own (no plugins, no extension registry). Its downstream consumers – FFmpeg, libavif, GStreamer – have their own RISC-V status tracked separately. No action in this area for SVT-AV1 specifically.
13.5 Summary Table
| Area | Work Item | Effort (person-weeks) | Owner | Priority |
|---|---|---|---|---|
| Functional | Resolve issue #2214 (bundled third-party code) | 2 | Packager / distro | Low |
| Functional | Add cmake/toolchains/riscv64_toolchain.cmake and HAVE_RISCV_PLATFORM CMake detection |
1 | RISC-V vendor | Medium |
| Performance | RVV DCT/transform implementations (ASM_RVV/) |
12-16 | RISC-V vendor (Arm precedent) | Critical |
| Performance | RVV SAD/variance (motion estimation) | 6-8 | RISC-V vendor | High |
| Performance | RVV CDEF + loop filter | 6-8 | RISC-V vendor | High |
| Performance | RVV temporal filtering, prediction, quantization, restoration | 12-18 | RISC-V vendor | Medium |
| CI/CD | Add riscv64 cross-compile job to GitLab CI (QEMU) | 2 | RISC-V vendor / RISE | High |
| CI/CD | Hardware riscv64 CI runner for performance regression | 4 | RISE or silicon vendor | Medium |
Total estimated effort for a competitive (not complete) RVV port covering the top SIMD paths and CI: approximately 40-55 person-weeks from a team with RVV intrinsics experience.
14. Updates
No updates yet – initial report dated 2026-06-17.
15. References
- SVT-AV1 canonical repository (GitLab)
- SVT-AV1 GitHub mirror
- GitLab issue #2239 – libcpuinfo riscv64 packaging blocker
- GitLab issue #2214 – bundled third-party code packaging friction
- GitLab releases page
- Debian buildd riscv64 build status for svt-av1
- Ubuntu 24.04 Noble package: svt-av1
- Debian tracker: svt-av1
- RISE Project blog
- RISE wheel builder package index
- SVT-AV1 ARM Build Guide
- SVT-AV1 Build Guide
- SVT-AV1 System Requirements