169 lines
6.3 KiB
Bash
169 lines
6.3 KiB
Bash
echo Updating and upgrading MSYS2 packages... if system core update requires reboot this application, please run this script again after being updated.
|
|
pacman -Syu
|
|
echo Installing MSYS2 packages...
|
|
pacman -S python git nasm vim wget $MINGW_PACKAGE_PREFIX-{toolchain,cmake,autotools,meson,ninja}
|
|
echo Starting process of FFmpeg build with libvvenc and libvvdec...
|
|
if [ ! -d buildffmpegwin ]; then
|
|
mkdir buildffmpegwin && cd buildffmpegwin
|
|
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
|
|
git clone --depth=1 https://github.com/fraunhoferhhi/vvenc
|
|
else
|
|
git -C vvenc pull
|
|
fi
|
|
|
|
if [ ! -d vvdec ]; then
|
|
git clone --depth=1 https://github.com/fraunhoferhhi/vvdec
|
|
else
|
|
git -C vvdec pull
|
|
fi
|
|
|
|
if [ ! -d fdk-aac ]; then
|
|
git clone --depth=1 https://github.com/mstorsjo/fdk-aac
|
|
else
|
|
git -C fdk-aac pull
|
|
fi
|
|
|
|
if [ ! -d SDL ]; then
|
|
git clone --depth=1 https://github.com/libsdl-org/SDL -b SDL2
|
|
else
|
|
git -C SDL pull
|
|
fi
|
|
|
|
if [ ! -d libxml2 ]; then
|
|
git clone --depth=1 https://github.com/gnome/libxml2
|
|
else
|
|
git -C libxml2 pull
|
|
fi
|
|
|
|
if [ ! -d opus ]; then
|
|
git clone --depth=1 https://github.com/xiph/opus
|
|
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
|
|
|
|
if [ ! -d dav1d ]; then
|
|
git clone --depth=1 https://code.videolan.org/videolan/dav1d
|
|
else
|
|
git -C dav1d pull
|
|
fi
|
|
|
|
if [ ! -d codec2 ]; then
|
|
git clone --depth=1 https://github.com/drowe67/codec2
|
|
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
|
|
|
|
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
|
|
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 ../../
|
|
|
|
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
|
|
cd ..
|
|
|
|
echo Starting to build libjxl:
|
|
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
|
|
cd ../../
|
|
|
|
echo Starting to build dav1d:
|
|
mkdir dav1d/build && cd dav1d/build && meson -Denable_docs=false -Ddefault_library=static -Dprefix=$MSYSTEM_PREFIX .. && ninja install
|
|
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 ../../
|
|
|
|
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
|
|
cd ../../
|
|
|
|
echo Starting to build vmaf to apply calculate VVC video references from original video:
|
|
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
|
|
cd ../../../
|
|
sed -i 's/-lm/-lm -lstdc++/g' $MSYSTEM_PREFIX/lib/pkgconfig/libvmaf.pc
|
|
|
|
echo Starting to build vvenc...
|
|
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 ../../
|
|
echo Starting to build vvdec...
|
|
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...
|
|
cd FFmpeg-VVC
|
|
./configure --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 && \
|
|
make -j
|
|
echo FFmpeg VVC version tools are now compiled, please see buildffmpegwin/FFmpeg folder.
|