# AVS3

Canonical URL: https://encode.wiki/codecs/video/avs3/
Content version: ca42e61ede0a24f789d7287a0001244ad22f4abf
Status: current
License: CC BY-SA 4.0
Checksum (SHA-256): 81b30f652379f3f2820d17b5ff1659dd70dacee65396847696ebdd022120a7ea

AVS3 is the third-generation video standard from China's Audio Video coding Standard (AVS) Workgroup, in the same efficiency class as [HEVC](/codecs/video/hevc/) and [VVC](/codecs/video/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.

## Implementations

| Project | Role | Notes |
| --- | --- | --- |
| [uavs3e](https://github.com/uavs3/uavs3e) | Encoder | Baseline 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](/tools/software-encoders/uavs3e/) for building and options. |
| [uavs3d](https://github.com/uavs3/uavs3d) | Decoder | Baseline 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). |
| FFmpeg | Decoder | Decodes 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.

## Encode and decode

Build uavs3e as described on its [page](/tools/software-encoders/uavs3e/); current CMake and GCC need extra flags. The decoder builds with stock CMake once the old minimum-version check is overridden, and produces `uavs3dec`:

```sh
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:

```sh
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
```

## Pitfalls

- 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](/reference/video-codec-support/).
