From 93912d99d23fa964d4dadcda9a90c8fbe7bb1faa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Batlle=20i=20Rossell?= Date: Tue, 14 Jun 2016 17:50:53 +0200 Subject: [PATCH] Adding nvenc support to ffmpeg (default off) I add the nvidia-video-sdk header files, required to make it work. You have to set nvenct=true to ffmpeg-full and nonfreeLicensing=true to ffmpeg-full to use this. --- .../libraries/ffmpeg-full/default.nix | 6 +++-- .../libraries/nvidia-video-sdk/default.nix | 27 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/libraries/nvidia-video-sdk/default.nix diff --git a/pkgs/development/libraries/ffmpeg-full/default.nix b/pkgs/development/libraries/ffmpeg-full/default.nix index 0f6ffe51d854..26bc727dfdea 100644 --- a/pkgs/development/libraries/ffmpeg-full/default.nix +++ b/pkgs/development/libraries/ffmpeg-full/default.nix @@ -99,7 +99,7 @@ , libxcbshapeExtlib ? true # X11 grabbing shape rendering , libXv ? null # Xlib support , lzma ? null # xz-utils -#, nvenc ? null # NVIDIA NVENC support +, nvenc ? false, nvidia-video-sdk ? null # NVIDIA NVENC support , openal ? null # OpenAL 1.1 capture support #, opencl ? null # OpenCL code #, opencore-amr ? null # AMR-NB de/encoder & AMR-WB decoder @@ -232,6 +232,7 @@ assert libxcbshapeExtlib -> libxcb != null; assert openglExtlib -> mesa != null; assert opensslExtlib -> gnutls == null && openssl != null && nonfreeLicensing; assert x11grabExtlib -> libX11 != null && libXv != null; +assert nvenc -> nvidia-video-sdk != null && nonfreeLicensing; stdenv.mkDerivation rec { name = "ffmpeg-full-${version}"; @@ -356,7 +357,7 @@ stdenv.mkDerivation rec { (enableFeature libxcbxfixesExtlib "libxcb-xfixes") (enableFeature libxcbshapeExtlib "libxcb-shape") (enableFeature (lzma != null) "lzma") - #(enableFeature nvenc "nvenc") + (enableFeature nvenc "nvenc") (enableFeature (openal != null) "openal") #(enableFeature opencl "opencl") #(enableFeature (opencore-amr != null && version3Licensing) "libopencore-amrnb") @@ -410,6 +411,7 @@ stdenv.mkDerivation rec { ++ optionals nonfreeLicensing [ faac fdk_aac openssl ] ++ optional ((isLinux || isFreeBSD) && libva != null) libva ++ optionals isLinux [ alsaLib libraw1394 libv4l ] + ++ optionals nvenc [ nvidia-video-sdk ] ++ optionals stdenv.isDarwin [ Cocoa CoreServices AVFoundation MediaToolbox VideoDecodeAcceleration ]; diff --git a/pkgs/development/libraries/nvidia-video-sdk/default.nix b/pkgs/development/libraries/nvidia-video-sdk/default.nix new file mode 100644 index 000000000000..798f9d3a3965 --- /dev/null +++ b/pkgs/development/libraries/nvidia-video-sdk/default.nix @@ -0,0 +1,27 @@ +{ stdenv, fetchurl, unzip }: + +stdenv.mkDerivation rec { + name = "nvidia-video-sdk-6.0.1"; + + src = fetchurl { + url = "https://developer.nvidia.com/video-sdk-601"; + name = "nvidia_video_sdk_6.0.1.zip"; + sha256 = "08h1vnqsv22js9v3pyim5yb80z87baxb7s2g5gsvvjax07j7w8h5"; + }; + + buildInputs = [ unzip ]; + + # We only need the header files. The library files are + # in the nvidia_x11 driver. + installPhase = '' + mkdir -p $out/include + cp -R Samples/common/inc/* $out/include + ''; + + meta = with stdenv.lib; { + description = "The NVIDIA Video Codec SDK"; + homepage = https://developer.nvidia.com/nvidia-video-codec-sdk; + license = licenses.unfree; + }; +} + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1402c4b7b9c8..6007aa1afb00 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -8586,6 +8586,8 @@ in nvidia-texture-tools = callPackage ../development/libraries/nvidia-texture-tools { }; + nvidia-video-sdk = callPackage ../development/libraries/nvidia-video-sdk { }; + ocl-icd = callPackage ../development/libraries/ocl-icd { }; ode = callPackage ../development/libraries/ode { };