Skip to content

AVS3

currentMigrated from docs/video/AVS3.mdx at 37c3317fd058; modified for Encode Wiki · CC BY-SA 4.0

AVS3 is the third-generation video standard from China’s Audio Video coding Standard (AVS) Workgroup, in the same efficiency class as HEVC and VVC. Work started in December 2017; the main profile was finalised in March 2019 and the High profile in August 2021, published as T/AI 109.2-2021. FFmpeg labels it AVS3-P2/IEEE 1857.10. It is a conventional block-based hybrid codec that nothing built for AVC or HEVC can decode.

In July 2022 DVB added AVS3 to its video coding specification (BlueBook A001r20) with four conformance points matching those defined for VVC: a 4K HDR baseline receiver plus high-frame-rate and 8K points. DVB’s announcement cites submitted results of about 40% bitrate savings over HEVC at equal subjective quality.

You will meet AVS3 mainly in Chinese broadcast and streaming. Outside that, tooling is thin and there is no browser support.

ProjectRoleNotes
uavs3eEncoderBaseline profile, 4:2:0. 8-bit by default; 10-bit only without SIMD. BSD 4-clause. Last release v1.3 (2022), last commit August 2023. See the uavs3e page for building and options.
uavs3dDecoderBaseline profile, 8-bit by default and 10-bit when built with -DCOMPILE_10BIT=1. SSE4/AVX2 and ARM optimisations. BSD 3-clause. Latest release 1.2 (August 2026).
FFmpegDecoderDecodes through libuavs3d (--enable-libuavs3d, since FFmpeg 4.4) and has a raw .avs3 demuxer. There is no AVS3 encoder, and most distribution builds do not include libuavs3d.

Both uavs3 projects come from Peking University Shenzhen Graduate School, Peng Cheng Laboratory and Guangdong Bohua UHD Innovation. They implement only the baseline profile, not the High profile used for DVB’s conformance points.

Build uavs3e as described on its page; current CMake and GCC need extra flags. The decoder builds with stock CMake once the old minimum-version check is overridden, and produces uavs3dec:

Terminal window
cmake -S uavs3d -B uavs3d/build -DCMAKE_POLICY_VERSION_MINIMUM=3.5 && cmake --build uavs3d/build

The encoder reads only raw planar YUV, so give it the size, frame rate and bit depth. -q is the QP:

Terminal window
uavs3enc -i input.yuv -w 1920 -h 1080 --fps_num 24 --fps_den 1 -d 8 -q 32 -o output.avs3
uavs3dec -i output.avs3 -o decoded.yuv
  • A 10-bit stream needs a decoder built with -DCOMPILE_10BIT=1. The default 8-bit build cannot decode it.
  • Raw YUV output carries no dimensions, frame rate or bit depth. Take them from the encode or the decoder’s log.
  • Do not plan web delivery around AVS3. Make an AVC, VP9 or AV1 rendition for browsers; see video codec support.