diff --git a/multimedia/handbrake/Makefile b/multimedia/handbrake/Makefile index 30d42bb84bda..96d8ca094e49 100644 --- a/multimedia/handbrake/Makefile +++ b/multimedia/handbrake/Makefile @@ -1,133 +1,127 @@ 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} 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 BUILD_DEPENDS= bash:shells/bash \ nasm:devel/nasm \ cmake:devel/cmake-core \ 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 \ libogg.so:audio/libogg \ libvorbis.so:audio/libvorbis \ libvorbisenc.so:audio/libvorbis \ libtheoradec.so:multimedia/libtheora \ libtheoraenc.so:multimedia/libtheora \ libx264.so:multimedia/libx264 \ libvpx.so:multimedia/libvpx \ libmp3lame.so:audio/lame \ 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) # DVDCSS version hardcoded in contrib/libdvdread/libdvdread-5.0.0-6-gcb1ae87/src/dvd_input.c (dlopen'ed) 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 OPTIONS_EXCLUDE_powerpc64= VPL OPTIONS_EXCLUDE_powerpc64le= VPL OPTIONS_SUB= yes FDK_AAC_DESC= Enable non-free Fraunhofer FDK AAC codec VPL_DESC= Intel oneVPL (aka Quick Sync Video) 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. post-extract: .SILENT ${MKDIR} ${WRKSRC}/download pre-configure: cd ${DISTDIR}/${DIST_SUBDIR} && \ ${INSTALL_DATA} ${CONTRIB_FILES} \ ${WRKSRC}/download # for powerpc64 # picked from multimedia/ffmpeg/files/patch-libswscale_ppc_yuv2rgb__altivec.c ${CP} ${FILESDIR}/P02-freebsd-ppc-libswscale.patch ${WRKSRC}/contrib/ffmpeg post-install-X11-on: ${LN} -sf ghb ${STAGEDIR}${PREFIX}/bin/HandBrake .include 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 @@ -1,18 +1,20 @@ Disable vulkan support. Handbrake doesn't require Vulkan but if it is installed in build environment (for other ports like QT5), It fails to build Handbrake, because following 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(¶m->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*)¶m->av1BitstreamParam; + } ++#if (MFX_VERSION >= 2012) + if (info->capabilities & HB_QSV_CAP_AV1_SCREENCONTENT) + { + param->videoParam->ExtParam[param->videoParam->NumExtParam++] = (mfxExtBuffer*)¶m->av1ScreenContentToolsParam; + } ++#endif + #if defined(_WIN32) || defined(__MINGW32__) + if (info->capabilities & HB_QSV_CAP_LOWPOWER_ENCODE) + {