Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Apr 2023 12:03:47 GMT
From:      Daniel Engberg <diizzy@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 685e477b807c - main - multimedia/ffmpeg: update to 6.0
Message-ID:  <202304271203.33RC3lWx045938@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by diizzy:

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

commit 685e477b807c7662670de46b042141939af7555e
Author:     Jan Beich <jbeich@FreeBSD.org>
AuthorDate: 2023-04-12 21:21:46 +0000
Commit:     Daniel Engberg <diizzy@FreeBSD.org>
CommitDate: 2023-04-27 12:01:40 +0000

    multimedia/ffmpeg: update to 6.0
    
    * --enable-avresample is gone per https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/420cedd49745
    * SHADERC replaces GLSLANG per https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/da72aca7b025
    * VULKAN is enabled per https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/fa2e460f635
    * LIBPLACEBO is enabled to have even more Vulkan goodies
    * LCMS2 is enabled for better ICC profile support
    * JXL is enabled for https://github.com/mpv-player/mpv/commit/1345977f9976
    
    Changes:        https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/n6.0:/Changelog
    PR:             261302
    Reported by:    Repology
    Exp-run by:     antoine
    Approved by:    tcberner
---
 multimedia/ffmpeg/Makefile                       |  46 +-
 multimedia/ffmpeg/distinfo                       |   6 +-
 multimedia/ffmpeg/files/patch-libavutil_thread.h |  14 +
 multimedia/ffmpeg/files/patch-svtav1             | 437 -----------
 multimedia/ffmpeg/files/patch-vmaf               | 951 -----------------------
 multimedia/ffmpeg/pkg-plist                      |  77 +-
 6 files changed, 93 insertions(+), 1438 deletions(-)

diff --git a/multimedia/ffmpeg/Makefile b/multimedia/ffmpeg/Makefile
index 031ab21961bc..e7a4c150a31a 100644
--- a/multimedia/ffmpeg/Makefile
+++ b/multimedia/ffmpeg/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	ffmpeg
-PORTVERSION=	4.4.4
-PORTREVISION=	1
+PORTVERSION=	6.0
 PORTEPOCH=	1
 CATEGORIES=	multimedia audio net
 MASTER_SITES=	https://ffmpeg.org/releases/
@@ -28,28 +27,28 @@ USE_PERL5=	build
 SHEBANG_FILES=	doc/texi2pod.pl
 NOPRECIOUSMAKEVARS=	yes # ARCH
 
-PORTSCOUT=	limit:^4\.
+PORTSCOUT=	limit:^6\.
 
 # 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 \
+		JACK JXL KLVANC KVAZAAR LADSPA LAME LCMS2 LENSFUN LIBBLURAY LIBPLACEBO 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 \
+		PULSEAUDIO RAV1E RABBITMQ RIST RTCPU RUBBERBAND SDL SHADERC 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_amd64=	MFX VPL
 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
+			GNUTLS ICONV JXL LAME LCMS2 LIBPLACEBO LIBXML2 NETWORK \
+			OPTIMIZED_CFLAGS OPUS RTCPU SVTAV1 V4L VAAPI VDPAU VMAF \
+			VORBIS VPX VULKAN WEBP X264 X265 XCB
 OPTIONS_DEFAULT_amd64=	NVENC
 OPTIONS_DEFAULT_i386=	NVENC
 
@@ -122,10 +121,12 @@ 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
+SHADERC_DESC=	GLSL->SPIRV compilation via libshaderc
 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
+LIBPLACEBO_DESC=GPU filters from libplacebo
 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
@@ -134,6 +135,7 @@ UAVS3D_DESC=	AVS3 decoding via libuavs3d
 VAPOURSYNTH_DESC=	VapourSynth demuxer
 VIDSTAB_DESC=	Video stabilization filter
 VMAF_DESC=	VMAF filter via libvmaf
+VPL_DESC=	Intel oneVPL (aka Quick Sync Video)
 VULKAN_DESC=	Vulkan filters
 XAVS2_DESC=	AVS2 encoding via libxavs2
 XCB_DESC=	X11 grabbing using XCB
@@ -282,6 +284,10 @@ ILBC_CONFIGURE_ENABLE=	libilbc
 JACK_LIB_DEPENDS=	libjack.so:audio/jack
 JACK_CONFIGURE_ENABLE=	libjack
 
+# jxl
+JXL_LIB_DEPENDS=	libjxl.so:graphics/libjxl
+JXL_CONFIGURE_ENABLE=	libjxl
+
 # klvanc
 KLVANC_LIB_DEPENDS=	libklvanc.so:multimedia/libklvanc
 KLVANC_CONFIGURE_ENABLE=	libklvanc
@@ -299,6 +305,10 @@ LADSPA_CONFIGURE_ENABLE=	ladspa
 LAME_LIB_DEPENDS=	libmp3lame.so:audio/lame
 LAME_CONFIGURE_ENABLE=	libmp3lame
 
+# lcms2
+LCMS2_LIB_DEPENDS=	liblcms2.so:graphics/lcms2
+LCMS2_CONFIGURE_ENABLE=	lcms2
+
 # lensfun
 LENSFUN_LIB_DEPENDS=	liblensfun.so:graphics/lensfun
 LENSFUN_CONFIGURE_ENABLE=	liblensfun
@@ -307,6 +317,10 @@ LENSFUN_CONFIGURE_ENABLE=	liblensfun
 LIBBLURAY_LIB_DEPENDS=	libbluray.so:multimedia/libbluray
 LIBBLURAY_CONFIGURE_ENABLE=	libbluray
 
+# libplacebo
+LIBPLACEBO_LIB_DEPENDS=	libplacebo.so:graphics/libplacebo
+LIBPLACEBO_CONFIGURE_ENABLE=	libplacebo
+
 # librsvg
 LIBRSVG2_USES=			gnome
 LIBRSVG2_USE=			GNOME=cairo,librsvg2
