summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Whyman <thev00d00@gentoo.org>2019-03-10 17:34:32 +0000
committerIan Whyman <thev00d00@gentoo.org>2019-03-10 17:34:56 +0000
commit2a16187c2c99bd6900494d5e8c7d3dd9ccb67672 (patch)
tree9815be33afacb44a4e018523304728e05ec103a0
parentdev-python/cheroot: 6.5.4, fix keywords (diff)
downloadgentoo-2a16187c2c99bd6900494d5e8c7d3dd9ccb67672.tar.gz
gentoo-2a16187c2c99bd6900494d5e8c7d3dd9ccb67672.tar.bz2
gentoo-2a16187c2c99bd6900494d5e8c7d3dd9ccb67672.zip
media-video/handbrake: Fix nvenc build failure
Backport patch from upstream to allow enable/disable nvenc, qsv encoding Closes: https://bugs.gentoo.org/679840 Package-Manager: Portage-2.3.62, Repoman-2.3.12 Signed-off-by: Ian Whyman <thev00d00@gentoo.org>
-rw-r--r--media-video/handbrake/files/handbrake-1.2.2-backport-hardware-configure.patch88
-rw-r--r--media-video/handbrake/handbrake-1.2.2-r1.ebuild (renamed from media-video/handbrake/handbrake-1.2.2.ebuild)8
-rw-r--r--media-video/handbrake/metadata.xml1
3 files changed, 96 insertions, 1 deletions
diff --git a/media-video/handbrake/files/handbrake-1.2.2-backport-hardware-configure.patch b/media-video/handbrake/files/handbrake-1.2.2-backport-hardware-configure.patch
new file mode 100644
index 000000000000..0618c9004e96
--- /dev/null
+++ b/media-video/handbrake/files/handbrake-1.2.2-backport-hardware-configure.patch
@@ -0,0 +1,88 @@
+From c7119499f5a2da7e5be0afd50a6757778fed53e7 Mon Sep 17 00:00:00 2001
+From: Bradley Sepos <bradley@bradleysepos.com>
+Date: Sat, 23 Feb 2019 11:44:34 -0500
+Subject: [PATCH] configure: Enable hardware encoders by default on suitable
+ platforms.
+
+Print special encoders status at end of configure output, minor cosmetics.
+---
+ make/configure.py | 46 +++++++++++++++++++++++++++++-----------------
+ 1 file changed, 29 insertions(+), 17 deletions(-)
+
+diff --git a/make/configure.py b/make/configure.py
+index c8bc712fe5..e673c9c5a0 100644
+--- a/make/configure.py
++++ b/make/configure.py
+@@ -1298,36 +1298,37 @@ def createCLI():
+ grp.add_option( '--disable-gtk', default=False, action='store_true', help=h )
+
+ h = IfHost( 'disable GTK GUI update checks', '*-*-linux*', '*-*-freebsd*', none=optparse.SUPPRESS_HELP ).value
+-
+ grp.add_option( '--disable-gtk-update-checks', default=False, action='store_true', help=h )
+
+ h = IfHost( 'enable GTK GUI (mingw)', '*-*-mingw*', none=optparse.SUPPRESS_HELP ).value
+ grp.add_option( '--enable-gtk-mingw', default=False, action='store_true', help=h )
+
+ h = IfHost( 'disable GStreamer (live preview)', '*-*-linux*', '*-*-freebsd*', none=optparse.SUPPRESS_HELP ).value
+-
+ grp.add_option( '--disable-gst', default=False, action='store_true', help=h )
+
+- h = IfHost( 'enable Intel Quick Sync Video (QSV) hardware acceleration. (Windows and Linux only)', '*-*-linux*', '*-*-mingw*', none=optparse.SUPPRESS_HELP ).value
+- grp.add_option( '--enable-qsv', default=False, action='store_true', help=h )
++ h = IfHost( 'Intel Quick Sync Video (QSV) hardware acceleration (Windows and Linux only)', '*-*-linux*', '*-*-mingw*', none=optparse.SUPPRESS_HELP ).value
++ grp.add_option( '--enable-qsv', dest="enable_qsv", default=host.match( '*-*-mingw*' ), action='store_true', help=(( 'enable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
++ grp.add_option( '--disable-qsv', dest="enable_qsv", action='store_false', help=(( 'disable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
+
+- h = IfHost( 'enable AMD VCE hardware acceleration. (Windows only)', '*-*-mingw*', none=optparse.SUPPRESS_HELP ).value
+- grp.add_option( '--enable-vce', default=False, action='store_true', help=h )
++ h = IfHost( 'AMD VCE hardware acceleration (Windows only)', '*-*-mingw*', none=optparse.SUPPRESS_HELP ).value
++ grp.add_option( '--enable-vce', dest="enable_vce", default=host.match( '*-*-mingw*' ), action='store_true', help=(( 'enable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
++ grp.add_option( '--disable-vce', dest="enable_vce", action='store_false', help=(( 'disable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
+
+- h = IfHost( 'enable x265 video encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value
+- grp.add_option( '--enable-x265', dest="enable_x265", default=True, action='store_true', help=h )
+- grp.add_option( '--disable-x265', dest="enable_x265", action='store_false' )
++ h = IfHost( 'x265 video encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value
++ grp.add_option( '--enable-x265', dest="enable_x265", default=True, action='store_true', help=(( 'enable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
++ grp.add_option( '--disable-x265', dest="enable_x265", action='store_false', help=(( 'disable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
+
+- h = IfHost( 'enable FDK AAC audio encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value
+- grp.add_option( '--enable-fdk-aac', dest="enable_fdk_aac", default=False, action='store_true', help=h )
+- grp.add_option( '--disable-fdk-aac', dest="enable_fdk_aac", action='store_false' )
++ h = IfHost( 'FDK AAC audio encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value
++ grp.add_option( '--enable-fdk-aac', dest="enable_fdk_aac", default=False, action='store_true', help=(( 'enable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
++ grp.add_option( '--disable-fdk-aac', dest="enable_fdk_aac", action='store_false', help=(( 'disable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
+
+- h = IfHost( 'enable FFmpeg AAC audio encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value
+- grp.add_option( '--enable-ffmpeg-aac', dest="enable_ffmpeg_aac", default=not host.match( '*-*-darwin*' ), action='store_true', help=h )
+- grp.add_option( '--disable-ffmpeg-aac', dest="enable_ffmpeg_aac", action='store_false' )
++ h = IfHost( 'FFmpeg AAC audio encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value
++ grp.add_option( '--enable-ffmpeg-aac', dest="enable_ffmpeg_aac", default=not host.match( '*-*-darwin*' ), action='store_true', help=(( 'enable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
++ grp.add_option( '--disable-ffmpeg-aac', dest="enable_ffmpeg_aac", action='store_false', help=(( 'disable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
+
+- h = IfHost( 'enable Nvidia NVEnc video encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value
+- grp.add_option( '--enable-nvenc', dest="enable_nvenc", default=not (host.match( '*-*-darwin*' ) or host.match( '*-*-freebsd*' )), action='store_true', help=h )
++ h = IfHost( 'Nvidia NVEnc video encoder', '*-*-*', none=optparse.SUPPRESS_HELP ).value
++ grp.add_option( '--enable-nvenc', dest="enable_nvenc", default=not (host.match( '*-*-darwin*' ) or host.match( '*-*-freebsd*' )), action='store_true', help=(( 'enable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
++ grp.add_option( '--disable-nvenc', dest="enable_nvenc", action='store_false', help=(( 'disable %s' %h ) if h != optparse.SUPPRESS_HELP else h) )
+
+
+ cli.add_option_group( grp )
+@@ -1982,6 +1983,17 @@ class Tools:
+ else:
+ nocd = False
+
++ stdout.write( '%s\n' % ('-' * 79) )
++ stdout.write( 'Configured options:\n' )
++ stdout.write( 'Enable FDK-AAC: %s\n' % options.enable_fdk_aac )
++ stdout.write( 'Enable FFmpeg AAC: %s\n' % options.enable_ffmpeg_aac )
++
++ if IfHost( True, '*-*-linux*', '*-*-mingw*', none=False ).value is True:
++ stdout.write( 'Enable NVEnc: %s\n' % options.enable_nvenc )
++ stdout.write( 'Enable QSV: %s\n' % options.enable_qsv )
++ if IfHost( True, '*-*-mingw*', none=False ).value is True:
++ stdout.write( 'Enable VCE: %s\n' % options.enable_vce )
++
+ stdout.write( '%s\n' % ('-' * 79) )
+ if options.launch:
+ stdout.write( 'Build is finished!\n' )
diff --git a/media-video/handbrake/handbrake-1.2.2.ebuild b/media-video/handbrake/handbrake-1.2.2-r1.ebuild
index b4c350e89092..4d4a09eb3783 100644
--- a/media-video/handbrake/handbrake-1.2.2.ebuild
+++ b/media-video/handbrake/handbrake-1.2.2-r1.ebuild
@@ -23,7 +23,7 @@ HOMEPAGE="http://handbrake.fr/"
LICENSE="GPL-2"
SLOT="0"
-IUSE="+fdk gstreamer gtk libav libav-aac x265"
+IUSE="+fdk gstreamer gtk libav libav-aac nvenc x265 vaapi"
REQUIRED_USE="^^ ( fdk libav-aac )"
@@ -40,6 +40,7 @@ RDEPEND="
media-libs/libtheora
media-libs/libvorbis
media-libs/libvpx
+ nvenc? ( media-libs/nv-codec-headers )
media-libs/opus
media-libs/x264:=
media-sound/lame
@@ -86,6 +87,9 @@ PATCHES=(
# Fix missing x265 link flag
"${FILESDIR}/${PN}-9999-fix-missing-x265-link-flag.patch"
+
+ # Allow disabling nvenc etc
+ "${FILESDIR}/${P}-backport-hardware-configure.patch"
)
pkg_setup() {
@@ -119,6 +123,8 @@ src_configure() {
$(use_enable fdk fdk-aac) \
$(use_enable gtk) \
$(usex !gstreamer --disable-gst) \
+ $(use_enable nvenc) \
+ $(use_enable vaapi qsv) \
$(use_enable x265) || die "Configure failed."
}
diff --git a/media-video/handbrake/metadata.xml b/media-video/handbrake/metadata.xml
index 6f7dc3b848e0..0bab35dd0f09 100644
--- a/media-video/handbrake/metadata.xml
+++ b/media-video/handbrake/metadata.xml
@@ -13,6 +13,7 @@
<flag name="gtk">Install the GTK UI, ghb.</flag>
<flag name="fdk">Support for encoding AAC using <pkg>media-libs/fdk-aac</pkg>.</flag>
<flag name="libav-aac">Support for encoding AAC using <pkg>media-video/libav</pkg>'s internal encoder.</flag>
+ <flag name="nvenc">Adds support for NVIDIA Encoder (NVENC) API for hardware accelerated encoding on NVIDIA cards.</flag>
<flag name="x265">Support for encoding h265 using <pkg>media-libs/x265</pkg>.</flag>
</use>
</pkgmetadata>