From 3a0cf03cc8ee092d729490cf83ed9822ccb915c9 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Thu, 31 Aug 2023 14:29:28 +0000 Subject: ffmpeg: add SVT-AV1 codec --- ffmpeg/build/ffmpeg.SlackBuild | 60 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/ffmpeg/build/ffmpeg.SlackBuild b/ffmpeg/build/ffmpeg.SlackBuild index 23f12408..248b0e42 100755 --- a/ffmpeg/build/ffmpeg.SlackBuild +++ b/ffmpeg/build/ffmpeg.SlackBuild @@ -211,7 +211,8 @@ # 5.1.3-1: 22/aug/2023 by Eric Hameleers # * Update. # 5.1.3-2: 31/aug/2023 by Eric Hameleers -# * Rebuilt against newer Vulkan. +# * Rebuilt was needed against newer Vulkan. +# Also added new AV1 encoder/decoder SVT-AV1. # # Run 'sh ffmpeg.SlackBuild' to build a Slackware package. # The package (.txz) plus descriptive .txt file are created in /tmp . @@ -311,6 +312,7 @@ DOCS_RAW1394="AUTHORS ChangeLog INSTALL NEWS README" DOCS_RTMP="AUTHORS COPYING ChangeLog README" DOCS_SDL2="*.txt" DOCS_SPEEX="AUTHORS COPYING ChangeLog NEWS README* TODO" +DOCS_SVTAV1="*.md" DOCS_V4L2="COPYING* ChangeLog README* TODO" DOCS_VDPAU="AUTHORS COPYING ChangeLog NEWS README" DOCS_VPX="AUTHORS CHANGELOG LICENSE README" @@ -337,6 +339,7 @@ RAW1394=2.0.5 RTMP=2.3 SDL2=2.28.2 SPEEX=1.2.1 +SVTAV1=1.7.0 V4L=1.24.1 VDPAU=1.5 VPX=1.13.0 @@ -514,11 +517,16 @@ SOURCE[23]="$SRCDIR/sources/dav1d-${DAV1D}.tar.xz" SRCURL[23]="http://download.videolan.org/pub/videolan/dav1d/${DAV1D}/dav1d-${DAV1D}.tar.xz" SRCPAT[23]="NO" -# Game Music Emulator: -SOURCE[24]="$SRCDIR/sources/game-music-emu-${GME}.tar.xz" -SRCURL[24]="https://bitbucket.org/mpyne/game-music-emu/downloads/game-music-emu-${GME}.tar.xz" +# SVT-AV1, a free AV1 encoder/decoder: +SOURCE[24]="$SRCDIR/sources/SVT-AV1-${SVTAV1}.tar.gz" +SRCURL[24]="https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v${SVTAV1}/SVT-AV1-v${SVTAV1}.tar.gz" SRCPAT[24]="NO" +# Game Music Emulator: +SOURCE[25]="$SRCDIR/sources/game-music-emu-${GME}.tar.xz" +SRCURL[25]="https://bitbucket.org/mpyne/game-music-emu/downloads/game-music-emu-${GME}.tar.xz" +SRCPAT[25]="NO" + # Use the src_checkout() function if no downloadable tarball exists. # This function checks out sources from SVN/CVS and creates a tarball of them. @@ -1659,6 +1667,42 @@ cd - } +# ----------------------------------------------------------------------------- +# Compile svtav1 libraries +# ----------------------------------------------------------------------------- + +make_svtav1() +{ +echo -e "**\n** svtav1 ...\n**" +cd $TMP/tmp-$PRGNAM/SVT-AV1-v${SVTAV1} + +# Needs a newer nasm to make it compile on 14.2! +mkdir build-svtav1 +cd build-svtav1 + cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \ + -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ + -DCMAKE_INSTALL_PREFIX=$FFMPEGDEPSDIR/usr \ + -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} \ + -DLIB_SUFFIX=${LIBDIRSUFFIX} \ + -DBUILD_SHARED_LIBS=OFF \ + -DNATIVE=OFF + 2>&1 | tee $OUTPUT/configure-${PRGNAM}_svtav1.log + make ${NUMJOBS} 2>&1 | tee $OUTPUT/make-${PRGNAM}_svtav1.log + # Install svtav1 into a temp location so ffmpeg can pickup the library + make install 2>&1 | tee -a $OUTPUT/install-${PRGNAM}_svtav1.log +cd - 1>/dev/null +# Add DOCS to the ffmpegdeps to have it added to ffmpeg package later: +mkdir -p $FFMPEGDEPSDIR/doc/svtav1/ +cp $DOCS_SVTAV1 \ + $FFMPEGDEPSDIR/doc/svtav1/ || true +cd - +} + + # ----------------------------------------------------------------------------- # Compile game music emulator # ----------------------------------------------------------------------------- @@ -1739,6 +1783,12 @@ cat $SRCDIR/patches/ffmpeg_binutils241.patch | patch -p1 --verbose \ cat $SRCDIR/patches/ffmpeg.vulkan.diff | patch -p1 --verbose \ 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log +# Build against recent SVT-AV1 codec: +cat $SRCDIR/patches/ffmpeg.libsvtav1.vbv_bufsize.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log +cat $SRCDIR/patches/ffmpeg.libsvtav1.10bit.patch | patch -p1 --verbose \ + 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log + # Restore missing function needed by Chromium and qt-webengine: cat $SRCDIR/patches/add-av_stream_get_first_dts-for-chromium.patch \ | patch -p1 --verbose 2>&1 | tee -a $OUTPUT/patch-${PRGNAM}.log @@ -1786,6 +1836,7 @@ PATH="$FFMPEGDEPSDIR/usr/bin:$PATH" \ --enable-libsmbclient \ --enable-libssh \ --enable-libspeex \ + --enable-libsvtav1 \ --enable-libtheora \ --enable-libv4l2 \ --enable-libvo-amrwbenc \ @@ -1851,6 +1902,7 @@ make_speex make_gsm #make_rtmp make_dav1d +make_svtav1 make_x264 make_x265 make_vpx -- cgit v1.2.3-79-gdb01