git: 17614c8f9266 - main - multimedia/handbrake: Update 1.7.2 → 1.9.0

From: Vladimir Druzenko <vvd_at_FreeBSD.org>
Date: Mon, 13 Jan 2025 17:24:47 UTC
The branch main has been updated by vvd:

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

commit 17614c8f9266ab35ecad4fca289495d05f253287
Author:     Yuichiro NAITO <naito.yuichiro@gmail.com>
AuthorDate: 2025-01-13 17:15:35 +0000
Commit:     Vladimir Druzenko <vvd@FreeBSD.org>
CommitDate: 2025-01-13 17:24:31 +0000

    multimedia/handbrake: Update 1.7.2 → 1.9.0
    
    Changelogs:
    https://github.com/HandBrake/HandBrake/releases/tag/1.7.3
    https://github.com/HandBrake/HandBrake/releases/tag/1.8.0
    https://github.com/HandBrake/HandBrake/releases/tag/1.8.1
    https://github.com/HandBrake/HandBrake/releases/tag/1.8.2
    https://github.com/HandBrake/HandBrake/releases/tag/1.9.0
    
    Improve port:
    * add required dependencies;
    * remove unnecessary dependencies;
    * fix link command-line tool HandBrakeCLI with libX11;
    * fix warnings from portclippy.
    
    PR:     277355
---
 multimedia/handbrake/Makefile                      |  60 +++++------
 multimedia/handbrake/distinfo                      |  26 ++---
 .../files/patch-contrib_ffmpeg_module.defs         |  10 +-
 multimedia/handbrake/files/patch-libhb_enc__qsv.c  |  67 ++++++++++++
 .../files/patch-libhb_handbrake_qsv__common.h      |  12 +++
 .../handbrake/files/patch-libhb_qsv__common.c      | 120 +++++++++++++++++++++
 6 files changed, 245 insertions(+), 50 deletions(-)

diff --git a/multimedia/handbrake/Makefile b/multimedia/handbrake/Makefile
index 30d42bb84bda..96d8ca094e49 100644
--- a/multimedia/handbrake/Makefile
+++ b/multimedia/handbrake/Makefile
@@ -1,9 +1,9 @@
 PORTNAME=	handbrake
-DISTVERSION=	1.7.2
-PORTREVISION=	2
+DISTVERSION=	1.9.0
 CATEGORIES=	multimedia
 MASTER_SITES=	https://github.com/HandBrake/HandBrake/releases/download/${DISTVERSION}/
 MASTER_SITES+=	https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/:contrib
+MASTER_SITES+=	https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs2/:contrib
 DISTNAME=	HandBrake-${DISTVERSION}
 DISTFILES=	${DISTNAME}-source.tar.bz2 ${CONTRIB_FILES:S/$/:contrib/}
 DIST_SUBDIR=	${PORTNAME}
@@ -12,8 +12,11 @@ MAINTAINER=	naito.yuichiro@gmail.com
 COMMENT=	Versatile DVD ripper and video transcoder
 WWW=		https://handbrake.fr/
 
-LICENSE=	GPLv2
-LICENSE_FILE=	${WRKSRC}/COPYING
+LICENSE=		GPLv2
+LICENSE_NAME_FDK_AAC=	Software License for The Fraunhofer FDK AAC Codec Library for Android
+LICENSE_FILE_FDK_AAC=	${WRKDIR}/${DISTFILES:Mfdk*:R:R}/NOTICE
+LICENSE_FILE=		${WRKSRC}/COPYING
+LICENSE_PERMS_FDK_AAC=	dist-mirror pkg-mirror auto-accept
 
 ONLY_FOR_ARCHS=	amd64 powerpc powerpc64 powerpc64le
 
@@ -23,11 +26,7 @@ BUILD_DEPENDS=	bash:shells/bash \
 		meson:devel/meson \
 		git:devel/git@lite
 LIB_DEPENDS=	libdbus-1.so:devel/dbus \
