libvpx Deprecation Plans for Older Features
This article provides an overview of the future deprecation plans for
older features, architectures, and APIs within the libvpx
library, the official software codec development kit for the VP8 and VP9
video formats. As the media industry shifts its focus toward
next-generation codecs like AV1 (via libaom) and VVC, the
WebM Project is actively streamlining the libvpx codebase.
This process involves deprecating legacy build configurations, outdated
hardware optimization paths, and redundant API controls to ensure
long-term maintainability and security.
Maintenance Mode and the Status of VP8
The libvpx library is currently in a highly mature
maintenance phase. Because the newer AV1 codec has succeeded VP8 and VP9
for most cutting-edge applications, active feature development on
libvpx has largely ceased.
For VP8 specifically, the WebM Project has relegated the codec to critical security-fix-only status. While there are no immediate plans to completely remove VP8 support due to its deep integration into legacy WebRTC infrastructure and older web browsers, no new features, optimization paths, or API extensions will be developed for VP8. Users are actively encouraged to transition to VP9 or AV1.
Deprecation of Outdated Compiler and Build Configurations
To simplify the continuous integration (CI) pipeline and maintain
high security standards, the maintainers of libvpx are
phasing out support for legacy build environments and compilers.
- Older Toolchains: Support for ancient compiler versions, such as pre-2015 MSVC (Microsoft Visual Studio) versions and early GCC/Clang releases, is being systematically deprecated. Developers must use modern, C11-compliant compilers to build the library.
- Legacy Build Scripts: Older, non-standard configuration scripts and workarounds designed for obsolete operating systems are being stripped from the build system to reduce technical debt.
Removal of Legacy Hardware Assembly Optimizations
Historically, libvpx contained handwritten assembly code
to optimize performance on a wide variety of hardware architectures. As
technology has evolved, several of these older optimization paths have
become obsolete.
- 32-Bit x86 MMX/SSE: Extremely old instruction sets, such as MMX and SSE (prior to SSE4.1), are targeted for deprecation. Modern CPUs universally support newer SSE variants or AVX, making the maintenance of these older assembly codebases redundant.
- Obsolete ARM Architecture Paths: Support for ARMv6 and older mobile architectures without NEON extensions is being phased out, shifting the focus entirely to modern ARMv7 (with NEON) and AArch64 (ARM64).
API and Control Parameter Cleanup
Over its lifespan, libvpx has accumulated a vast array
of configuration parameters and codec controls. The maintainers plan to
clean up the API by deprecating redundant or unsafe controls.
- Legacy Multi-Pass Controls: Older, inefficient multi-pass encoding structures are being deprecated in favor of standardized, modern two-pass workflows.
- Unused Codec Controls: Specific API control IDs
(
vpx_codec_control) that were experimental or rarely adopted by downstream projects are being flagged for removal in future major releases to prevent security vulnerabilities and simplify the API surface.