ffmpeg-full: 3.4.2 -> 4.0

init local package nv-codec-headers, which are external nvidia headers,
now used when nvenc is enabled
This commit is contained in:
Cray Elliott 2018-05-12 02:45:22 -07:00
parent fd5ca417f2
commit dd7f08a1a6
3 changed files with 44 additions and 10 deletions

View file

@ -25,7 +25,6 @@
, ffmpegProgram ? true # Build ffmpeg executable , ffmpegProgram ? true # Build ffmpeg executable
, ffplayProgram ? true # Build ffplay executable , ffplayProgram ? true # Build ffplay executable
, ffprobeProgram ? true # Build ffprobe executable , ffprobeProgram ? true # Build ffprobe executable
, ffserverProgram ? true # Build ffserver executable
, qtFaststartProgram ? true # Build qt-faststart executable , qtFaststartProgram ? true # Build qt-faststart executable
/* /*
* Library options * Library options
@ -98,13 +97,14 @@
, libXv ? null # Xlib support , libXv ? null # Xlib support
, lzma ? null # xz-utils , lzma ? null # xz-utils
, nvenc ? false, nvidia-video-sdk ? null # NVIDIA NVENC support , nvenc ? false, nvidia-video-sdk ? null # NVIDIA NVENC support
, callPackage # needed for NVENC to access external ffmpeg nvidia headers
, openal ? null # OpenAL 1.1 capture support , openal ? null # OpenAL 1.1 capture support
#, opencl ? null # OpenCL code #, opencl ? null # OpenCL code
, opencore-amr ? null # AMR-NB de/encoder & AMR-WB decoder , opencore-amr ? null # AMR-NB de/encoder & AMR-WB decoder
#, opencv ? null # Video filtering #, opencv ? null # Video filtering
, openglExtlib ? false, libGLU_combined ? null # OpenGL rendering , openglExtlib ? false, libGLU_combined ? null # OpenGL rendering
#, openh264 ? null # H.264/AVC encoder #, openh264 ? null # H.264/AVC encoder
, openjpeg_1 ? null # JPEG 2000 de/encoder , openjpeg ? null # JPEG 2000 de/encoder
, opensslExtlib ? false, openssl ? null , opensslExtlib ? false, openssl ? null
, libpulseaudio ? null # Pulseaudio input support , libpulseaudio ? null # Pulseaudio input support
, rtmpdump ? null # RTMP[E] support , rtmpdump ? null # RTMP[E] support
@ -159,7 +159,7 @@
* utvideo vo-aacenc vo-amrwbenc xvmc zvbi blackmagic-design-desktop-video * utvideo vo-aacenc vo-amrwbenc xvmc zvbi blackmagic-design-desktop-video
* *
* Need fixes to support Darwin: * Need fixes to support Darwin:
* frei0r, game-music-emu, gsm, libjack2, libssh, libvpx(stable 1.3.0), openal, openjpeg_1, * frei0r, game-music-emu, gsm, libjack2, libssh, libvpx(stable 1.3.0), openal, openjpeg,
* pulseaudio, rtmpdump, samba, vid-stab, wavpack, x265. xavs * pulseaudio, rtmpdump, samba, vid-stab, wavpack, x265. xavs
* *
* Not supported: * Not supported:
@ -176,6 +176,8 @@
let let
inherit (stdenv) isCygwin isFreeBSD isLinux; inherit (stdenv) isCygwin isFreeBSD isLinux;
inherit (stdenv.lib) optional optionals optionalString enableFeature; inherit (stdenv.lib) optional optionals optionalString enableFeature;
nv-codec-headers = callPackage ./nv-codec-headers.nix { };
in in
/* /*
@ -201,7 +203,6 @@ assert ffplayProgram -> avcodecLibrary
&& swresampleLibrary && swresampleLibrary
&& SDL2 != null; && SDL2 != null;
assert ffprobeProgram -> avcodecLibrary && avformatLibrary; assert ffprobeProgram -> avcodecLibrary && avformatLibrary;
assert ffserverProgram -> avformatLibrary;
/* /*
* Library dependencies * Library dependencies
*/ */
@ -231,11 +232,11 @@ assert nvenc -> nvidia-video-sdk != null && nonfreeLicensing;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "ffmpeg-full-${version}"; name = "ffmpeg-full-${version}";
version = "3.4.2"; version = "4.0";
src = fetchurl { src = fetchurl {
url = "https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz"; url = "https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz";
sha256 = "0h6prjn1ijkzzhkyj8mazp0wpx7m0n9ycadjxagf9czqirbyk4ib"; sha256 = "0gx4ngnhi5glmxh38603qy5n6vq8bl1cr4sqd1xff95i82pmv57d";
}; };
prePatch = '' prePatch = ''
@ -286,7 +287,6 @@ stdenv.mkDerivation rec {
(enableFeature ffmpegProgram "ffmpeg") (enableFeature ffmpegProgram "ffmpeg")
(enableFeature ffplayProgram "ffplay") (enableFeature ffplayProgram "ffplay")
(enableFeature ffprobeProgram "ffprobe") (enableFeature ffprobeProgram "ffprobe")
(enableFeature ffserverProgram "ffserver")
/* /*
* Library flags * Library flags
*/ */
@ -365,7 +365,7 @@ stdenv.mkDerivation rec {
#(enableFeature (opencv != null) "libopencv") #(enableFeature (opencv != null) "libopencv")
(enableFeature openglExtlib "opengl") (enableFeature openglExtlib "opengl")
#(enableFeature (openh264 != null) "openh264") #(enableFeature (openh264 != null) "openh264")
(enableFeature (openjpeg_1 != null) "libopenjpeg") (enableFeature (openjpeg != null) "libopenjpeg")
(enableFeature (opensslExtlib && gplLicensing) "openssl") (enableFeature (opensslExtlib && gplLicensing) "openssl")
(enableFeature (libpulseaudio != null) "libpulse") (enableFeature (libpulseaudio != null) "libpulse")
#(enableFeature quvi "libquvi") #(enableFeature quvi "libquvi")
@ -404,14 +404,14 @@ stdenv.mkDerivation rec {
bzip2 celt fontconfig freetype frei0r fribidi game-music-emu gnutls gsm bzip2 celt fontconfig freetype frei0r fribidi game-music-emu gnutls gsm
libjack2 ladspaH lame libass libbluray libbs2b libcaca libdc1394 libmodplug libjack2 ladspaH lame libass libbluray libbs2b libcaca libdc1394 libmodplug
libogg libopus libssh libtheora libvdpau libvorbis libvpx libwebp libX11 libogg libopus libssh libtheora libvdpau libvorbis libvpx libwebp libX11
libxcb libXv lzma openal openjpeg_1 libpulseaudio rtmpdump opencore-amr libxcb libXv lzma openal openjpeg libpulseaudio rtmpdump opencore-amr
samba SDL2 soxr speex vid-stab vo-amrwbenc wavpack x264 x265 xavs xvidcore samba SDL2 soxr speex vid-stab vo-amrwbenc wavpack x264 x265 xavs xvidcore
zeromq4 zlib zeromq4 zlib
] ++ optional openglExtlib libGLU_combined ] ++ optional openglExtlib libGLU_combined
++ optionals nonfreeLicensing [ fdk_aac openssl ] ++ optionals nonfreeLicensing [ fdk_aac openssl ]
++ optional ((isLinux || isFreeBSD) && libva != null) libva ++ optional ((isLinux || isFreeBSD) && libva != null) libva
++ optionals isLinux [ alsaLib libraw1394 libv4l ] ++ optionals isLinux [ alsaLib libraw1394 libv4l ]
++ optionals nvenc [ nvidia-video-sdk ] ++ optionals nvenc [ nvidia-video-sdk nv-codec-headers ]
++ optionals stdenv.isDarwin [ Cocoa CoreServices CoreAudio AVFoundation ++ optionals stdenv.isDarwin [ Cocoa CoreServices CoreAudio AVFoundation
MediaToolbox VideoDecodeAcceleration MediaToolbox VideoDecodeAcceleration
libiconv ]; libiconv ];

View file

@ -0,0 +1,22 @@
{ stdenv, fetchgit }:
stdenv.mkDerivation rec {
name = "nv-codec-headers-${version}";
version = "n8.1.24.2";
src = fetchgit {
url = "https://git.videolan.org/git/ffmpeg/nv-codec-headers.git";
rev = "${version}";
sha256 = "122i3f6whiz5yp44dhk73ifr1973z8vvfbg4216vb782bl8b5bam";
};
makeFlags = [ "PREFIX=$(out)" ];
meta = {
description = "ffmpeg nvidia headers for NVENC";
homepage = http://ffmpeg.org/;
license = stdenv.lib.licenses.gpl3Plus;
maintainers = [ stdenv.lib.maintainers.MP2E ];
platforms = stdenv.lib.platforms.all;
};
}

View file

@ -0,0 +1,12 @@
{ stdenv, callPackage, fetchpatch
# Darwin frameworks
, Cocoa, CoreMedia
, ...
}@args:
callPackage ./generic.nix (args // rec {
version = "${branch}";
branch = "4.0";
sha256 = "1f3k8nz5ag6szsfhlrz66qm8s1yxk1vphqvcfr4ps4690vckk2ii";
darwinFrameworks = [ Cocoa CoreMedia ];
})