-		libgudev-1.0.so:devel/libgudev \
-		libharfbuzz.so:print/harfbuzz \
-		libfontconfig.so:x11-fonts/fontconfig \
-		libfreetype.so:print/freetype2 \
-		libfribidi.so:converters/fribidi \
+		libdrm.so:graphics/libdrm \
 		libturbojpeg.so:graphics/libjpeg-turbo \
 		libass.so:multimedia/libass \
 		libspeex.so:audio/speex \
@@ -42,19 +41,18 @@ LIB_DEPENDS=	libdbus-1.so:devel/dbus \
 		libopus.so:audio/opus \
 		libjansson.so:devel/jansson
 
-USES=		autoreconf:build compiler:c11 gmake gnome iconv libtool:build \
+USES=		autoreconf:build compiler:c11 gmake iconv libtool:build \
 		localbase:ldflags ninja:build pkgconfig python:build
-USE_GNOME=	libxml2
 
-CONTRIB_FILES=	SVT-AV1-v1.7.0.tar.gz \
-		fdk-aac-2.0.2.tar.gz \
-		ffmpeg-6.1.tar.bz2 \
+CONTRIB_FILES=	SVT-AV1-v2.3.0.tar.gz \
+		fdk-aac-2.0.3.tar.gz \
+		ffmpeg-7.1.tar.bz2 \
 		libbluray-1.3.4.tar.bz2 \
 		libdvdnav-6.1.1.tar.bz2 \
 		libdvdread-6.1.3.tar.bz2 \
-		dav1d-1.3.0.tar.bz2 \
+		dav1d-1.5.0.tar.bz2 \
 		dovi_tool-libdovi-3.1.2.tar.gz \
-		x265-snapshot-20230403-12776.tar.gz \
+		x265_4.1.tar.gz \
 		zimg-3.0.5.tar.gz
 
 .if !defined(PACKAGE_BUILDING)
@@ -63,24 +61,24 @@ LIB_DEPENDS+=	libdvdcss.so:multimedia/libdvdcss
 .endif
 
 GNU_CONFIGURE=	yes
-MAKE_ENV=	V=1 ACLOCAL=${LOCALBASE}/bin/aclocal
-
-BINARY_ALIAS=	python3=${PYTHON_VERSION}
 
 CONFIGURE_ARGS=	--force --enable-x265
 CONFIGURE_TARGET=	build
 
-BUILD_WRKSRC=	${WRKSRC}/build
-INSTALL_WRKSRC=	${WRKSRC}/build
 MAKEFILE=	GNUmakefile
+MAKE_ENV=	V=1 ACLOCAL=${LOCALBASE}/bin/aclocal
 ALL_TARGET=	#
 INSTALL_TARGET=	install-strip
 
-NOPRECIOUSMAKEVARS=	yes			# for ffmpeg and x264
-
 # Enforce linking to bundled libraries instead of system libraries
 LDFLAGS+=	-L${BUILD_WRKSRC}/contrib/lib
 
+BINARY_ALIAS=	python3=${PYTHON_VERSION}
+NOPRECIOUSMAKEVARS=	yes			# for ffmpeg and x264
+
+BUILD_WRKSRC=	${WRKSRC}/build
+INSTALL_WRKSRC=	${WRKSRC}/build
+
 OPTIONS_DEFINE=		FDK_AAC VPL X11
 OPTIONS_DEFAULT=	VPL X11
 OPTIONS_EXCLUDE_powerpc=	VPL
@@ -95,23 +93,19 @@ X11_DESC=	Build GTK 3 based GUI program
 
 FDK_AAC_CONFIGURE_ENABLE=	fdk-aac
 FDK_AAC_VARS=			LICENSE+=FDK_AAC LICENSE_COMB=multi
-LICENSE_NAME_FDK_AAC=		Software License for The Fraunhofer FDK AAC Codec Library for Android
-LICENSE_FILE_FDK_AAC=		${WRKDIR}/${DISTFILES:Mfdk*:R:R}/NOTICE
-LICENSE_PERMS_FDK_AAC=		dist-mirror pkg-mirror auto-accept
 
 VPL_LIB_DEPENDS=	libvpl.so:multimedia/onevpl \
 			libmfx.so:multimedia/intel-media-sdk \
 			libva-drm.so:multimedia/libva
 VPL_CONFIGURE_ON=	--enable-qsv
 