@@ -351,7 +365,7 @@ MYSOFA_CONFIGURE_ENABLE=	libmysofa
 NETWORK_CONFIGURE_ENABLE=	network
 
 # nvenc
-NVENC_BUILD_DEPENDS=	${LOCALBASE}/include/ffnvcodec/nvEncodeAPI.h:multimedia/ffnvcodec-headers
+NVENC_BUILD_DEPENDS=	ffnvcodec-headers>=11.1.5.2:multimedia/ffnvcodec-headers
 NVENC_CONFIGURE_ENABLE=	nvenc
 
 # OpenAL
@@ -433,6 +447,11 @@ SDL_USES=		sdl
 SDL_USE=		SDL=sdl2
 SDL_CONFIGURE_ENABLE=	sdl2
 
+# shaderc
+SHADERC_LIB_DEPENDS=	libshaderc_shared.so:graphics/shaderc
+SHADERC_CONFIGURE_ENABLE=	libshaderc
+SHADERC_PREVENTS=	GLSLANG
+
 # smbclient
 SMB_USES=		samba:lib
 SMB_CONFIGURE_ENABLE=	libsmbclient
@@ -536,6 +555,10 @@ VIDSTAB_CONFIGURE_ENABLE=	libvidstab
 VORBIS_LIB_DEPENDS=	libvorbisenc.so:audio/libvorbis
 VORBIS_CONFIGURE_ENABLE=	libvorbis
 
+# vpl
+VPL_LIB_DEPENDS=	libvpl.so:multimedia/onevpl
+VPL_CONFIGURE_ENABLE=	libvpl
+
 # vp8
 VPX_LIB_DEPENDS=	libvpx.so:multimedia/libvpx
 VPX_CONFIGURE_ENABLE=	libvpx
@@ -544,7 +567,7 @@ VPX_CONFIGURE_ENABLE=	libvpx
 VULKAN_BUILD_DEPENDS=	vulkan-headers>0:graphics/vulkan-headers
 VULKAN_LIB_DEPENDS=	libvulkan.so:graphics/vulkan-loader
 VULKAN_CONFIGURE_ENABLE=	vulkan
-VULKAN_IMPLIES=		GLSLANG
+VULKAN_IMPLIES=		${"${PORT_OPTIONS:MGLSLANG}":?GLSLANG:SHADERC}
 
 # webp
 WEBP_LIB_DEPENDS=	libwebp.so:graphics/webp
@@ -618,7 +641,6 @@ CONFIGURE_ARGS+=--prefix="${PREFIX}" \
 		--enable-shared \
 		--enable-pic \
 		--enable-gpl \
-		--enable-avresample \
 		--cc="${CC}" \
 		--cxx="${CXX}"
 
diff --git a/multimedia/ffmpeg/distinfo b/multimedia/ffmpeg/distinfo
index 287f9dba3d86..4c5307165f94 100644
--- a/multimedia/ffmpeg/distinfo
+++ b/multimedia/ffmpeg/distinfo
@@ -1,6 +1,6 @@
-TIMESTAMP = 1681325571
-SHA256 (ffmpeg-4.4.4.tar.xz) = e80b380d595c809060f66f96a5d849511ef4a76a26b76eacf5778b94c3570309
-SIZE (ffmpeg-4.4.4.tar.xz) = 9565584
+TIMESTAMP = 1677530629
+SHA256 (ffmpeg-6.0.tar.xz) = 57be87c22d9b49c112b6d24bc67d42508660e6b718b3db89c44e47e289137082
+SIZE (ffmpeg-6.0.tar.xz) = 10234012
 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
