From 0fe95b6aa5383e444e5c02c43fa69dcd64f2e247 Mon Sep 17 00:00:00 2001 From: Eric Hameleers Date: Sun, 19 Jul 2020 22:41:26 +0000 Subject: ffmpeg: updated. Added AV1 decoding through libdav1d. Updated internal libraries for libdc1394, fdkaac, fribidi, libgsm, libva, sdl2, v4l, vdpau and x265. --- ffmpeg/build/ffmpeg.SlackBuild | 110 +++++++++++++++++++++++++++++------------ 1 file changed, 79 insertions(+), 31 deletions(-) (limited to 'ffmpeg') diff --git a/ffmpeg/build/ffmpeg.SlackBuild b/ffmpeg/build/ffmpeg.SlackBuild index 698ca55a..539ab631 100755 --- a/ffmpeg/build/ffmpeg.SlackBuild +++ b/ffmpeg/build/ffmpeg.SlackBuild @@ -1,6 +1,6 @@ #!/bin/bash # $Id$ -# Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Eric Hameleers, Eindhoven, NL +# Copyright 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Hameleers, Eindhoven, NL # All rights reserved. # # Permission to use, copy, modify, and distribute this software for @@ -28,7 +28,9 @@ # For: ffmpeg # Descr: software to record, convert and stream audio and video # URL: http://ffmpeg.org/ -# Needs: yasm (only compile-time) +# Buildneeds: meson, ninja, python3, yasm +# (Slackware 14.2: newer nasm) +# Needs: # Changelog: # 20070519-1: 19/May/2007 by Eric Hameleers # * Initial build. @@ -183,6 +185,10 @@ # * Updated. # 4.2.1-1: 23/dec/2019 by Eric Hameleers # * Updated. +# 4.3.1-1: 19/jul/2020 by Eric Hameleers +# * Updated. Added AV1 decoding through libdav1d. +# Updated internal libraries for libdc1394, fdkaac, fribidi, +# libgsm, libva, sdl2, v4l, vdpau and x265. # # Run 'sh ffmpeg.SlackBuild' to build a Slackware package. # The package (.txz) plus descriptive .txt file are created in /tmp . @@ -192,7 +198,7 @@ PRGNAM=ffmpeg -VERSION=${VERSION:-4.2.1} +VERSION=${VERSION:-4.3.1} BUILD=${BUILD:-1} NUMJOBS=${NUMJOBS:-"-j$(nproc)"} TAG=${TAG:-"alien"} @@ -246,52 +252,50 @@ DOCS_AMR="COPYING ChangeLog README" DOCS_AMRWBENC="COPYING ChangeLog NOTICE README" DOCS_ASS="COPYING Changelog" DOCS_AVC1394="AUTHORS COPYING ChangeLog INSTALL NEWS README" +DOCS_DAV1D="COPYING NEWS *.md doc/PATENTS" DOCS_DC1394="AUTHORS COPYING ChangeLog INSTALL NEWS README" DOCS_FDKAAC="ChangeLog NOTICE" -DOCS_MFX="COPYING README.md" DOCS_FRIBIDI="AUTHORS COPYING ChangeLog NEWS README THANKS TODO" DOCS_GSM="COPYRIGHT ChangeLog* INSTALL MACHINES MANIFEST README" DOCS_LAME="API COPYING ChangeLog HACKING LICENSE README STYLEGUIDE TODO USAGE" DOCS_LIBVA="COPYING" DOCS_LIBZVBI="AUTHORS BUGS COPYING COPYING.LIB ChangeLog INSTALL NEWS README TODO" +DOCS_MFX="LICENSE README.md" DOCS_OPUS="AUTHORS COPYING ChangeLog NEWS README" -DOCS_ORC="COPYING README TODO" DOCS_RAW1394="AUTHORS ChangeLog INSTALL NEWS README" DOCS_RTMP="AUTHORS COPYING ChangeLog README" -DOCS_SCHROEDINGER="AUTHORS COPYING* NEWS TODO" DOCS_SDL2="*.txt" DOCS_SPEEX="AUTHORS COPYING ChangeLog NEWS README* TODO" DOCS_V4L2="COPYING* ChangeLog README* TODO" DOCS_VDPAU="AUTHORS COPYING ChangeLog NEWS README" DOCS_VPX="AUTHORS CHANGELOG LICENSE README" DOCS_X264="AUTHORS COPYING" -DOCS_X265="AUTHORS COPYING" +DOCS_X265="COPYING readme.rst" # Support libraries: AMRWBENC=0.1.3 AMR=0.1.3 ASS=0.14.0 AVC1394=0.5.4 -DC1394=2.1.2 -FDKAAC=2.0.0 +DAV1D=0.7.1 +DC1394=2.2.6 +FDKAAC=2.0.1 MFX=1.25 -FRIBIDI=1.0.8 -GSM=1.0.16 +FRIBIDI=1.0.10 +GSM=1.0.17 LAME=3.100 -LIBVA=2.5.0 +LIBVA=2.8.0 LIBZVBI=0.2.35 OPUS=1.3.1 -ORC=0.4.29 RAW1394=2.0.5 RTMP=2.3 -SCHROEDINGER=1.0.11 -SDL2=2.0.10 +SDL2=2.0.12 SPEEX=1.2.0 -V4L=1.18.0 -VDPAU=1.2 +V4L=1.20.0 +VDPAU=1.4 VPX=1.8.2 X264=20191217-2245 -X265=3.1.2 +X265=3.4 # Where do we look for sources? SRCDIR=$(cd $(dirname $0); pwd) @@ -303,11 +307,20 @@ OUTPUT=${OUTPUT:-/tmp} # Check for yasm, abort if not found: if ! which yasm >/dev/null 2>&1 ; then - echo "##" - echo "## The 'yasm' program does not seem to be installed." - echo "## The X264/VP8 codec compilation needs yasm (nasm will not do)!" - echo "## Aborting the build." - echo "##" + echo "+++" + echo "+++ The 'yasm' program does not seem to be installed." + echo "+++ The X264/VP8 codec compilation needs yasm (nasm will not do)!" + echo "+++ Aborting the build." + echo "+++" + exit 1 +fi + +# Building dav1d plugin requires meson/ninja/python3: +if ( ! which meson || ! which ninja || ! which python3 ) 1>/dev/null 2>/dev/null ; then + echo "+++" + echo "+++ MESON, NINJA and/or PYTHON3 not present - the build will abort on compiling dav1d encoder!" + echo "+++ Aborting the build." + echo "+++" exit 1 fi @@ -343,7 +356,7 @@ SRCPAT[0]="NO" # VDPAU for video hardware acceleration: SOURCE[1]="$SRCDIR/sources/libvdpau-${VDPAU}.tar.bz2" -SRCURL[1]="http://people.freedesktop.org/~aplattner/vdpau/libvdpau-${VDPAU}.tar.bz2" +SRCURL[1]="https://gitlab.freedesktop.org/vdpau/libvdpau/-/archive/${VDPAU}/libvdpau-${VDPAU}.tar.bz2" SRCPAT[1]="NO" # SDL2 is required by ffplay: @@ -421,8 +434,8 @@ SRCURL[16]="https://github.com/videolan/x265/archive/${X265}.tar.gz" SRCPAT[16]="NO" # Unicode BiDirectional algorithm library, requirement for libass. -SOURCE[17]="$SRCDIR/sources/fribidi-${FRIBIDI}.tar.bz2" -SRCURL[17]="https://github.com/fribidi/fribidi/releases/download/v${FRIBIDI}/fribidi-${FRIBIDI}.tar.bz2" +SOURCE[17]="$SRCDIR/sources/fribidi-${FRIBIDI}.tar.xz" +SRCURL[17]="https://github.com/fribidi/fribidi/releases/download/v${FRIBIDI}/fribidi-${FRIBIDI}.tar.xz" SRCPAT[17]="NO" # Libass - portable library for SSA/ASS subtitles rendering @@ -450,6 +463,11 @@ SOURCE[22]="$SRCDIR/sources/zvbi-${LIBZVBI}.tar.bz2" SRCURL[22]="http://downloads.sourceforge.net/zapping/zvbi-${LIBZVBI}.tar.bz2" SRCPAT[22]="NO" +# DAV1D, a free AV1 decoder: +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" + # Use the src_checkout() function if no downloadable tarball exists. # This function checks out sources from SVN/CVS and creates a tarball of them. @@ -1475,7 +1493,6 @@ export LDFLAGS="$SLKLDFLAGS -ljpeg" --enable-static \ --disable-shared \ --disable-libdvbv5 \ - --enable-libv4l \ --disable-v4l-utils \ --disable-qv4l2 \ --program-prefix= \ @@ -1563,10 +1580,38 @@ cp $DOCS_LIBZVBI $FFMPEGDEPSDIR/doc/zvbi/ || true cd - } +# ----------------------------------------------------------------------------- +# Compile dav1d libraries +# ----------------------------------------------------------------------------- + +make_dav1d() +{ +echo -e "**\n** dav1d ...\n**" +cd $TMP/tmp-$PRGNAM/dav1d-${DAV1D} + +# Needs a newer nasm to make it compile on 14.2! +meson build \ + --prefix $FFMPEGDEPSDIR/usr \ + --default-library static \ + --backend ninja \ + --buildtype release \ + -Dlibdir=lib${LIBDIRSUFFIX} \ + -Denable_tests=false -Denable_tools=false \ + 2>&1 | tee $OUTPUT/make-${PRGNAM}_dav1d.log +# Install dav1d into a temp location so ffmpeg can pickup the library +cd build + ninja install 2>&1 | tee -a $OUTPUT/make-${PRGNAM}_dav1d.log +cd - 1>/dev/null +# Add DOCS to the ffmpegdeps to have it added to ffmpeg package later: +mkdir -p $FFMPEGDEPSDIR/doc/dav1d/ +cp $DOCS_DAV1D \ + $FFMPEGDEPSDIR/doc/dav1d/ || true +cd - +} # ----------------------------------------------------------------------------- # Compile ffmpeg with additional support for - -# LAME (MP3), XVID, AAC (MP4), FAAD2 , SPEEX, X264, GSM, SCHROEDINGER +# LAME (MP3), XVID, AAC (MP4), FAAD2 , SPEEX, X264, GSM # ----------------------------------------------------------------------------- make_ffmpeg() { @@ -1609,7 +1654,7 @@ TMPDIR="$TMP" \ CFLAGS="-I$FFMPEGDEPSDIR/usr/include $SLKCFLAGS" \ CPPFLAGS="-I$FFMPEGDEPSDIR/usr/include -I$FFMPEGDEPSDIR/usr/include/SDL" \ CXXFLAGS="-I$FFMPEGDEPSDIR/usr/include -I$FFMPEGDEPSDIR/usr/include/SDL $SLKCFLAGS" \ -LDFLAGS="-L$FFMPEGDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS -lpthread -lpng -lXext" \ +LDFLAGS="-L$FFMPEGDEPSDIR/usr/lib${LIBDIRSUFFIX} $SLKLDFLAGS -lpthread -lpng -lusb-1.0 -lXext" \ PKG_CONFIG_PATH="$FFMPEGDEPSDIR/usr/lib${LIBDIRSUFFIX}/pkgconfig" \ PATH="$FFMPEGDEPSDIR/usr/bin:$PATH" \ ./configure \ @@ -1624,6 +1669,7 @@ PATH="$FFMPEGDEPSDIR/usr/bin:$PATH" \ --enable-avresample \ --enable-libmp3lame \ --enable-libass \ + --enable-libdav1d \ --enable-libdc1394 \ --enable-libfribidi \ --enable-libgsm \ @@ -1694,6 +1740,7 @@ make_sdl2 make_speex make_gsm #make_rtmp +make_dav1d make_x264 make_x265 make_vpx @@ -1735,6 +1782,7 @@ for PCFILE in $(ls $PKG/usr/lib${LIBDIRSUFFIX}/pkgconfig/*.pc) ; do -e 's/-lopus//g' \ -e 's/-lx264//g' -e 's/-lx265//g' -e 's/-lvpx//g' -e 's/-lmfx//g' \ -e 's/-lzvbi//g' \ + -e 's/-ldav1d//g' \ -e "s#-L/tmp/build/tmp-ffmpeg/ffmpegdeps/usr/lib${LIBDIRSUFFIX}##" \ $PCFILE done @@ -1746,12 +1794,12 @@ cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION || true cp -a $FFMPEGDEPSDIR/doc/* $PKG/usr/doc/$PRGNAM-$VERSION || true cp -a $SRCDIR/patches $PKG/usr/doc/$PRGNAM-$VERSION/ 2>/dev/null || true cat $SRCDIR/$(basename $0) > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild -find $PKG/usr/doc -type f -exec chmod 644 {} \; +find $PKG/usr/doc -type f -exec chmod 644 {} \+ chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION/* # Compress the man page(s) if [ -d $PKG/usr/man ]; then - find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \; + find $PKG/usr/man -type f -name "*.?" -exec gzip -9f {} \+ for i in $(find $PKG/usr/man -type l -name "*.?") ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done fi -- cgit v1.2.3