2022-12-07 13:46:13 +01:00
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...
2023-09-20 14:18:19 +02:00
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
2023-09-14 07:12:15 +02:00
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
2023-09-20 14:18:19 +02:00
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
2023-09-14 07:12:15 +02:00
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 ../../
2023-09-20 14:18:19 +02:00
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"
2023-01-12 03:06:56 +01:00
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"
2023-01-12 02:47:26 +01:00
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 ../../../
2023-04-03 02:01:21 +02:00
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
2023-11-17 13:30:13 +01:00
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-static --enable-libvvenc --enable-libvvdec --enable-pic \
2023-09-20 14:18:19 +02:00
--enable-zlib --enable-libxml2 --enable-libdav1d --enable-libopus --enable-libcodec2 --enable-libjxl --enable-libzimg \
2023-11-17 13:30:13 +01:00
--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.