diff --git a/multimedia/ffmpeg/files/patch-libavutil_thread.h b/multimedia/ffmpeg/files/patch-libavutil_thread.h
new file mode 100644
index 000000000000..29ba6aa40761
--- /dev/null
+++ b/multimedia/ffmpeg/files/patch-libavutil_thread.h
@@ -0,0 +1,14 @@
+pthread_setname_np is implemented on top of PR_SET_NAME on Linux
+and is also available on DragonFly, FreeBSD and Solaris
+
+--- libavutil/thread.h.orig	2023-02-27 20:43:45 UTC
++++ libavutil/thread.h
+@@ -196,6 +196,8 @@ static inline int ff_thread_setname(const char *name)
+ {
+ #if HAVE_PRCTL
+     return AVERROR(prctl(PR_SET_NAME, name));
++#elif HAVE_PTHREADS
++    return AVERROR(pthread_setname_np(pthread_self(), name));
+ #endif
+ 
+     return AVERROR(ENOSYS);
diff --git a/multimedia/ffmpeg/files/patch-svtav1 b/multimedia/ffmpeg/files/patch-svtav1
deleted file mode 100644
index 5d8893a959fa..000000000000
--- a/multimedia/ffmpeg/files/patch-svtav1
+++ /dev/null
@@ -1,437 +0,0 @@
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/04b89e8ae33b
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/64e2fb3f9d89
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/0463f5d6d56d
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/c5f314309067
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/c33b4048859a
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/a2b090da7932
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/1dddb930aaf0
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/4e47ebf38b97
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/50bc87263576
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/d794b36a7788
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/51c0b9e829be
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/e3c4442b249a
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/6fd1533057ff
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/ded0334d214f
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/70887d44ffa3
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/fe100bc556d7
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/fb70e0611bd7
-
---- configure.orig	2021-10-24 20:47:11 UTC
-+++ configure
-@@ -6430,7 +6430,7 @@ enabled libsrt            && require_pkg_config libsrt
- enabled libssh            && require_pkg_config libssh libssh libssh/sftp.h sftp_init
- enabled libspeex          && require_pkg_config libspeex speex speex/speex.h speex_decoder_init
- enabled libsrt            && require_pkg_config libsrt "srt >= 1.3.0" srt/srt.h srt_socket
--enabled libsvtav1         && require_pkg_config libsvtav1 "SvtAv1Enc >= 0.8.4" EbSvtAv1Enc.h svt_av1_enc_init_handle
-+enabled libsvtav1         && require_pkg_config libsvtav1 "SvtAv1Enc >= 0.9.0" EbSvtAv1Enc.h svt_av1_enc_init_handle
- enabled libtensorflow     && require libtensorflow tensorflow/c/c_api.h TF_Version -ltensorflow
- enabled libtesseract      && require_pkg_config libtesseract tesseract tesseract/capi.h TessBaseAPICreate
- enabled libtheora         && require libtheora theora/theoraenc.h th_info_init -ltheoraenc -ltheoradec -logg
---- doc/encoders.texi.orig	2021-10-24 20:47:07 UTC
-+++ doc/encoders.texi
-@@ -1754,28 +1754,15 @@ Set the operating point tier.
- @item tier
- Set the operating point tier.
- 
--@item rc
--Set the rate control mode to use.
--
--Possible modes:
--@table @option
--@item cqp
--Constant quantizer: use fixed values of qindex (dependent on the frame type)
--throughout the stream.  This mode is the default.
--
--@item vbr
--Variable bitrate: use a target bitrate for the whole stream.
--
--@item cvbr
--Constrained variable bitrate: use a target bitrate for each GOP.
--@end table
--
- @item qmax
- Set the maximum quantizer to use when using a bitrate mode.
- 
- @item qmin
- Set the minimum quantizer to use when using a bitrate mode.
- 
-+@item crf
-+Constant rate factor value used in crf rate control mode (0-63).
-+
- @item qp
- Set the quantizer used in cqp rate control mode (0-63).
- 
-@@ -1786,14 +1773,18 @@ Set number of frames to look ahead (0-120).
- Set number of frames to look ahead (0-120).
- 
- @item preset
--Set the quality-speed tradeoff, in the range 0 to 8.  Higher values are
--faster but lower quality.  Defaults to 8 (highest speed).
-+Set the quality-speed tradeoff, in the range 0 to 13.  Higher values are
-+faster but lower quality.
- 
- @item tile_rows
- Set log2 of the number of rows of tiles to use (0-6).
- 
- @item tile_columns
- Set log2 of the number of columns of tiles to use (0-4).
-+
-+@item svtav1-params
-+Set SVT-AV1 options using a list of @var{key}=@var{value} pairs separated
-+by ":". See the SVT-AV1 encoder user guide for a list of accepted parameters.
- 
- @end table
- 
---- libavcodec/libsvtav1.c.orig	2021-10-24 20:47:07 UTC
-+++ libavcodec/libsvtav1.c
-@@ -60,17 +60,20 @@ typedef struct SvtContext {
-     EOS_STATUS eos_flag;
- 
-     // User options.
-+    AVDictionary *svtav1_opts;
-+#if FF_API_SVTAV1_OPTS
-     int hierarchical_level;
-     int la_depth;
--    int enc_mode;
--    int rc_mode;
-     int scd;
--    int qp;
- 
-     int tier;
- 
-     int tile_columns;
-     int tile_rows;
-+#endif
-+    int enc_mode;
-+    int crf;
-+    int qp;
- } SvtContext;
- 
- static const struct {
-@@ -151,11 +154,126 @@ static int config_enc_params(EbSvtAv1EncConfiguration 
- {
-     SvtContext *svt_enc = avctx->priv_data;
-     const AVPixFmtDescriptor *desc;
-+    AVDictionaryEntry *en = NULL;
- 
-+    // Update param from options
-+#if FF_API_SVTAV1_OPTS
-+    param->hierarchical_levels      = svt_enc->hierarchical_level;
-+    param->tier                     = svt_enc->tier;
-+    param->scene_change_detection   = svt_enc->scd;
-+    param->tile_columns             = svt_enc->tile_columns;
-+    param->tile_rows                = svt_enc->tile_rows;
-+
-+    if (svt_enc->la_depth >= 0)
-+        param->look_ahead_distance  = svt_enc->la_depth;
-+#endif
-+
-+    if (svt_enc->enc_mode >= 0)
-+        param->enc_mode             = svt_enc->enc_mode;
-+
-+    if (avctx->bit_rate) {
-+        param->target_bit_rate      = avctx->bit_rate;
-+        if (avctx->rc_max_rate != avctx->bit_rate)
-+            param->rate_control_mode = 1;
-+        else
-+            param->rate_control_mode = 2;
-+
-+        param->max_qp_allowed       = avctx->qmax;
-+        param->min_qp_allowed       = avctx->qmin;
-+    }
-+    param->max_bit_rate             = avctx->rc_max_rate;
-+    param->vbv_bufsize              = avctx->rc_buffer_size;
-+
-+    if (svt_enc->crf > 0) {
-+        param->qp                   = svt_enc->crf;
-+        param->rate_control_mode    = 0;
-+    } else if (svt_enc->qp > 0) {
-+        param->qp                   = svt_enc->qp;
-+        param->rate_control_mode    = 0;
-+        param->enable_adaptive_quantization = 0;
-+    }
-+
-+    desc = av_pix_fmt_desc_get(avctx->pix_fmt);
-+    param->color_primaries          = avctx->color_primaries;
-+    param->matrix_coefficients      = (desc->flags & AV_PIX_FMT_FLAG_RGB) ?
-+                                      AVCOL_SPC_RGB : avctx->colorspace;
-+    param->transfer_characteristics = avctx->color_trc;
-+
-+    if (avctx->color_range != AVCOL_RANGE_UNSPECIFIED)
-+        param->color_range = avctx->color_range == AVCOL_RANGE_JPEG;
-+    else
-+        param->color_range = !!(desc->flags & AV_PIX_FMT_FLAG_RGB);
-+
-+#if SVT_AV1_CHECK_VERSION(1, 0, 0)
-+    if (avctx->chroma_sample_location != AVCHROMA_LOC_UNSPECIFIED) {
-+        const char *name =
-+            av_chroma_location_name(avctx->chroma_sample_location);
-+
-+        switch (avctx->chroma_sample_location) {
-+        case AVCHROMA_LOC_LEFT:
-+            param->chroma_sample_position = EB_CSP_VERTICAL;
-+            break;
-+        case AVCHROMA_LOC_TOPLEFT:
-+            param->chroma_sample_position = EB_CSP_COLOCATED;
-+            break;
-+        default:
-+            if (!name)
-+                break;
-+
-+            av_log(avctx, AV_LOG_WARNING,
-+                   "Specified chroma sample location %s is unsupported "
-+                   "on the AV1 bit stream level. Usage of a container that "
-+                   "allows passing this information - such as Matroska - "
-+                   "is recommended.\n",
-+                   name);
-+            break;
-+        }
-+    }
-+#endif
-+
-+    if (avctx->profile != FF_PROFILE_UNKNOWN)
-+        param->profile = avctx->profile;
-+
-+    if (avctx->level != FF_LEVEL_UNKNOWN)
-+        param->level = avctx->level;
-+
-+    if (avctx->gop_size > 0)
-+        param->intra_period_length  = avctx->gop_size - 1;
-+
-+    if (avctx->framerate.num > 0 && avctx->framerate.den > 0) {
-+        param->frame_rate_numerator   = avctx->framerate.num;
-+        param->frame_rate_denominator = avctx->framerate.den;
-+    } else {
-+        param->frame_rate_numerator   = avctx->time_base.den;
-+        param->frame_rate_denominator = avctx->time_base.num * avctx->ticks_per_frame;
-+    }
-+
-+    /* 2 = IDR, closed GOP, 1 = CRA, open GOP */
-+    param->intra_refresh_type = avctx->flags & AV_CODEC_FLAG_CLOSED_GOP ? 2 : 1;
-+
-+#if SVT_AV1_CHECK_VERSION(0, 9, 1)
-+    while ((en = av_dict_get(svt_enc->svtav1_opts, "", en, AV_DICT_IGNORE_SUFFIX))) {
-+        EbErrorType ret = svt_av1_enc_parse_parameter(param, en->key, en->value);
-+        if (ret != EB_ErrorNone) {
-+            int level = (avctx->err_recognition & AV_EF_EXPLODE) ? AV_LOG_ERROR : AV_LOG_WARNING;
-+            av_log(avctx, level, "Error parsing option %s: %s.\n", en->key, en->value);
-+            if (avctx->err_recognition & AV_EF_EXPLODE)
-+                return AVERROR(EINVAL);
-+        }
-+    }
-+#else
-+    if ((en = av_dict_get(svt_enc->svtav1_opts, "", NULL, AV_DICT_IGNORE_SUFFIX))) {
-+        int level = (avctx->err_recognition & AV_EF_EXPLODE) ? AV_LOG_ERROR : AV_LOG_WARNING;
-+        av_log(avctx, level, "svt-params needs libavcodec to be compiled with SVT-AV1 "
-+                             "headers >= 0.9.1.\n");
-+        if (avctx->err_recognition & AV_EF_EXPLODE)
-+            return AVERROR(ENOSYS);
-+    }
-+#endif
-+
-     param->source_width     = avctx->width;
-     param->source_height    = avctx->height;
- 
--    desc = av_pix_fmt_desc_get(avctx->pix_fmt);
-     param->encoder_bit_depth = desc->comp[0].depth;
- 
-     if (desc->log2_chroma_w == 1 && desc->log2_chroma_h == 1)
-@@ -169,12 +287,6 @@ static int config_enc_params(EbSvtAv1EncConfiguration 
-         return AVERROR(EINVAL);
-     }
- 
--    if (avctx->profile != FF_PROFILE_UNKNOWN)
--        param->profile = avctx->profile;
--
--    if (avctx->level != FF_LEVEL_UNKNOWN)
--        param->level = avctx->level;
--
-     if ((param->encoder_color_format == EB_YUV422 || param->encoder_bit_depth > 10)
-          && param->profile != FF_PROFILE_AV1_PROFESSIONAL ) {
-         av_log(avctx, AV_LOG_WARNING, "Forcing Professional profile\n");
-@@ -184,40 +296,21 @@ static int config_enc_params(EbSvtAv1EncConfiguration 
-         param->profile = FF_PROFILE_AV1_HIGH;
-     }
- 
--    // Update param from options
--    param->hierarchical_levels      = svt_enc->hierarchical_level;
--    param->enc_mode                 = svt_enc->enc_mode;
--    param->tier                     = svt_enc->tier;
--    param->rate_control_mode        = svt_enc->rc_mode;
--    param->scene_change_detection   = svt_enc->scd;
--    param->qp                       = svt_enc->qp;
-+    avctx->bit_rate       = param->rate_control_mode > 0 ?
-+                            param->target_bit_rate : 0;
-+    avctx->rc_max_rate    = param->max_bit_rate;
-+    avctx->rc_buffer_size = param->vbv_bufsize;
- 
--    param->target_bit_rate          = avctx->bit_rate;
-+    if (avctx->bit_rate || avctx->rc_max_rate || avctx->rc_buffer_size) {
-+        AVCPBProperties *cpb_props = ff_add_cpb_side_data(avctx);
-+        if (!cpb_props)
-+            return AVERROR(ENOMEM);
- 
--    if (avctx->gop_size > 0)
--        param->intra_period_length  = avctx->gop_size - 1;
--
--    if (avctx->framerate.num > 0 && avctx->framerate.den > 0) {
--        param->frame_rate_numerator   = avctx->framerate.num;
--        param->frame_rate_denominator = avctx->framerate.den;
--    } else {
--        param->frame_rate_numerator   = avctx->time_base.den;
--        param->frame_rate_denominator = avctx->time_base.num * avctx->ticks_per_frame;
-+        cpb_props->buffer_size = avctx->rc_buffer_size;
-+        cpb_props->max_bitrate = avctx->rc_max_rate;
-+        cpb_props->avg_bitrate = avctx->bit_rate;
-     }
- 
--    if (param->rate_control_mode) {
--        param->max_qp_allowed       = avctx->qmax;
--        param->min_qp_allowed       = avctx->qmin;
--    }
--
--    param->intra_refresh_type       = 2; /* Real keyframes only */
--
--    if (svt_enc->la_depth >= 0)
--        param->look_ahead_distance  = svt_enc->la_depth;
--
--    param->tile_columns = svt_enc->tile_columns;
--    param->tile_rows    = svt_enc->tile_rows;
--
-     return 0;
- }
- 
-@@ -330,11 +423,8 @@ static int eb_send_frame(AVCodecContext *avctx, const 
-         if (svt_enc->eos_flag == EOS_SENT)
-             return 0;
- 
--        headerPtrLast.n_alloc_len   = 0;
--        headerPtrLast.n_filled_len  = 0;
--        headerPtrLast.n_tick_count  = 0;
--        headerPtrLast.p_app_private = NULL;
--        headerPtrLast.p_buffer      = NULL;
-+        memset(&headerPtrLast, 0, sizeof(headerPtrLast));
-+        headerPtrLast.pic_type      = EB_AV1_INVALID_PICTURE;
-         headerPtrLast.flags         = EB_BUFFERFLAG_EOS;
- 
-         svt_av1_enc_send_picture(svt_enc->svt_handle, &headerPtrLast);
-@@ -350,6 +440,16 @@ static int eb_send_frame(AVCodecContext *avctx, const 
-     headerPtr->p_app_private = NULL;
-     headerPtr->pts           = frame->pts;
- 
-+    switch (frame->pict_type) {
-+    case AV_PICTURE_TYPE_I:
-+        headerPtr->pic_type = EB_AV1_KEY_PICTURE;
-+        break;
-+    default:
-+        // Actually means auto, or default.
-+        headerPtr->pic_type = EB_AV1_INVALID_PICTURE;
-+        break;
-+    }
-+
-     svt_av1_enc_send_picture(svt_enc->svt_handle, headerPtr);
- 
-     return 0;
-@@ -472,21 +572,22 @@ static const AVOption options[] = {
- #define OFFSET(x) offsetof(SvtContext, x)
- #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
- static const AVOption options[] = {
--    { "hielevel", "Hierarchical prediction levels setting", OFFSET(hierarchical_level),
--      AV_OPT_TYPE_INT, { .i64 = 4 }, 3, 4, VE , "hielevel"},
-+#if FF_API_SVTAV1_OPTS
-+    { "hielevel", "Hierarchical prediction levels setting (Deprecated, use svtav1-params)", OFFSET(hierarchical_level),
-+      AV_OPT_TYPE_INT, { .i64 = 4 }, 3, 4, VE | AV_OPT_FLAG_DEPRECATED , "hielevel"},
-         { "3level", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 3 },  INT_MIN, INT_MAX, VE, "hielevel" },
-         { "4level", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 4 },  INT_MIN, INT_MAX, VE, "hielevel" },
- 
--    { "la_depth", "Look ahead distance [0, 120]", OFFSET(la_depth),
--      AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 120, VE },
-+    { "la_depth", "Look ahead distance [0, 120] (Deprecated, use svtav1-params)", OFFSET(la_depth),
-+      AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 120, VE | AV_OPT_FLAG_DEPRECATED },
- 
--    { "preset", "Encoding preset [0, 8]",
--      OFFSET(enc_mode), AV_OPT_TYPE_INT, { .i64 = MAX_ENC_PRESET }, 0, MAX_ENC_PRESET, VE },
--
--    { "tier", "Set operating point tier", OFFSET(tier),
--      AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE, "tier" },
-+    { "tier", "Set operating point tier (Deprecated, use svtav1-params)", OFFSET(tier),
-+      AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE | AV_OPT_FLAG_DEPRECATED, "tier" },
-         { "main", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, VE, "tier" },
-         { "high", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, VE, "tier" },
-+#endif
-+    { "preset", "Encoding preset",
-+      OFFSET(enc_mode), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, MAX_ENC_PRESET, VE },
- 
-     FF_AV1_PROFILE_OPTS
- 
-@@ -518,21 +619,20 @@ static const AVOption options[] = {
-         { LEVEL("7.3", 73) },
- #undef LEVEL
- 
--    { "rc", "Bit rate control mode", OFFSET(rc_mode),
--      AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 3, VE , "rc"},
--        { "cqp", "Constant quantizer", 0, AV_OPT_TYPE_CONST, { .i64 = 0 },  INT_MIN, INT_MAX, VE, "rc" },
--        { "vbr", "Variable Bit Rate, use a target bitrate for the entire stream", 0, AV_OPT_TYPE_CONST, { .i64 = 1 },  INT_MIN, INT_MAX, VE, "rc" },
--        { "cvbr", "Constrained Variable Bit Rate, use a target bitrate for each GOP", 0, AV_OPT_TYPE_CONST,{ .i64 = 2 },  INT_MIN, INT_MAX, VE, "rc" },
-+    { "crf", "Constant Rate Factor value", OFFSET(crf),
-+      AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 63, VE },
-+    { "qp", "Initial Quantizer level value", OFFSET(qp),
-+      AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 63, VE },
-+#if FF_API_SVTAV1_OPTS
-+    { "sc_detection", "Scene change detection (Deprecated, use svtav1-params)", OFFSET(scd),
-+      AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE | AV_OPT_FLAG_DEPRECATED },
- 
--    { "qp", "Quantizer to use with cqp rate control mode", OFFSET(qp),
--      AV_OPT_TYPE_INT, { .i64 = 50 }, 0, 63, VE },
-+    { "tile_columns", "Log2 of number of tile columns to use (Deprecated, use svtav1-params)", OFFSET(tile_columns), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 4, VE | AV_OPT_FLAG_DEPRECATED },
-+    { "tile_rows", "Log2 of number of tile rows to use (Deprecated, use svtav1-params)", OFFSET(tile_rows), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 6, VE | AV_OPT_FLAG_DEPRECATED },
-+#endif
- 
--    { "sc_detection", "Scene change detection", OFFSET(scd),
--      AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE },
-+    { "svtav1-params", "Set the SVT-AV1 configuration using a :-separated list of key=value parameters", OFFSET(svtav1_opts), AV_OPT_TYPE_DICT, { 0 }, 0, 0, VE },
- 
--    { "tile_columns", "Log2 of number of tile columns to use", OFFSET(tile_columns), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 4, VE},
--    { "tile_rows", "Log2 of number of tile rows to use", OFFSET(tile_rows), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 6, VE},
--
-     {NULL},
- };
- 
-@@ -544,9 +644,10 @@ static const AVCodecDefault eb_enc_defaults[] = {
- };
- 
- static const AVCodecDefault eb_enc_defaults[] = {
--    { "b",         "7M"    },
-+    { "b",         "0"    },
-+    { "flags",     "+cgop" },
-     { "g",         "-1"    },
--    { "qmin",      "0"     },
-+    { "qmin",      "1"     },
-     { "qmax",      "63"    },
-     { NULL },
- };
-@@ -561,12 +662,11 @@ AVCodec ff_libsvtav1_encoder = {
-     .receive_packet = eb_receive_packet,
-     .close          = eb_enc_close,
-     .capabilities   = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_OTHER_THREADS,
--    .caps_internal  = FF_CODEC_CAP_AUTO_THREADS,
-+    .caps_internal  = FF_CODEC_CAP_AUTO_THREADS | FF_CODEC_CAP_INIT_CLEANUP,
-     .pix_fmts       = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P,
-                                                     AV_PIX_FMT_YUV420P10,
-                                                     AV_PIX_FMT_NONE },
-     .priv_class     = &class,
-     .defaults       = eb_enc_defaults,
--    .caps_internal  = FF_CODEC_CAP_INIT_CLEANUP,
-     .wrapper_name   = "libsvtav1",
- };
---- libavcodec/version.h.orig	2021-10-24 20:47:07 UTC
-+++ libavcodec/version.h
-@@ -168,5 +168,8 @@
- #ifndef FF_API_INIT_PACKET
- #define FF_API_INIT_PACKET         (LIBAVCODEC_VERSION_MAJOR < 60)
- #endif
-+#ifndef FF_API_SVTAV1_OPTS
-+#define FF_API_SVTAV1_OPTS         (LIBAVCODEC_VERSION_MAJOR < 60)
-+#endif
- 
- #endif /* AVCODEC_VERSION_H */
diff --git a/multimedia/ffmpeg/files/patch-vmaf b/multimedia/ffmpeg/files/patch-vmaf
deleted file mode 100644
index abe772274d3c..000000000000
--- a/multimedia/ffmpeg/files/patch-vmaf
+++ /dev/null
@@ -1,951 +0,0 @@
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commitdiff/3d29724c008d
-
---- configure.orig	2021-10-24 20:47:11 UTC
-+++ configure
-@@ -3663,7 +3663,7 @@ vidstabtransform_filter_deps="libvidstab"
- vaguedenoiser_filter_deps="gpl"
- vidstabdetect_filter_deps="libvidstab"
- vidstabtransform_filter_deps="libvidstab"
--libvmaf_filter_deps="libvmaf pthreads"
-+libvmaf_filter_deps="libvmaf"
- zmq_filter_deps="libzmq"
- zoompan_filter_deps="swscale"
- zscale_filter_deps="libzimg const_nan"
-@@ -6441,7 +6441,7 @@ enabled libvidstab        && require_pkg_config libvid
- enabled libuavs3d         && require_pkg_config libuavs3d "uavs3d >= 1.1.41" uavs3d.h uavs3d_decode
- enabled libv4l2           && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl
- enabled libvidstab        && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
--enabled libvmaf           && require_pkg_config libvmaf "libvmaf >= 1.5.2" libvmaf.h compute_vmaf
-+enabled libvmaf           && require_pkg_config libvmaf "libvmaf >= 2.0.0" libvmaf.h vmaf_init
- enabled libvo_amrwbenc    && require libvo_amrwbenc vo-amrwbenc/enc_if.h E_IF_init -lvo-amrwbenc
- enabled libvorbis         && require_pkg_config libvorbis vorbis vorbis/codec.h vorbis_info_init &&
-                              require_pkg_config libvorbisenc vorbisenc vorbis/vorbisenc.h vorbis_encode_init
---- doc/filters.texi.orig	2021-10-24 20:47:07 UTC
-+++ doc/filters.texi
-@@ -13867,66 +13867,58 @@ ffmpeg -i input.mov -vf lensfun=make=Canon:model="Cano
- 
- @section libvmaf
- 
--Obtain the VMAF (Video Multi-Method Assessment Fusion)
--score between two input videos.
-+Calulate the VMAF (Video Multi-Method Assessment Fusion) score for a
-+reference/distorted pair of input videos.
- 
- The obtained VMAF score is printed through the logging system.
- 
- It requires Netflix's vmaf library (libvmaf) as a pre-requisite.
- After installing the library it can be enabled using:
- @code{./configure --enable-libvmaf}.
--If no model path is specified it uses the default model: @code{vmaf_v0.6.1.pkl}.
- 
- The filter has following options:
- 
- @table @option
-+@item model
-+A `|` delimited list of vmaf models. Each model can be configured with a number of parameters.
-+Default value: @code{"version=vmaf_v0.6.1"}
-+
- @item model_path
--Set the model path which is to be used for SVM.
--Default value: @code{"/usr/local/share/model/vmaf_v0.6.1.pkl"}
-+Deprecated, use model='path=...'.
- 
--@item log_path
--Set the file path to be used to store logs.
--
--@item log_fmt
--Set the format of the log file (csv, json or xml).
--
- @item enable_transform
--This option can enable/disable the @code{score_transform} applied to the final predicted VMAF score,
--if you have specified score_transform option in the input parameter file passed to @code{run_vmaf_training.py}
--Default value: @code{false}
-+Deprecated, use model='enable_transform=true'.
- 
- @item phone_model
--Invokes the phone model which will generate VMAF scores higher than in the
--regular model, which is more suitable for laptop, TV, etc. viewing conditions.
--Default value: @code{false}
-+Deprecated, use model='enable_transform=true'.
- 
-+@item enable_conf_interval
-+Deprecated, use model='enable_conf_interval=true'.
-+
-+@item feature
-+A `|` delimited list of features. Each feature can be configured with a number of parameters.
-+
- @item psnr
--Enables computing psnr along with vmaf.
--Default value: @code{false}
-+Deprecated, use feature='name=psnr'.
- 
- @item ssim
--Enables computing ssim along with vmaf.
--Default value: @code{false}
-+Deprecated, use feature='name=ssim'.
- 
- @item ms_ssim
--Enables computing ms_ssim along with vmaf.
--Default value: @code{false}
-+Deprecated, use feature='name=ms_ssim'.
- 
--@item pool
--Set the pool method to be used for computing vmaf.
--Options are @code{min}, @code{harmonic_mean} or @code{mean} (default).
-+@item log_path
-+Set the file path to be used to store log files.
- 
-+@item log_fmt
-+Set the format of the log file (xml, json, csv, or sub).
-+
- @item n_threads
--Set number of threads to be used when computing vmaf.
--Default value: @code{0}, which makes use of all available logical processors.
-+Set number of threads to be used when initializing libvmaf.
-+Default value: @code{0}, no threads.
- 
- @item n_subsample
--Set interval for frame subsampling used when computing vmaf.
--Default value: @code{1}
--
--@item enable_conf_interval
--Enables confidence interval.
--Default value: @code{false}
-+Set frame subsampling interval to be used.
- @end table
- 
- This filter also supports the @ref{framesync} options.
-@@ -13934,23 +13926,31 @@ This filter also supports the @ref{framesync} options.
- @subsection Examples
- @itemize
- @item
--On the below examples the input file @file{main.mpg} being processed is
--compared with the reference file @file{ref.mpg}.
-+In the examples below, a distorted video @file{distorted.mpg} is
-+compared with a reference file @file{reference.mpg}.
- 
-+@item
-+Basic usage:
- @example
--ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf -f null -
-+ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf=log_path=output.xml -f null -
- @end example
- 
- @item
--Example with options:
-+Example with multiple models:
- @example
--ffmpeg -i main.mpg -i ref.mpg -lavfi libvmaf="psnr=1:log_fmt=json" -f null -
-+ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='model=version=vmaf_v0.6.1\\:name=vmaf|version=vmaf_v0.6.1neg\\:name=vmaf_neg' -f null -
- @end example
- 
- @item
-+Example with multiple addtional features:
-+@example
-+ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='feature=name=psnr|name=ciede' -f null -
-+@end example
-+
-+@item
- Example with options and different containers:
- @example
--ffmpeg -i main.mpg -i ref.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=psnr=1:log_fmt=json" -f null -
-+ffmpeg -i distorted.mpg -i reference.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=log_fmt=json:log_path=output.json" -f null -
- @end example
- @end itemize
- 
---- libavfilter/vf_libvmaf.c.orig	2021-10-24 20:47:07 UTC
-+++ libavfilter/vf_libvmaf.c
-@@ -24,8 +24,8 @@
-  * Calculate the VMAF between two input videos.
-  */
- 
--#include <pthread.h>
- #include <libvmaf.h>
-+
- #include "libavutil/avstring.h"
- #include "libavutil/opt.h"
- #include "libavutil/pixdesc.h"
-@@ -39,23 +39,9 @@ typedef struct LIBVMAFContext {
- typedef struct LIBVMAFContext {
-     const AVClass *class;
-     FFFrameSync fs;
--    const AVPixFmtDescriptor *desc;
--    int width;
--    int height;
--    double vmaf_score;
--    int vmaf_thread_created;
--    pthread_t vmaf_thread;
--    pthread_mutex_t lock;
--    pthread_cond_t cond;
--    int eof;
--    AVFrame *gmain;
--    AVFrame *gref;
--    int frame_set;
-     char *model_path;
-     char *log_path;
-     char *log_fmt;
--    int disable_clip;
--    int disable_avx;
-     int enable_transform;
-     int phone_model;
-     int psnr;
-@@ -65,185 +51,488 @@ typedef struct LIBVMAFContext {
-     int n_threads;
-     int n_subsample;
-     int enable_conf_interval;
--    int error;
-+    char *model_cfg;
-+    char *feature_cfg;
-+    VmafContext *vmaf;
-+    VmafModel **model;
-+    unsigned model_cnt;
-+    unsigned frame_cnt;
-+    unsigned bpc;
- } LIBVMAFContext;
- 
- #define OFFSET(x) offsetof(LIBVMAFContext, x)
- #define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
- 
- static const AVOption libvmaf_options[] = {
--    {"model_path",  "Set the model to be used for computing vmaf.",                     OFFSET(model_path), AV_OPT_TYPE_STRING, {.str="/usr/local/share/model/vmaf_v0.6.1.pkl"}, 0, 1, FLAGS},
--    {"log_path",  "Set the file path to be used to store logs.",                        OFFSET(log_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
--    {"log_fmt",  "Set the format of the log (csv, json or xml).",                       OFFSET(log_fmt), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
--    {"enable_transform",  "Enables transform for computing vmaf.",                      OFFSET(enable_transform), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
--    {"phone_model",  "Invokes the phone model that will generate higher VMAF scores.",  OFFSET(phone_model), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
--    {"psnr",  "Enables computing psnr along with vmaf.",                                OFFSET(psnr), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
--    {"ssim",  "Enables computing ssim along with vmaf.",                                OFFSET(ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
--    {"ms_ssim",  "Enables computing ms-ssim along with vmaf.",                          OFFSET(ms_ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
-+    {"model_path",  "use model='path=...'.",                                            OFFSET(model_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS|AV_OPT_FLAG_DEPRECATED},
-+    {"log_path",  "Set the file path to be used to write log.",                         OFFSET(log_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
-+    {"log_fmt",  "Set the format of the log (csv, json, xml, or sub).",                 OFFSET(log_fmt), AV_OPT_TYPE_STRING, {.str="xml"}, 0, 1, FLAGS},
-+    {"enable_transform",  "use model='enable_transform=true'.",                         OFFSET(enable_transform), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS|AV_OPT_FLAG_DEPRECATED},
-+    {"phone_model",  "use model='enable_transform=true'.",                              OFFSET(phone_model), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS|AV_OPT_FLAG_DEPRECATED},
-+    {"psnr",  "use feature='name=psnr'.",                                               OFFSET(psnr), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS|AV_OPT_FLAG_DEPRECATED},
-+    {"ssim",  "use feature='name=ssim'.",                                               OFFSET(ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS|AV_OPT_FLAG_DEPRECATED},
-+    {"ms_ssim",  "use feature='name=ms_ssim'.",                                         OFFSET(ms_ssim), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS|AV_OPT_FLAG_DEPRECATED},
-     {"pool",  "Set the pool method to be used for computing vmaf.",                     OFFSET(pool), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
-     {"n_threads", "Set number of threads to be used when computing vmaf.",              OFFSET(n_threads), AV_OPT_TYPE_INT, {.i64=0}, 0, UINT_MAX, FLAGS},
-     {"n_subsample", "Set interval for frame subsampling used when computing vmaf.",     OFFSET(n_subsample), AV_OPT_TYPE_INT, {.i64=1}, 1, UINT_MAX, FLAGS},
--    {"enable_conf_interval",  "Enables confidence interval.",                           OFFSET(enable_conf_interval), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
-+    {"enable_conf_interval",  "model='enable_conf_interval=true'.",                     OFFSET(enable_conf_interval), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS|AV_OPT_FLAG_DEPRECATED},
-+    {"model",  "Set the model to be used for computing vmaf.",                          OFFSET(model_cfg), AV_OPT_TYPE_STRING, {.str="version=vmaf_v0.6.1"}, 0, 1, FLAGS},
-+    {"feature",  "Set the feature to be used for computing vmaf.",                      OFFSET(feature_cfg), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
-     { NULL }
- };
- 
- FRAMESYNC_DEFINE_CLASS(libvmaf, LIBVMAFContext, fs);
- 
--#define read_frame_fn(type, bits)                                               \
--    static int read_frame_##bits##bit(float *ref_data, float *main_data,        \
--                                      float *temp_data, int stride, void *ctx)  \
--{                                                                               \
--    LIBVMAFContext *s = (LIBVMAFContext *) ctx;                                 \
--    int ret;                                                                    \
--    \
--    pthread_mutex_lock(&s->lock);                                               \
--    \
--    while (!s->frame_set && !s->eof) {                                          \
--        pthread_cond_wait(&s->cond, &s->lock);                                  \
--    }                                                                           \
--    \
--    if (s->frame_set) {                                                         \
--        int ref_stride = s->gref->linesize[0];                                  \
--        int main_stride = s->gmain->linesize[0];                                \
--        \
--        const type *ref_ptr = (const type *) s->gref->data[0];                  \
--        const type *main_ptr = (const type *) s->gmain->data[0];                \
--        \
--        float *ptr = ref_data;                                                  \
--        float factor = 1.f / (1 << (bits - 8));                                 \
--        \
--        int h = s->height;                                                      \
--        int w = s->width;                                                       \
--        \
--        int i,j;                                                                \
--        \
--        for (i = 0; i < h; i++) {                                               \
--            for ( j = 0; j < w; j++) {                                          \
--                ptr[j] = ref_ptr[j] * factor;                                   \
--            }                                                                   \
--            ref_ptr += ref_stride / sizeof(*ref_ptr);                           \
--            ptr += stride / sizeof(*ptr);                                       \
--        }                                                                       \
--        \
--        ptr = main_data;                                                        \
--        \
--        for (i = 0; i < h; i++) {                                               \
--            for (j = 0; j < w; j++) {                                           \
--                ptr[j] = main_ptr[j] * factor;                                  \
--            }                                                                   \
--            main_ptr += main_stride / sizeof(*main_ptr);                        \
--            ptr += stride / sizeof(*ptr);                                       \
--        }                                                                       \
--    }                                                                           \
--    \
--    ret = !s->frame_set;                                                        \
--    \
--    av_frame_unref(s->gref);                                                    \
--    av_frame_unref(s->gmain);                                                   \
--    s->frame_set = 0;                                                           \
--    \
--    pthread_cond_signal(&s->cond);                                              \
--    pthread_mutex_unlock(&s->lock);                                             \
--    \
--    if (ret) {                                                                  \
--        return 2;                                                               \
--    }                                                                           \
--    \
--    return 0;                                                                   \
-+static enum VmafPixelFormat pix_fmt_map(enum AVPixelFormat av_pix_fmt)
-+{
-+    switch (av_pix_fmt) {
-+    case AV_PIX_FMT_YUV420P:
-+    case AV_PIX_FMT_YUV420P10LE:
-+    case AV_PIX_FMT_YUV420P12LE:
-+    case AV_PIX_FMT_YUV420P16LE:
-+        return VMAF_PIX_FMT_YUV420P;
-+    case AV_PIX_FMT_YUV422P:
-+    case AV_PIX_FMT_YUV422P10LE:
-+    case AV_PIX_FMT_YUV422P12LE:
-+    case AV_PIX_FMT_YUV422P16LE:
-+        return VMAF_PIX_FMT_YUV422P;
-+    case AV_PIX_FMT_YUV444P:
-+    case AV_PIX_FMT_YUV444P10LE:
-+    case AV_PIX_FMT_YUV444P12LE:
-+    case AV_PIX_FMT_YUV444P16LE:
-+        return VMAF_PIX_FMT_YUV444P;
-+    default:
-+        return VMAF_PIX_FMT_UNKNOWN;
-+    }
- }
*** 802 LINES SKIPPED ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202304271203.33RC3lWx045938>