# Template file for 'ffmpeg' # audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname! pkgname=ffmpeg version=4.4.4 revision=5 short_desc="Decoding, encoding and streaming software" maintainer="Orphaned " license="GPL-3.0-or-later" homepage="https://www.ffmpeg.org" changelog="https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog" distfiles="https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz" checksum=e80b380d595c809060f66f96a5d849511ef4a76a26b76eacf5778b94c3570309 hostmakedepends="pkg-config perl" makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-devel libXext-devel libXvMC-devel libxcb-devel lame-devel libtheora-devel libvorbis-devel x264-devel xvidcore-devel jack-devel SDL2-devel libcdio-paranoia-devel librtmp-devel libmodplug-devel gnutls-devel speex-devel celt-devel harfbuzz-devel libass-devel opus-devel ocl-icd-devel libbs2b-devel libvidstab-devel vmaf-devel $(vopt_if pulseaudio pulseaudio-devel) $(vopt_if vaapi libva-devel) $(vopt_if vdpau libvdpau-devel) $(vopt_if x265 x265-devel) $(vopt_if v4l2 v4l-utils-devel) $(vopt_if fdk_aac fdk-aac-devel) $(vopt_if vpx libvpx-devel) $(vopt_if aom libaom-devel) $(vopt_if sndio sndio-devel) $(vopt_if dav1d libdav1d-devel) $(vopt_if zimg zimg-devel) $(vopt_if webp libwebp-devel) $(vopt_if sofa libmysofa-devel) $(vopt_if drm libdrm-devel) $(vopt_if svtav1 libsvt-av1-devel) $(vopt_if srt srt-devel) $(vopt_if rist librist-devel) $(vopt_if vulkan 'vulkan-loader Vulkan-Headers') $(vopt_if nvenc nv-codec-headers) $(vopt_if nvdec nv-codec-headers)" depends="ffplay>=${version}_${revision}" build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio dav1d zimg webp sofa vulkan drm svtav1 srt rist nvdec" build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist" desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)" desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)" desc_option_sofa="Enable support for AES SOFA" desc_option_webp="Enable support for WebP" case "$XBPS_TARGET_MACHINE" in i686*|x86_64*) hostmakedepends+=" nasm" build_options_default+=" vaapi vdpau nvenc nvdec" ;; ppc64*) build_options_default+=" vaapi vdpau";; mips*) CFLAGS="-mnan=legacy";; esac if [ "$XBPS_TARGET_WORDSIZE" != "32" ]; then build_options_default+=" svtav1" fi _apply_patch() { local args="$1" pname="$(basename $2)" if [ ! -f ".${pname}_done" ]; then patch -N $args -i $2 touch .${pname}_done fi } post_patch() { case "$XBPS_TARGET_MACHINE" in ppc64le*) ;; ppc*) _apply_patch -p1 ${FILESDIR}/altivec.patch ;; esac vsed -i libavfilter/vf_libvmaf.c -e 's!/usr/local/share/model/\(vmaf_v0.6.1\).pkl!/usr/share/vmaf/\1.json!' } do_configure() { # Fix gcc on x86_64-musl only if [ "$XBPS_TARGET_MACHINE" = "x86_64-musl" ]; then vsed -i configure -e "s;_cflags_speed='-O3';_cflags_speed='-O2';" fi if [ "$CROSS_BUILD" ]; then case "$XBPS_TARGET_MACHINE" in arm*) _arch="arm";; aarch64*) _arch="aarch64";; mips*) _arch="mips";; ppc64*) _arch="ppc64";; ppc*) _arch="ppc";; *) _arch="${XBPS_TARGET_MACHINE%%-musl}";; esac _args+=" --enable-cross-compile --sysroot=$XBPS_CROSS_BASE --cross-prefix=${XBPS_CROSS_TRIPLET}- --target-os=linux --arch=${_arch}" fi case "$XBPS_TARGET_MACHINE" in ppc|ppc-musl) _args+=" --disable-altivec";; esac if [ "$XBPS_TARGET_NO_ATOMIC8" ]; then _args+=" --extra-libs=-latomic" fi ./configure --prefix=/usr --disable-debug --enable-gpl --enable-gnutls \ --disable-stripping \ --enable-libcdio --enable-version3 --enable-runtime-cpudetect \ --enable-libmp3lame --enable-libvorbis --enable-libxvid \ --enable-libx264 $(vopt_enable vpx libvpx) --enable-libtheora \ --enable-shared --enable-static --enable-libxcb \ $(vopt_enable pulseaudio libpulse) --enable-libfreetype --enable-libmodplug \ --enable-libspeex --enable-libcelt --enable-libass \ --enable-libopus --enable-librtmp --enable-libjack \ $(vopt_if fdk_aac '--enable-nonfree --enable-libfdk-aac') \ --disable-libopencore_amrnb --disable-libopencore_amrwb \ --disable-libopenjpeg \ --enable-postproc --enable-opencl --enable-libvmaf ${_args} \ $(vopt_enable x265 libx265) \ $(vopt_enable v4l2 libv4l2) \ $(vopt_enable aom libaom) $(vopt_enable vaapi) $(vopt_enable vdpau) \ --enable-libbs2b --enable-avresample --enable-libvidstab \ $(vopt_enable dav1d libdav1d) \ $(vopt_enable zimg libzimg) \ $(vopt_enable webp libwebp) \ $(vopt_enable sofa libmysofa) \ $(vopt_enable vulkan) \ $(vopt_enable drm libdrm) \ $(vopt_enable svtav1 libsvtav1) \ $(vopt_enable srt libsrt) \ $(vopt_enable rist librist) \ $(vopt_if nvenc '--enable-nvenc') \ $(vopt_if nvdec '--enable-nvdec') } do_build() { make ${makejobs} make doc/ff{mpeg,play}.1 } do_install() { make DESTDIR=${DESTDIR} install install-man } libavcodec_package() { short_desc="FFmpeg codec library" pkg_install() { vmove "usr/lib/libavcodec.so.*" } } libavdevice_package() { short_desc="FFmpeg device handling library" pkg_install() { vmove "usr/lib/libavdevice.so.*" } } libavresample_package() { short_desc="FFmpeg audio resampling library" pkg_install() { vmove "usr/lib/libavresample.so.*" } } libavformat_package() { short_desc="FFmpeg file format library" pkg_install() { vmove "usr/lib/libavformat.so.*" } } libavutil_package() { short_desc="FFmpeg utility library" pkg_install() { vmove "usr/lib/libavutil.so.*" } } libavfilter_package() { short_desc="FFmpeg audio/video filter library" pkg_install() { vmove "usr/lib/libavfilter.so.*" } } libpostproc_package() { short_desc="FFmpeg video postprocessing library" pkg_install() { vmove "usr/lib/libpostproc.so.*" } } libswscale_package() { short_desc="FFmpeg video scaling library" pkg_install() { vmove "usr/lib/libswscale.so.*" } } libswresample_package() { short_desc="FFmpeg video resampling library" pkg_install() { vmove "usr/lib/libswresample.so.*" } } ffmpeg-devel_package() { depends=" libavcodec>=${version}_${revision} libavdevice>=${version}_${revision} libavformat>=${version}_${revision} libavutil>=${version}_${revision} libavfilter>=${version}_${revision} libpostproc>=${version}_${revision} libswscale>=${version}_${revision} libswresample>=${version}_${revision} libavresample>=${version}_${revision}" short_desc+=" - development files" if [ "$XBPS_TARGET_MACHINE" = "i686" ]; then # /usr/bin/strip: error: the input file '/destdir//ffmpeg-devel-4.4.4/usr/lib/libavfilter.a(vf_atadenoise.o)' has no sections nostrip_files="/usr/lib/libavfilter.a" fi pkg_install() { vmove usr/include vmove usr/lib/pkgconfig vmove "usr/lib/*.a" vmove "usr/lib/*.so" vmove usr/share/ffmpeg/examples vmove usr/share/man/man3 } } ffplay_package() { short_desc="Simple video player using FFmpeg and SDL2" pkg_install() { vmove usr/bin/ffplay vmove "usr/share/man/man1/ffplay*" } }