git: f0dadc529fe9 - main - multimedia/ffmpeg: fork 4.* into a pinned port

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Fri, 17 Mar 2023 21:04:01 UTC
The branch main has been updated by jbeich:

URL: https://cgit.FreeBSD.org/ports/commit/?id=f0dadc529fe9c4ee69dd96db92e2d0572d2092aa

commit f0dadc529fe9c4ee69dd96db92e2d0572d2092aa
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2023-03-17 18:58:47 +0000
Commit:     Jan Beich <jbeich@FreeBSD.org>
CommitDate: 2023-03-17 20:59:23 +0000

    multimedia/ffmpeg: fork 4.* into a pinned port
    
    Mainly for leaf consumers: applications but not plugins or libraries.
    Otherwise, indirectly mixing different versions of ffmpeg libraries at
    runtime can lead to crashes.
    
    To use simply add the following before <bsd.port.mk> or <bsd.port.pre.mk>
    
      .include "${.CURDIR:H:H}/multimedia/ffmpeg4/override.mk"
    
    PR:             261302
    Inspired by:    c717faa5c764
---
 multimedia/Makefile                                |   1 +
 multimedia/ffmpeg4/Makefile                        | 655 ++++++++++++++
 multimedia/ffmpeg4/distinfo                        |   9 +
 multimedia/ffmpeg4/files/patch-configure           |  26 +
 multimedia/ffmpeg4/files/patch-doc-Makefile        |  11 +
 multimedia/ffmpeg4/files/patch-libavdevice_v4l2.c  |  18 +
 .../ffmpeg4/files/patch-libavfilter_vf__lensfun.c  |  51 ++
 multimedia/ffmpeg4/files/patch-libavformat_rtsp.c  |  44 +
 multimedia/ffmpeg4/files/patch-libavutil-common.h  |  13 +
 multimedia/ffmpeg4/files/patch-libavutil-x86-asm.h |  11 +
 .../ffmpeg4/files/patch-libavutil_hwcontext__drm.c |  24 +
 .../files/patch-libswscale_ppc_yuv2rgb__altivec.c  |  15 +
 multimedia/ffmpeg4/files/patch-svtav1              | 437 ++++++++++
 multimedia/ffmpeg4/files/patch-vmaf                | 951 +++++++++++++++++++++
 multimedia/ffmpeg4/override.mk                     |   8 +
 multimedia/ffmpeg4/pkg-descr                       |   3 +
 multimedia/ffmpeg4/pkg-plist                       | 220 +++++
 17 files changed, 2497 insertions(+)

diff --git a/multimedia/Makefile b/multimedia/Makefile
index 7875ba189f9b..c3103e9e153b 100644
--- a/multimedia/Makefile
+++ b/multimedia/Makefile
@@ -60,6 +60,7 @@
     SUBDIR += ffaudioconverter
     SUBDIR += ffdec
     SUBDIR += ffmpeg
+    SUBDIR += ffmpeg4
     SUBDIR += ffmpegthumbnailer
     SUBDIR += ffms2
     SUBDIR += ffnvcodec-headers
