Code Monkey home page Code Monkey logo

aom-av1-psy's Introduction

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!

aom-av1-psy's People

Contributors

aconverse avatar agrange avatar chengchen-google avatar debargha avatar dmitriykovalev avatar fkyslov avatar gezalore avatar imgmips1 avatar jeromejj avatar jimbankoski avatar jimdbh avatar jingninghan avatar jkoleszar avatar jmvalin avatar jzern avatar luctrudeau avatar marco99zz avatar paulwilkins avatar pengbin87 avatar punksu avatar rbultje avatar remyaprakasan avatar stemidts avatar tomfinegan avatar urvangjoshi avatar venkat-sanampudi avatar wantehchang avatar yaowuxu avatar ycho avatar zoeliu37 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

aom-av1-psy's Issues

mastering-display

Know I guess you moved on from this to rav1e which is a shame, looks fairly extensive what was implemented. That said am I missing the option to apply mastering-display and content-light info?

lag_in_frames will not accept 128

Failed to initialize encoder: Invalid parameter
g_lag_in_frames out of range [..MAX_LAG_BUFFERS] 

I tried the Windows binary then built it in Linux, same problem. It doesn't work with 128 and 127 but it works with 96. Edit: actually it works with 96 in Windows but not Linux. Maybe I built the wrong aomenc..? But it didn't complain about the psy and butteraugli tunes.

I have no idea if I'm looking at the right thing but in lookahead.h, MAX_TOTAL_BUFFERS is hard capped at 48+48?
Also if I'm reading av1_cx_iface.c correctly, the raised limit only applies to 1 pass encoding?

Instructions for 10-bit Butteraugli

I'm trying to use 10-bit Butteraugli on Linux.

The provided 1.0.0 final executables all complain that aomenc needs to be built with DCONFIG_TUNE_BUTTERAUGLI=1, so it doesn't seem to be enabled there.

I compiled the source .tar.gz attached to the 1.0.0 final release with DCONFIG_TUNE_BUTTERAUGLI=1, but then I get the same message that the official aomenc 3.8.0 gives me:

Stream #0:0: Video: rawvideo (Y3[11][10] / 0xA0B3359), yuv420p10le(tv, progressive), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 745750 kb/s, 23.98 fps, 23.98 tbn
    Metadata:
      encoder         : Lavc59.37.100 rawvideo
Pass 1/2 frame    1/0    0:00               0.00 fpsStream 0: Failed to encode frame: Invalid parameter
    Only 8 bit depth images supported in tune=butteraugli mode.

I also tried the Endless_possibility_JXL_testing branch, but the result is exactly the same. Is the Butteraugli tune for 10-bit pixel formats not part of the final release anymore? Any older releases worth trying?

If I'm just doing something stupid or missing another CMake option, please provide a short hint or compile instructions in the ReadMe :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.