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...
2024-09-11 03:00:21 +02:00
[ ! -d buildffmpegwin ] && mkdir buildffmpegwin
2023-04-02 15:21:41 +02:00
cd buildffmpegwin
2024-09-11 03:00:21 +02:00
clonepull( ) {
if [ ! -d " $1 " ] ; then
git clone --depth= 1 " $2 " " $1 "
else
git -C " $1 " pull
fi
}
clonepull FFmpeg-VVC https://github.com/MartinEesmaa/FFmpeg-VVC
clonepull vvenc https://github.com/fraunhoferhhi/vvenc
clonepull vvdec https://github.com/fraunhoferhhi/vvdec
clonepull fdk-aac https://github.com/mstorsjo/fdk-aac
clonepull SDL https://github.com/libsdl-org/SDL -b SDL2
clonepull libxml2 https://github.com/gnome/libxml2
clonepull opus https://github.com/xiph/opus
clonepull libjxl https://github.com/libjxl/libjxl
clonepull zimg https://github.com/sekrit-twc/zimg
clonepull soxr https://github.com/chirlu/soxr
clonepull dav1d https://code.videolan.org/videolan/dav1d
clonepull codec2 https://github.com/drowe67/codec2
clonepull vmaf https://github.com/netflix/vmaf
2023-04-02 15:21:41 +02:00
if [ ! -d libjxl ] ; then
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
fi
2023-09-20 14:18:19 +02:00
if [ ! -d zimg ] ; then
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
2023-04-02 15:21:41 +02:00
fi
2022-12-07 13:37:06 +01:00
echo Starting to build fdk-aac:
cd fdk-aac
2024-09-11 03:08:16 +02:00
./autogen.sh && ./configure --enable-static --disable-shared --prefix= $MSYSTEM_PREFIX && make install -j $nproc
2022-12-07 13:37:06 +01:00
cd ..
echo Starting to build libxml2:
cd libxml2
2024-09-11 03:08:16 +02:00
./autogen.sh && ./configure --enable-static --disable-shared --prefix= $MSYSTEM_PREFIX && make install -j $nproc
2022-12-07 13:37:06 +01:00
cd ..
echo Starting to build sdl2:
2024-09-11 03:00:21 +02:00
mkdir -p SDL/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
2022-12-23 12:01:09 +01:00
cd ../../
2022-12-07 13:37:06 +01:00
echo Starting to build libopus to improve decode quality on FFmpeg:
cd opus
2024-09-11 03:08:16 +02:00
./autogen.sh && 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:
2024-09-11 03:00:21 +02:00
mkdir -p 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:
2024-09-11 03:00:21 +02:00
mkdir -p 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:
2024-09-11 03:08:16 +02:00
cd zimg && ./autogen.sh && ./configure --disable-shared --prefix= $MSYSTEM_PREFIX && make install -j $nproc
2023-09-20 14:18:19 +02:00
cd ..
echo Starting to build soxr:
2024-09-11 03:08:16 +02:00
mkdir -p 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"
2023-09-20 14:18:19 +02:00
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:
2024-09-11 03:00:21 +02:00
mkdir -p 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.