Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 3 Jan 2020 09:01:24 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r521913 - in head/multimedia/handbrake: . files
Message-ID:  <202001030901.00391O4x090970@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Fri Jan  3 09:01:24 2020
New Revision: 521913
URL: https://svnweb.freebsd.org/changeset/ports/521913

Log:
  multimedia/handbrake: enable Intel Quick Sync Video
  
  PR:		242849
  Approved by:	Yuichiro NAITO (maintainer)
  Tested by:	Yuichiro NAITO, pkubaj (powerpc64)
  MFH:		2020Q1 (opt-in at runtime, requested by maintainer)

Added:
  head/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs   (contents, props changed)
  head/multimedia/handbrake/files/patch-gtk_configure.ac   (contents, props changed)
  head/multimedia/handbrake/files/patch-libhb_handbrake_ports.h   (contents, props changed)
  head/multimedia/handbrake/files/patch-libhb_module.defs   (contents, props changed)
  head/multimedia/handbrake/files/patch-libhb_ports.c   (contents, props changed)
  head/multimedia/handbrake/files/patch-libhb_qsv__common.c   (contents, props changed)
  head/multimedia/handbrake/files/patch-make_configure.py   (contents, props changed)
  head/multimedia/handbrake/files/patch-make_include_main.defs   (contents, props changed)
  head/multimedia/handbrake/files/patch-test_module.defs   (contents, props changed)
Modified:
  head/multimedia/handbrake/Makefile   (contents, props changed)

Modified: head/multimedia/handbrake/Makefile
==============================================================================
--- head/multimedia/handbrake/Makefile	Fri Jan  3 07:46:31 2020	(r521912)
+++ head/multimedia/handbrake/Makefile	Fri Jan  3 09:01:24 2020	(r521913)
@@ -3,7 +3,7 @@
 
 PORTNAME=	handbrake
 DISTVERSION=	1.3.0
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	multimedia
 DIST_SUBDIR=	${PORTNAME}
 
@@ -80,12 +80,14 @@ NOPRECIOUSMAKEVARS=	yes			# for ffmpeg and x264
 # Enforce linking to bundled libraries instead of system libraries
 LDFLAGS+=	-L${BUILD_WRKSRC}/contrib/lib
 
-OPTIONS_DEFINE=		FDK_AAC X11
-OPTIONS_DEFAULT=	X11
+OPTIONS_DEFINE=		FDK_AAC MFX X11
+OPTIONS_DEFAULT=	MFX X11
+OPTIONS_EXCLUDE_powerpc64=	MFX
 
 OPTIONS_SUB=	yes
 
 FDK_AAC_DESC=	Enable non-free Fraunhofer FDK AAC codec
+MFX_DESC=	Intel MediaSDK (aka Quick Sync Video)
 X11_DESC=	Build GTK+3 based GUI program
 
 FDK_AAC_CONFIGURE_ENABLE=	fdk-aac
@@ -93,6 +95,10 @@ 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
+
+MFX_LIB_DEPENDS=	libmfx.so:multimedia/intel-media-sdk \
+			libva-drm.so:multimedia/libva
+MFX_CONFIGURE_ON=	--enable-qsv
 
 X11_CONFIGURE_ENV=	COMPILER_PATH=${LOCALBASE}/bin
 X11_MAKE_ENV=	COMPILER_PATH=${LOCALBASE}/bin

Added: head/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/handbrake/files/patch-contrib_ffmpeg_module.defs	Fri Jan  3 09:01:24 2020	(r521913)
@@ -0,0 +1,21 @@
+--- contrib/ffmpeg/module.defs.orig	2019-11-09 20:44:32 UTC
++++ contrib/ffmpeg/module.defs
+@@ -1,7 +1,9 @@
+ __deps__ := BZIP2 ZLIB FDKAAC LIBDAV1D LIBVPX LAME LIBOPUS LIBSPEEX XZ
+ ifeq (1,$(FEATURE.qsv))
++ifeq (,$(filter $(HOST.system),freebsd))
+ __deps__ += LIBMFX
+ endif
++endif
+ ifeq (1,$(FEATURE.vce))
+ __deps__ += AMF
+ endif
+@@ -60,7 +62,7 @@ FFMPEG.CONFIGURE.extra = \
+     --cc="$(FFMPEG.GCC.gcc)" \
+     --extra-ldflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -L$(call fn.ABSOLUTE,$(CONTRIB.build/)lib)"
+ 
+-ifeq (1-linux,$(FEATURE.qsv)-$(HOST.system))
++ifneq (,$(filter $(FEATURE.qsv)-$(HOST.system),1-linux 1-freebsd))
+     FFMPEG.CONFIGURE.extra += --enable-vaapi
+     FFMPEG.CONFIGURE.extra += --disable-xlib
+ else

