{
  "schemaVersion": 1,
  "contentVersion": "ca42e61ede0a24f789d7287a0001244ad22f4abf",
  "id": "docs/tools/software-encoders/uavs3e",
  "collection": "docs",
  "title": "uavs3e",
  "description": "uavs3e is the open-source AVS3 encoder from Peking University Shenzhen Graduate School; it is unmaintained since 2022 and needs workarounds to build with current toolchains.",
  "canonicalUrl": "https://encode.wiki/tools/software-encoders/uavs3e/",
  "apiUrl": "https://encode.wiki/api/v1/documents/docs/tools/software-encoders/uavs3e.json",
  "markdownUrl": "https://encode.wiki/api/v1/markdown/docs/tools/software-encoders/uavs3e.md",
  "status": "current",
  "tags": [
    "migrated"
  ],
  "license": "CC BY-SA 4.0",
  "dates": {
    "lastVerified": "2026-10-08T00:00:00.000Z"
  },
  "authors": [],
  "sources": [
    {
      "title": "uavs3e repository and README",
      "url": "https://github.com/uavs3/uavs3e",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "uavs3e tags (v1.1, v1.3)",
      "url": "https://github.com/uavs3/uavs3e/tags",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "uavs3e issue 53: crash in 10-bit builds on AVX2 Linux",
      "url": "https://github.com/uavs3/uavs3e/issues/53",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "uavs3d, the matching AVS3 decoder",
      "url": "https://github.com/uavs3/uavs3d",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    },
    {
      "title": "FFmpeg 9.0.2 configure (libuavs3d decoder)",
      "url": "https://github.com/FFmpeg/FFmpeg/blob/n9.0.2/configure",
      "accessedAt": "2026-10-08T00:00:00.000Z"
    }
  ],
  "provenance": {
    "originUrl": "https://github.com/av1-community-contributors/codec-wiki/blob/37c3317fd058b23c71a87679bed5619a98f77752/docs/encoders/uavs3e.mdx",
    "originCommit": "37c3317fd058b23c71a87679bed5619a98f77752",
    "migratedAt": "2026-08-21T00:00:00.000Z",
    "modified": true,
    "originPath": "docs/encoders/uavs3e.mdx"
  },
  "headings": [
    {
      "depth": 2,
      "text": "Build",
      "anchor": "build"
    },
    {
      "depth": 2,
      "text": "Encode",
      "anchor": "encode"
    },
    {
      "depth": 2,
      "text": "Decode and play",
      "anchor": "decode-and-play"
    }
  ],
  "sections": [
    {
      "id": "_preamble",
      "title": "Page introduction",
      "depth": 0,
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/uavs3e/",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uavs3e/_preamble.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uavs3e/_preamble.md",
      "checksum": "150711eba13cc80adc3c53a536a1b2551a115cbdd4381d587fa57a1c1f9dab1b",
      "bytes": 865
    },
    {
      "id": "build",
      "title": "Build",
      "depth": 2,
      "anchor": "build",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/uavs3e/#build",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uavs3e/build.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uavs3e/build.md",
      "checksum": "4d9296538af056652359fc6fa1f306177381e1357ff12225c5fddf48798c342b",
      "bytes": 1031
    },
    {
      "id": "encode",
      "title": "Encode",
      "depth": 2,
      "anchor": "encode",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/uavs3e/#encode",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uavs3e/encode.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uavs3e/encode.md",
      "checksum": "7a3368f41c1d42df57753c57afc95f53f812144dfb6d39bd6795da450216bbb8",
      "bytes": 1945
    },
    {
      "id": "decode-and-play",
      "title": "Decode and play",
      "depth": 2,
      "anchor": "decode-and-play",
      "canonicalUrl": "https://encode.wiki/tools/software-encoders/uavs3e/#decode-and-play",
      "apiUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uavs3e/decode-and-play.json",
      "markdownUrl": "https://encode.wiki/api/v1/sections/docs/tools/software-encoders/uavs3e/decode-and-play.md",
      "checksum": "695dc94ffe8e9a73c3fafdf75e86a82d70416ea955232807b7780f519f9c36c5",
      "bytes": 185
    }
  ],
  "outboundReferences": [
    "/codecs/video/avs3/",
    "https://github.com/uavs3/uavs3d",
    "https://github.com/uavs3/uavs3e",
    "https://github.com/uavs3/uavs3e/issues/53",
    "https://github.com/uavs3/uavs3e/releases/tag/v1.1"
  ],
  "checksum": "0fec658c38edd55377e49021ef763bd710ef0b56186d4d7d03a982e87e1cb8f7",
  "contentFormat": "markdown",
  "markdown": "> **Repository:** [uavs3/uavs3e](https://github.com/uavs3/uavs3e) (No commits since Aug 2023). AVS3 encoder which supports AVS3-P2 baseline profile. Latest release: [v1.1](https://github.com/uavs3/uavs3e/releases/tag/v1.1), Oct 12, 2022. Last commit: Aug 3, 2023. Stars: 162.\n\n[uavs3e](https://github.com/uavs3/uavs3e) is an open-source encoder for [AVS3](/codecs/video/avs3/), the Chinese video standard, supporting the AVS3-P2 baseline profile. It was developed by Peking University Shenzhen Graduate School, Peng Cheng Laboratory and Guangdong Bohua UHD Innovation, and is licensed under the BSD 4-clause license. It is optimized for SSE4/AVX2 and also builds for ARM and LoongArch.\n\nDevelopment has stopped: the last commit on `master` is from August 2023, and the only tags, `v1.3` and `v1.1`, date from 2022. It is slow by default and awkward to build today.\n\n## Build\n\nThere are no binaries. On Linux:\n\n```sh\ngit clone https://github.com/uavs3/uavs3e.git\ncd uavs3e\nmkdir -p build/linux && cd build/linux\ncmake ../.. -DCOMPILE_10BIT=0 -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \\\n  -DCMAKE_C_FLAGS=\"-Wno-incompatible-pointer-types -D_LARGEFILE64_SOURCE -include unistd.h\"\nmake -j8\n```\n\nThe extra flags work around three problems with current toolchains: CMake 4 rejects the project's old minimum version, GCC 14+ and recent Clang treat an incompatible-pointer warning in the AVX2 code as an error, and `test/utest.c` (where the encoder's `main` lives) uses `lseek64`/`read`/`write` without including `<unistd.h>`. The result is a `uavs3enc` binary in the build directory. On Windows, run `version.bat` and build `build/x86_windows/uavs3e.sln` in Visual Studio.\n\n> **Caution.**\n>\n> `-DCOMPILE_10BIT=1` enables 10-bit encoding, but without SIMD, and builds with it [crash on AVX2 Linux](https://github.com/uavs3/uavs3e/issues/53) (reported, unfixed). Stay with the 8-bit build unless you need 10-bit.\n## Encode\n\nuavs3enc reads **raw planar YUV only**, from a seekable file: no Y4M, and `-i -` (stdin) does not work. Convert first, and give it the size and frame rate yourself:\n\n```sh\nffmpeg -i input.mkv -pix_fmt yuv420p -f rawvideo input.yuv\nuavs3enc -i input.yuv -w 1920 -h 1080 -d 8 --fps_num 24000 --fps_den 1001 -q 30 -o output.avs3\n```\n\nNote that `-h` is the height, not help. For rate-controlled encodes and more threads:\n\n```sh\nuavs3enc -i input.yuv -w 1920 -h 1080 -d 8 --fps_num 24000 --fps_den 1001 -p 120 \\\n  --speed_level 2 --rc_type 1 --rc_crf 28 --wpp_threads 8 --frm_threads 8 -o output.avs3\n```\n\nWith `--rc_type 1` (CRF) the quality comes from `--rc_crf`, and `-q` is ignored.\n\n| Option                             | Meaning                                                                 |\n| ---------------------------------- | ----------------------------------------------------------------------- |\n| `-q`                               | Fixed QP in CQP mode (the default): 0–63 for 8-bit, −16–63 for 10-bit.  |\n| `--rc_type`                        | `0` CQP (default), `1` CRF, `2` ABR, `3` CBR.                           |\n| `--rc_crf`                         | CRF value, 0–63.                                                        |\n| `--rc_bitrate`, `--rc_max_bitrate` | Target and maximum bitrate in kbit/s for ABR/CBR.                       |\n| `--speed_level`                    | `0` to `4`. **`0` is the default and the slowest**; `4` is the fastest. |\n| `-p`                               | Intra period in frames; `0` means only the first frame is intra.        |\n| `--wpp_threads`, `--frm_threads`   | Wavefront and frame-level threading.                                    |\n| `-f`                               | Maximum number of frames to encode.                                     |\n| `--config`                         | Read options from a file; command-line options override it.             |\n\n## Decode and play\n\nThe output is a raw AVS3 stream. Decode it with [uavs3d](https://github.com/uavs3/uavs3d), or with FFmpeg built with `--enable-libuavs3d`, which is not the default.\n"
}
