pyanime4k 3.0.0__tar.gz → 3.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pyanime4k might be problematic. Click here for more details.
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/.github/workflows/wheels.yml +0 -11
- pyanime4k-3.0.1/.gitmodules +3 -0
- {pyanime4k-3.0.0/pyanime4k.egg-info → pyanime4k-3.0.1}/PKG-INFO +10 -4
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/README.md +3 -2
- {pyanime4k-3.0.0 → pyanime4k-3.0.1/pyanime4k.egg-info}/PKG-INFO +10 -4
- pyanime4k-3.0.1/pyanime4k.egg-info/SOURCES.txt +127 -0
- pyanime4k-3.0.1/pyanime4k.egg-info/requires.txt +1 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/pyproject.toml +11 -4
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/setup.py +0 -11
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/CMakeLists.txt +1 -2
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/binding/c/include/AC/Core.h +9 -1
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/binding/c/src/Binding.cpp +29 -3
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cli/CMakeLists.txt +4 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/opencl.cmake +1 -1
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/CMakeLists.txt +7 -1
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Image.hpp +6 -2
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Parallel.hpp +0 -1
- pyanime4k-3.0.1/src/Anime4KCPP/core/src/Image.cpp +111 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/ImageIO.cpp +7 -9
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/ImageProcess.cpp +47 -23
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cpu/arm/NEON.cpp +4 -5
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cpu/wasm/SIMD128.cpp +4 -3
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cpu/x86/AVX.cpp +12 -7
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cpu/x86/SSE.cpp +4 -3
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/opencl/OpenCLProcessor.cpp +14 -2
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/languages/ac_gui_zh_CN.ts +9 -9
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/readme.md +15 -4
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/test/wasm/CMakeLists.txt +1 -1
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/tools/benchmark/src/Benchmark.cpp +2 -4
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/util/include/AC/Util/Stopwatch.hpp +12 -14
- pyanime4k-3.0.0/.gitmodules +0 -3
- pyanime4k-3.0.0/pyanime4k.egg-info/SOURCES.txt +0 -126
- pyanime4k-3.0.0/src/Anime4kCPP/core/src/Image.cpp +0 -78
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/.gitignore +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/LICENSE +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/pyanime4k.egg-info/dependency_links.txt +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/pyanime4k.egg-info/top_level.txt +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/setup.cfg +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/.gitattributes +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/.gitignore +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/LICENSE-GPLv3 +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/LICENSE-MIT +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/binding/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/binding/c/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/binding/python/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/binding/python/src/Binding.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cli/include/Options.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cli/include/ProgressBar.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cli/src/Main.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cli/src/Options.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cli/src/ProgressBar.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/CheckCompiler.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/CheckOpenCLHPP.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/GenDSFilterRC.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/MinifierOpenCLKernel.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/avisynth.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/cli11.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/cuda.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/directshow.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/eigen3.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/ffmpeg.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/pybind11.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/qt.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/ruapu.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/stb.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/vapoursynth.cmake +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Dispatch.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Model/ACNet.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Model/ARNet.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Model/Base.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Model/Param/ACNet.p +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Model/Param/ARNet.p +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Model/Param.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Model.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Processor.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Util.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Specs.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/Model.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/Processor.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cpu/CPUProcessor.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cpu/Dispatch.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cpu/Eigen3.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cpu/Generic.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cuda/CUDAProcessor.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/cuda/Kernel.cu +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/src/opencl/Kernel.cl +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/filter/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/filter/avisynth/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/filter/avisynth/src/Filter.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/filter/directshow/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/filter/directshow/src/Filter.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/filter/vapoursynth/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/filter/vapoursynth/src/Filter.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/include/Config.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/include/Logger.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/include/MainWindow.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/include/Upscaler.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/src/Config.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/src/Logger.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/src/MainWindow.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/src/QtMain.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/src/Upscaler.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/gui/ui/MainWindow.ui +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/images/Logo.ico +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/images/Logo.png +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/test/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/test/util/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/test/util/src/Channel.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/test/video/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/test/video/src/Resize.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/test/wasm/src/Web.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/tools/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/tools/benchmark/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/util/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/util/include/AC/Util/Channel.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/util/include/AC/Util/Defer.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/util/include/AC/Util/ThreadLocal.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/util/include/AC/Util/ThreadPool.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/video/CMakeLists.txt +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/video/include/AC/Video/Filter.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/video/include/AC/Video/Pipeline.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/video/include/AC/Video.hpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/video/src/Filter.cpp +0 -0
- {pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/video/src/Pipeline.cpp +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/src/pyanime4k/__init__.py +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/src/pyanime4k/image_io.py +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/src/pyanime4k/info.py +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/src/pyanime4k/processor.py +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/src/pyanime4k/pyac/__init__.py +0 -0
- {pyanime4k-3.0.0 → pyanime4k-3.0.1}/src/pyanime4k/upscale.py +0 -0
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
name: Build wheels
|
|
2
2
|
on:
|
|
3
|
-
push:
|
|
4
|
-
branches: [master]
|
|
5
|
-
paths:
|
|
6
|
-
- 'src/**'
|
|
7
|
-
pull_request:
|
|
8
|
-
branches: [master]
|
|
9
|
-
paths:
|
|
10
|
-
- 'src/**'
|
|
11
3
|
release:
|
|
12
4
|
types: [published]
|
|
13
5
|
permissions:
|
|
@@ -61,9 +53,6 @@ jobs:
|
|
|
61
53
|
with:
|
|
62
54
|
submodules: true
|
|
63
55
|
|
|
64
|
-
- name: clone Anime4KCPP
|
|
65
|
-
run: mkdir -p src/Anime4KCPP && git clone https://github.com/TianZerL/Anime4KCPP.git src/Anime4KCPP
|
|
66
|
-
|
|
67
56
|
- name: Build sdist
|
|
68
57
|
run: pipx run build --sdist
|
|
69
58
|
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyanime4k
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.1
|
|
4
4
|
License: MIT
|
|
5
|
+
Classifier: Programming Language :: Python :: 3
|
|
6
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
7
|
+
Classifier: Operating System :: MacOS
|
|
8
|
+
Classifier: Operating System :: POSIX
|
|
9
|
+
Classifier: Operating System :: Unix
|
|
5
10
|
Requires-Python: >=3.8
|
|
6
11
|
Description-Content-Type: text/markdown
|
|
7
12
|
License-File: LICENSE
|
|
13
|
+
Requires-Dist: numpy
|
|
8
14
|
Dynamic: license-file
|
|
9
|
-
Dynamic: requires-python
|
|
10
15
|
|
|
11
16
|
# PyAnime4K
|
|
12
17
|
|
|
@@ -21,9 +26,10 @@ pip install pyanime4k
|
|
|
21
26
|
You can also build the wheel by yourself.
|
|
22
27
|
```shell
|
|
23
28
|
# sudo apt install ocl-icd-opencl-dev cmake build-essential
|
|
24
|
-
get clone https://github.com/TianZerL/pyanime4k.git
|
|
29
|
+
get clone --recurse-submodules https://github.com/TianZerL/pyanime4k.git
|
|
25
30
|
cd pyanime4k
|
|
26
|
-
|
|
31
|
+
pip install scikit-build
|
|
32
|
+
python setup.py bdist_wheel
|
|
27
33
|
```
|
|
28
34
|
|
|
29
35
|
# Usages
|
|
@@ -11,9 +11,10 @@ pip install pyanime4k
|
|
|
11
11
|
You can also build the wheel by yourself.
|
|
12
12
|
```shell
|
|
13
13
|
# sudo apt install ocl-icd-opencl-dev cmake build-essential
|
|
14
|
-
get clone https://github.com/TianZerL/pyanime4k.git
|
|
14
|
+
get clone --recurse-submodules https://github.com/TianZerL/pyanime4k.git
|
|
15
15
|
cd pyanime4k
|
|
16
|
-
|
|
16
|
+
pip install scikit-build
|
|
17
|
+
python setup.py bdist_wheel
|
|
17
18
|
```
|
|
18
19
|
|
|
19
20
|
# Usages
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyanime4k
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.1
|
|
4
4
|
License: MIT
|
|
5
|
+
Classifier: Programming Language :: Python :: 3
|
|
6
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
7
|
+
Classifier: Operating System :: MacOS
|
|
8
|
+
Classifier: Operating System :: POSIX
|
|
9
|
+
Classifier: Operating System :: Unix
|
|
5
10
|
Requires-Python: >=3.8
|
|
6
11
|
Description-Content-Type: text/markdown
|
|
7
12
|
License-File: LICENSE
|
|
13
|
+
Requires-Dist: numpy
|
|
8
14
|
Dynamic: license-file
|
|
9
|
-
Dynamic: requires-python
|
|
10
15
|
|
|
11
16
|
# PyAnime4K
|
|
12
17
|
|
|
@@ -21,9 +26,10 @@ pip install pyanime4k
|
|
|
21
26
|
You can also build the wheel by yourself.
|
|
22
27
|
```shell
|
|
23
28
|
# sudo apt install ocl-icd-opencl-dev cmake build-essential
|
|
24
|
-
get clone https://github.com/TianZerL/pyanime4k.git
|
|
29
|
+
get clone --recurse-submodules https://github.com/TianZerL/pyanime4k.git
|
|
25
30
|
cd pyanime4k
|
|
26
|
-
|
|
31
|
+
pip install scikit-build
|
|
32
|
+
python setup.py bdist_wheel
|
|
27
33
|
```
|
|
28
34
|
|
|
29
35
|
# Usages
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
.gitignore
|
|
2
|
+
.gitmodules
|
|
3
|
+
LICENSE
|
|
4
|
+
README.md
|
|
5
|
+
pyproject.toml
|
|
6
|
+
setup.py
|
|
7
|
+
.github/workflows/wheels.yml
|
|
8
|
+
pyanime4k.egg-info/PKG-INFO
|
|
9
|
+
pyanime4k.egg-info/SOURCES.txt
|
|
10
|
+
pyanime4k.egg-info/dependency_links.txt
|
|
11
|
+
pyanime4k.egg-info/requires.txt
|
|
12
|
+
pyanime4k.egg-info/top_level.txt
|
|
13
|
+
src/Anime4KCPP/.gitattributes
|
|
14
|
+
src/Anime4KCPP/.gitignore
|
|
15
|
+
src/Anime4KCPP/CMakeLists.txt
|
|
16
|
+
src/Anime4KCPP/LICENSE-GPLv3
|
|
17
|
+
src/Anime4KCPP/LICENSE-MIT
|
|
18
|
+
src/Anime4KCPP/readme.md
|
|
19
|
+
src/Anime4KCPP/binding/CMakeLists.txt
|
|
20
|
+
src/Anime4KCPP/binding/c/CMakeLists.txt
|
|
21
|
+
src/Anime4KCPP/binding/c/include/AC/Core.h
|
|
22
|
+
src/Anime4KCPP/binding/c/src/Binding.cpp
|
|
23
|
+
src/Anime4KCPP/binding/python/CMakeLists.txt
|
|
24
|
+
src/Anime4KCPP/binding/python/src/Binding.cpp
|
|
25
|
+
src/Anime4KCPP/cli/CMakeLists.txt
|
|
26
|
+
src/Anime4KCPP/cli/include/Options.hpp
|
|
27
|
+
src/Anime4KCPP/cli/include/ProgressBar.hpp
|
|
28
|
+
src/Anime4KCPP/cli/src/Main.cpp
|
|
29
|
+
src/Anime4KCPP/cli/src/Options.cpp
|
|
30
|
+
src/Anime4KCPP/cli/src/ProgressBar.cpp
|
|
31
|
+
src/Anime4KCPP/cmake/CheckCompiler.cmake
|
|
32
|
+
src/Anime4KCPP/cmake/CheckOpenCLHPP.cmake
|
|
33
|
+
src/Anime4KCPP/cmake/GenDSFilterRC.cmake
|
|
34
|
+
src/Anime4KCPP/cmake/MinifierOpenCLKernel.cmake
|
|
35
|
+
src/Anime4KCPP/cmake/dependency/avisynth.cmake
|
|
36
|
+
src/Anime4KCPP/cmake/dependency/cli11.cmake
|
|
37
|
+
src/Anime4KCPP/cmake/dependency/cuda.cmake
|
|
38
|
+
src/Anime4KCPP/cmake/dependency/directshow.cmake
|
|
39
|
+
src/Anime4KCPP/cmake/dependency/eigen3.cmake
|
|
40
|
+
src/Anime4KCPP/cmake/dependency/ffmpeg.cmake
|
|
41
|
+
src/Anime4KCPP/cmake/dependency/opencl.cmake
|
|
42
|
+
src/Anime4KCPP/cmake/dependency/pybind11.cmake
|
|
43
|
+
src/Anime4KCPP/cmake/dependency/qt.cmake
|
|
44
|
+
src/Anime4KCPP/cmake/dependency/ruapu.cmake
|
|
45
|
+
src/Anime4KCPP/cmake/dependency/stb.cmake
|
|
46
|
+
src/Anime4KCPP/cmake/dependency/vapoursynth.cmake
|
|
47
|
+
src/Anime4KCPP/core/CMakeLists.txt
|
|
48
|
+
src/Anime4KCPP/core/include/AC/Core.hpp
|
|
49
|
+
src/Anime4KCPP/core/include/AC/Specs.hpp
|
|
50
|
+
src/Anime4KCPP/core/include/AC/Core/Dispatch.hpp
|
|
51
|
+
src/Anime4KCPP/core/include/AC/Core/Image.hpp
|
|
52
|
+
src/Anime4KCPP/core/include/AC/Core/Model.hpp
|
|
53
|
+
src/Anime4KCPP/core/include/AC/Core/Parallel.hpp
|
|
54
|
+
src/Anime4KCPP/core/include/AC/Core/Processor.hpp
|
|
55
|
+
src/Anime4KCPP/core/include/AC/Core/Util.hpp
|
|
56
|
+
src/Anime4KCPP/core/include/AC/Core/Model/ACNet.hpp
|
|
57
|
+
src/Anime4KCPP/core/include/AC/Core/Model/ARNet.hpp
|
|
58
|
+
src/Anime4KCPP/core/include/AC/Core/Model/Base.hpp
|
|
59
|
+
src/Anime4KCPP/core/include/AC/Core/Model/Param.hpp
|
|
60
|
+
src/Anime4KCPP/core/include/AC/Core/Model/Param/ACNet.p
|
|
61
|
+
src/Anime4KCPP/core/include/AC/Core/Model/Param/ARNet.p
|
|
62
|
+
src/Anime4KCPP/core/src/Image.cpp
|
|
63
|
+
src/Anime4KCPP/core/src/ImageIO.cpp
|
|
64
|
+
src/Anime4KCPP/core/src/ImageProcess.cpp
|
|
65
|
+
src/Anime4KCPP/core/src/Model.cpp
|
|
66
|
+
src/Anime4KCPP/core/src/Processor.cpp
|
|
67
|
+
src/Anime4KCPP/core/src/cpu/CPUProcessor.cpp
|
|
68
|
+
src/Anime4KCPP/core/src/cpu/Dispatch.cpp
|
|
69
|
+
src/Anime4KCPP/core/src/cpu/Eigen3.cpp
|
|
70
|
+
src/Anime4KCPP/core/src/cpu/Generic.cpp
|
|
71
|
+
src/Anime4KCPP/core/src/cpu/arm/NEON.cpp
|
|
72
|
+
src/Anime4KCPP/core/src/cpu/wasm/SIMD128.cpp
|
|
73
|
+
src/Anime4KCPP/core/src/cpu/x86/AVX.cpp
|
|
74
|
+
src/Anime4KCPP/core/src/cpu/x86/SSE.cpp
|
|
75
|
+
src/Anime4KCPP/core/src/cuda/CUDAProcessor.cpp
|
|
76
|
+
src/Anime4KCPP/core/src/cuda/Kernel.cu
|
|
77
|
+
src/Anime4KCPP/core/src/opencl/Kernel.cl
|
|
78
|
+
src/Anime4KCPP/core/src/opencl/OpenCLProcessor.cpp
|
|
79
|
+
src/Anime4KCPP/filter/CMakeLists.txt
|
|
80
|
+
src/Anime4KCPP/filter/avisynth/CMakeLists.txt
|
|
81
|
+
src/Anime4KCPP/filter/avisynth/src/Filter.cpp
|
|
82
|
+
src/Anime4KCPP/filter/directshow/CMakeLists.txt
|
|
83
|
+
src/Anime4KCPP/filter/directshow/src/Filter.cpp
|
|
84
|
+
src/Anime4KCPP/filter/vapoursynth/CMakeLists.txt
|
|
85
|
+
src/Anime4KCPP/filter/vapoursynth/src/Filter.cpp
|
|
86
|
+
src/Anime4KCPP/gui/CMakeLists.txt
|
|
87
|
+
src/Anime4KCPP/gui/include/Config.hpp
|
|
88
|
+
src/Anime4KCPP/gui/include/Logger.hpp
|
|
89
|
+
src/Anime4KCPP/gui/include/MainWindow.hpp
|
|
90
|
+
src/Anime4KCPP/gui/include/Upscaler.hpp
|
|
91
|
+
src/Anime4KCPP/gui/languages/ac_gui_zh_CN.ts
|
|
92
|
+
src/Anime4KCPP/gui/src/Config.cpp
|
|
93
|
+
src/Anime4KCPP/gui/src/Logger.cpp
|
|
94
|
+
src/Anime4KCPP/gui/src/MainWindow.cpp
|
|
95
|
+
src/Anime4KCPP/gui/src/QtMain.cpp
|
|
96
|
+
src/Anime4KCPP/gui/src/Upscaler.cpp
|
|
97
|
+
src/Anime4KCPP/gui/ui/MainWindow.ui
|
|
98
|
+
src/Anime4KCPP/images/Logo.ico
|
|
99
|
+
src/Anime4KCPP/images/Logo.png
|
|
100
|
+
src/Anime4KCPP/test/CMakeLists.txt
|
|
101
|
+
src/Anime4KCPP/test/util/CMakeLists.txt
|
|
102
|
+
src/Anime4KCPP/test/util/src/Channel.cpp
|
|
103
|
+
src/Anime4KCPP/test/video/CMakeLists.txt
|
|
104
|
+
src/Anime4KCPP/test/video/src/Resize.cpp
|
|
105
|
+
src/Anime4KCPP/test/wasm/CMakeLists.txt
|
|
106
|
+
src/Anime4KCPP/test/wasm/src/Web.cpp
|
|
107
|
+
src/Anime4KCPP/tools/CMakeLists.txt
|
|
108
|
+
src/Anime4KCPP/tools/benchmark/CMakeLists.txt
|
|
109
|
+
src/Anime4KCPP/tools/benchmark/src/Benchmark.cpp
|
|
110
|
+
src/Anime4KCPP/util/CMakeLists.txt
|
|
111
|
+
src/Anime4KCPP/util/include/AC/Util/Channel.hpp
|
|
112
|
+
src/Anime4KCPP/util/include/AC/Util/Defer.hpp
|
|
113
|
+
src/Anime4KCPP/util/include/AC/Util/Stopwatch.hpp
|
|
114
|
+
src/Anime4KCPP/util/include/AC/Util/ThreadLocal.hpp
|
|
115
|
+
src/Anime4KCPP/util/include/AC/Util/ThreadPool.hpp
|
|
116
|
+
src/Anime4KCPP/video/CMakeLists.txt
|
|
117
|
+
src/Anime4KCPP/video/include/AC/Video.hpp
|
|
118
|
+
src/Anime4KCPP/video/include/AC/Video/Filter.hpp
|
|
119
|
+
src/Anime4KCPP/video/include/AC/Video/Pipeline.hpp
|
|
120
|
+
src/Anime4KCPP/video/src/Filter.cpp
|
|
121
|
+
src/Anime4KCPP/video/src/Pipeline.cpp
|
|
122
|
+
src/pyanime4k/__init__.py
|
|
123
|
+
src/pyanime4k/image_io.py
|
|
124
|
+
src/pyanime4k/info.py
|
|
125
|
+
src/pyanime4k/processor.py
|
|
126
|
+
src/pyanime4k/upscale.py
|
|
127
|
+
src/pyanime4k/pyac/__init__.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
numpy
|
|
@@ -1,17 +1,24 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["setuptools>=42", "scikit-build>=0.13", "cmake>=3.19"
|
|
2
|
+
requires = ["setuptools>=42", "scikit-build>=0.13", "cmake>=3.19"]
|
|
3
3
|
build-backend = "setuptools.build_meta"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyanime4k"
|
|
7
|
-
version = "3.0.
|
|
7
|
+
version = "3.0.1"
|
|
8
8
|
license = {text = "MIT"}
|
|
9
9
|
requires-python = ">=3.8"
|
|
10
10
|
readme = "README.md"
|
|
11
|
+
dependencies = ["numpy"]
|
|
12
|
+
classifiers = [
|
|
13
|
+
"Programming Language :: Python :: 3",
|
|
14
|
+
"Operating System :: Microsoft :: Windows",
|
|
15
|
+
"Operating System :: MacOS",
|
|
16
|
+
"Operating System :: POSIX",
|
|
17
|
+
"Operating System :: Unix",
|
|
18
|
+
]
|
|
11
19
|
|
|
12
20
|
[tool.cibuildwheel]
|
|
13
21
|
skip = ["pp*", "*win32", "*i686", "*musllinux*"]
|
|
14
22
|
|
|
15
23
|
[tool.cibuildwheel.linux]
|
|
16
|
-
before-all = "yum install -y ocl-icd ocl-icd-devel
|
|
17
|
-
test-command = "echo 'installed'"
|
|
24
|
+
before-all = "yum install -y ocl-icd ocl-icd-devel"
|
|
@@ -28,19 +28,8 @@ def main():
|
|
|
28
28
|
pyac_cmake_args.append("-DAC_CORE_WITH_CUDA=ON")
|
|
29
29
|
|
|
30
30
|
setup(
|
|
31
|
-
name="pyanime4k",
|
|
32
|
-
version="3.0.0",
|
|
33
31
|
packages=["pyanime4k", "pyanime4k.pyac"],
|
|
34
32
|
package_dir={"pyanime4k": "src/pyanime4k", "pyanime4k.pyac": "src/pyanime4k/pyac"},
|
|
35
|
-
license="MIT",
|
|
36
|
-
python_requires=">=3.8",
|
|
37
|
-
classifiers=[
|
|
38
|
-
"Programming Language :: Python :: 3",
|
|
39
|
-
"Operating System :: Microsoft :: Windows",
|
|
40
|
-
"Operating System :: MacOS",
|
|
41
|
-
"Operating System :: POSIX",
|
|
42
|
-
"Operating System :: Unix",
|
|
43
|
-
],
|
|
44
33
|
cmake_args=pyac_cmake_args,
|
|
45
34
|
cmake_source_dir="src/Anime4KCPP",
|
|
46
35
|
cmake_install_dir="src/pyanime4k",
|
|
@@ -37,7 +37,7 @@ option(AC_CORE_WITH_WASM_SIMD128 "build core with wasm simd128" ${AC_COMPILER_SU
|
|
|
37
37
|
option(AC_CORE_WITH_OPENCL "build core with opencl" OFF)
|
|
38
38
|
option(AC_CORE_WITH_CUDA "build core with cuda" OFF)
|
|
39
39
|
option(AC_CORE_ENABLE_FAST_MATH "enable fast math for core" OFF)
|
|
40
|
-
option(
|
|
40
|
+
option(AC_CORE_DISABLE_IMAGE_IO "disable image file read and write for core" OFF)
|
|
41
41
|
option(AC_BUILD_CLI "build cli" ON)
|
|
42
42
|
option(AC_BUILD_GUI "build gui" OFF)
|
|
43
43
|
option(AC_BUILD_VIDEO "build video module" OFF)
|
|
@@ -61,7 +61,6 @@ if(AC_PRESET_RELEASE)
|
|
|
61
61
|
set(AC_CORE_WITH_OPENCL ON)
|
|
62
62
|
set(AC_CORE_WITH_CUDA ON)
|
|
63
63
|
set(AC_CORE_ENABLE_FAST_MATH ON)
|
|
64
|
-
set(AC_CORE_ENABLE_IMAGE_IO ON)
|
|
65
64
|
set(AC_BUILD_CLI ON)
|
|
66
65
|
set(AC_BUILD_GUI ON)
|
|
67
66
|
set(AC_BUILD_VIDEO ON)
|
{pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/binding/c/include/AC/Core.h
RENAMED
|
@@ -38,7 +38,13 @@ enum ac_imread_flag
|
|
|
38
38
|
|
|
39
39
|
CAC_API ac_image* ac_image_create(int w, int h, int c, int element_type, void* data, int stride);
|
|
40
40
|
CAC_API ac_image* ac_image_create_empty(void);
|
|
41
|
+
CAC_API ac_image* ac_image_from(int w, int h, int c, int element_type, const void* data, int stride);
|
|
42
|
+
CAC_API ac_image* ac_image_clone(const ac_image* image);
|
|
41
43
|
CAC_API void ac_image_destroy(ac_image* image);
|
|
44
|
+
CAC_API void ac_image_data_create(ac_image* image, int w, int h, int c, int element_type, int stride);
|
|
45
|
+
CAC_API void ac_image_map(ac_image* image, int w, int h, int c, int element_type, void* data, int stride);
|
|
46
|
+
CAC_API void ac_image_data_from(ac_image* image, int w, int h, int c, int element_type, const void* data, int stride);
|
|
47
|
+
CAC_API void ac_image_to(const ac_image* image, void* data, int stride);
|
|
42
48
|
CAC_API int ac_image_width(const ac_image* image);
|
|
43
49
|
CAC_API int ac_image_height(const ac_image* image);
|
|
44
50
|
CAC_API int ac_image_channels(const ac_image* image);
|
|
@@ -69,8 +75,10 @@ CAC_API const char* ac_processor_info(int processor_type);
|
|
|
69
75
|
CAC_API int ac_processor_type(const char* processor_type_name);
|
|
70
76
|
CAC_API const char* ac_processor_type_name(int processor_type);
|
|
71
77
|
|
|
72
|
-
|
|
78
|
+
#ifndef AC_CORE_DISABLE_IMAGE_IO
|
|
79
|
+
CAC_API ac_image* ac_imread(const char* filename, int flag);
|
|
73
80
|
CAC_API int ac_imwrite(const char* filename, const ac_image* image);
|
|
81
|
+
#endif
|
|
74
82
|
|
|
75
83
|
CAC_API void ac_resize(const ac_image* src, ac_image* dst, double fx, double fy);
|
|
76
84
|
CAC_API void ac_rgb2yuv(const ac_image* rgb, ac_image* yuv);
|
|
@@ -21,10 +21,36 @@ ac_image* ac_image_create_empty(void)
|
|
|
21
21
|
{
|
|
22
22
|
return new ac_image{};
|
|
23
23
|
}
|
|
24
|
+
ac_image* ac_image_from(const int w, const int h, const int c, const int element_type, const void* const data, const int stride)
|
|
25
|
+
{
|
|
26
|
+
auto image = new ac_image{};
|
|
27
|
+
image->object.from(w, h, c, element_type, data, stride);
|
|
28
|
+
return image;
|
|
29
|
+
}
|
|
30
|
+
ac_image* ac_image_clone(const ac_image* const image)
|
|
31
|
+
{
|
|
32
|
+
return new ac_image{ image->object.clone() };
|
|
33
|
+
}
|
|
24
34
|
void ac_image_destroy(ac_image* const image)
|
|
25
35
|
{
|
|
26
36
|
delete image;
|
|
27
37
|
}
|
|
38
|
+
void ac_image_data_create(ac_image* image, int w, int h, int c, int element_type, int stride)
|
|
39
|
+
{
|
|
40
|
+
image->object.create(w, h, c, element_type, stride);
|
|
41
|
+
}
|
|
42
|
+
void ac_image_map(ac_image* image, int w, int h, int c, int element_type, void* data, int stride)
|
|
43
|
+
{
|
|
44
|
+
image->object.map(w, h, c, element_type, data, stride);
|
|
45
|
+
}
|
|
46
|
+
void ac_image_data_from(ac_image* image, int w, int h, int c, int element_type, const void* data, int stride)
|
|
47
|
+
{
|
|
48
|
+
image->object.from(w, h, c, element_type, data, stride);
|
|
49
|
+
}
|
|
50
|
+
void ac_image_to(const ac_image* const image, void* const data, const int stride)
|
|
51
|
+
{
|
|
52
|
+
image->object.to(data, stride);
|
|
53
|
+
}
|
|
28
54
|
int ac_image_width(const ac_image* const image)
|
|
29
55
|
{
|
|
30
56
|
return image->object.width();
|
|
@@ -149,10 +175,10 @@ const char* ac_processor_type_name(const int processor_type)
|
|
|
149
175
|
return ac::core::Processor::type(processor_type);
|
|
150
176
|
}
|
|
151
177
|
|
|
152
|
-
#
|
|
153
|
-
|
|
178
|
+
#ifndef AC_CORE_DISABLE_IMAGE_IO
|
|
179
|
+
ac_image* ac_imread(const char* const filename, const int flag)
|
|
154
180
|
{
|
|
155
|
-
|
|
181
|
+
return new ac_image{ ac::core::imread(filename, flag) };
|
|
156
182
|
}
|
|
157
183
|
int ac_imwrite(const char* const filename, const ac_image* const image)
|
|
158
184
|
{
|
|
@@ -26,6 +26,10 @@ target_compile_definitions(ac_cli PRIVATE
|
|
|
26
26
|
$<$<TARGET_EXISTS:ac_video>:AC_CLI_ENABLE_VIDEO>
|
|
27
27
|
)
|
|
28
28
|
|
|
29
|
+
if(EMSCRIPTEN)
|
|
30
|
+
target_link_options(ac_cli PRIVATE -sNODERAWFS=1) # allow access to files on disk in NodeJS
|
|
31
|
+
endif()
|
|
32
|
+
|
|
29
33
|
ac_check_enable_static_crt(ac_cli)
|
|
30
34
|
|
|
31
35
|
install(
|
{pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/cmake/dependency/opencl.cmake
RENAMED
|
@@ -48,7 +48,7 @@ if(NOT TARGET dep::opencl)
|
|
|
48
48
|
message(STATUS "dep: opencl target version ${dep_opencl_TARGET_VERSION}.")
|
|
49
49
|
target_compile_definitions(dep_opencl INTERFACE
|
|
50
50
|
CL_HPP_TARGET_OPENCL_VERSION=${dep_opencl_TARGET_VERSION}
|
|
51
|
-
CL_HPP_MINIMUM_OPENCL_VERSION=110
|
|
51
|
+
CL_HPP_MINIMUM_OPENCL_VERSION=110 # set minimum version 110 to prevent compilation errors in certain versions of OpenCL HPP
|
|
52
52
|
)
|
|
53
53
|
add_library(dep::opencl ALIAS dep_opencl)
|
|
54
54
|
endif()
|
|
@@ -116,7 +116,9 @@ target_compile_definitions(ac PUBLIC
|
|
|
116
116
|
$<$<BOOL:${AC_CORE_WITH_WASM_SIMD128}>:AC_CORE_WITH_WASM_SIMD128>
|
|
117
117
|
$<$<BOOL:${AC_CORE_WITH_OPENCL}>:AC_CORE_WITH_OPENCL>
|
|
118
118
|
$<$<BOOL:${AC_CORE_WITH_CUDA}>:AC_CORE_WITH_CUDA>
|
|
119
|
-
$<$<BOOL:${
|
|
119
|
+
$<$<BOOL:${AC_CORE_DISABLE_IMAGE_IO}>:AC_CORE_DISABLE_IMAGE_IO>
|
|
120
|
+
|
|
121
|
+
AC_CORE_MALLOC_ALIGN=$<IF:$<BOOL:${AC_CORE_WITH_AVX}>,32,16>
|
|
120
122
|
|
|
121
123
|
AC_CORE_VERSION_STR="${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}"
|
|
122
124
|
AC_CORE_FEATURES="$<JOIN:${AC_CORE_FEATURE_LIST}, >"
|
|
@@ -130,6 +132,10 @@ if(AC_CORE_ENABLE_FAST_MATH)
|
|
|
130
132
|
endif()
|
|
131
133
|
endif()
|
|
132
134
|
|
|
135
|
+
if(EMSCRIPTEN)
|
|
136
|
+
target_link_options(ac PUBLIC -sALLOW_MEMORY_GROWTH=1 -sINITIAL_MEMORY=64MB)
|
|
137
|
+
endif()
|
|
138
|
+
|
|
133
139
|
ac_check_disable_flags(ac)
|
|
134
140
|
ac_check_enable_static_crt(ac)
|
|
135
141
|
ac_check_disable_pic(ac)
|
{pyanime4k-3.0.0/src/Anime4kCPP → pyanime4k-3.0.1/src/Anime4KCPP}/core/include/AC/Core/Image.hpp
RENAMED
|
@@ -95,7 +95,7 @@ namespace ac::core
|
|
|
95
95
|
};
|
|
96
96
|
|
|
97
97
|
AC_EXPORT Image imdecode(const void* buffer, int size, int flag) noexcept;
|
|
98
|
-
#
|
|
98
|
+
#ifndef AC_CORE_DISABLE_IMAGE_IO
|
|
99
99
|
AC_EXPORT Image imread(const char* filename, int flag) noexcept;
|
|
100
100
|
AC_EXPORT bool imwrite(const char* filename, const Image& image) noexcept;
|
|
101
101
|
#endif
|
|
@@ -116,7 +116,7 @@ public:
|
|
|
116
116
|
public:
|
|
117
117
|
AC_EXPORT Image() noexcept;
|
|
118
118
|
AC_EXPORT Image(int w, int h, int c, ElementType elementType, int stride = 0);
|
|
119
|
-
AC_EXPORT Image(int w, int h, int c, ElementType elementType, void* data, int stride);
|
|
119
|
+
AC_EXPORT Image(int w, int h, int c, ElementType elementType, void* data, int stride = 0);
|
|
120
120
|
AC_EXPORT Image(const Image&) noexcept;
|
|
121
121
|
AC_EXPORT Image(Image&&) noexcept;
|
|
122
122
|
AC_EXPORT ~Image() noexcept;
|
|
@@ -124,6 +124,10 @@ public:
|
|
|
124
124
|
AC_EXPORT Image& operator=(Image&&) noexcept;
|
|
125
125
|
|
|
126
126
|
AC_EXPORT void create(int w, int h, int c, ElementType elementType, int stride = 0);
|
|
127
|
+
AC_EXPORT void map(int w, int h, int c, ElementType elementType, void* data, int stride = 0) noexcept;
|
|
128
|
+
AC_EXPORT void from(int w, int h, int c, ElementType elementType, const void* data, int stride = 0);
|
|
129
|
+
AC_EXPORT void to(void* data, int stride = 0) const noexcept;
|
|
130
|
+
AC_EXPORT Image clone() const;
|
|
127
131
|
|
|
128
132
|
public:
|
|
129
133
|
int width() const noexcept { return w; }
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#include <cstddef>
|
|
2
|
+
#include <cstdlib>
|
|
3
|
+
#include <cstring>
|
|
4
|
+
|
|
5
|
+
#include "AC/Core/Image.hpp"
|
|
6
|
+
#include "AC/Core/Util.hpp"
|
|
7
|
+
|
|
8
|
+
#ifndef AC_CORE_MALLOC_ALIGN
|
|
9
|
+
# define AC_CORE_MALLOC_ALIGN 32
|
|
10
|
+
#endif
|
|
11
|
+
#ifndef AC_CORE_STRIDE_ALIGN
|
|
12
|
+
# define AC_CORE_STRIDE_ALIGN 4
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
namespace ac::core::detail
|
|
16
|
+
{
|
|
17
|
+
template <typename T>
|
|
18
|
+
inline constexpr T* alignPtr(T* const ptr, const int n) noexcept
|
|
19
|
+
{
|
|
20
|
+
return reinterpret_cast<T*>(align(reinterpret_cast<std::uintptr_t>(ptr), n));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
inline static void* alignedAlloc(const std::size_t size) noexcept
|
|
24
|
+
{
|
|
25
|
+
auto buffer = static_cast<void**>(std::malloc(size + sizeof(void*) + AC_CORE_MALLOC_ALIGN));
|
|
26
|
+
if (!buffer) return nullptr;
|
|
27
|
+
void** ptr = alignPtr(buffer + 1, AC_CORE_MALLOC_ALIGN);
|
|
28
|
+
ptr[-1] = static_cast<void*>(buffer);
|
|
29
|
+
return ptr;
|
|
30
|
+
}
|
|
31
|
+
inline static void alignedFree(void* const ptr) noexcept
|
|
32
|
+
{
|
|
33
|
+
if (ptr) std::free(static_cast<void**>(ptr)[-1]);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
struct ac::core::Image::ImageData
|
|
38
|
+
{
|
|
39
|
+
void* data;
|
|
40
|
+
|
|
41
|
+
ImageData(const int size) noexcept : data(detail::alignedAlloc(size)) {}
|
|
42
|
+
~ImageData() noexcept
|
|
43
|
+
{
|
|
44
|
+
detail::alignedFree(data);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
ac::core::Image::Image() noexcept : Image(0, 0, 0, UInt8, nullptr, 0) {}
|
|
49
|
+
ac::core::Image::Image(const int w, const int h, const int c, const ElementType elementType, const int stride) : Image(w, h, c, elementType, nullptr, stride) {}
|
|
50
|
+
ac::core::Image::Image(const int w, const int h, const int c, const ElementType elementType, void* const data, const int stride) :
|
|
51
|
+
w(0), h(0), c(0), elementType(UInt8), pitch(0), pixels(nullptr), dptr(nullptr)
|
|
52
|
+
{
|
|
53
|
+
if (data) map(w, h, c, elementType, data, stride);
|
|
54
|
+
else create(w, h, c, elementType, stride);
|
|
55
|
+
}
|
|
56
|
+
ac::core::Image::Image(const Image&) noexcept = default;
|
|
57
|
+
ac::core::Image::Image(Image&&) noexcept = default;
|
|
58
|
+
ac::core::Image::~Image() noexcept = default;
|
|
59
|
+
ac::core::Image& ac::core::Image::operator=(const Image&) noexcept = default;
|
|
60
|
+
ac::core::Image& ac::core::Image::operator=(Image&&) noexcept = default;
|
|
61
|
+
|
|
62
|
+
void ac::core::Image::create(const int w, const int h, const int c, const ElementType elementType, const int stride)
|
|
63
|
+
{
|
|
64
|
+
int lineSize = w * c * (elementType & 0xff);
|
|
65
|
+
if (!(h > 0 && lineSize > 0)) return;
|
|
66
|
+
int pitch = stride >= lineSize ? stride : align(lineSize, AC_CORE_STRIDE_ALIGN);
|
|
67
|
+
int size = h * pitch;
|
|
68
|
+
this->w = w;
|
|
69
|
+
this->h = h;
|
|
70
|
+
this->c = c;
|
|
71
|
+
this->elementType = elementType;
|
|
72
|
+
this->pitch = pitch;
|
|
73
|
+
this->dptr = std::make_shared<ImageData>(size);
|
|
74
|
+
this->pixels = this->dptr->data;
|
|
75
|
+
}
|
|
76
|
+
void ac::core::Image::map(const int w, const int h, const int c, const ElementType elementType, void* const data, const int stride) noexcept
|
|
77
|
+
{
|
|
78
|
+
int lineSize = w * c * (elementType & 0xff);
|
|
79
|
+
if (!(h > 0 && lineSize > 0) || !data) return;
|
|
80
|
+
int pitch = stride >= lineSize ? stride : lineSize;
|
|
81
|
+
this->w = w;
|
|
82
|
+
this->h = h;
|
|
83
|
+
this->c = c;
|
|
84
|
+
this->elementType = elementType;
|
|
85
|
+
this->pitch = pitch;
|
|
86
|
+
this->dptr = nullptr;
|
|
87
|
+
this->pixels = data;
|
|
88
|
+
}
|
|
89
|
+
void ac::core::Image::from(const int w, const int h, const int c, const ElementType elementType, const void* const data, const int stride)
|
|
90
|
+
{
|
|
91
|
+
int lineSize = w * c * (elementType & 0xff);
|
|
92
|
+
if (!(h > 0 && lineSize > 0) || !data) return;
|
|
93
|
+
int pitch = stride >= lineSize ? stride : lineSize;
|
|
94
|
+
create(w, h, c, elementType);
|
|
95
|
+
auto src = static_cast<const std::uint8_t*>(data);
|
|
96
|
+
for (int i = 0; i < h; i++) std::memcpy(line(i), src + i * pitch, lineSize);
|
|
97
|
+
}
|
|
98
|
+
void ac::core::Image::to(void* const data, const int stride) const noexcept
|
|
99
|
+
{
|
|
100
|
+
int lineSize = width() * pixelSize();
|
|
101
|
+
if (!(height() > 0 && lineSize > 0) || !data) return;
|
|
102
|
+
int pitch = stride >= lineSize ? stride : lineSize;
|
|
103
|
+
auto dst = static_cast<std::uint8_t*>(data);
|
|
104
|
+
for (int i = 0; i < height(); i++) std::memcpy(dst + i * pitch, line(i), lineSize);
|
|
105
|
+
}
|
|
106
|
+
ac::core::Image ac::core::Image::clone() const
|
|
107
|
+
{
|
|
108
|
+
Image dst{};
|
|
109
|
+
dst.from(width(), height(), channels(), type(), ptr(), stride());
|
|
110
|
+
return dst;
|
|
111
|
+
}
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
#include <cstdint>
|
|
3
3
|
#include <cstring>
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
#ifdef AC_CORE_DISABLE_IMAGE_IO
|
|
6
6
|
# define STBI_NO_STDIO
|
|
7
|
-
#
|
|
7
|
+
#else
|
|
8
|
+
# define STB_IMAGE_WRITE_IMPLEMENTATION
|
|
9
|
+
# include "stb_image_write.h"
|
|
8
10
|
#endif
|
|
9
11
|
|
|
10
12
|
#define STB_IMAGE_IMPLEMENTATION
|
|
11
13
|
#include "stb_image.h"
|
|
12
|
-
#define STB_IMAGE_WRITE_IMPLEMENTATION
|
|
13
|
-
#include "stb_image_write.h"
|
|
14
14
|
|
|
15
15
|
#include "AC/Core/Image.hpp"
|
|
16
16
|
|
|
@@ -21,14 +21,13 @@ ac::core::Image ac::core::imdecode(const void* const buffer, const int size, con
|
|
|
21
21
|
std::uint8_t* data = stbi_load_from_memory(static_cast<const std::uint8_t*>(buffer), size, &w, &h, &c, flag);
|
|
22
22
|
if (data)
|
|
23
23
|
{
|
|
24
|
-
image.
|
|
25
|
-
std::memcpy(image.ptr(), data, image.size());
|
|
24
|
+
image.from(w, h, c, ac::core::Image::UInt8, data);
|
|
26
25
|
stbi_image_free(data);
|
|
27
26
|
}
|
|
28
27
|
return image;
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
#
|
|
30
|
+
#ifndef AC_CORE_DISABLE_IMAGE_IO
|
|
32
31
|
ac::core::Image ac::core::imread(const char* const filename, const int flag) noexcept
|
|
33
32
|
{
|
|
34
33
|
Image image{};
|
|
@@ -36,8 +35,7 @@ ac::core::Image ac::core::imread(const char* const filename, const int flag) noe
|
|
|
36
35
|
std::uint8_t* data = stbi_load(filename, &w, &h, &c, flag);
|
|
37
36
|
if (data)
|
|
38
37
|
{
|
|
39
|
-
image.
|
|
40
|
-
std::memcpy(image.ptr(), data, image.size());
|
|
38
|
+
image.from(w, h, c, ac::core::Image::UInt8, data);
|
|
41
39
|
stbi_image_free(data);
|
|
42
40
|
}
|
|
43
41
|
return image;
|