Added: head/multimedia/handbrake/files/patch-gtk_configure.ac
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/handbrake/files/patch-gtk_configure.ac	Fri Jan  3 09:01:24 2020	(r521913)
@@ -0,0 +1,12 @@
+--- gtk/configure.ac.orig	2019-11-09 20:44:32 UTC
++++ gtk/configure.ac
+@@ -227,6 +227,9 @@ case $host in
+     ;;
+   *-*-freebsd*)
+     HB_LIBS="$HB_LIBS -lpthread"
++    if test "x$use_qsv" = "xyes" ; then
++        HB_LIBS="$HB_LIBS -lva -lva-drm"
++    fi
+     ;;
+   *-*-netbsd*)
+     HB_LIBS="$HB_LIBS -pthread"

Added: head/multimedia/handbrake/files/patch-libhb_handbrake_ports.h
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/handbrake/files/patch-libhb_handbrake_ports.h	Fri Jan  3 09:01:24 2020	(r521913)
@@ -0,0 +1,36 @@
+--- libhb/handbrake/ports.h.orig	2019-11-09 20:44:32 UTC
++++ libhb/handbrake/ports.h
+@@ -28,7 +28,7 @@
+ 
+ #if HB_PROJECT_FEATURE_QSV
+ #include "mfx/mfxstructures.h"
+-#ifdef SYS_LINUX
++#if defined(SYS_LINUX) || defined(SYS_FREEBSD)
+ #include <va/va_drm.h>
+ #endif
+ #endif
+@@ -36,9 +36,9 @@
+ /************************************************************************
+  * HW accel display
+  ***********************************************************************/
+-#ifdef SYS_LINUX
++#if defined(SYS_LINUX) || defined(SYS_FREEBSD)
+ extern const char* DRM_INTEL_DRIVER_NAME;
+-#endif // SYS_LINUX
++#endif // SYS_LINUX || SYS_FREEBSD
+ 
+ typedef struct
+ {
+@@ -46,10 +46,10 @@ typedef struct
+ #if HB_PROJECT_FEATURE_QSV
+     mfxHandleType   mfxType;
+ 
+-#ifdef SYS_LINUX
++#if defined(SYS_LINUX) || defined(SYS_FREEBSD)
+     int             vaFd;
+     VADisplay       vaDisplay;
+-#endif // SYS_LINUX
++#endif // SYS_LINUX || SYS_FREEBSD
+ #endif
+ } hb_display_t;
+ 

Added: head/multimedia/handbrake/files/patch-libhb_module.defs
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/handbrake/files/patch-libhb_module.defs	Fri Jan  3 09:01:24 2020	(r521913)
@@ -0,0 +1,32 @@
+--- libhb/module.defs.orig	2019-11-09 20:44:32 UTC
++++ libhb/module.defs
+@@ -1,12 +1,16 @@
+ __deps__ := A52DEC BZIP2 LIBVPX FFMPEG FREETYPE LAME LIBASS LIBDCA \
+     LIBDVDREAD LIBDVDNAV LIBICONV LIBSAMPLERATE LIBTHEORA LIBVORBIS LIBOGG \
+-    LIBXML2 X264 X265 ZLIB LIBBLURAY FDKAAC LIBMFX LIBGNURX JANSSON \
++    LIBXML2 X264 X265 ZLIB LIBBLURAY FDKAAC LIBGNURX JANSSON \
+     HARFBUZZ LIBOPUS LIBSPEEX LIBDAV1D
+ 
+ ifeq (,$(filter $(HOST.system),darwin cygwin mingw))
+     __deps__ += FONTCONFIG
+ endif
+ 
++ifeq (,$(filter $(HOST.system),freebsd))
++    __deps__ += LIBMFX
++endif
++
+ $(eval $(call import.MODULE.defs,LIBHB,libhb,$(__deps__)))
+ $(eval $(call import.GCC,LIBHB))
+ 
+@@ -111,7 +115,11 @@ LIBHB.dll.libs += $(CONTRIB.build/)lib/libfdk-aac.a
+ endif
+ 
+ ifeq (1,$(FEATURE.qsv))
++ifeq (,$(filter $(HOST.system),freebsd))
+ LIBHB.dll.libs += $(CONTRIB.build/)lib/libmfx.a
++else
++    LIBHB.GCC.l += mfx
++endif
+ endif
+ 
+ ifeq (1,$(FEATURE.x265))

