/aom-av1-psy

aomenc-av1 psy fork

Primary LanguageCBSD 2-Clause "Simplified" LicenseBSD-2-Clause

README.md {#LREADME}

aom-av1-psy encoding library

Building the library and applications {#building-the-library-and-applications}

Prerequisites {#prerequisites}

  1. CMake. See CMakeLists.txt for the minimum version required.
  2. Git.
  3. Perl.
  4. For x86 targets, yasm, which is preferred, or a recent version of nasm. If you download yasm with the intention to work with Visual Studio, please download win32.exe or win64.exe and rename it into yasm.exe. DO NOT download or use vsyasm.exe.
  5. Building the documentation requires doxygen version 1.8.10 or newer.
  6. Emscripten builds require the portable EMSDK.

Get the code {#get-the-code}

git clone https://github.com/BlueSwordM/aom-av1-psy for the main branch, where the main "psy" changes for aom-av1-psy can be looked at.

git clone https://github.com/BlueSwordM/aom-av1-psy -b full_build-4 for the full_build-4 branch, where most bigger non mainline targeted aom-av1-psy changes go.

git clone https://github.com/BlueSwordM/aom-av1-psy -b full_build-alpha-4 for the full_build-alpha-4 branch, where even more more experimental changes go and what most of us enthusiasts use for encoding.

Viewing the status of uploaded changes {#viewing-the-status-of-uploaded-changes}

To check the status of a change that you uploaded, open Github PRs, sign in, and click Pull Requests.

Support {#support}

This library is an open source project supported by the general AV1 enthusiast encoder community. Please please send pull requests, feature requests and general comments on this repository. Other more miscalleneous discussions, contributions, and talks will be done elsewhere.

Bug reports {#bug-reports}

Bug reports can be filed in the Alliance for Open Media for general aomenc bugs issue tracker.

As for the ones related to aom-av1-psy change themselves, the issues tab can be used here on Github.

Advanced Prerequisites

There are various advanced features that aom-av1-psy can utilize to further boost encoding quality that can be found in the full_build-alpha-4 branch.

These include butteraugli-jxl RD analysis(8-bit only currently), VMAF motion QP analysis(utilizing VMAF motion to enhance rate control in motion considerably, especially in lower luma scenarios), future SSIMULACRA2 RD analysis, and perceptual quality driven RD analysis with a strong VMAF motion QP analysis.

For VMAF, you need to either download/install the appropriate VMAF libraries for your OS to directly take advantage of it, either through your package manager on Linux or macOS, or downloading stuff directly on Windows: https://github.com/Netflix/vmaf

As for those who want to build stuff directly from source like me, this is how I personally do it as an example:

cd vmaf/libvmaf && mkdir build && cd build
meson .. --buildtype=release --default-library=both -Db_lto=true -Dc_args="-march=native" -Dcpp_args="-march=native" && ninja
sudo ninja install
cd .. && cd .. && cd .. && clear

For butteraugli-jxl analysis as well as future ssimulacra RD uses, you will need to download/install/build the appropriate libjxl libraries to get access to all of the required libraries and tools: https://github.com/libjxl/libjxl

As for those who want to build stuff directly from source like me, an example can be seen below as to how I do it:

    cd libjxl && mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-O3 -march=native" -DCMAKE_C_FLAGS="-O3 -march=native" -DJPEGXL_ENABLE_PLUGINS=ON -DJPEGXL_ENABLE_DEVTOOLS=ON -#DBUILD_TESTING=OFF -DJPEGXL_WARNINGS_AS_ERRORS=OFF -DJPEGXL_ENABLE_SJPEG=OFF  .. && cmake --build . -- -j$(nproc)
    sudo make install
    cd .. && cd .. && clear

Note that these build scripts are made for installing on your machine with maximum optimizations. These are not meant for distribution.

Now that everything's been said, enjoy your time here, and happy encoding!