Add ugv266, vvcenc, FDK-AAC encoders

This commit is contained in:
DataHoarder 2022-04-29 19:15:08 +02:00
parent 67832e650b
commit 1463299b71
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk
6 changed files with 82 additions and 9 deletions

View file

@ -18,16 +18,19 @@ RUN curl https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - && \
DEBIAN_FRONTEND=noninteractive apt update && \
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
autoconf automake libtool pkg-config meson make cmake yasm nasm gcc g++ clang llvm lld ccache \
libnuma-dev libavcodec-dev libavformat-dev libswscale-dev libavresample-dev libavutil-dev libass-dev libfftw3-3 libfftw3-dev && \
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100 && \
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100 && \
update-alternatives --install /usr/bin/link link /usr/bin/ld.lld 100
ENV CC=clang
ENV CXX=clang++
ENV CFLAGS "-O3 -march=native -flto"
ENV LD=ld.lld
ENV CFLAGS "-Ofast -march=native -flto"
ENV CPPFLAGS "$CFLAGS"
ENV CXXFLAGS "-O3 -march=native -flto"
ENV LDFLAGS "-flto"
ENV CXXFLAGS "-Ofast -march=native -flto"
ENV LDFLAGS "-flto -fuse-ld=lld"
FROM build-base AS build-x265
@ -62,6 +65,24 @@ COPY docker/build/x264/build.sh /build.sh
RUN /build.sh master
FROM build-base AS build-uvg266
ARG UVG266_TAG=v0.2.3
ARG UVG266_REPO=https://github.com/ultravideo/uvg266.git
COPY docker/build/uvg266/build.sh /build.sh
RUN /build.sh
FROM build-base AS build-vvenc
ARG VVENC_TAG=v1.4.0
ARG VVENC_REPO=https://github.com/fraunhoferhhi/vvenc.git
COPY docker/build/vvenc/build.sh /build.sh
RUN /build.sh
FROM build-base AS build-aom
ARG AOM_TAG=v3.3.0
@ -93,6 +114,15 @@ COPY docker/build/rav1e/build.sh /build.sh
RUN /build.sh
FROM build-base AS build-fdk-aac
ARG FDKAAC_TAG=master
ARG FDKAAC_REPO=https://github.com/mstorsjo/fdk-aac.git
COPY docker/build/fdk-aac/build.sh /build.sh
RUN /build.sh
FROM build-lsmash AS build-vapoursynth
ARG MAGICK_TAG=7.1.0-31
@ -138,6 +168,11 @@ 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
COPY --from=build-uvg266 /usr/bin/uvg266 /usr/bin/uvg266
COPY --from=build-vvenc /usr/bin/vvenc* /usr/bin/
COPY --from=build-fdk-aac /usr/bin/aac-enc /usr/bin/aac-enc
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/

View file

@ -16,8 +16,11 @@ docker run -it --rm -v /path/to/mount/on/container:/mnt encoder
| [x264 master](https://code.videolan.org/videolan/x264/-/tree/master) | H.264 Encoder | Can be accessed via `$ x264-dev` |
| [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` |
| [SVT-AV1 v1.0.0](https://gitlab.com/AOMediaCodec/SVT-AV1/-/releases/v1.0.0) | AV1 Encoder/Decoder | Can be accessed via `$ SvtAv1EncApp` or `$ SvtAv1DecApp` |
| [rav1e p20220426](https://github.com/xiph/rav1e/tree/p20220426) | AV1 Encoder | Can be accessed via `$ rav1e` |
| [uvg266 v0.2.3](https://github.com/ultravideo/uvg266/tree/v0.2.3) | H.266/VVC Encoder | Can be accessed via `$ uvg266` |
| [vvenc v1.4.0](https://github.com/fraunhoferhhi/vvenc/tree/v1.4.0) | H.266/VVC Encoder | Fraunhofer Versatile Video Encoder (VVenC). Can be accessed via `$ vvencapp` or `$ vvencFFapp` |
| [FDK-AAC master](https://github.com/mstorsjo/fdk-aac) | AAC-LC/HE/HEv2 Encoder | Fraunhofer FDK AAC code from Android. Can be accessed via `$ aac-enc` |
| [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 |

11
docker/build/fdk-aac/build.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${FDKAAC_TAG}" --depth 1 "${FDKAAC_REPO}" /src/fdk-aac
pushd /src/fdk-aac
mkdir b
pushd b
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_PROGRAMS=ON -DBUILD_SHARED_LIBS=OFF -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
make -j$(nproc)
make install

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

@ -0,0 +1,11 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${UVG266_TAG}" --depth 1 --recursive "${UVG266_REPO}" /src/uvg266
pushd /src/uvg266
mkdir b
pushd b
cmake .. -DGIT_SUBMODULE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
make -j$(nproc)
make install

13
docker/build/vvenc/build.sh Executable file
View file

@ -0,0 +1,13 @@
#!/bin/bash
set -e
set -o pipefail
git clone --branch "${VVENC_TAG}" --depth 1 "${VVENC_REPO}" /src/vvenc
pushd /src/vvenc
#TODO: remove this once new version is released
curl https://github.com/fraunhoferhhi/vvenc/commit/4137dfe29005c480154aa7287d92ce9dc8146617.diff | git apply
mkdir b
pushd b
cmake .. -DVVENC_ENABLE_X86_SIMD=ON -DBUILD_SHARED_LIBS=OFF -DVVENC_ENABLE_LINK_TIME_OPT=ON -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX:PATH=/usr && \
make -j$(nproc)
make install

View file

@ -4,7 +4,7 @@ set -o pipefail
git clone --branch "${1}" --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
CC=gcc CXX=g++ CFLAGS="-Ofast -march=native" CPPFLAGS="-Ofast -march=native" CXXFLAGS="-Ofast -march=native" LDFLAGS="" \
./configure --enable-static --bit-depth=all --chroma-format=all --enable-lto --enable-pic --prefix=/usr
make -j$(nproc)
make install