Added: head/multimedia/handbrake/files/patch-libhb_ports.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/handbrake/files/patch-libhb_ports.c	Fri Jan  3 09:01:24 2020	(r521913)
@@ -0,0 +1,41 @@
+--- libhb/ports.c.orig	2019-11-09 20:44:32 UTC
++++ libhb/ports.c
+@@ -28,7 +28,11 @@
+ #if defined(SYS_DARWIN) || defined(SYS_FREEBSD)
+ #include <sys/types.h>
+ #include <sys/sysctl.h>
++#if HB_PROJECT_FEATURE_QSV && defined(SYS_FREEBSD)
++#include <libdrm/drm.h>
++#include <fcntl.h>
+ #endif
++#endif
+ 
+ #ifdef SYS_OPENBSD
+ #include <sys/param.h>
+@@ -1518,7 +1522,7 @@ char * hb_strndup(const char * src, size_t len)
+ }
+ 
+ #if HB_PROJECT_FEATURE_QSV
+-#ifdef SYS_LINUX
++#if defined(SYS_LINUX) || defined(SYS_FREEBSD)
+ 
+ #define MAX_NODES             16
+ #define DRI_RENDER_NODE_START 128
+@@ -1676,7 +1680,7 @@ void hb_display_close(hb_display_t ** _d)
+     *_d = NULL;
+ }
+ 
+-#else // !SYS_LINUX
++#else // !SYS_LINUX && !SYS_FREEBSD
+ 
+ hb_display_t * hb_display_init(const char         *  driver_name,
+                                const char * const * interface_names)
+@@ -1689,7 +1693,7 @@ void hb_display_close(hb_display_t ** _d)
+     (void)_d;
+ }
+ 
+-#endif // SYS_LINUX
++#endif // SYS_LINUX || SYS_FREEBSD
+ #else // !HB_PROJECT_FEATURE_QSV
+ 
+ hb_display_t * hb_display_init(const char         *  driver_name,

Added: head/multimedia/handbrake/files/patch-libhb_qsv__common.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/handbrake/files/patch-libhb_qsv__common.c	Fri Jan  3 09:01:24 2020	(r521913)
@@ -0,0 +1,20 @@
+--- libhb/qsv_common.c.orig	2019-11-09 20:44:32 UTC
++++ libhb/qsv_common.c
+@@ -678,7 +678,7 @@ int hb_qsv_info_init()
+      */
+     mfxSession session;
+     mfxVersion version = { .Major = 1, .Minor = 0, };
+-#ifdef SYS_LINUX
++#if defined(SYS_LINUX) || defined(SYS_FREEBSD)
+     mfxIMPL hw_preference = MFX_IMPL_VIA_ANY;
+ #else
+     mfxIMPL hw_preference = MFX_IMPL_VIA_D3D11;
+@@ -738,7 +738,7 @@ int hb_qsv_info_init()
+         }
+         else
+         {
+-#ifndef SYS_LINUX
++#if !defined(SYS_LINUX) && !defined(SYS_FREEBSD)
+             // Windows only: After D3D11 we will try D3D9
+             if (hw_preference == MFX_IMPL_VIA_D3D11)
+                 hw_preference = MFX_IMPL_VIA_D3D9;

Added: head/multimedia/handbrake/files/patch-make_configure.py
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/handbrake/files/patch-make_configure.py	Fri Jan  3 09:01:24 2020	(r521913)
@@ -0,0 +1,29 @@
+--- make/configure.py.orig	2019-11-09 20:44:32 UTC
++++ make/configure.py
+@@ -1413,7 +1413,7 @@ def createCLI( cross = None ):
+     grp.add_argument( '--enable-nvenc', dest="enable_nvenc", default=IfHost( True, '*-*-linux*', '*-*-mingw*', none=False).value, action='store_true', help=(( 'enable %s' %h ) if h != argparse.SUPPRESS else h) )
+     grp.add_argument( '--disable-nvenc', dest="enable_nvenc", action='store_false', help=(( 'disable %s' %h ) if h != argparse.SUPPRESS else h) )
+ 
+-    h = IfHost( 'Intel QSV video encoder/decoder', '*-*-linux*', '*-*-mingw*', none=argparse.SUPPRESS).value
++    h = IfHost( 'Intel QSV video encoder/decoder', '*-*-linux*', '*-*-freebsd*', '*-*-mingw*', none=argparse.SUPPRESS).value
+     grp.add_argument( '--enable-qsv', dest="enable_qsv", default=IfHost(True, "*-*-mingw*", none=False).value, action='store_true', help=(( 'enable %s' %h ) if h != argparse.SUPPRESS else h) )
+     grp.add_argument( '--disable-qsv', dest="enable_qsv", action='store_false', help=(( 'disable %s' %h ) if h != argparse.SUPPRESS else h) )
+ 
+@@ -1684,7 +1684,7 @@ try:
+                                         none=False).value
+                                  and options.enable_x265)
+     # Disable QSV on unsupported platforms
+-    options.enable_qsv        = IfHost(options.enable_qsv, '*-*-linux*',
++    options.enable_qsv        = IfHost(options.enable_qsv, '*-*-linux*', '*-*-freebsd*',
+                                        '*-*-mingw*', none=False).value
+     # Disable VCE on unsupported platforms
+     options.enable_vce        = IfHost(options.enable_vce, '*-*-linux*', '*-*-mingw*',
+@@ -2124,7 +2124,7 @@ int main()
+     stdout.write( 'Enable NVENC:       %s' % options.enable_nvenc )
+     stdout.write( ' (%s)\n' % note_unsupported ) if not (host_tuple.system == 'linux' or host_tuple.system == 'mingw') else stdout.write( '\n' )
+     stdout.write( 'Enable QSV:         %s' % options.enable_qsv )
+-    stdout.write( ' (%s)\n' % note_unsupported ) if not (host_tuple.system == 'linux' or host_tuple.system == 'mingw') else stdout.write( '\n' )
++    stdout.write( ' (%s)\n' % note_unsupported ) if not (host_tuple.system == 'linux' or host_tuple.system == 'freebsd' or host_tuple.system == 'mingw') else stdout.write( '\n' )
+     stdout.write( 'Enable VCE:         %s' % options.enable_vce )
+     stdout.write( ' (%s)\n' % note_unsupported ) if not (host_tuple.system == 'linux' or host_tuple.system == 'mingw') else stdout.write( '\n' )
+ 

Added: head/multimedia/handbrake/files/patch-make_include_main.defs
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/handbrake/files/patch-make_include_main.defs	Fri Jan  3 09:01:24 2020	(r521913)
@@ -0,0 +1,13 @@
+--- make/include/main.defs.orig	2019-11-09 20:44:32 UTC
++++ make/include/main.defs
+@@ -52,8 +52,10 @@ MODULES += contrib/libdvdread
+ MODULES += contrib/libdvdnav
+ MODULES += contrib/libbluray
+ 
++ifneq (,$(filter $(HOST.system),freebsd))
+ ifeq (1,$(FEATURE.qsv))
+     MODULES += contrib/libmfx
++endif
+ endif
+ 
+ ifeq (1,$(FEATURE.vce))

Added: head/multimedia/handbrake/files/patch-test_module.defs
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/multimedia/handbrake/files/patch-test_module.defs	Fri Jan  3 09:01:24 2020	(r521913)
@@ -0,0 +1,11 @@
+--- test/module.defs.orig	2019-11-09 20:44:32 UTC
++++ test/module.defs
+@@ -25,7 +25,7 @@ endif
+ 
+ ifeq (1,$(FEATURE.qsv))
+     TEST.GCC.l += mfx
+-ifeq ($(HOST.system),linux)
++ifneq (,$(filter $(HOST.system),linux freebsd))
+     TEST.GCC.l += va va-drm
+ endif
+ endif



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