-X11_CONFIGURE_ENV=	COMPILER_PATH=${LOCALBASE}/bin
-X11_MAKE_ENV=	COMPILER_PATH=${LOCALBASE}/bin
+X11_LIB_DEPENDS=	libvpx.so:multimedia/libvpx
+X11_USES=		gettext desktop-file-utils gnome gstreamer
+X11_USE=		gstreamer=gdkpixbuf,libav \
+			gnome=gtk40,intltool,cairo,gdkpixbuf2,libxml2
 X11_CONFIGURE_OFF=	--disable-gtk
-X11_LIB_DEPENDS=	libvpx.so:multimedia/libvpx \
-			libnotify.so:devel/libnotify
-X11_USES=	gettext desktop-file-utils gnome gstreamer
-X11_USE=	gstreamer=gdkpixbuf,libav \
-		gnome=gtk30,intltool,cairo,gdkpixbuf2
+X11_CONFIGURE_ENV=	COMPILER_PATH=${LOCALBASE}/bin
+X11_MAKE_ENV=		COMPILER_PATH=${LOCALBASE}/bin
 
 # HandBrake tries to fetch its dependencies during build phase, which is not
 # considered good in FreeBSD.  Instead, we will provide the downloaded files.
diff --git a/multimedia/handbrake/distinfo b/multimedia/handbrake/distinfo
index 1028ff6dcb1f..9c04ae4d9f9f 100644
--- a/multimedia/handbrake/distinfo
+++ b/multimedia/handbrake/distinfo
@@ -1,23 +1,23 @@
-TIMESTAMP = 1703662528
-SHA256 (handbrake/HandBrake-1.7.2-source.tar.bz2) = 6a0fa23420483a2d74e58f0ad9944931d8f2e65bee63cf17333cbd9cb560ba93
-SIZE (handbrake/HandBrake-1.7.2-source.tar.bz2) = 9429824
-SHA256 (handbrake/SVT-AV1-v1.7.0.tar.gz) = ce0973584f1a187aa4abf63f509ff8464397120878e322a3153f87e9c161fc4f
-SIZE (handbrake/SVT-AV1-v1.7.0.tar.gz) = 10164910
-SHA256 (handbrake/fdk-aac-2.0.2.tar.gz) = 7812b4f0cf66acda0d0fe4302545339517e702af7674dd04e5fe22a5ade16a90
-SIZE (handbrake/fdk-aac-2.0.2.tar.gz) = 2506597
-SHA256 (handbrake/ffmpeg-6.1.tar.bz2) = eb7da3de7dd3ce48a9946ab447a7346bd11a3a85e6efb8f2c2ce637e7f547611
-SIZE (handbrake/ffmpeg-6.1.tar.bz2) = 12637240
+TIMESTAMP = 1734051770
+SHA256 (handbrake/HandBrake-1.9.0-source.tar.bz2) = c15b451502f5c938798595df897a41290e8881b3efb8edd69ff7db2d985733b0
+SIZE (handbrake/HandBrake-1.9.0-source.tar.bz2) = 9427823
+SHA256 (handbrake/SVT-AV1-v2.3.0.tar.gz) = ebb0b484ef4a0dc281e94342a9f73ad458496f5d3457eca7465bec943910c6c3
+SIZE (handbrake/SVT-AV1-v2.3.0.tar.gz) = 10839376
+SHA256 (handbrake/fdk-aac-2.0.3.tar.gz) = e25671cd96b10bad896aa42ab91a695a9e573395262baed4e4a2ff178d6a3a78
+SIZE (handbrake/fdk-aac-2.0.3.tar.gz) = 2518649
+SHA256 (handbrake/ffmpeg-7.1.tar.bz2) = fd59e6160476095082e94150ada5a6032d7dcc282fe38ce682a00c18e7820528
+SIZE (handbrake/ffmpeg-7.1.tar.bz2) = 13260188
 SHA256 (handbrake/libbluray-1.3.4.tar.bz2) = 478ffd68a0f5dde8ef6ca989b7f035b5a0a22c599142e5cd3ff7b03bbebe5f2b
 SIZE (handbrake/libbluray-1.3.4.tar.bz2) = 756323
 SHA256 (handbrake/libdvdnav-6.1.1.tar.bz2) = c191a7475947d323ff7680cf92c0fb1be8237701885f37656c64d04e98d18d48
 SIZE (handbrake/libdvdnav-6.1.1.tar.bz2) = 367606
 SHA256 (handbrake/libdvdread-6.1.3.tar.bz2) = ce35454997a208cbe50e91232f0e73fb1ac3471965813a13b8730a8f18a15369
 SIZE (handbrake/libdvdread-6.1.3.tar.bz2) = 395439