diff --git a/multimedia/ffmpeg4/Makefile b/multimedia/ffmpeg4/Makefile
new file mode 100644
index 000000000000..94be714a6010
--- /dev/null
+++ b/multimedia/ffmpeg4/Makefile
@@ -0,0 +1,655 @@
+PORTNAME=	ffmpeg
+PORTVERSION=	4.4.3
+CATEGORIES=	multimedia audio net
+MASTER_SITES=	https://ffmpeg.org/releases/
+PKGNAMESUFFIX=	4
+
+MAINTAINER=	multimedia@FreeBSD.org
+COMMENT=	Realtime audio/video encoder/converter and streaming server (legacy 4.* series)
+WWW=		https://ffmpeg.org/
+
+LICENSE=	GPLv2+ LGPL21+
+LICENSE_COMB=	multi
+
+BUILD_DEPENDS=	${BUILD_DEPENDS_${ARCH}}
+BUILD_DEPENDS_aarch64=	as:devel/binutils
+BUILD_DEPENDS_amd64=	nasm:devel/nasm
+BUILD_DEPENDS_armv6=	as:devel/binutils
+BUILD_DEPENDS_armv7=	as:devel/binutils
+BUILD_DEPENDS_i386=	nasm:devel/nasm
+
+HAS_CONFIGURE=	yes
+CONFIGURE_LOG=	ffbuild/config.log
+USES=		compiler:c11 cpe gmake localbase:ldflags perl5 \
+		pkgconfig shebangfix tar:xz
+USE_LDCONFIG=	yes
+USE_PERL5=	build
+SHEBANG_FILES=	doc/texi2pod.pl
+NOPRECIOUSMAKEVARS=	yes # ARCH
+
+.ifdef PKGNAMESUFFIX
+PORTSCOUT=	limit:^4\.
+PREFIX=		${LOCALBASE}/${PKGBASE} # avoid conflict with the default
+.endif
+
+# Option CHROMAPRINT disabled, it cannot work and people are baffled.
+OPTIONS_DEFINE=	ALSA AMR_NB AMR_WB AOM ARIBB24 ASM ASS BS2B CACA CDIO \
+		CODEC2 DAV1D DAVS2 DC1394 DEBUG DOCS DRM FDK_AAC FLITE \
+		FONTCONFIG FREETYPE FREI0R FRIBIDI GLSLANG GME GSM ICONV ILBC \
+		JACK KLVANC KVAZAAR LADSPA LAME LENSFUN LIBBLURAY LIBRSVG2 \
+		LIBXML2 LTO LV2 MODPLUG MYSOFA NETWORK NVENC OPENAL OPENCL OPENGL \
+		OPENH264 OPENJPEG OPENMPT OPENVINO OPTIMIZED_CFLAGS OPUS POCKETSPHINX \
+		PULSEAUDIO RAV1E RABBITMQ RIST RTCPU RUBBERBAND SDL SMB SNAPPY \
+		SNDIO SOXR SPEEX SRT SSH SVTAV1 SVTHEVC SVTVP9 TENSORFLOW \
+		TESSERACT THEORA TWOLAME UAVS3D V4L VAAPI VAPOURSYNTH VDPAU VIDSTAB \
+		VMAF VO_AMRWBENC VORBIS VPX VULKAN WEBP X264 X265 \
+		XAVS2 XCB XVID XVIDEO ZIMG ZMQ ZVBI
+# intel-media-sdk only for i386/amd64
+OPTIONS_DEFINE_amd64=	MFX
+OPTIONS_DEFINE_i386=	MFX
+
+OPTIONS_DEFAULT=	AOM ASM ASS DAV1D DRM FONTCONFIG FREETYPE FREI0R GMP \
+			GNUTLS ICONV LAME LIBXML2 NETWORK OPTIMIZED_CFLAGS OPUS \
+			RTCPU SVTAV1 V4L VAAPI VDPAU VMAF VORBIS VPX WEBP X264 \
+			X265 XCB
+OPTIONS_DEFAULT_amd64=	NVENC
+OPTIONS_DEFAULT_i386=	NVENC
+
+# i386 is too register-starved for LTO (PR257124)
+OPTIONS_EXCLUDE_i386=	LTO
+
+.if !exists(${.CURDIR:H:H}/multimedia/davs2)
+# https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/5985a1bf7233
+OPTIONS_EXCLUDE+=	DAVS2
+.endif
+
+.if !exists(${.CURDIR:H:H}/multimedia/uavs3d)
+# https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/c952db9d68d3
+OPTIONS_EXCLUDE+=	UAVS3D
+.endif
+
+.if !exists(${.CURDIR:H:H}/multimedia/xavs2)
+# https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/85a921f4618
+OPTIONS_EXCLUDE+=	XAVS2
+.endif
+
+.if !exists(${.CURDIR:H:H}/multimedia/klvanc)
+# https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/8732dfa9954
+OPTIONS_EXCLUDE+=	KLVANC
+.endif
+
+.if !exists(${.CURDIR:H:H}/science/openvino)
+# https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/ff37ebaf30e6
+OPTIONS_EXCLUDE+=	OPENVINO
+.endif
+
+OPTIONS_RADIO=	RTMP SSL
+OPTIONS_RADIO_RTMP=	GCRYPT GMP LIBRTMP
+OPTIONS_RADIO_SSL=	GNUTLS MBEDTLS OPENSSL
+OPTIONS_GROUP=	LICENSE
+OPTIONS_GROUP_LICENSE=	GPL3 NONFREE
+
+ASS_DESC=	Subtitles rendering via libass
+AOM_DESC=	AV1 video encoding/decoding via libaom
+ARIBB24_DESC=	ARIB text and caption decoding via libaribb24
+BS2B_DESC=	Bauer Stereophonic-to-Binaural filter
+CHROMAPRINT_DESC=	Audio fingerprinting with chromaprint
+CODEC2_DESC=	Codec 2 audio encoding/decoding via libcodec2
+DAV1D_DESC=	AV1 video decoding via libdav1d
+DAVS2_DESC=	AVS2 decoding via libdavs2
+DC1394_DESC=	IIDC-1394 grabbing using libdc1394
+DRM_DESC=	KMS grabbing using libdrm
+FDK_AAC_DESC=	AAC audio encoding via Fraunhofer FDK
+FLITE_DESC=	Voice synthesis support via libflite
+GLSLANG_DESC=	GLSL->SPIRV compilation via libglslang
+GME_DESC=	Game Music Emu demuxer
+GPL3_DESC=	Allow (L)GPL version 3 code(cs)
+ILBC_DESC=	Internet Low Bit Rate codec
+KLVANC_DESC=	Kernel Labs VANC processing
+KVAZAAR_DESC=	H.265 video codec support via Kvazaar
+LICENSE_DESC=	Licensing options
+LV2_DESC=	LV2 audio filtering
+MFX_DESC=	Intel MediaSDK (aka Quick Sync Video)
+MYSOFA_DESC=	SOFAlizer binaural filter
+NETWORK_DESC=	Networking support
+NONFREE_DESC=	Allow use of nonfree code
+NVENC_DESC=	NVIDIA decoder/encoder with CUDA support
+OPENMPT_DESC=	Decoding tracked files via libopenmpt
+OPENH264_DESC=	H.264 video codec support via OpenH264
+OPENVINO_DESC=	OpenVINO as a DNN module backend for DNN based filters like dnn_processing
+POCKETSPHINX_DESC=	Automatic Speech Recognition via PocketSphinx
+RAV1E_DESC=	AV1 encoding via librav1e
+RABBITMQ_DESC=	AMQP 0-9-1 protocol via RabbitMQ
+RIST_DESC=	Reliable Internet Stream Transport protocol via librist
+RUBBERBAND_DESC=Time-stretching and pitch-shifting with librubberband
+RTCPU_DESC=	Detect CPU capabilities at runtime
+RTMP_DESC=	RTMP(T)E protocol support
+SRT_DESC=	Haivision SRT protocol via libsrt
+SVTAV1_DESC=	AV1 encoding via SVT-AV1
+SVTHEVC_DESC=	HEVC encoding via SVT-HEVC
+SVTVP9_DESC=	VP9 encoding via SVT-VP9
+LIBRTMP_DESC=	${RTMP_DESC} via librtmp
+TENSORFLOW_DESC=TensorFlow as a DNN module backend for DNN based filters like sr
+TESSERACT_DESC=	Optical Character Recognition via Tesseract
+THEORA_DESC=	Encoding support for theora via libtheora
+UAVS3D_DESC=	AVS3 decoding via libuavs3d
+VAPOURSYNTH_DESC=	VapourSynth demuxer
+VIDSTAB_DESC=	Video stabilization filter
+VMAF_DESC=	VMAF filter via libvmaf
+VULKAN_DESC=	Vulkan filters
+XAVS2_DESC=	AVS2 encoding via libxavs2
+XCB_DESC=	X11 grabbing using XCB
+XVID_DESC=	Encoding support for MPEG-4 ASP via libxvid
+ZIMG_DESC=	"z" library video scaling filter
+ZMQ_DESC=	Message passing via libzmq${ZMQ_VERSION}
+ZVBI_DESC=	Teletext support via libzvbi
+
+OPTIONS_SUB=	yes
+
+# alsa
+ALSA_LIB_DEPENDS=	libasound.so:audio/alsa-lib
+ALSA_CONFIGURE_ENABLE=	alsa
+
+# Opencore AMR NB
+AMR_NB_LIB_DEPENDS=	libopencore-amrnb.so:audio/opencore-amr
+AMR_NB_CONFIGURE_ENABLE=	libopencore-amrnb
+AMR_NB_IMPLIES=		GPL3
+
+# Opencore AMR WB
+AMR_WB_LIB_DEPENDS=	libopencore-amrwb.so:audio/opencore-amr
+AMR_WB_CONFIGURE_ENABLE=	libopencore-amrwb
+AMR_WB_IMPLIES=		GPL3
+
+# aom
+AOM_LIB_DEPENDS=	libaom.so:multimedia/aom
+AOM_CONFIGURE_ENABLE=	libaom
+
+# arib
+ARIBB24_LIB_DEPENDS=	libaribb24.so:multimedia/aribb24
+ARIBB24_CONFIGURE_ENABLE=	libaribb24
+
+# asm support
+ASM_CONFIGURE_ENABLE=	asm
+
+# ass
+ASS_LIB_DEPENDS=	libass.so:multimedia/libass
+ASS_CONFIGURE_ENABLE=	libass
+
+# bs2b
+BS2B_LIB_DEPENDS=	libbs2b.so:audio/libbs2b
+BS2B_CONFIGURE_ENABLE=	libbs2b
+
+# caca
+CACA_LIB_DEPENDS=	libcaca.so:graphics/libcaca
+CACA_CONFIGURE_ENABLE=	libcaca
+
+# cdio
+CDIO_LIB_DEPENDS=	libcdio_paranoia.so:sysutils/libcdio-paranoia
+CDIO_CONFIGURE_ENABLE=	libcdio
+
+# chromaprint
+CHROMAPRINT_BROKEN=		Dependency loop
+CHROMAPRINT_LIB_DEPENDS=	libchromaprint.so:audio/chromaprint
+CHROMAPRINT_CONFIGURE_ENABLE=	chromaprint
+
+# codec2
+CODEC2_LIB_DEPENDS=	libcodec2.so:audio/codec2
+CODEC2_CONFIGURE_ENABLE=	libcodec2
+
+# dav1d
+DAV1D_LIB_DEPENDS=	libdav1d.so:multimedia/dav1d
+DAV1D_CONFIGURE_ENABLE=	libdav1d
+
+# davs2
+DAVS2_LIB_DEPENDS=	libdavs2.so:multimedia/davs2
+DAVS2_CONFIGURE_ENABLE=	libdavs2
+
+# dc1394
+DC1394_LIB_DEPENDS=	libdc1394.so:multimedia/libdc1394
+DC1394_CONFIGURE_ENABLE=	libdc1394
+
+# debugging
+DEBUG_CONFIGURE_ON=	--disable-stripping
+DEBUG_CONFIGURE_OFF=	--disable-debug
+
+# docs
+DOCS_BUILD_DEPENDS=	texi2html:textproc/texi2html
+DOCS_CONFIGURE_ENABLE=	htmlpages
+
+# drm
+DRM_LIB_DEPENDS=	libdrm.so:graphics/libdrm
+DRM_CONFIGURE_ENABLE=	libdrm
+
+# fdk_aac
+FDK_AAC_LIB_DEPENDS=	libfdk-aac.so:audio/fdk-aac
+FDK_AAC_CONFIGURE_ENABLE=	libfdk-aac
+FDK_AAC_IMPLIES=	NONFREE
+
+# flite
+FLITE_LIB_DEPENDS=	libflite.so:audio/flite
+FLITE_CONFIGURE_ENABLE=	libflite
+
+# fontconfig
+FONTCONFIG_LIB_DEPENDS=	libfontconfig.so:x11-fonts/fontconfig
+FONTCONFIG_CONFIGURE_ENABLE=	fontconfig
+
+# freetype
+FREETYPE_LIB_DEPENDS=	libfreetype.so:print/freetype2
+FREETYPE_CONFIGURE_ENABLE=	libfreetype
+
+# frei0r
+FREI0R_BUILD_DEPENDS=	${LOCALBASE}/include/frei0r.h:graphics/frei0r
+FREI0R_CONFIGURE_ENABLE=	frei0r
+
+# fribidi
+FRIBIDI_LIB_DEPENDS=	libfribidi.so:converters/fribidi
+FRIBIDI_CONFIGURE_ENABLE=	libfribidi
+
+# gcrypt
+GCRYPT_LIB_DEPENDS=	libgcrypt.so:security/libgcrypt
+GCRYPT_CONFIGURE_ENABLE=	gcrypt
+
+# glslang
+GLSLANG_BUILD_DEPENDS=	glslang>0:graphics/glslang \
+			spirv-tools>0:graphics/spirv-tools
+GLSLANG_CONFIGURE_ENABLE=	libglslang
+GLSLANG_LDFLAGS=	-lm
+
+# gnutls
+GNUTLS_LIB_DEPENDS=	libgnutls.so:security/gnutls
+GNUTLS_CONFIGURE_ENABLE=	gnutls
+
+# gme
+GME_LIB_DEPENDS=	libgme.so:audio/libgme
+GME_CONFIGURE_ENABLE=	libgme
+
+# gmp
+GMP_LIB_DEPENDS=	libgmp.so:math/gmp
+GMP_CONFIGURE_ENABLE=	gmp
+GMP_IMPLIES=		GPL3
+
+# gsm
+GSM_LIB_DEPENDS=	libgsm.so:audio/gsm
+GSM_CONFIGURE_ENABLE=	libgsm
+
+# iconv
+ICONV_USES=	iconv
+ICONV_CONFIGURE_ENABLE=	iconv
+
+# ilbc
+ILBC_LIB_DEPENDS=	libilbc.so:net/libilbc
+ILBC_CONFIGURE_ENABLE=	libilbc
+
+# jack
+JACK_LIB_DEPENDS=	libjack.so:audio/jack
+JACK_CONFIGURE_ENABLE=	libjack
+
+# klvanc
+KLVANC_LIB_DEPENDS=	libklvanc.so:multimedia/libklvanc
+KLVANC_CONFIGURE_ENABLE=	libklvanc
+
+# kvazaar
+KVAZAAR_LIB_DEPENDS=	libkvazaar.so:multimedia/kvazaar
+KVAZAAR_CONFIGURE_ENABLE=	libkvazaar
+
+# ladspa
+LADSPA_BUILD_DEPENDS=	${LOCALBASE}/include/ladspa.h:audio/ladspa
+LADSPA_RUN_DEPENDS=	${LOCALBASE}/lib/ladspa/amp.so:audio/ladspa
+LADSPA_CONFIGURE_ENABLE=	ladspa
+
+# lame
+LAME_LIB_DEPENDS=	libmp3lame.so:audio/lame
+LAME_CONFIGURE_ENABLE=	libmp3lame
+
+# lensfun
+LENSFUN_LIB_DEPENDS=	liblensfun.so:graphics/lensfun
+LENSFUN_CONFIGURE_ENABLE=	liblensfun
+
+# libbluray
+LIBBLURAY_LIB_DEPENDS=	libbluray.so:multimedia/libbluray
+LIBBLURAY_CONFIGURE_ENABLE=	libbluray
+
+# librsvg
+LIBRSVG2_USES=			gnome
+LIBRSVG2_USE=			GNOME=cairo,librsvg2
+LIBRSVG2_CONFIGURE_ENABLE=	librsvg
+
+# libxml
+LIBXML2_LIB_DEPENDS=	libxml2.so:textproc/libxml2
+LIBXML2_CONFIGURE_ENABLE=	libxml2
+
+# lto
+LTO_CONFIGURE_ENABLE=	lto
+
+# lv2
+LV2_BUILD_DEPENDS=	lv2>0:audio/lv2
+LV2_LIB_DEPENDS=	liblilv-0.so:audio/lilv
+LV2_CONFIGURE_ENABLE=	lv2
+
+# libv4l
+V4L_BUILD_DEPENDS=	v4l_compat>0:multimedia/v4l_compat
+V4L_LIB_DEPENDS=	libv4l2.so:multimedia/libv4l
+V4L_CONFIGURE_ENABLE=	libv4l2
+V4L_CONFIGURE_OFF=		--disable-indev=v4l2 \
+				--disable-outdev=v4l2
+
+# mbedtls
+MBEDTLS_LIB_DEPENDS=	libmbedtls.so:security/mbedtls
+MBEDTLS_CONFIGURE_ENABLE=	mbedtls
+
+# mfx
+MFX_LIB_DEPENDS=	libmfx.so:multimedia/intel-media-sdk
+MFX_CONFIGURE_ENABLE=	libmfx
+
+# modplug
+MODPLUG_LIB_DEPENDS=	libmodplug.so:audio/libmodplug
+MODPLUG_CONFIGURE_ENABLE=	libmodplug
+
+# mysofa
+MYSOFA_LIB_DEPENDS=	libmysofa.so:audio/libmysofa
+MYSOFA_CONFIGURE_ENABLE=	libmysofa
+
+# network
+NETWORK_CONFIGURE_ENABLE=	network
+
+# nvenc
+NVENC_BUILD_DEPENDS=	${LOCALBASE}/include/ffnvcodec/nvEncodeAPI.h:multimedia/ffnvcodec-headers
+NVENC_CONFIGURE_ENABLE=	nvenc
+
+# OpenAL
+OPENAL_LIB_DEPENDS=	libopenal.so:audio/openal-soft
+OPENAL_CONFIGURE_ENABLE=	openal
+
+# opencl
+OPENCL_BUILD_DEPENDS=	${LOCALBASE}/include/CL/opencl.h:devel/opencl
+OPENCL_LIB_DEPENDS=	libOpenCL.so:devel/ocl-icd
+OPENCL_CONFIGURE_ENABLE=	opencl
+
+# opengl
+OPENGL_USES=		gl
+OPENGL_USE=		GL=gl
+OPENGL_CONFIGURE_ENABLE=	opengl
+
+# openh264
+OPENH264_LIB_DEPENDS=	libopenh264.so:multimedia/openh264
+OPENH264_CONFIGURE_ENABLE=	libopenh264
+
+# openjpeg
+OPENJPEG_LIB_DEPENDS=	libopenjp2.so:graphics/openjpeg
+OPENJPEG_CONFIGURE_ENABLE=	libopenjpeg
+
+# openmpt
+OPENMPT_LIB_DEPENDS=	libopenmpt.so:audio/libopenmpt
+OPENMPT_CONFIGURE_ENABLE=	libopenmpt
+
+# openssl/libtls
+OPENSSL_USES=		ssl
+OPENSSL_CONFIGURE_ENABLE=	${"${SSL_DEFAULT:Mlibressl*}"!="":?libtls:openssl}
+OPENSSL_IMPLIES=	NONFREE
+
+# openvino
+OPENVINO_LIB_DEPENDS=	libinference_engine_c_api.so:science/openvino
+OPENVINO_CONFIGURE_ENABLE=	libopenvino
+
+# optimizations
+OPTIMIZED_CFLAGS_CONFIGURE_ENABLE=	optimizations
+
+# opus
+OPUS_LIB_DEPENDS=	libopus.so:audio/opus
+OPUS_CONFIGURE_ENABLE=	libopus
+
+# pocketsphinx
+POCKETSPHINX_LIB_DEPENDS=	libpocketsphinx.so:audio/pocketsphinx
+POCKETSPHINX_CONFIGURE_ENABLE=	pocketsphinx
+POCKETSPHINX_BROKEN=	pocketsphinx < 5prealpha is not supported
+
+# pulseaudio
+PULSEAUDIO_LIB_DEPENDS=	libpulse.so:audio/pulseaudio
+PULSEAUDIO_CONFIGURE_ENABLE=	libpulse
+
+# rav1e
+RAV1E_LIB_DEPENDS=	librav1e.so:multimedia/librav1e
+RAV1E_CONFIGURE_ENABLE=	librav1e
+
+# rabbitmq
+RABBITMQ_LIB_DEPENDS=	librabbitmq.so:net/rabbitmq-c
+RABBITMQ_CONFIGURE_ENABLE=	librabbitmq
+
+# rist
+RIST_LIB_DEPENDS=	librist.so:multimedia/librist
+RIST_CONFIGURE_ENABLE=	librist
+
+# rubberband
+RUBBERBAND_LIB_DEPENDS=	librubberband.so:audio/rubberband
+RUBBERBAND_CONFIGURE_ENABLE=	librubberband
+
+# rtcpu
+RTCPU_CONFIGURE_ENABLE=	runtime-cpudetect
+
+# rtmp
+LIBRTMP_LIB_DEPENDS=	librtmp.so:multimedia/librtmp
+LIBRTMP_CONFIGURE_ENABLE=	librtmp
+
+# sdl
+SDL_USES=		sdl
+SDL_USE=		SDL=sdl2
+SDL_CONFIGURE_ENABLE=	sdl2
+
+# smbclient
+SMB_USES=		samba:lib
+SMB_CONFIGURE_ENABLE=	libsmbclient
+SMB_IMPLIES=		GPL3
+
+# snappy
+SNAPPY_LIB_DEPENDS=	libsnappy.so:archivers/snappy
+SNAPPY_CONFIGURE_ENABLE=	libsnappy
+
+# sndio
+SNDIO_LIB_DEPENDS=	libsndio.so:audio/sndio
+SNDIO_CONFIGURE_ENABLE=	sndio
+
+# soxr
+SOXR_LIB_DEPENDS=	libsoxr.so:audio/libsoxr
+SOXR_CONFIGURE_ENABLE=	libsoxr
+
+# speex
+SPEEX_LIB_DEPENDS=	libspeex.so:audio/speex
+SPEEX_CONFIGURE_ENABLE=	libspeex
+
+# ssh
+SSH_LIB_DEPENDS=	libssh.so:security/libssh
+SSH_CONFIGURE_ENABLE=	libssh
+
+# srt
+SRT_LIB_DEPENDS=	libsrt.so:www/srt
+SRT_CONFIGURE_ENABLE=	libsrt
+
+# svt-av1
+SVTAV1_LIB_DEPENDS=	libSvtAv1Enc.so:multimedia/svt-av1
+SVTAV1_CONFIGURE_ON=	--enable-libsvtav1
+
+# svt-hevc
+SVTHEVC_LIB_DEPENDS=	libSvtHevcEnc.so:multimedia/svt-hevc
+SVTHEVC_CONFIGURE_ON=	--enable-libsvthevc
+SVTHEVC_PATCH_SITES=	https://github.com/OpenVisualCloud/SVT-HEVC/raw/v1.5.0-3-g86b58f77/ffmpeg_plugin/:svthevc
+SVTHEVC_PATCHFILES=	0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch:-p1:svthevc \
+			0002-doc-Add-libsvt_hevc-encoder-docs.patch:-p1:svthevc
+.if make(makesum)
+.MAKEFLAGS:		WITH+=SVTHEVC
+.endif
+
+# svt-vp9
+SVTVP9_LIB_DEPENDS=	libSvtVp9Enc.so:multimedia/svt-vp9
+SVTVP9_CONFIGURE_ON=	--enable-libsvtvp9
+SVTVP9_PATCH_SITES=	https://github.com/OpenVisualCloud/SVT-VP9/raw/v0.3.0-4-gabd5c59/ffmpeg_plugin/:svtvp9
+SVTVP9_PATCHFILES=	master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch:-p1:svtvp9
+.if make(makesum)
+.MAKEFLAGS:		WITH+=SVTVP9
+.endif
+
+# tensorflow
+TENSORFLOW_LIB_DEPENDS=	libtensorflow.so:science/py-tensorflow
+TENSORFLOW_CONFIGURE_ENABLE=	libtensorflow
+
+# tesseract
+TESSERACT_LIB_DEPENDS=	libtesseract.so:graphics/tesseract
+TESSERACT_CONFIGURE_ENABLE=	libtesseract
+
+# theora
+THEORA_LIB_DEPENDS=	libtheora.so:multimedia/libtheora
+THEORA_CONFIGURE_ENABLE=	libtheora
+
+# twolame
+TWOLAME_LIB_DEPENDS=	libtwolame.so:audio/twolame
+TWOLAME_CONFIGURE_ENABLE=	libtwolame
+
+# uavs3d
+UAVS3D_LIB_DEPENDS=	libuavs3d.so:multimedia/uavs3d
+UAVS3D_CONFIGURE_ENABLE=	libuavs3d
+
+# vaapi
+VAAPI_LIB_DEPENDS=	libva.so:multimedia/libva
+VAAPI_CONFIGURE_ENABLE=	vaapi
+
+# vapoursynth
+VAPOURSYNTH_LIB_DEPENDS=	libvapoursynth-script.so:multimedia/vapoursynth
+VAPOURSYNTH_CONFIGURE_ENABLE=	vapoursynth
+
+# vdpau
+VDPAU_USES=		xorg
+VDPAU_USE=		XORG=x11
+VDPAU_LIB_DEPENDS=	libvdpau.so:multimedia/libvdpau
+VDPAU_CONFIGURE_ENABLE=	vdpau
+
+# vmaf
+VMAF_LIB_DEPENDS=	libvmaf.so:multimedia/vmaf
+VMAF_CONFIGURE_ENABLE=	libvmaf
+
+# vo-amrwbenc
+VO_AMRWBENC_LIB_DEPENDS=	libvo-amrwbenc.so:audio/vo-amrwbenc
+VO_AMRWBENC_CONFIGURE_ENABLE=	libvo-amrwbenc
+VO_AMRWBENC_IMPLIES=	GPL3
+
+# vid.stab
+VIDSTAB_LIB_DEPENDS=	libvidstab.so:multimedia/vid.stab
+VIDSTAB_CONFIGURE_ENABLE=	libvidstab
+
+# vorbis
+VORBIS_LIB_DEPENDS=	libvorbisenc.so:audio/libvorbis
+VORBIS_CONFIGURE_ENABLE=	libvorbis
+
+# vp8
+VPX_LIB_DEPENDS=	libvpx.so:multimedia/libvpx
+VPX_CONFIGURE_ENABLE=	libvpx
+
+# vulkan
+VULKAN_BUILD_DEPENDS=	vulkan-headers>0:graphics/vulkan-headers
+VULKAN_LIB_DEPENDS=	libvulkan.so:graphics/vulkan-loader
+VULKAN_CONFIGURE_ENABLE=	vulkan
+VULKAN_IMPLIES=		GLSLANG
+
+# webp
+WEBP_LIB_DEPENDS=	libwebp.so:graphics/webp
+WEBP_CONFIGURE_ENABLE=	libwebp
+
+# x264
+X264_LIB_DEPENDS=	libx264.so:multimedia/libx264
+X264_CONFIGURE_ENABLE=	libx264
+
+# x265
+X265_LIB_DEPENDS=	libx265.so:multimedia/x265
+X265_CONFIGURE_ENABLE=	libx265
+
+# xavs2
+XAVS2_LIB_DEPENDS=	libxavs2.so:multimedia/xavs2
+XAVS2_CONFIGURE_ENABLE=	libxavs2
+
+# xcb
+XCB_USES=		xorg
+XCB_USE=		XORG=xcb
+XCB_CONFIGURE_ENABLE=	libxcb
+
+# xvid
+XVID_LIB_DEPENDS=	libxvidcore.so:multimedia/xvid
+XVID_CONFIGURE_ENABLE=	libxvid
+
+# xv
+XVIDEO_USES=		xorg
+XVIDEO_USE=		XORG=x11,xext,xv
+XVIDEO_CONFIGURE_OFF=	--disable-outdev=xv
+
+# zimg
+ZIMG_LIB_DEPENDS=	libzimg.so:graphics/sekrit-twc-zimg
+ZIMG_CONFIGURE_ENABLE=	libzimg
+
+# zmq
+ZMQ_LIB_DEPENDS=	libzmq.so:net/libzmq${ZMQ_VERSION}
+ZMQ_CONFIGURE_ENABLE=	libzmq
+ZMQ_VERSION?=		4
+
+# zvbi
+ZVBI_LIB_DEPENDS=	libzvbi.so:devel/libzvbi
+ZVBI_CONFIGURE_ENABLE=	libzvbi
+
+# License knobs
+GPL3_CONFIGURE_ENABLE=	version3
+GPL3_VARS=		LICENSE="GPLv3+ LGPL3+"
+LICENSE_FILE_GPLv3+ =	${WRKSRC}/COPYING.GPLv3
+LICENSE_FILE_LGPL3+ =	${WRKSRC}/COPYING.LGPLv3
+
+NONFREE_CONFIGURE_ENABLE=nonfree
+
+INSTALL_TARGET=	install-progs install-doc install-data \
+		install-libs install-headers install-examples
+
+DATADIR=	${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
+DOCSDIR=	${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX}
+MAKE_ENV+=	V=1
+LDFLAGS_aarch64=-Wl,-z,notext
+LDFLAGS_armv6=	-Wl,-z,notext
+LDFLAGS_armv7=	-Wl,-z,notext
+LDFLAGS_i386=	-Wl,-z,notext
+
+CONFIGURE_ARGS+=--prefix="${PREFIX}" \
+		--mandir="${PREFIX}/man" \
+		--datadir="${DATADIR}" \
+		--docdir="${DOCSDIR}" \
+		--pkgconfigdir="${PREFIX}/libdata/pkgconfig" \
+		--disable-static \
+		--disable-libcelt \
+		--enable-shared \
+		--enable-pic \
+		--enable-gpl \
+		--enable-avresample \
+		--cc="${CC}" \
+		--cxx="${CXX}"
+
+DOC_FILES=	Changelog CREDITS INSTALL.md LICENSE.md MAINTAINERS \
+		README.md RELEASE_NOTES
+# under doc subdirectory
+DOC_DOCFILES=	APIchanges *.txt
+PORTDOCS=	*
+
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MNONFREE}
+LICENSE+=	NONFREE
+LICENSE_COMB=	multi
+LICENSE_NAME_NONFREE=	Non free code
+LICENSE_TEXT_NONFREE=	enabling OPENSSL or FDK_AAC restricts redistribution
+LICENSE_PERMS_NONFREE=	auto-accept
+.endif
+
+.include <bsd.port.pre.mk>
+
+.if ${ARCH} == powerpc64 && ${PORT_OPTIONS:MLTO} && ${CHOSEN_COMPILER_TYPE} == clang
+USE_GCC=	yes
+.endif
+
+post-install:
+	(cd ${WRKSRC} && ${COPYTREE_SHARE} \
+		"${DOC_FILES}" ${STAGEDIR}${DOCSDIR})
+	(cd ${WRKSRC}/doc && ${COPYTREE_SHARE} \
+		"${DOC_DOCFILES}" ${STAGEDIR}${DOCSDIR})
+
+.include <bsd.port.post.mk>
diff --git a/multimedia/ffmpeg4/distinfo b/multimedia/ffmpeg4/distinfo
new file mode 100644
index 000000000000..da3325c05deb
--- /dev/null
+++ b/multimedia/ffmpeg4/distinfo
@@ -0,0 +1,9 @@
+TIMESTAMP = 1665342284
+SHA256 (ffmpeg-4.4.3.tar.xz) = 6c5b6c195e61534766a0b5fe16acc919170c883362612816d0a1c7f4f947006e
+SIZE (ffmpeg-4.4.3.tar.xz) = 9566020
+SHA256 (0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch) = 376ea23e9d876390fbca936c80cb437bb9daa6232ff65df0ea91673e18b739ff
+SIZE (0001-lavc-svt_hevc-add-libsvt-hevc-encoder-wrapper.patch) = 24259
+SHA256 (0002-doc-Add-libsvt_hevc-encoder-docs.patch) = d16589efc4be2602a9f436e9938cfee0cc7b5ccd7a4a6b41c0c9a59ae0859fda
+SIZE (0002-doc-Add-libsvt_hevc-encoder-docs.patch) = 5336
+SHA256 (master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch) = b7d722dfce20b73e9d5c73d55ffe041bbdc92a3c4a5c5d766b6b3040671b4052
+SIZE (master-0001-Add-ability-for-ffmpeg-to-run-svt-vp9.patch) = 33497
diff --git a/multimedia/ffmpeg4/files/patch-configure b/multimedia/ffmpeg4/files/patch-configure
new file mode 100644
index 000000000000..760c50b8e912
--- /dev/null
+++ b/multimedia/ffmpeg4/files/patch-configure
@@ -0,0 +1,26 @@
+--- configure.orig	2022-10-09 19:04:43 UTC
++++ configure
+@@ -3784,13 +3784,7 @@ host_os=$target_os_default
+ host_os=$target_os_default
+ 
+ # machine
+-if test "$target_os_default" = aix; then
+-    arch_default=$(uname -p)
+-    strip_default="strip -X32_64"
+-    nm_default="nm -g -X32_64"
+-else
+-    arch_default=$(uname -m)
+-fi
++arch_default=$(uname -p)
+ cpu="generic"
+ intrinsics="none"
+ 
+@@ -6758,7 +6752,7 @@ if enabled x86; then
+ 
+ if enabled x86; then
+     case $target_os in
+-        mingw32*|mingw64*|win32|win64|linux|cygwin*)
++        freebsd|mingw32*|mingw64*|win32|win64|linux|cygwin*)
+             ;;
+         *)
+             disable ffnvcodec cuvid nvdec nvenc
diff --git a/multimedia/ffmpeg4/files/patch-doc-Makefile b/multimedia/ffmpeg4/files/patch-doc-Makefile
new file mode 100644
index 000000000000..52ab4033ad98
--- /dev/null
+++ b/multimedia/ffmpeg4/files/patch-doc-Makefile
@@ -0,0 +1,11 @@
+--- doc/Makefile.orig	2015-06-19 20:44:35 UTC
++++ doc/Makefile
+@@ -145,7 +145,7 @@ install-html: $(HTMLPAGES)
+ endif
+ 
+ ifdef CONFIG_MANPAGES
+-install-progs-$(CONFIG_DOC): install-man
++#install-progs-$(CONFIG_DOC): install-man
+ 
+ install-man: $(MANPAGES)
+ 	$(Q)mkdir -p "$(MANDIR)/man1"
diff --git a/multimedia/ffmpeg4/files/patch-libavdevice_v4l2.c b/multimedia/ffmpeg4/files/patch-libavdevice_v4l2.c
new file mode 100644
index 000000000000..8518fadce3af
--- /dev/null
+++ b/multimedia/ffmpeg4/files/patch-libavdevice_v4l2.c
@@ -0,0 +1,18 @@
+- ioctl() prototype on BSDs follows Version 7 AT&T UNIX
+
+--- libavdevice/v4l2.c.orig	2019-04-21 04:37:17 UTC
++++ libavdevice/v4l2.c
+@@ -95,10 +95,10 @@ struct video_data {
+     int (*open_f)(const char *file, int oflag, ...);
+     int (*close_f)(int fd);
+     int (*dup_f)(int fd);
+-#ifdef __GLIBC__
+-    int (*ioctl_f)(int fd, unsigned long int request, ...);
+-#else
++#if defined(__sun) || defined(__BIONIC__) || defined(__musl__) /* POSIX-like */
+     int (*ioctl_f)(int fd, int request, ...);
++#else
++    int (*ioctl_f)(int fd, unsigned long int request, ...);
+ #endif
+     ssize_t (*read_f)(int fd, void *buffer, size_t n);
+     void *(*mmap_f)(void *start, size_t length, int prot, int flags, int fd, int64_t offset);
diff --git a/multimedia/ffmpeg4/files/patch-libavfilter_vf__lensfun.c b/multimedia/ffmpeg4/files/patch-libavfilter_vf__lensfun.c
new file mode 100644
index 000000000000..805d07687521
--- /dev/null
+++ b/multimedia/ffmpeg4/files/patch-libavfilter_vf__lensfun.c
@@ -0,0 +1,51 @@
+Partially revert https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/8b78eb312de9
+until graphics/lensfun is updated to a version that contains
+https://github.com/lensfun/lensfun/commit/b135e05d729d
+
+--- libavfilter/vf_lensfun.c.orig	2021-04-08 21:28:40 UTC
++++ libavfilter/vf_lensfun.c
+@@ -222,20 +222,39 @@ static int config_props(AVFilterLink *inlink)
+ 
+     if (!lensfun->modifier) {
+         if (lensfun->camera && lensfun->lens) {
+-            lensfun->modifier = lf_modifier_create(lensfun->lens,
++            lensfun->modifier = lf_modifier_create(
++#if (LF_VERSION > 0x35F00)
++                                                   lensfun->lens,
+                                                    lensfun->focal_length,
++#endif
+                                                    lensfun->camera->CropFactor,
+                                                    inlink->w,
+                                                    inlink->h, LF_PF_U8, lensfun->reverse);
+             if (lensfun->mode & VIGNETTING)
+-                lf_modifier_enable_vignetting_correction(lensfun->modifier, lensfun->aperture, lensfun->focus_distance);
++                lf_modifier_enable_vignetting_correction(lensfun->modifier,
++#if (LF_VERSION <= 0x35F00)
++                                                         lensfun->lens, lensfun->focal_length,
++#endif
++                                                         lensfun->aperture, lensfun->focus_distance);
+             if (lensfun->mode & GEOMETRY_DISTORTION) {
+-                lf_modifier_enable_distortion_correction(lensfun->modifier);
+-                lf_modifier_enable_projection_transform(lensfun->modifier, lensfun->target_geometry);
++                lf_modifier_enable_distortion_correction(lensfun->modifier,
++#if (LF_VERSION <= 0x35F00)
++                                                         lensfun->lens, lensfun->focal_length
++#endif
++                                                        );
++                lf_modifier_enable_projection_transform(lensfun->modifier,
++#if (LF_VERSION <= 0x35F00)
++                                                        lensfun->lens, lensfun->focal_length,
++#endif
++                                                        lensfun->target_geometry);
+                 lf_modifier_enable_scaling(lensfun->modifier, lensfun->scale);
+             }
+             if (lensfun->mode & SUBPIXEL_DISTORTION)
+-                lf_modifier_enable_tca_correction(lensfun->modifier);
++                lf_modifier_enable_tca_correction(lensfun->modifier,
++#if (LF_VERSION <= 0x35F00)
++                                                  lensfun->lens, lensfun->focal_length
++#endif
++                                                  );
+         } else {
+             // lensfun->camera and lensfun->lens should have been initialized
+             return AVERROR_BUG;
diff --git a/multimedia/ffmpeg4/files/patch-libavformat_rtsp.c b/multimedia/ffmpeg4/files/patch-libavformat_rtsp.c
new file mode 100644
index 000000000000..7cd751dbd79c
--- /dev/null
+++ b/multimedia/ffmpeg4/files/patch-libavformat_rtsp.c
@@ -0,0 +1,44 @@
+--- libavformat/rtsp.c.orig	2016-10-27 16:17:40 UTC
++++ libavformat/rtsp.c
+@@ -1614,7 +1614,12 @@ int ff_rtsp_make_setup_request(AVFormatC
+             }
+             if (ttl > 0)
+                 snprintf(optbuf, sizeof(optbuf), "?ttl=%d", ttl);
+-            getnameinfo((struct sockaddr*) &addr, sizeof(addr),
++            getnameinfo((struct sockaddr*) &addr,
++#if HAVE_STRUCT_SOCKADDR_SA_LEN
++                        ((struct sockaddr*) &addr)->sa_len,
++#else
++                        sizeof(addr),
++#endif
+                         namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST);
+             ff_url_join(url, sizeof(url), "rtp", NULL, namebuf,
+                         port, "%s", optbuf);
+@@ -1830,8 +1835,13 @@ redirect:
+         goto fail;
+     }
+     if (!getpeername(tcp_fd, (struct sockaddr*) &peer, &peer_len)) {
+-        getnameinfo((struct sockaddr*) &peer, peer_len, host, sizeof(host),
+-                    NULL, 0, NI_NUMERICHOST);
++        getnameinfo((struct sockaddr*) &peer,
++#if HAVE_STRUCT_SOCKADDR_SA_LEN
++                    ((struct sockaddr*) &peer)->sa_len,
++#else
++                    peer_len,
++#endif
++                    host, sizeof(host), NULL, 0, NI_NUMERICHOST);
+     }
+ 
+     /* request options supported by the server; this also detects server
+@@ -2310,7 +2320,11 @@ static int sdp_read_header(AVFormatConte
+             AVDictionary *opts = map_to_opts(rt);
+ 
+             err = getnameinfo((struct sockaddr*) &rtsp_st->sdp_ip,
++#if HAVE_STRUCT_SOCKADDR_SA_LEN
++                              ((struct sockaddr*) &rtsp_st->sdp_ip)->sa_len,
++#else
+                               sizeof(rtsp_st->sdp_ip),
++#endif
+                               namebuf, sizeof(namebuf), NULL, 0, NI_NUMERICHOST);
+             if (err) {
+                 av_log(s, AV_LOG_ERROR, "getnameinfo: %s\n", gai_strerror(err));
diff --git a/multimedia/ffmpeg4/files/patch-libavutil-common.h b/multimedia/ffmpeg4/files/patch-libavutil-common.h
new file mode 100644
index 000000000000..2c8c84e6d372
--- /dev/null
+++ b/multimedia/ffmpeg4/files/patch-libavutil-common.h
@@ -0,0 +1,13 @@
+--- libavutil/common.h.orig	2015-06-19 20:44:53 UTC
++++ libavutil/common.h
+@@ -49,6 +49,10 @@
+ #   define AV_NE(be, le) (le)
+ #endif
+ 
++#ifndef	UINT64_C
++#define	UINT64_C(c)	(c ## UL)
++#endif
++
+ //rounded division & shift
+ #define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
+ /* assume b>0 */
diff --git a/multimedia/ffmpeg4/files/patch-libavutil-x86-asm.h b/multimedia/ffmpeg4/files/patch-libavutil-x86-asm.h
new file mode 100644
index 000000000000..71e31a029955
--- /dev/null
+++ b/multimedia/ffmpeg4/files/patch-libavutil-x86-asm.h
@@ -0,0 +1,11 @@
+--- libavutil/x86/asm.h.orig	2015-06-19 20:44:54 UTC
++++ libavutil/x86/asm.h
+@@ -71,7 +71,7 @@ typedef int32_t x86_reg;
+ typedef int x86_reg;
+ #endif
+ 
+-#define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE))
++#define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE && !defined(__clang__)))
+ #define HAVE_6REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE))
+ 
+ #if ARCH_X86_64 && defined(PIC)
diff --git a/multimedia/ffmpeg4/files/patch-libavutil_hwcontext__drm.c b/multimedia/ffmpeg4/files/patch-libavutil_hwcontext__drm.c
new file mode 100644
index 000000000000..f5e186300975
--- /dev/null
+++ b/multimedia/ffmpeg4/files/patch-libavutil_hwcontext__drm.c
@@ -0,0 +1,24 @@
+drm-kmod doesn't expose uAPI yet, so bundle like Mesa
+
+--- libavutil/hwcontext_drm.c.orig	2022-07-22 17:58:39 UTC
++++ libavutil/hwcontext_drm.c
+@@ -28,6 +28,19 @@
+ #if HAVE_LINUX_DMA_BUF_H
+ #include <linux/dma-buf.h>
+ #include <sys/ioctl.h>
++#else // BSDs
++#undef HAVE_LINUX_DMA_BUF_H
++#define HAVE_LINUX_DMA_BUF_H 1
++#include <sys/ioctl.h>
++struct dma_buf_sync {
++	uint64_t flags;
++};
++#define DMA_BUF_BASE		'b'
++#define DMA_BUF_IOCTL_SYNC	_IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
++#define DMA_BUF_SYNC_READ      (1 << 0)
++#define DMA_BUF_SYNC_WRITE     (2 << 0)
++#define DMA_BUF_SYNC_START     (0 << 2)
++#define DMA_BUF_SYNC_END       (1 << 2)
+ #endif
+ 
+ #include <drm.h>
diff --git a/multimedia/ffmpeg4/files/patch-libswscale_ppc_yuv2rgb__altivec.c b/multimedia/ffmpeg4/files/patch-libswscale_ppc_yuv2rgb__altivec.c
new file mode 100644
index 000000000000..38ff9087b842
--- /dev/null
+++ b/multimedia/ffmpeg4/files/patch-libswscale_ppc_yuv2rgb__altivec.c
@@ -0,0 +1,15 @@
+Error:
+libswscale/ppc/yuv2rgb_altivec.c:288:36: error: redeclaration of 'vec_xl' must have the 'overloadable' attribute
+static inline vector unsigned char vec_xl(signed long long offset, const ubyte *addr)
+
+--- libswscale/ppc/yuv2rgb_altivec.c.orig	2021-04-08 21:28:40 UTC
*** 1659 LINES SKIPPED ***