edge264
Minimalist software decoder with state-of-the-art performance for the H.264/AVC video format.
Please note this is a work in progress and will be ready for use after making GStreamer/VLC plugins.
Features
Supports Progressive High and MVC 3D profiles, up to level 6.2
and profiles, up to level 6.2 Any resolution up to 8K UHD
8-bit 4:2:0 planar YUV output
Slices and Arbitrary Slice Order
Slice and frame multi-threading
Per-slice reference picture list
Memory Management Control Operations
Long-term reference frames
Supported platforms
Windows: x86, x64
Linux: x86, x64, ARM64
Mac OS: x64
Compiling and testing
edge264 is entirely developed in C using 128-bit vector extensions and vector intrinsics, and can be compiled with GNU GCC or LLVM Clang. SDL2 runtime library may be used (optional) to enable display with edge264_test .
Here are the make options for tuning the compiled library file:
CC - C compiler used to convert source files to object files (default cc )
- C compiler used to convert source files to object files (default ) CFLAGS - additional compilation flags passed to CC and TARGETCC
- additional compilation flags passed to and TARGETCC - C compiler used to link object files into library file (default CC )
- C compiler used to link object files into library file (default ) LDFLAGS - additional compilation flags passed to TARGETCC
- additional compilation flags passed to TARGETOS - resulting file naming convention among Windows | Linux | Darwin (default host)
- resulting file naming convention among | | (default host) VARIANTS - comma-separated list of additional variants included in the library and selected at runtime (default logs ) x86-64-v2 - variant compiled for x86-64 microarchitecture level 2 (SSSE3, SSE4.1 and POPCOUNT) x86-64-v3 - variant compiled for x86-64 microarchitecture level 3 (AVX2, BMI, LZCNT, MOVBE) logs - variant compiled with logging support in YAML format (headers and slices)
- comma-separated list of additional variants included in the library and selected at runtime (default ) BUILD_TEST - toggles compilation of edge264_test (default yes )
- toggles compilation of (default ) FORCEINTRIN - enforce the use of intrinsics among x86 | ARM64 (for WebAssembly)
$ make CFLAGS= " -march=x86-64 " VARIANTS=x86-64-v2,x86-64-v3 BUILD_TEST=no # example x86 build
The automated test program edge264_test can browse files in a given directory, decoding each