-SHA256 (handbrake/dav1d-1.3.0.tar.bz2) = bde8db3d0583a4f3733bb5a4ac525556ffd03ab7dcd8a6e7c091bee28d9466b1
-SIZE (handbrake/dav1d-1.3.0.tar.bz2) = 1033699
+SHA256 (handbrake/dav1d-1.5.0.tar.bz2) = a6ca64e34cec56ae1c2d359e1da5c5386ecd7a3a62f931d026ac4f2ff72ade64
+SIZE (handbrake/dav1d-1.5.0.tar.bz2) = 1211046
 SHA256 (handbrake/dovi_tool-libdovi-3.1.2.tar.gz) = 3c74f8f6afdb7d4be97210df201a28a48676b2ebe10c20961176e81e2fd98c36
 SIZE (handbrake/dovi_tool-libdovi-3.1.2.tar.gz) = 450556
-SHA256 (handbrake/x265-snapshot-20230403-12776.tar.gz) = 23898695c5520e9e971d12e88125d5ad03ad67f462fc8ecaa016b48adad7cb20
-SIZE (handbrake/x265-snapshot-20230403-12776.tar.gz) = 1622414
+SHA256 (handbrake/x265_4.1.tar.gz) = ef05940bdbf8e2f24c93d799ae8c5d19f43cd235d01c17fa5acf3fa77b48c032
+SIZE (handbrake/x265_4.1.tar.gz) = 1722231
 SHA256 (handbrake/zimg-3.0.5.tar.gz) = a9a0226bf85e0d83c41a8ebe4e3e690e1348682f6a2a7838f1b8cbff1b799bcf
 SIZE (handbrake/zimg-3.0.5.tar.gz) = 326694
diff --git a/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs b/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs
index bc0f471efe37..178198ba7762 100644
--- a/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs
+++ b/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs
@@ -6,13 +6,15 @@ definitions has been removed since vulkan-headers-1.3.238.
 * VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME
 * VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME
 
---- contrib/ffmpeg/module.defs.orig	2022-12-28 08:43:46 UTC
+--- contrib/ffmpeg/module.defs.orig	2024-12-01 15:28:40 UTC
 +++ contrib/ffmpeg/module.defs
-@@ -37,6 +37,7 @@ FFMPEG.CONFIGURE.extra = \
-     --enable-libzimg \
+@@ -34,8 +34,10 @@ FFMPEG.CONFIGURE.extra = \
+     --enable-filters \
      --disable-hwaccels \
      --disable-vdpau \
 +    --disable-vulkan \
+     --disable-postproc \
      --disable-encoders \
++    --disable-xlib \
      --enable-libmp3lame \
