diff --git a/multimedia/ffmpeg/Makefile b/multimedia/ffmpeg/Makefile index ed417db..6174d2f 100644 --- a/multimedia/ffmpeg/Makefile +++ b/multimedia/ffmpeg/Makefile @@ -39,7 +39,7 @@ OPTIONS_DEFINE= ALSA AMR_NB AMR_WB AOM ARIBB24 ASM ASS BS2B CACA CDIO CELT \ 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 LIBXML2 \ - LTO LV2 MFX MODPLUG MYSOFA OPENAL OPENCL OPENCV OPENGL OPENH264 \ + LTO LV2 MFX MODPLUG MYSOFA NVENC OPENAL OPENCL OPENCV OPENGL OPENH264 \ OPENJPEG OPENMPT OPTIMIZED_CFLAGS OPUS POCKETSPHINX PULSEAUDIO \ RAV1E RABBITMQ RTCPU RUBBERBAND SDL SMB SNAPPY SNDIO SOXR SPEEX SRT SSH \ SVTAV1 SVTHEVC SVTVP9 TENSORFLOW TESSERACT THEORA TWOLAME V4L \ @@ -47,7 +47,7 @@ OPTIONS_DEFINE= ALSA AMR_NB AMR_WB AOM ARIBB24 ASM ASS BS2B CACA CDIO CELT \ WAVPACK WEBP X264 X265 XAVS2 XCB XVID XVIDEO ZIMG ZMQ ZVBI OPTIONS_DEFAULT= AOM ASM ASS DAV1D DRM FONTCONFIG FREETYPE FREI0R GMP GNUTLS ICONV \ - LAME LIBXML2 OPENCV OPTIMIZED_CFLAGS OPUS RTCPU THEORA V4L VAAPI \ + LAME LIBXML2 NVENC OPENCV OPTIMIZED_CFLAGS OPUS RTCPU THEORA V4L VAAPI \ VDPAU VORBIS VPX X264 X265 XCB XVID .if !exists(${.CURDIR:H:H}/multimedia/aribb24) @@ -110,6 +110,7 @@ LV2_DESC= LV2 audio filtering MFX_DESC= Intel MediaSDK (aka Quick Sync Video) MYSOFA_DESC= SOFAlizer binaural filter NONFREE_DESC= Allow use of nonfree code +NVENC_DESC= NVENC encoder OPENMPT_DESC= Decoding tracked files via libopenmpt OPENH264_DESC= H.264 video codec support via OpenH264 POCKETSPHINX_DESC= Automatic Speech Recognition via PocketSphinx @@ -339,6 +340,10 @@ MBEDTLS_CONFIGURE_ENABLE= mbedtls MFX_LIB_DEPENDS= libmfx.so:multimedia/intel-media-sdk MFX_CONFIGURE_ENABLE= libmfx +# NVENC +NVENC_BUILD_DEPENDS= ffnvcodec>=11.0.10.0:multimedia/ffnvcodec +NVENC_CONFIGURE_ENABLE= nvenc + # modplug MODPLUG_LIB_DEPENDS= libmodplug.so:audio/libmodplug MODPLUG_CONFIGURE_ENABLE= libmodplug diff --git a/multimedia/ffmpeg/files/patch-nvenc b/multimedia/ffmpeg/files/patch-nvenc new file mode 100644 index 0000000..effd23e --- /dev/null +++ b/multimedia/ffmpeg/files/patch-nvenc @@ -0,0 +1,11 @@ +--- configure.orig 2020-12-29 02:11:00.799439000 +0000 ++++ configure 2020-12-29 02:11:51.884632000 +0000 +@@ -6679,7 +6679,7 @@ + + if enabled x86; then + case $target_os in +- mingw32*|mingw64*|win32|win64|linux|cygwin*) ++ freebsd|mingw32*|mingw64*|win32|win64|linux|cygwin*) + ;; + *) + disable ffnvcodec cuvid nvdec nvenc diff --git a/multimedia/ffnvcodec/Makefile b/multimedia/ffnvcodec/Makefile new file mode 100644 index 0000000..d46e9eb --- /dev/null +++ b/multimedia/ffnvcodec/Makefile @@ -0,0 +1,19 @@ +# $FreeBSD$ + +PORTNAME= ffnvcodec +DISTVERSIONPREFIX= n +DISTVERSION= 11.0.10.0 +CATEGORIES= multimedia + +MAINTAINER= multimedia@FreeBSD.org +COMMENT= FFmpeg headers to interface with NVIDIA video encoder (NVENC) + +LICENSE= MIT + +USES= gmake pkgconfig + +USE_GITHUB= yes +GH_ACCOUNT= FFmpeg +GH_PROJECT= nv-codec-headers + +.include diff --git a/multimedia/ffnvcodec/distinfo b/multimedia/ffnvcodec/distinfo new file mode 100644 index 0000000..1c880df --- /dev/null +++ b/multimedia/ffnvcodec/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1610395724 +SHA256 (FFmpeg-nv-codec-headers-n11.0.10.0_GH0.tar.gz) = 96db8f4a5cda18cd757fc0e74bc27f372441fdbf814ec7f0f1ee6caa73780310 +SIZE (FFmpeg-nv-codec-headers-n11.0.10.0_GH0.tar.gz) = 68583 diff --git a/multimedia/ffnvcodec/pkg-descr b/multimedia/ffnvcodec/pkg-descr new file mode 100644 index 0000000..41be0a8 --- /dev/null +++ b/multimedia/ffnvcodec/pkg-descr @@ -0,0 +1,3 @@ +FFmpeg version of headers required to interface with NVIDIA's codec APIs. + +WWW: https://github.com/FFmpeg/nv-codec-headers/ diff --git a/multimedia/ffnvcodec/pkg-plist b/multimedia/ffnvcodec/pkg-plist new file mode 100644 index 0000000..2f7cbcb --- /dev/null +++ b/multimedia/ffnvcodec/pkg-plist @@ -0,0 +1,6 @@ +include/ffnvcodec/dynlink_cuda.h +include/ffnvcodec/dynlink_cuviddec.h +include/ffnvcodec/dynlink_loader.h +include/ffnvcodec/dynlink_nvcuvid.h +include/ffnvcodec/nvEncodeAPI.h +libdata/pkgconfig/ffnvcodec.pc diff --git a/multimedia/handbrake/Makefile b/multimedia/handbrake/Makefile index 40c0da6..2c67272 100644 --- a/multimedia/handbrake/Makefile +++ b/multimedia/handbrake/Makefile @@ -3,7 +3,7 @@ PORTNAME= handbrake DISTVERSION= 1.3.3 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= multimedia DIST_SUBDIR= ${PORTNAME} @@ -47,6 +47,7 @@ CONTRIB_FILES= fdk-aac-2.0.1.tar.gz \ libdvdnav-6.0.1.tar.bz2 \ libdvdread-6.0.2.tar.bz2 \ dav1d-0.5.1.tar.bz2 \ + nv-codec-headers-9.0.18.1.tar.gz \ x265_3.2.1.tar.gz MASTER_SITES+= https://github.com/HandBrake/HandBrake-contribs/releases/download/contribs/:contrib @@ -81,16 +82,17 @@ 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 MFX X11 +OPTIONS_DEFINE= FDK_AAC MFX NVENC X11 OPTIONS_DEFAULT= MFX X11 -OPTIONS_EXCLUDE_powerpc= MFX -OPTIONS_EXCLUDE_powerpc64= MFX -OPTIONS_EXCLUDE_powerpc64le= MFX +OPTIONS_EXCLUDE_powerpc= MFX NVENC +OPTIONS_EXCLUDE_powerpc64= MFX NVENC +OPTIONS_EXCLUDE_powerpc64le= MFX NVENC OPTIONS_SUB= yes FDK_AAC_DESC= Enable non-free Fraunhofer FDK AAC codec MFX_DESC= Intel MediaSDK (aka Quick Sync Video) +NVENC_DESC= NVENC encoder X11_DESC= Build GTK+3 based GUI program FDK_AAC_CONFIGURE_ENABLE= fdk-aac @@ -103,6 +105,8 @@ MFX_LIB_DEPENDS= libmfx.so:multimedia/intel-media-sdk \ libva-drm.so:multimedia/libva MFX_CONFIGURE_ON= --enable-qsv +NVENC_CONFIGURE_ENABLE= nvenc + X11_CONFIGURE_ENV= COMPILER_PATH=${LOCALBASE}/bin X11_MAKE_ENV= COMPILER_PATH=${LOCALBASE}/bin X11_CONFIGURE_ON= --disable-gtk-update-checks @@ -128,6 +132,7 @@ post-extract: .SILENT # for powerpc64. # picked from multimedia/ffmpeg/files/patch-libswscale_ppc_swscale__altivec.c ${CP} ${FILESDIR}/P02-freebsd-ppc-libswscale.patch ${WRKSRC}/contrib/ffmpeg + ${CP} ${FILESDIR}/P03-freebsd-configure.patch ${WRKSRC}/contrib/ffmpeg post-install-X11-on: ${LN} -sf ghb ${STAGEDIR}${PREFIX}/bin/HandBrake diff --git a/multimedia/handbrake/distinfo b/multimedia/handbrake/distinfo index d908b7e..824d394 100644 --- a/multimedia/handbrake/distinfo +++ b/multimedia/handbrake/distinfo @@ -1,4 +1,4 @@ -TIMESTAMP = 1592180378 +TIMESTAMP = 1609198090 SHA256 (handbrake/fdk-aac-2.0.1.tar.gz) = a4142815d8d52d0e798212a5adea54ecf42bcd4eec8092b37a8cb615ace91dc6 SIZE (handbrake/fdk-aac-2.0.1.tar.gz) = 2488373 SHA256 (handbrake/ffmpeg-4.2.3.tar.bz2) = 217eb211c33303b37c5521a5abe1f0140854d6810c6a6ee399456cc96356795e @@ -11,6 +11,8 @@ SHA256 (handbrake/libdvdread-6.0.2.tar.bz2) = f91401af213b219cdde24b46c50a57f293 SIZE (handbrake/libdvdread-6.0.2.tar.bz2) = 405298 SHA256 (handbrake/dav1d-0.5.1.tar.bz2) = 0214d201a338e8418f805b68f9ad277e33d79c18594dee6eaf6dcd74db2674a9 SIZE (handbrake/dav1d-0.5.1.tar.bz2) = 548584 +SHA256 (handbrake/nv-codec-headers-9.0.18.1.tar.gz) = 6181a5dac66a6990aa3baf10a77ae677f372b9068be9ef73abfd37b73fb4c745 +SIZE (handbrake/nv-codec-headers-9.0.18.1.tar.gz) = 58850 SHA256 (handbrake/x265_3.2.1.tar.gz) = fb9badcf92364fd3567f8b5aa0e5e952aeea7a39a2b864387cec31e3b58cbbcc SIZE (handbrake/x265_3.2.1.tar.gz) = 1426255 SHA256 (handbrake/HandBrake-HandBrake-1.3.3_GH0.tar.gz) = 4a004666cdf4570385c7e4d8da093f36b4baa86e32bb0814b4d14e267905e3b3 diff --git a/multimedia/handbrake/files/P03-freebsd-configure.patch b/multimedia/handbrake/files/P03-freebsd-configure.patch new file mode 100644 index 0000000..5c2c1e3 --- /dev/null +++ b/multimedia/handbrake/files/P03-freebsd-configure.patch @@ -0,0 +1,11 @@ +--- configure.orig 2020-05-21 15:55:40.000000000 +0000 ++++ configure 2020-12-29 00:25:23.411264000 +0000 +@@ -6569,7 +6575,7 @@ + + if enabled x86; then + case $target_os in +- mingw32*|mingw64*|win32|win64|linux|cygwin*) ++ freebsd|mingw32*|mingw64*|win32|win64|linux|cygwin*) + ;; + *) + disable ffnvcodec cuvid nvdec nvenc diff --git a/multimedia/handbrake/files/patch-make_configure.py b/multimedia/handbrake/files/patch-make_configure.py index dfc888a..1b6cde5 100644 --- a/multimedia/handbrake/files/patch-make_configure.py +++ b/multimedia/handbrake/files/patch-make_configure.py @@ -1,6 +1,11 @@ ---- make/configure.py.orig 2019-11-09 20:44:32 UTC +--- make/configure.py.orig 2020-06-13 14:05:35 UTC +++ make/configure.py -@@ -1413,7 +1413,7 @@ def createCLI( cross = None ): +@@ -1409,11 +1409,11 @@ def createCLI( cross = None ): + grp.add_argument( '--enable-ffmpeg-aac', dest="enable_ffmpeg_aac", default=not host_tuple.match( '*-*-darwin*' ), action='store_true', help=(( 'enable %s' %h ) if h != argparse.SUPPRESS else h) ) + grp.add_argument( '--disable-ffmpeg-aac', dest="enable_ffmpeg_aac", action='store_false', help=(( 'disable %s' %h ) if h != argparse.SUPPRESS else h) ) + +- h = IfHost( 'Nvidia NVENC video encoder', '*-*-linux*', '*-*-mingw*', none=argparse.SUPPRESS).value ++ h = IfHost( 'Nvidia NVENC video encoder', '*-*-linux*', '*-*-freebsd*', '*-*-mingw*', none=argparse.SUPPRESS).value 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) ) @@ -9,7 +14,15 @@ 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: +@@ -1676,14 +1676,14 @@ try: + options.enable_gtk_mingw = IfHost(options.enable_gtk_mingw, '*-*-mingw*', + none=False).value + # Disable NVENC on unsupported platforms +- options.enable_nvenc = IfHost(options.enable_nvenc, '*-*-linux*', ++ options.enable_nvenc = IfHost(options.enable_nvenc, '*-*-linux*', '*-*-freebsd*', + '*-*-mingw*', none=False).value + # NUMA is linux only and only needed with x265 + options.enable_numa = (IfHost(options.enable_numa, '*-*-linux*', none=False).value and options.enable_x265) # Disable QSV on unsupported platforms @@ -18,9 +31,12 @@ '*-*-mingw*', none=False).value # Disable VCE on unsupported platforms options.enable_vce = IfHost(options.enable_vce, '*-*-linux*', '*-*-mingw*', -@@ -2124,7 +2124,7 @@ int main() +@@ -2121,9 +2121,9 @@ int main() + stdout.write( 'Enable FFmpeg AAC: %s' % options.enable_ffmpeg_aac ) + stdout.write( ' (%s)\n' % note_required ) if host_tuple.system != 'darwin' else stdout.write( '\n' ) 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( ' (%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 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' )