VVCEasy/FFMPEGMINGW.sh

169 lines
6.3 KiB
Bash
Raw Normal View History

echo Updating and upgrading MSYS2 packages... if system core update requires reboot this application, please run this script again after being updated.
2022-12-07 13:37:06 +01:00
pacman -Syu
echo Installing MSYS2 packages...
pacman -S python git nasm vim wget $MINGW_PACKAGE_PREFIX-{toolchain,cmake,autotools,meson,ninja}
2022-12-07 13:37:06 +01:00
echo Starting process of FFmpeg build with libvvenc and libvvdec...
2023-04-02 15:21:41 +02:00
if [ ! -d buildffmpegwin ]; then
2022-12-07 13:37:06 +01:00
mkdir buildffmpegwin && cd buildffmpegwin
2023-04-02 15:21:41 +02:00
else
cd buildffmpegwin
fi
if [ ! -d FFmpeg-FixVVC ]; then
git clone --depth=1 https://github.com/MartinEesmaa/FFmpeg-VVC
else
git -C FFmpeg-VVC pull
fi
if [ ! -d vvenc ]; then
2022-12-07 13:37:06 +01:00
git clone --depth=1 https://github.com/fraunhoferhhi/vvenc
2023-04-02 15:21:41 +02:00
else
git -C vvenc pull
fi
if [ ! -d vvdec ]; then
2022-12-07 13:37:06 +01:00
git clone --depth=1 https://github.com/fraunhoferhhi/vvdec
2023-04-02 15:21:41 +02:00
else
git -C vvdec pull
fi
if [ ! -d fdk-aac ]; then
2022-12-07 13:37:06 +01:00
git clone --depth=1 https://github.com/mstorsjo/fdk-aac
2023-04-02 15:21:41 +02:00
else
git -C fdk-aac pull
fi
if [ ! -d SDL ]; then
git clone --depth=1 https://github.com/libsdl-org/SDL -b SDL2
2023-04-02 15:21:41 +02:00
else
git -C SDL pull
fi
if [ ! -d libxml2 ]; then
2022-12-07 13:37:06 +01:00
git clone --depth=1 https://github.com/gnome/libxml2
2023-04-02 15:21:41 +02:00
else
git -C libxml2 pull
fi
if [ ! -d opus ]; then
2022-12-07 13:37:06 +01:00
git clone --depth=1 https://github.com/xiph/opus
2023-04-02 15:21:41 +02:00
else
git -C opus pull
fi
if [ ! -d libjxl ]; then
git clone --depth=1 https://github.com/libjxl/libjxl
sed -i 's/-lm/-lm -lstdc++/g' libjxl/lib/jxl/libjxl.pc.in libjxl/lib/threads/libjxl_threads.pc.in
git -C libjxl submodule update --init --recursive --depth 1 --recommend-shallow
else
git -C libjxl pull
git -C libjxl submodule update --init --recursive --depth 1 --recommend-shallow
fi
if [ ! -d zimg ]; then
git clone --depth=1 https://github.com/sekrit-twc/zimg
git -C zimg submodule update --init --recursive --depth 1
wget https://raw.githubusercontent.com/m-ab-s/mabs-patches/master/zimg/0001-libm_wrapper-define-__CRT__NO_INLINE-before-math.h.patch
git -C zimg apply 0001-libm_wrapper-define-__CRT__NO_INLINE-before-math.h.patch
rm 0001-libm_wrapper-define-__CRT__NO_INLINE-before-math.h.patch
else
git -C zimg pull
git -C zimg submodule update --init --recursive --depth 1
fi
if [ ! -d soxr ]; then
git clone --depth=1 https://github.com/chirlu/soxr
else
git -C soxr pull
fi
2023-04-02 15:21:41 +02:00
if [ ! -d dav1d ]; then
2022-12-07 13:37:06 +01:00
git clone --depth=1 https://code.videolan.org/videolan/dav1d
2023-04-02 15:21:41 +02:00
else
git -C dav1d pull
fi
if [ ! -d codec2 ]; then
2022-12-23 11:57:15 +01:00
git clone --depth=1 https://github.com/drowe67/codec2
2023-04-02 15:21:41 +02:00
else
git -C codec2 pull
fi
if [ ! -d vmaf ]; then
git clone --depth=1 https://github.com/netflix/vmaf
else
git -C vmaf pull
fi
2022-12-07 13:37:06 +01:00
echo Starting to build fdk-aac:
cd fdk-aac
autoreconf -if && ./configure --enable-static --disable-shared --prefix=$MSYSTEM_PREFIX && make install -j $nproc
cd ..
echo Starting to build libxml2:
cd libxml2
autoreconf -if && ./configure --enable-static --disable-shared --prefix=$MSYSTEM_PREFIX && make install -j $nproc
cd ..
echo Starting to build sdl2:
cd SDL
2022-12-23 12:01:09 +01:00
mkdir build && cd build && cmake -DCMAKE_EXE_LINKER_FLAGS="-static" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$MSYSTEM_PREFIX .. -G "MinGW Makefiles" && cmake --build . --target install -j $nproc
cd ../../
2022-12-07 13:37:06 +01:00
echo Starting to build libopus to improve decode quality on FFmpeg:
cd opus
autoreconf -if && CFLAGS="-O2 -D_FORTIFY_SOURCE=0" LDFLAGS="-flto -s" ./configure --enable-static --disable-shared --prefix=$MSYSTEM_PREFIX && make install -j $nproc
2022-12-07 13:37:06 +01:00
cd ..
2023-04-02 15:21:41 +02:00
echo Starting to build libjxl:
2023-06-07 13:51:14 +02:00
mkdir libjxl/build && cd libjxl/build && cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF -DJPEGXL_ENABLE_BENCHMARK=OFF -DJPEGXL_ENABLE_PLUGINS=ON -DJPEGXL_ENABLE_MANPAGES=OFF -DJPEGXL_FORCE_SYSTEM_BROTLI=ON -DJPEGXL_FORCE_SYSTEM_GTEST=ON -DCMAKE_INSTALL_PREFIX=$MSYSTEM_PREFIX .. && ninja install
2023-04-02 15:21:41 +02:00
cd ../../
2022-12-23 11:57:15 +01:00
2022-12-07 13:37:06 +01:00
echo Starting to build dav1d:
2023-06-07 13:51:14 +02:00
mkdir dav1d/build && cd dav1d/build && meson -Denable_docs=false -Ddefault_library=static -Dprefix=$MSYSTEM_PREFIX .. && ninja install
2022-12-07 13:37:06 +01:00
cd ../../
echo Starting to build zimg:
cd zimg && autoreconf -if && ./configure --disable-shared --prefix=$MSYSTEM_PREFIX && make install -j $nproc
cd ..
echo Starting to build soxr:
mkdir soxr/build && cd soxr/build && cmake -D{WITH_LSR_BINDINGS,BUILD_TESTS,WITH_OPENMP}=off -DCMAKE_INSTALL_PREFIX=$MSYSTEM_PREFIX -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -Wno-dev .. -G "MinGW Makefiles"
cmake --build . -j $nproc --target install
cd ../../
2022-12-23 11:57:15 +01:00
echo Starting to build codec2:
cd codec2
sed -i 's|if(WIN32)|if(FALSE)|g' CMakeLists.txt
grep -ERl "\b(lsp|lpc)_to_(lpc|lsp)" --include="*.[ch]" | \
xargs -r sed -ri "s;((lsp|lpc)_to_(lpc|lsp));c2_\1;g"
mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$MSYSTEM_PREFIX -D{UNITTEST,INSTALL_EXAMPLES}=off -DBUILD_SHARED_LIBS=OFF -DCMAKE_EXE_LINKER_FLAGS="-static" .. -G "MinGW Makefiles"
cmake --build . -j $nproc --target install
2022-12-23 11:57:15 +01:00
cd ../../
2023-04-02 15:21:41 +02:00
echo Starting to build vmaf to apply calculate VVC video references from original video:
2023-06-07 13:51:14 +02:00
mkdir vmaf/libvmaf/build && cd vmaf/libvmaf/build && CFLAGS="-msse2 -mfpmath=sse -mstackrealign" meson -Denable_docs=false -Ddefault_library=static -Denable_float=true -Dbuilt_in_models=true -Dprefix=$MSYSTEM_PREFIX .. && ninja install
2023-04-02 15:21:41 +02:00
cd ../../../
sed -i 's/-lm/-lm -lstdc++/g' $MSYSTEM_PREFIX/lib/pkgconfig/libvmaf.pc
2023-04-02 15:21:41 +02:00
echo Starting to build vvenc...
2022-12-07 13:37:06 +01:00
cd vvenc
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$MSYSTEM_PREFIX -DVVENC_ENABLE_LINK_TIME_OPT=OFF .. -G "MinGW Makefiles"
cmake --build . --target install -j $nproc
cd ../../
2023-04-02 15:21:41 +02:00
echo Starting to build vvdec...
2022-12-07 13:37:06 +01:00
cd vvdec
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$MSYSTEM_PREFIX -DVVDEC_ENABLE_LINK_TIME_OPT=OFF .. -G "MinGW Makefiles"
cmake --build . --target install -j $nproc
cd ../../
echo Starting configuring and making FFmpeg VVCEasy build...
2023-04-02 15:21:41 +02:00
cd FFmpeg-VVC
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-static --enable-libvvenc --enable-libvvdec --enable-pic \
--enable-zlib --enable-libxml2 --enable-libdav1d --enable-libopus --enable-libcodec2 --enable-libjxl --enable-libzimg \
--enable-libvmaf --enable-libsoxr --extra-ldexeflags=-static --pkg-config-flags=-static --disable-w32threads --enable-sdl2 --extra-version=VVCEasy && \
2022-12-07 13:37:06 +01:00
make -j
echo FFmpeg VVC version tools are now compiled, please see buildffmpegwin/FFmpeg folder.