-     --enable-encoder=aac \
+     --enable-encoder=ac3 \
diff --git a/multimedia/handbrake/files/patch-libhb_enc__qsv.c b/multimedia/handbrake/files/patch-libhb_enc__qsv.c
new file mode 100644
index 000000000000..51f61011c734
--- /dev/null
+++ b/multimedia/handbrake/files/patch-libhb_enc__qsv.c
@@ -0,0 +1,67 @@
+--- libhb/enc_qsv.c.orig	2024-12-01 15:28:40 UTC
++++ libhb/enc_qsv.c
+@@ -174,7 +174,9 @@ static int log_encoder_params(const hb_work_private_t 
+ {
+     const mfxExtCodingOption  *option1 = NULL;
+     const mfxExtCodingOption2 *option2 = NULL;
++#if (MFX_VERSION >= 2012)
+     const mfxExtAV1ScreenContentTools *extScreenContentCoding = NULL;
++#endif
+     const mfxExtHyperModeParam *extHyperModeOption = NULL;
+ 
+     for (int i = 0; i < videoParam->NumExtParam; i++)
+@@ -188,10 +190,12 @@ static int log_encoder_params(const hb_work_private_t 
+         {
+             option2 = (mfxExtCodingOption2*)videoParam->ExtParam[i];
+         }
++#if (MFX_VERSION >= 2012)
+         else if (option->Header.BufferId == MFX_EXTBUFF_AV1_SCREEN_CONTENT_TOOLS)
+         {
+             extScreenContentCoding = (mfxExtAV1ScreenContentTools*)videoParam->ExtParam[i];
+         }
++#endif
+         else if (option->Header.BufferId == MFX_EXTBUFF_HYPER_MODE_PARAM)
+         {
+             extHyperModeOption = (mfxExtHyperModeParam*)videoParam->ExtParam[i];
+@@ -221,13 +225,14 @@ static int log_encoder_params(const hb_work_private_t 
+     hb_log("encqsvInit: GopRefDist %"PRIu16" GopPicSize %"PRIu16" NumRefFrame %"PRIu16" IdrInterval %"PRIu16"",
+            videoParam->mfx.GopRefDist, videoParam->mfx.GopPicSize, videoParam->mfx.NumRefFrame, videoParam->mfx.IdrInterval);
+ 
++#if (MFX_VERSION >= 2012)
+     if (extScreenContentCoding && ((extScreenContentCoding->IntraBlockCopy == MFX_CODINGOPTION_ON) || (extScreenContentCoding->Palette == MFX_CODINGOPTION_ON)))
+     {
+         hb_log("encqsvInit: ScreenContentCoding is enabled IBC %s, Palette %s",
+             (extScreenContentCoding->IntraBlockCopy == MFX_CODINGOPTION_ON) ? "on" : "off",
+             (extScreenContentCoding->Palette == MFX_CODINGOPTION_ON) ? "on" : "off");
+     }
+-
++#endif
+     if (pv->qsv_info->capabilities & HB_QSV_CAP_B_REF_PYRAMID)
+     {
+         hb_log("encqsvInit: BFramesMax %d BRefType %s",
+@@ -1670,7 +1675,9 @@ int encqsvInit(hb_work_object_t *w, hb_job_t *job)
+     mfxSession session = (mfxSession)0;
+     mfxExtCodingOption  option1_buf, *option1 = &option1_buf;
+     mfxExtCodingOption2 option2_buf, *option2 = &option2_buf;
++#if (MFX_VERSION >= 2012)
+     mfxExtAV1ScreenContentTools screencont_coding_buf, *screencont_coding = &screencont_coding_buf;
++#endif
+     mfxExtCodingOptionSPSPPS sps_pps_buf, *sps_pps = &sps_pps_buf;
+     mfxExtAV1BitstreamParam av1_bitstream_buf, *av1_bitstream = &av1_bitstream_buf;
+     mfxExtChromaLocInfo chroma_loc_info_buf, *chroma_loc_info = &chroma_loc_info_buf;
+@@ -1795,6 +1802,7 @@ int encqsvInit(hb_work_object_t *w, hb_job_t *job)
+     {
+         videoParam.ExtParam[videoParam.NumExtParam++] = (mfxExtBuffer*)hyper_encode;
+     }
++#if (MFX_VERSION >= 2012)
+     memset(screencont_coding, 0, sizeof(mfxExtAV1ScreenContentTools));
+     screencont_coding->Header.BufferId = MFX_EXTBUFF_AV1_SCREEN_CONTENT_TOOLS;
+     screencont_coding->Header.BufferSz = sizeof(mfxExtAV1ScreenContentTools);
+@@ -1802,6 +1810,7 @@ int encqsvInit(hb_work_object_t *w, hb_job_t *job)
+     {
+         videoParam.ExtParam[videoParam.NumExtParam++] = (mfxExtBuffer*)screencont_coding;
+     }
++#endif
+     /* Query actual encoding parameters after MFXVideoENCODE_Init, some of them could be overridden */
+     sts = MFXVideoENCODE_GetVideoParam(session, &videoParam);
+     if (sts != MFX_ERR_NONE)
diff --git a/multimedia/handbrake/files/patch-libhb_handbrake_qsv__common.h b/multimedia/handbrake/files/patch-libhb_handbrake_qsv__common.h
new file mode 100644
index 000000000000..87c487304cad
--- /dev/null
+++ b/multimedia/handbrake/files/patch-libhb_handbrake_qsv__common.h
@@ -0,0 +1,12 @@
+--- libhb/handbrake/qsv_common.h.orig	2024-12-01 15:28:40 UTC
++++ libhb/handbrake/qsv_common.h
+@@ -171,7 +171,9 @@ typedef struct
+     mfxExtCodingOption2   codingOption2;
+     mfxExtVideoSignalInfo videoSignalInfo;
+     mfxExtHyperModeParam hyperEncodeParam;
++#if (MFX_VERSION >= 2012)
+     mfxExtAV1ScreenContentTools av1ScreenContentToolsParam;
++#endif
+     mfxExtChromaLocInfo   chromaLocInfo;
+     mfxExtMasteringDisplayColourVolume masteringDisplayColourVolume;
+     mfxExtContentLightLevelInfo        contentLightLevelInfo;
diff --git a/multimedia/handbrake/files/patch-libhb_qsv__common.c b/multimedia/handbrake/files/patch-libhb_qsv__common.c
new file mode 100644
index 000000000000..78580b06be46
--- /dev/null
+++ b/multimedia/handbrake/files/patch-libhb_qsv__common.c
@@ -0,0 +1,120 @@
+--- libhb/qsv_common.c.orig	2024-12-01 15:28:40 UTC
++++ libhb/qsv_common.c
+@@ -463,6 +463,7 @@ int qsv_map_mfx_platform_codename(int mfx_platform_cod
+     case MFX_PLATFORM_DG2:
+     case MFX_PLATFORM_ALDERLAKE_N:
+     case MFX_PLATFORM_KEEMBAY:
++#if (MFX_VERSION >= 2012)
+     case MFX_PLATFORM_METEORLAKE:
+     case MFX_PLATFORM_BATTLEMAGE:
+     case MFX_PLATFORM_ARROWLAKE:
+@@ -471,6 +472,7 @@ int qsv_map_mfx_platform_codename(int mfx_platform_cod
+     case MFX_PLATFORM_LUNARLAKE:
+         platform = HB_CPU_PLATFORM_INTEL_LNL;
+         break;
++#endif
+     default:
+         platform = HB_CPU_PLATFORM_UNSPECIFIED;
+     }
+@@ -984,7 +986,7 @@ static void init_ext_av1bitstream_option(mfxExtAV1Bits
+     extAV1BitstreamParam->Header.BufferSz = sizeof(mfxExtAV1BitstreamParam);
+     extAV1BitstreamParam->WriteIVFHeaders = MFX_CODINGOPTION_OFF;
+ }
+-
++#if (MFX_VERSION >= 2012)
+ static void init_ext_av1screencontent_tools(mfxExtAV1ScreenContentTools *extScreenContentTools)
+ {
+     if (extScreenContentTools == NULL)
+@@ -998,7 +1000,7 @@ static void init_ext_av1screencontent_tools(mfxExtAV1S
+     extScreenContentTools->IntraBlockCopy  = MFX_CODINGOPTION_OFF;
+     extScreenContentTools->Palette         = MFX_CODINGOPTION_OFF;
+ }
+-
++#endif
+ static int query_capabilities(mfxSession session, int index, mfxVersion version, hb_qsv_info_t *info, int lowpower)
+ {
+     /*
+@@ -1026,7 +1028,9 @@ static int query_capabilities(mfxSession session, int 
+     mfxExtMasteringDisplayColourVolume  extMasteringDisplayColourVolume;
+     mfxExtContentLightLevelInfo         extContentLightLevelInfo;
+     mfxExtAV1BitstreamParam extAV1BitstreamParam;
++#if (MFX_VERSION >= 2012)
+     mfxExtAV1ScreenContentTools extAV1ScreenContentToolsParam;
++#endif
+     mfxExtHyperModeParam extHyperEncodeParam;
+ 
+     /* Reset capabilities before querying */
+@@ -1460,6 +1464,7 @@ static int query_capabilities(mfxSession session, int 
+                 info->capabilities |= HB_QSV_CAP_HYPERENCODE;
+             }
+         }
++#if (MFX_VERSION >= 2012)
+         if ((lowpower == MFX_CODINGOPTION_ON) && (info->codec_id == MFX_CODEC_AV1))
+         {
+             init_video_param(&videoParam);
+@@ -1494,6 +1499,7 @@ static int query_capabilities(mfxSession session, int 
+                 info->capabilities |= HB_QSV_CAP_AV1_SCREENCONTENT;
+             }
+         }
++#endif
+     }
+ 
+     return 0;
+@@ -1935,10 +1941,12 @@ static void log_encoder_capabilities(const int log_lev
+             strcat(buffer, "+nmpslice");
+         }
+     }
++#if (MFX_VERSION >= 2012)
+     if (caps & HB_QSV_CAP_AV1_SCREENCONTENT)
+     {
+         strcat(buffer, " av1screencontent");
+     }
++#endif
+     if (caps & HB_QSV_CAP_HYPERENCODE)
+     {
+         strcat(buffer, " hyperencode");
+@@ -3011,6 +3019,7 @@ int hb_qsv_param_parse(hb_qsv_param_t *param, hb_qsv_i
+             param->hyperEncodeParam.Mode = mode->value;
+         }
+     }
++#if (MFX_VERSION >= 2012)
+     else if (!strcasecmp(key, "palette"))
+     {
+         if (info->capabilities & HB_QSV_CAP_AV1_SCREENCONTENT)
+@@ -3041,6 +3050,7 @@ int hb_qsv_param_parse(hb_qsv_param_t *param, hb_qsv_i
+             return HB_QSV_PARAM_UNSUPPORTED;
+         }
+     }
++#endif
+     else if (!strcasecmp(key, "async-depth"))
+     {
+         int async_depth = hb_qsv_atoi(value, &error);
+@@ -3527,13 +3537,14 @@ int hb_qsv_param_default(hb_qsv_param_t *param, mfxVid
+         param->av1BitstreamParam.Header.BufferId = MFX_EXTBUFF_AV1_BITSTREAM_PARAM;
+         param->av1BitstreamParam.Header.BufferSz = sizeof(mfxExtAV1BitstreamParam);
+         param->av1BitstreamParam.WriteIVFHeaders = MFX_CODINGOPTION_OFF;
++#if (MFX_VERSION >= 2012)
+         // introduced in API 2.11
+         memset(&param->av1ScreenContentToolsParam, 0, sizeof(mfxExtAV1ScreenContentTools));
+         param->av1ScreenContentToolsParam.Header.BufferId = MFX_EXTBUFF_AV1_SCREEN_CONTENT_TOOLS;
+         param->av1ScreenContentToolsParam.Header.BufferSz = sizeof(mfxExtAV1ScreenContentTools);
+         param->av1ScreenContentToolsParam.IntraBlockCopy  = MFX_CODINGOPTION_OFF;
+         param->av1ScreenContentToolsParam.Palette         = MFX_CODINGOPTION_OFF;
+-
++#endif
+         // GOP & rate control
+         param->gop.b_pyramid          =  1; // enabled by default (if supported)
+         param->gop.gop_pic_size       = -1; // set automatically
+@@ -3607,10 +3618,12 @@ int hb_qsv_param_default(hb_qsv_param_t *param, mfxVid
+         {
+             param->videoParam->ExtParam[param->videoParam->NumExtParam++] = (mfxExtBuffer*)&param->av1BitstreamParam;
+         }
++#if (MFX_VERSION >= 2012)
+         if (info->capabilities & HB_QSV_CAP_AV1_SCREENCONTENT)
+         {
+             param->videoParam->ExtParam[param->videoParam->NumExtParam++] = (mfxExtBuffer*)&param->av1ScreenContentToolsParam;
+         }
++#endif
+ #if defined(_WIN32) || defined(__MINGW32__)
+         if (info->capabilities & HB_QSV_CAP_LOWPOWER_ENCODE)
+         {