TianZerL / Anime4KCPP

A high performance anime upscaler
GNU General Public License v3.0
1.82k stars 139 forks source link
anime anime4k anime4kcpp avisynth avisynthplus-plugin cnn computer-graphics cpp directshow-filter gpu-acceleration machine-learning upscaling vapoursynth vapoursynth-plugin video-processing

Anime4KCPP v3

Anime4KCPP is a high performance anime upscaler.

Anime4KCPP v3 uses CNN based algorithm, and aims to be simple and efficient.

Build

Dependency

To build Anime4KCPP v3 you need CMake and a C++17 compiler, and most dependencies will be resolved automatically by CMake if you have internet.

List of dependencies that need to be prepared by yourself:

Dependency CMake option Module
CUDA Toolkit AC_CORE_WITH_CUDA core(CUDA)
libavcodec AC_BUILD_VIDEO video
libavformat AC_BUILD_VIDEO video
libavutil AC_BUILD_VIDEO video
Qt AC_BUILD_GUI gui

List of dependencies that can be resolved automatically:

Dependency CMake option Module
Avisynth SDK AC_BUILD_FILTER_AVISYNTH filter(avisynth)
CLI11 AC_BUILD_CLI cli
DirectShow base classes AC_BUILD_FILTER_DIRECTSHOW filter(directshow)
Eigen3 AC_CORE_WITH_EIGEN3 core(eigen3)
OpenCL SDK AC_CORE_WITH_OPENCL core(opencl)
pybind11 AC_BUILD_BINDING_PYTHON binding(python)
ruapu N/A core
stb N/A core
VapourSynth SDK AC_BUILD_FILTER_VAPOURSYNTH filter(vapoursynth)

Platform

Windows

Tested with MinGW-w64 and MSVC.

Build with MinGW-w64:

mkdir build; cd build
cmake -G "MinGW Makefiles" .. -DAC_ENABLE_STATIC_CRT=ON
cmake --build . --config Release -j8
cd bin
./ac_cli -v

To setup ffmpeg's libav for building video module on Windows, it is recommended to add an AC_PATH_FFMPEG variable to CMake, but you can also use pkg-config for Windows. AC_PATH_FFMPEG should be a path to the ffmpeg's root folder witch contains lib and include.

To add AC_PATH_FFMPEG to CMake, click Add Entry button in cmake-gui or use -DAC_PATH_FFMPEG="path/to/ffmpeg/root" in terminal.

You can download ffmpeg with sdk from BtBN (ffmpeg-master-latest-win64-gpl-shared.zip or ffmpeg-master-latest-win64-lgpl-shared.zip) or gyan.dev (ffmpeg-release-full-shared.7z) for Windows.

You need MSVC to build directshow filter, witch is only available on Windows.

Linux

Tested with gcc and clang.

mkdir build && cd build
cmake ..
cmake --build . --config Release -j8
cd bin
./ac_cli -v

Termux

To build with opencl support, you need install ocl-icd package, OpenCL SDK from Khronos seems not to be worked with termux.

pkg install cmake clang ocl-icd opencl-clhpp opencl-headers
mkdir build && cd build
cmake .. -DAC_CORE_WITH_OPENCL=ON
cmake --build . --config Release -j8
cd bin
LD_LIBRARY_PATH=/vendor/lib64:$PREFIX/lib ./ac_cli -l

WASM

Only tested with Emscripten. See wasm test.

Mac OS

Untested. If you do, please provide feedback.

CMake options

Option Description Default
AC_SHARED_LIB build as a shared library OFF
AC_CORE_WITH_EIGEN3 build core with eigen3 OFF
AC_CORE_WITH_SSE build core with x86 sse Auto detect
AC_CORE_WITH_AVX build core with x86 avx Auto detect
AC_CORE_WITH_FMA build core with x86 fma and avx Auto detect
AC_CORE_WITH_NEON build core with arm neon Auto detect
AC_CORE_WITH_WASM_SIMD128 build core with wasm simd128 Auto detect
AC_CORE_WITH_OPENCL build core with opencl OFF
AC_CORE_WITH_CUDA build core with cuda OFF
AC_CORE_ENABLE_FAST_MATH enable fast math for core OFF
AC_CORE_ENABLE_IMAGE_IO enable image file read and write for core ON
AC_BUILD_CLI build cli ON
AC_BUILD_GUI build gui OFF
AC_BUILD_VIDEO build video module OFF
AC_BUILD_FILTER_AVISYNTH build avisynth filter OFF
AC_BUILD_FILTER_VAPOURSYNTH build vapoursynth filter OFF
AC_BUILD_FILTER_DIRECTSHOW build directshow filter (Windows MSVC only) OFF
AC_BUILD_FILTER_AVISYNTH_VAPOURSYNTH build an avisynth and vapoursynth universal filter OFF
AC_BUILD_BINDING_C build c binding for core OFF
AC_BUILD_BINDING_PYTHON build python binding for core OFF
AC_TOOLS_BENCHMARK build benchmark OFF
AC_TEST_UTIL build util module test OFF
AC_TEST_VIDEO build video module test OFF
AC_TEST_WASM build wasm test (Emscripten only) OFF
AC_ENABLE_LTO enable LTO OFF
AC_ENABLE_STATIC_CRT enable static link crt OFF
AC_DISABLE_RTTI disable rtti OFF
AC_DISABLE_EXCEPTION disable exception OFF
AC_DISABLE_PIC disable pic or pie OFF

There are some convenient presets:

AC_PRESET_RELEASE

LICENSE

The video module is under GPLv3, any module built with the video module are also under GPLv3, others under MIT. For example, if cli build with video module, it is under GPLv3, otherwise, it is under MIT.