Reorganized Dockefile into multi-stage build

This commit is contained in:
DataHoarder 2022-04-29 17:26:36 +02:00
parent 99efe345d1
commit 98e327e682
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk
13 changed files with 341 additions and 176 deletions

View file

@ -1,40 +1,27 @@
FROM debian:bullseye
FROM debian:bullseye AS dep-base
COPY docker/x265-multilib.sh /x265-multilib.sh
ENV PYTHON_VERSION=3.9
RUN DEBIAN_FRONTEND=noninteractive apt update && \
DEBIAN_FRONTEND=noninteractive apt install -y ca-certificates gpg curl
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \
libpython${PYTHON_VERSION} python3-pip python3-numpy python3-opencv git nscd curl xz-utils ca-certificates gpg gnupg \
pkg-config \
libnuma1 libavcodec58 libavformat58 libswscale5 libavresample4 libavutil56 libass9 libfftw3-3 && \
rm -rf /var/lib/apt/lists/* && \
pip3 install Cython
FROM dep-base AS build-base
COPY docker/clang.list /etc/apt/sources.list.d/clang.list
RUN curl https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
DEBIAN_FRONTEND=noninteractive apt update && \
DEBIAN_FRONTEND=noninteractive apt install -y \
python3-pip python3-numpy python3-opencv python3-dev git nscd \
autoconf automake libtool pkg-config meson cmake yasm nasm gcc g++ clang ccache \
libnuma-dev libavcodec-dev libavformat-dev libswscale-dev libavresample-dev libavutil-dev libass-dev libfftw3-3 libfftw3-dev && \
pip3 install Cython && \
pip3 install git+https://github.com/FichteFoll/Sushi.git@master
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \
python${PYTHON_VERSION}-dev \
autoconf automake libtool pkg-config meson make cmake yasm nasm gcc g++ clang ccache \
libnuma-dev libavcodec-dev libavformat-dev libswscale-dev libavresample-dev libavutil-dev libass-dev libfftw3-3 libfftw3-dev
ARG ZIMG_TAG=release-3.0.4
ARG VS_TAG=R54
ARG X264_TAG=stable
ARG X264_REPO=https://code.videolan.org/videolan/x264.git
ARG X265_TAG=3.5
ARG X265_REPO=https://bitbucket.org/multicoreware/x265_git.git
ARG AOM_TAG=v3.3.0
ARG AOM_REPO=https://aomedia.googlesource.com/aom.git
ARG SVT_TAG=v1.0.0
ARG SVT_REPO=https://gitlab.com/AOMediaCodec/SVT-AV1.git
ARG MAGICK_TAG=7.1.0-31
ENV CC=clang
ENV CXX=clang++
ENV CFLAGS "-O3 -march=native -flto"
@ -42,166 +29,110 @@ ENV CPPFLAGS "$CFLAGS"
ENV CXXFLAGS "-O3 -march=native -flto"
ENV LDFLAGS "-flto"
RUN git clone --branch "master" --depth 1 https://github.com/l-smash/l-smash /src/l-smash && cd /src/l-smash && \
CFLAGS="-fPIC" ./configure --enable-shared --prefix=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/l-smash
FROM build-base AS build-x265
RUN git clone --branch "${X264_TAG}" --depth 1 "${X264_REPO}" /src/x264 && cd /src/x264 && \
CC=gcc CXX=g++ CFLAGS="-O3 -march=native" CPPFLAGS="-O3 -march=native" CXXFLAGS="-O3 -march=native" LDFLAGS="" ./configure --enable-shared --enable-static --bit-depth=all --chroma-format=all --enable-lto --enable-pic --prefix=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/x264
ARG X265_TAG=3.5
ARG X265_REPO=https://bitbucket.org/multicoreware/x265_git.git
RUN git clone --branch "${AOM_TAG}" --depth 1 "${AOM_REPO}" /src/aom && cd /src/aom && \
sed -i 's/MAX_NUM_THREADS 64/MAX_NUM_THREADS 128/' aom_util/aom_thread.h && \
mkdir b && cd b && \
cmake .. -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DENABLE_CCACHE=ON -DCMAKE_BUILD_TYPE=Release -DCONFIG_AV1_ENCODER=1 -DENABLE_DOCS=OFF -DENABLE_EXAMPLES=ON -DBUILD_SHARED_LIBS=ON -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/aom
COPY docker/build/x265/multilib.sh /multilib.sh
COPY docker/build/x265/build.sh /build.sh
RUN git clone --branch "${SVT_TAG}" --depth 1 "${SVT_REPO}" /src/svt-av1 && cd /src/svt-av1 && \
mkdir b && cd b && \
cmake .. -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DSVT_AV1_LTO=ON -DNATIVE=ON -DENABLE_AVX512=ON -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/svt-av1
RUN /build.sh
RUN git clone --branch "${X265_TAG}" --depth 1 "${X265_REPO}" /src/x265 && cd /src/x265 && \
cd build/linux && \
MAKEFLAGS=-j$(nproc) /x265-multilib.sh && \
cp 8bit/x265 /usr/bin/x265 && \
cd / && rm -r /src/x265 /x265-multilib.sh
RUN git clone --branch "${ZIMG_TAG}" --depth 1 https://github.com/sekrit-twc/zimg.git /src/zimg && cd /src/zimg && \
./autogen.sh && \
./configure --enable-example --enable-simd --enable-shared --enable-static --prefix=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/zimg
FROM build-base AS build-x264
RUN curl "https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-$(dpkg --print-architecture)-static.tar.xz" > /src/ffmpeg.tar.xz && \
cd /src && tar -xJf /src/ffmpeg.tar.xz && cd ffmpeg-* && \
ARG X264_TAG=stable
ARG X264_REPO=https://code.videolan.org/videolan/x264.git
COPY docker/build/x264/build.sh /build.sh
COPY docker/build/l-smash/build.sh /build-l-smash.sh
RUN /build-l-smash.sh && /build.sh
FROM build-base AS build-aom
ARG AOM_TAG=v3.3.0
ARG AOM_REPO=https://aomedia.googlesource.com/aom.git
COPY docker/build/aom/build.sh /build.sh
RUN /build.sh
FROM build-base AS build-svt-av1
ARG SVT_TAG=v1.0.0
ARG SVT_REPO=https://gitlab.com/AOMediaCodec/SVT-AV1.git
COPY docker/build/svt-av1/build.sh /build.sh
RUN /build.sh
FROM rust:1.60-bullseye AS build-rav1e
ARG RAV1E_TAG=p20220426
ARG RAV1E_REPO=https://github.com/xiph/rav1e.git
RUN DEBIAN_FRONTEND=noninteractive apt update && \
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends \
nasm jq
COPY docker/build/rav1e/build.sh /build.sh
RUN /build.sh
FROM build-base AS build-vapoursynth
ARG MAGICK_TAG=7.1.0-31
ARG ZIMG_TAG=release-3.0.4
ARG VS_TAG=R54
COPY docker/build/magick/build.sh /build-magick.sh
COPY docker/build/zimg/build.sh /build-zimg.sh
COPY docker/build/l-smash/build.sh /build-l-smash.sh
COPY docker/build/vapoursynth/build.sh /build-vapoursynth.sh
COPY docker/build/vapoursynth-plugins/build.sh /build-vapoursynth-plugins.sh
RUN /build-zimg.sh && \
/build-magick.sh && \
/build-l-smash.sh && \
/build-vapoursynth.sh
ENV PYTHONPATH "/usr/lib/python${PYTHON_VERSION}/site-packages:/usr/lib/vapoursynth:$PYTHONPATH"
RUN /build-vapoursynth-plugins.sh
FROM dep-base
RUN pip3 install git+https://github.com/FichteFoll/Sushi.git@master
RUN curl "https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-$(dpkg --print-architecture)-static.tar.xz" > /tmp/ffmpeg.tar.xz && \
cd /tmp && tar -xJf /tmp/ffmpeg.tar.xz && cd ffmpeg-* && \
cp -r model /usr/local/share/ && \
cp ./ffprobe /usr/bin/ && \
cp ./ffmpeg /usr/bin/ && \
cp ./qt-faststart /usr/bin/ && \
cd / && rm -r /src/ffmpeg*
RUN git clone --branch "${MAGICK_TAG}" --depth 1 https://github.com/ImageMagick/ImageMagick /src/imagemagick && cd /src/imagemagick && \
./configure --with-magick-plus-plus --prefix=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/imagemagick
RUN git clone --branch "${VS_TAG}" --depth 1 https://github.com/vapoursynth/vapoursynth /src/vapoursynth && cd /src/vapoursynth && \
./autogen.sh && \
mkdir /usr/lib/vapoursynth && \
./configure --enable-plugins --disable-ocr --prefix=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/vapoursynth
ENV PYTHONPATH="/usr/lib/python3.9/site-packages:/usr/lib/vapoursynth:$PYTHONPATH"
RUN curl https://raw.githubusercontent.com/dubhater/vapoursynth-fieldhint/v3/src/fieldhint.c | gcc -x c -I /usr/include/vapoursynth \
-shared -o /usr/lib/vapoursynth/fieldhint.so \
-O3 -fPIC \
-
cd / && rm -r /tmp/ffmpeg*
ENV PYTHONPATH "/usr/lib/python${PYTHON_VERSION}/site-packages:/usr/lib/vapoursynth:$PYTHONPATH"
RUN git clone --branch "master" --depth 1 https://github.com/VFR-maniac/L-SMASH-Works.git /src/L-SMASH-Works && cd /src/L-SMASH-Works && \
cd VapourSynth && \
./configure --vs-plugindir=/usr/lib/vapoursynth --prefix=/usr && \
make -j$(nproc) && \
make install && \
cd / && rm -r /src/L-SMASH-Works
COPY --from=build-x265 /usr/bin/x265 /usr/bin/x265
RUN git clone --branch "v1.2" --depth 1 https://github.com/dwbuiten/d2vsource.git /src/d2vsource && cd /src/d2vsource && \
./autogen.sh && \
./configure --prefix=/usr && \
make -j$(nproc) && \
cp .libs/libd2vsource.so /usr/lib/vapoursynth/ && \
cd / && rm -r /src/d2vsource
COPY --from=build-x264 /usr/bin/x264 /usr/bin/x264
RUN git clone --branch "r10.1" --depth 1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TDeintMod.git /src/VapourSynth-TDeintMod && cd /src/VapourSynth-TDeintMod && \
./autogen.sh && \
./configure && \
make -j$(nproc) && \
cp .libs/libtdeintmod.so /usr/lib/vapoursynth/ && \
cd / && rm -r /src/VapourSynth-TDeintMod
COPY --from=build-aom /usr/bin/aom* /usr/bin/
COPY --from=build-svt-av1 /usr/bin/SvtAv1* /usr/bin/
COPY --from=build-rav1e /usr/bin/rav1e /usr/bin/rav1e
RUN git clone --branch "r28" --depth 1 https://github.com/EleonoreMizo/fmtconv.git /src/fmtconv && cd /src/fmtconv && \
cd build/unix && \
./autogen.sh && \
./configure --prefix=/usr && \
make -j$(nproc) && \
cp .libs/libfmtconv.so /usr/lib/vapoursynth/ && \
cd / && rm -r /src/fmtconv
COPY --from=build-vapoursynth /usr/bin/vspipe /usr/bin/vspipe
COPY --from=build-vapoursynth /usr/lib/python${PYTHON_VERSION}/site-packages/vapoursynth.* /usr/lib/python${PYTHON_VERSION}/site-packages/
COPY --from=build-vapoursynth /usr/lib/libvapoursynth* /usr/lib/
COPY --from=build-vapoursynth /usr/lib/vapoursynth /usr/lib/vapoursynth
COPY --from=build-vapoursynth /usr/lib/libvs* /usr/lib/
RUN git clone --branch "v23" --depth 1 https://github.com/dubhater/vapoursynth-mvtools /src/vapoursynth-mvtools && cd /src/vapoursynth-mvtools && \
./autogen.sh && \
./configure --prefix=/usr && \
make -j$(nproc) && \
cp .libs/libmvtools.so /usr/lib/vapoursynth/ && \
cd / && rm -r /src/vapoursynth-mvtools
RUN git clone --branch "master" https://github.com/myrsloik/VapourSynth-FFT3DFilter /src/VapourSynth-FFT3DFilter && cd /src/VapourSynth-FFT3DFilter && git reset --hard 64323f0fdee4dd4fe429ee6287906dbae8e7571c && \
mkdir b && cd b && \
meson .. && \
ninja && \
cp libfft3dfilter.so /usr/lib/vapoursynth/ && \
cd / && rm -r /src/VapourSynth-FFT3DFilter
RUN git clone --branch "r2.1" --depth 1 --recursive https://github.com/sekrit-twc/znedi3 /src/znedi3 && cd /src/znedi3 && \
make X86=1 -j$(nproc) && \
cp vsznedi3.so /usr/lib/vapoursynth/ && \
cp nnedi3_weights.bin /usr/lib/vapoursynth/ && \
cd / && rm -r /src/znedi3
RUN git clone --branch "r7" --depth 1 https://github.com/Irrational-Encoding-Wizardry/descale /src/descale && cd /src/descale && \
mkdir b && cd b && \
meson .. && \
ninja && \
cp libdescale.so /usr/lib/vapoursynth/ && \
cp ../descale.py /usr/lib/vapoursynth/ && \
cd / && rm -r /src/descale
RUN git clone --branch "master" --depth 1 --recursive https://github.com/SAPikachu/flash3kyuu_deband.git /src/flash3kyuu_deband && cd /src/flash3kyuu_deband && \
sed -i 's/env python/env python3/' ./waf && \
./waf configure && \
./waf build && \
cp build/libf3kdb.so /usr/lib/vapoursynth/ && \
cd / && rm -r /src/flash3kyuu_deband
RUN git clone --branch "r9" --depth 1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-BM3D.git /src/VapourSynth-BM3D && cd /src/VapourSynth-BM3D && \
mkdir b && cd b && \
LDFLAGS=-lfftw3f_threads meson .. && \
ninja && \
cp libbm3d.so /usr/lib/vapoursynth/ && \
cd / && rm -r /src/VapourSynth-BM3D
RUN git clone --branch "r7" --depth 1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest.git /src/VapourSynth-DFTTest && cd /src/VapourSynth-DFTTest && \
mkdir b && cd b && \
LDFLAGS=-lfftw3f_threads meson .. && \
ninja && \
cp libdfttest.so /usr/lib/vapoursynth/ && \
cd / && rm -r /src/VapourSynth-DFTTest
RUN git clone --branch "r10.1" --depth 1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-Yadifmod /src/VapourSynth-Yadifmod && cd /src/VapourSynth-Yadifmod && \
./autogen.sh && \
./configure --prefix=/usr && \
make -j$(nproc) && \
cp .libs/libyadifmod.so /usr/lib/vapoursynth/ && \
cd / && rm -r /src/VapourSynth-Yadifmod
RUN curl https://raw.githubusercontent.com/HomeOfVapourSynthEvolution/havsfunc/3b6a80ce502e6775c70df6bb2d19124de149073f/havsfunc.py > /usr/lib/vapoursynth/havsfunc.py && \
curl https://raw.githubusercontent.com/HomeOfVapourSynthEvolution/mvsfunc/90e185220901402b974d7364345e0f25e71ab8fe/mvsfunc.py > /usr/lib/vapoursynth/mvsfunc.py && \
curl https://raw.githubusercontent.com/Irrational-Encoding-Wizardry/fvsfunc/29ced90a3f620844dea0efa8666542298f68f421/fvsfunc.py > /usr/lib/vapoursynth/fvsfunc.py && \
curl https://raw.githubusercontent.com/WolframRhodium/muvsfunc/6158bf2af1cb85fd9ba44024c52ef3666a2834c1/muvsfunc.py > /usr/lib/vapoursynth/muvsfunc.py
RUN sed -i 's/core.nnedi3/core.znedi3/' /usr/lib/vapoursynth/fvsfunc.py
COPY --from=build-vapoursynth /usr/bin/magick /usr/bin/magick
COPY --from=build-vapoursynth /usr/etc/ImageMagick-7 /usr/etc/ImageMagick-7

37
README.md Normal file
View file

@ -0,0 +1,37 @@
A Dockerfile featuring several video encoding / processing / filtering utilities.
## Build and run
```bash
docker build -t encoder .
docker run -it --rm -v /path/to/mount/on/container:/mnt encoder
```
## Included tools
| Tool | Kind | Notes |
| :-----------------------------------------: | :----------------------------------------------------------------------:| :--------------------------------------------------------------------------------------------------------: |
| [ffmpeg](https://johnvansickle.com/ffmpeg/) | General | static build from git snapshot |
| [Sushi](https://github.com/FichteFoll/Sushi) | Subtitle Syncing | Automatic shifter for SRT and ASS subtitle based on audio streams. |
| [x264 stable](https://code.videolan.org/videolan/x264/-/tree/stable) | H.264 Encoder | x264, the best and fastest H.264 encoder |
| [x264 master](https://code.videolan.org/videolan/x264/-/tree/master) | H.264 Encoder | Can be accessed via `$ x264_master` |
| [x265 3.5](https://bitbucket.org/multicoreware/x265_git/src/3.5/) | H.265/HEVC Encoder | |
| [aom v3.3.0](https://aomedia.googlesource.com/aom/+/refs/tags/v3.3.0/) | AV1 Encoder/Decoder | Can be accessed via `$ aomenc` or `$ aomdec` |
| [SVT-AV1 v1.0.0](https://gitlab.com/AOMediaCodec/SVT-AV1/-/releases/v1.0.0) | AV1 Encoder/Decoder | Can be accessed via `$ SvtAv1Enc` or `$ SvtAv1Dec` |
| [rav1e p20220426](https://github.com/xiph/rav1e/tree/p20220426) | AV1 Encoder | Can be accessed via `$ rav1e` |
| [VapourSynth R54](https://github.com/vapoursynth/vapoursynth/tree/R54) | Processing | Can be accessed via `$ vspipe` |
| [L-SMASH-Works](https://github.com/VFR-maniac/L-SMASH-Works) | VapourSynth Plugin | |
| [d2vsource v1.2](https://github.com/dwbuiten/d2vsource/tree/v1.2) | VapourSynth Plugin | D2V parser and decoder for VapourSynth |
| [VapourSynth-TDeintMod r10.1](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TDeintMod/tree/r10.1) | VapourSynth Plugin | TDeint filter for VapourSynth |
| [fmtconv r28](https://github.com/EleonoreMizo/fmtconv/tree/r28) | VapourSynth Plugin | Format conversion tools for Vapoursynth and Avisynth+ |
| [vapoursynth-mvtools](https://github.com/dubhater/vapoursynth-mvtools/tree/v23) | VapourSynth Plugin | Motion compensation and stuff |
| [VapourSynth-FFT3DFilter 64323f0](https://github.com/myrsloik/VapourSynth-FFT3DFilter/tree/64323f0fdee4dd4fe429ee6287906dbae8e7571c) | VapourSynth Plugin | VapourSynth port of FFT3DFilter |
| [znedi3 r2.1](https://github.com/sekrit-twc/znedi3/tree/r2.1) | VapourSynth Plugin | nnedi3 filter |
| [descale r7](https://github.com/Irrational-Encoding-Wizardry/descale/tree/r7) | VapourSynth Plugin | VapourSynth plugin to undo upscaling |
| [flash3kyuu_deband](https://github.com/SAPikachu/flash3kyuu_deband) | VapourSynth Plugin | A deband library and filter for avisynth/vapoursynth |
| [VapourSynth-BM3D r9](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-BM3D/tree/r9) | VapourSynth Plugin | BM3D denoising filter for VapourSynth |
| [VapourSynth-DFTTest r7](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest/tree/r7) | VapourSynth Plugin | DFTTest filter for VapourSynth |
| [VapourSynth-Yadifmod r10.1](https://github.com/HomeOfVapourSynthEvolution/VapourSynth-Yadifmod/tree/r10.1) | VapourSynth Plugin | Yadifmod filter for VapourSynth |
| [havsfunc 3b6a80](https://github.com/HomeOfVapourSynthEvolution/havsfunc) | VapourSynth Functions | Holy's ported AviSynth functions for VapourSynth |
| [mvsfunc 90e185](https://github.com/HomeOfVapourSynthEvolution/mvsfunc) | VapourSynth Functions | mawen1250's VapourSynth functions |
| [fvsfunc 29ced9](https://github.com/Irrational-Encoding-Wizardry/fvsfunc) | VapourSynth Functions | Small collection of VapourSynth functions |
| [muvsfunc 6158bf](https://github.com/WolframRhodium/muvsfunc) | VapourSynth Functions | Muonium's VapourSynth functions |

12
docker/build/aom/build.sh Executable file
View file

@ -0,0 +1,12 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${AOM_TAG}" --depth 1 "${AOM_REPO}" /src/aom
pushd /src/aom
sed -i 's/MAX_NUM_THREADS 64/MAX_NUM_THREADS 128/' aom_util/aom_thread.h
mkdir b
pushd b
cmake .. -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DENABLE_CCACHE=ON -DCMAKE_BUILD_TYPE=Release -DCONFIG_AV1_ENCODER=1 -DENABLE_DOCS=OFF -DENABLE_EXAMPLES=ON -DBUILD_SHARED_LIBS=OFF -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
make -j$(nproc)
make install

10
docker/build/l-smash/build.sh Executable file
View file

@ -0,0 +1,10 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "master" --depth 1 https://github.com/l-smash/l-smash /src/l-smash
pushd /src/l-smash
CFLAGS="-fPIC" ./configure --enable-shared --prefix=/usr
make -j$(nproc)
make install

10
docker/build/magick/build.sh Executable file
View file

@ -0,0 +1,10 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${MAGICK_TAG}" --depth 1 https://github.com/ImageMagick/ImageMagick /src/imagemagick
cd /src/imagemagick
./configure --with-magick-plus-plus --prefix=/usr
make -j$(nproc)
make install

9
docker/build/rav1e/build.sh Executable file
View file

@ -0,0 +1,9 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${RAV1E_TAG}" --depth 1 "${RAV1E_REPO}" /src/rav1e
pushd /src/rav1e
RUSTFLAGS="-C target-cpu=native" cargo build --release --features asm,threading
cp "$(cargo metadata --format-version 1 | jq -r '.target_directory')/release/rav1e" /usr/bin/rav1e

7
docker/build/svt-av1/build.sh Executable file
View file

@ -0,0 +1,7 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${SVT_TAG}" --depth 1 "${SVT_REPO}" /src/svt-av1
pushd /src/svt-av1
./Build/linux/build.sh --enable-avx512 --enable-lto --static --native --release --install --prefix /usr

View file

@ -0,0 +1,107 @@
#!/bin/bash
set -e
set -o pipefail
curl https://raw.githubusercontent.com/dubhater/vapoursynth-fieldhint/v3/src/fieldhint.c | gcc -x c -I /usr/include/vapoursynth \
-shared -o /usr/lib/vapoursynth/fieldhint.so \
-O3 -fPIC \
-
git clone --branch "master" --depth 1 https://github.com/VFR-maniac/L-SMASH-Works.git /src/L-SMASH-Works
pushd /src/L-SMASH-Works
cd VapourSynth
./configure --vs-plugindir=/usr/lib/vapoursynth --prefix=/usr
make -j$(nproc)
make install
git clone --branch "v1.2" --depth 1 https://github.com/dwbuiten/d2vsource.git /src/d2vsource
pushd /src/d2vsource
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
cp .libs/libd2vsource.so /usr/lib/vapoursynth/
git clone --branch "r10.1" --depth 1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-TDeintMod.git /src/VapourSynth-TDeintMod
pushd /src/VapourSynth-TDeintMod
./autogen.sh
./configure
make -j$(nproc)
cp .libs/libtdeintmod.so /usr/lib/vapoursynth/
git clone --branch "r28" --depth 1 https://github.com/EleonoreMizo/fmtconv.git /src/fmtconv
pushd /src/fmtconv
cd build/unix
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
cp .libs/libfmtconv.so /usr/lib/vapoursynth/
git clone --branch "v23" --depth 1 https://github.com/dubhater/vapoursynth-mvtools /src/vapoursynth-mvtools
pushd /src/vapoursynth-mvtools
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
cp .libs/libmvtools.so /usr/lib/vapoursynth/
git clone --branch "master" https://github.com/myrsloik/VapourSynth-FFT3DFilter /src/VapourSynth-FFT3DFilter
pushd /src/VapourSynth-FFT3DFilter && git reset --hard 64323f0fdee4dd4fe429ee6287906dbae8e7571c
mkdir b
pushd b
meson ..
ninja
cp libfft3dfilter.so /usr/lib/vapoursynth/
git clone --branch "r2.1" --depth 1 --recursive https://github.com/sekrit-twc/znedi3 /src/znedi3
pushd /src/znedi3
#TODO: remove X86 hardcode
make X86=1 -j$(nproc)
cp vsznedi3.so /usr/lib/vapoursynth/
cp nnedi3_weights.bin /usr/lib/vapoursynth/
git clone --branch "r7" --depth 1 https://github.com/Irrational-Encoding-Wizardry/descale /src/descale
pushd /src/descale
mkdir b
pushd b
meson ..
ninja
cp libdescale.so /usr/lib/vapoursynth/
cp ../descale.py /usr/lib/vapoursynth/
git clone --branch "master" --depth 1 --recursive https://github.com/SAPikachu/flash3kyuu_deband.git /src/flash3kyuu_deband
pushd /src/flash3kyuu_deband
sed -i 's/env python/env python3/' ./waf
./waf configure
./waf build
cp build/libf3kdb.so /usr/lib/vapoursynth/
git clone --branch "r9" --depth 1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-BM3D.git /src/VapourSynth-BM3D
pushd /src/VapourSynth-BM3D
mkdir b
pushd b
LDFLAGS=-lfftw3f_threads meson ..
ninja
cp libbm3d.so /usr/lib/vapoursynth/
git clone --branch "r7" --depth 1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-DFTTest.git /src/VapourSynth-DFTTest
pushd /src/VapourSynth-DFTTest
mkdir b
pushd b
LDFLAGS=-lfftw3f_threads meson ..
ninja
cp libdfttest.so /usr/lib/vapoursynth/
git clone --branch "r10.1" --depth 1 https://github.com/HomeOfVapourSynthEvolution/VapourSynth-Yadifmod.git /src/VapourSynth-Yadifmod
pushd /src/VapourSynth-Yadifmod
./autogen.sh
./configure --prefix=/usr
make -j$(nproc)
cp .libs/libyadifmod.so /usr/lib/vapoursynth/
curl https://raw.githubusercontent.com/HomeOfVapourSynthEvolution/havsfunc/3b6a80ce502e6775c70df6bb2d19124de149073f/havsfunc.py > /usr/lib/vapoursynth/havsfunc.py
curl https://raw.githubusercontent.com/HomeOfVapourSynthEvolution/mvsfunc/90e185220901402b974d7364345e0f25e71ab8fe/mvsfunc.py > /usr/lib/vapoursynth/mvsfunc.py
curl https://raw.githubusercontent.com/Irrational-Encoding-Wizardry/fvsfunc/29ced90a3f620844dea0efa8666542298f68f421/fvsfunc.py > /usr/lib/vapoursynth/fvsfunc.py
curl https://raw.githubusercontent.com/WolframRhodium/muvsfunc/6158bf2af1cb85fd9ba44024c52ef3666a2834c1/muvsfunc.py > /usr/lib/vapoursynth/muvsfunc.py
sed -i 's/core\.nnedi3/core\.znedi3/' /usr/lib/vapoursynth/fvsfunc.py

View file

@ -0,0 +1,12 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${VS_TAG}" --depth 1 https://github.com/vapoursynth/vapoursynth /src/vapoursynth
pushd /src/vapoursynth
./autogen.sh
mkdir /usr/lib/vapoursynth
./configure --enable-plugins --disable-ocr --prefix=/usr
make -j$(nproc)
make install

10
docker/build/x264/build.sh Executable file
View file

@ -0,0 +1,10 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${X264_TAG}" --depth 1 "${X264_REPO}" /src/x264
pushd /src/x264
CC=gcc CXX=g++ CFLAGS="-O3 -march=native" CPPFLAGS="-O3 -march=native" CXXFLAGS="-O3 -march=native" LDFLAGS="" \
./configure --enable-shared --enable-static --bit-depth=all --chroma-format=all --enable-lto --enable-pic --prefix=/usr
make -j$(nproc)
make install

9
docker/build/x265/build.sh Executable file
View file

@ -0,0 +1,9 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${X265_TAG}" --depth 1 "${X265_REPO}" /src/x265
pushd /src/x265
pushd build/linux
MAKEFLAGS=-j$(nproc) /multilib.sh
cp 8bit/x265 /usr/bin/x265

View file

@ -3,17 +3,17 @@
mkdir -p 8bit 10bit 12bit
cd 12bit
cmake ../../../source -DSTATIC_LINK_CRT=ON -DNATIVE_BUILD=ON -DENABLE_HDR10_PLUS=ON -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON
cmake ../../../source -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy -DSTATIC_LINK_CRT=ON -DNATIVE_BUILD=ON -DENABLE_HDR10_PLUS=ON -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON
make ${MAKEFLAGS}
cd ../10bit
cmake ../../../source -DSTATIC_LINK_CRT=ON -DNATIVE_BUILD=ON -DENABLE_HDR10_PLUS=ON -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF
cmake ../../../source -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy -DSTATIC_LINK_CRT=ON -DNATIVE_BUILD=ON -DENABLE_HDR10_PLUS=ON -DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF
make ${MAKEFLAGS}
cd ../8bit
ln -sf ../10bit/libx265.a libx265_main10.a
ln -sf ../12bit/libx265.a libx265_main12.a
cmake ../../../source -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DEXTRA_LINK_FLAGS=-L. -DSTATIC_LINK_CRT=ON -DNATIVE_BUILD=ON -DENABLE_HDR10_PLUS=ON -DENABLE_SHARED=OFF -DLINKED_10BIT=ON -DLINKED_12BIT=ON
cmake ../../../source -DEXTRA_LIB="x265_main10.a;x265_main12.a" -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy -DEXTRA_LINK_FLAGS=-L. -DSTATIC_LINK_CRT=ON -DNATIVE_BUILD=ON -DENABLE_HDR10_PLUS=ON -DENABLE_SHARED=OFF -DLINKED_10BIT=ON -DLINKED_12BIT=ON
make ${MAKEFLAGS}
# rename the 8bit library, then combine all three into libx265.a

11
docker/build/zimg/build.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${ZIMG_TAG}" --depth 1 https://github.com/sekrit-twc/zimg.git /src/zimg
pushd /src/zimg
./autogen.sh
./configure --enable-example --enable-simd --enable-shared --enable-static --prefix=/usr
make -j$(nproc)
make install