2019-07-30 13:30:19 +00:00
|
|
|
{ stdenv, fetchurl, fetchpatch, pkgconfig, perl, texinfo, yasm
|
2015-04-07 07:34:27 +00:00
|
|
|
/*
|
|
|
|
* Licensing options (yes some are listed twice, filters and such are not listed)
|
|
|
|
*/
|
|
|
|
, gplLicensing ? true # GPL: fdkaac,openssl,frei0r,cdio,samba,utvideo,vidstab,x265,x265,xavs,avid,zvbi,x11grab
|
|
|
|
, version3Licensing ? true # (L)GPL3: opencore-amrnb,opencore-amrwb,samba,vo-aacenc,vo-amrwbenc
|
2017-01-25 02:35:42 +00:00
|
|
|
, nonfreeLicensing ? false # NONFREE: openssl,fdkaac,blackmagic-design-desktop-video
|
2015-04-07 07:34:27 +00:00
|
|
|
/*
|
|
|
|
* Build options
|
|
|
|
*/
|
|
|
|
, smallBuild ? false # Optimize for size instead of speed
|
|
|
|
, runtimeCpuDetectBuild ? true # Detect CPU capabilities at runtime (disable to compile natively)
|
|
|
|
, grayBuild ? true # Full grayscale support
|
|
|
|
, swscaleAlphaBuild ? true # Alpha channel support in swscale
|
|
|
|
, hardcodedTablesBuild ? true # Hardcode decode tables instead of runtime generation
|
|
|
|
, safeBitstreamReaderBuild ? true # Buffer boundary checking in bitreaders
|
|
|
|
, multithreadBuild ? true # Multithreading via pthreads/win32 threads
|
|
|
|
, networkBuild ? true # Network support
|
|
|
|
, pixelutilsBuild ? true # Pixel utils in libavutil
|
2017-05-07 06:34:03 +00:00
|
|
|
, enableLto ? false # build with link-time optimization
|
2015-04-07 07:34:27 +00:00
|
|
|
/*
|
|
|
|
* Program options
|
|
|
|
*/
|
|
|
|
, ffmpegProgram ? true # Build ffmpeg executable
|
|
|
|
, ffplayProgram ? true # Build ffplay executable
|
|
|
|
, ffprobeProgram ? true # Build ffprobe executable
|
|
|
|
, qtFaststartProgram ? true # Build qt-faststart executable
|
|
|
|
/*
|
|
|
|
* Library options
|
|
|
|
*/
|
|
|
|
, avcodecLibrary ? true # Build avcodec library
|
|
|
|
, avdeviceLibrary ? true # Build avdevice library
|
|
|
|
, avfilterLibrary ? true # Build avfilter library
|
|
|
|
, avformatLibrary ? true # Build avformat library
|
|
|
|
, avresampleLibrary ? true # Build avresample library
|
|
|
|
, avutilLibrary ? true # Build avutil library
|
|
|
|
, postprocLibrary ? true # Build postproc library
|
|
|
|
, swresampleLibrary ? true # Build swresample library
|
|
|
|
, swscaleLibrary ? true # Build swscale library
|
|
|
|
/*
|
|
|
|
* Documentation options
|
|
|
|
*/
|
|
|
|
, htmlpagesDocumentation ? false # HTML documentation pages
|
|
|
|
, manpagesDocumentation ? true # Man documentation pages
|
|
|
|
, podpagesDocumentation ? false # POD documentation pages
|
|
|
|
, txtpagesDocumentation ? false # Text documentation pages
|
|
|
|
/*
|
|
|
|
* External libraries options
|
|
|
|
*/
|
|
|
|
, alsaLib ? null # Alsa in/output support
|
|
|
|
#, avisynth ? null # Support for reading AviSynth scripts
|
|
|
|
, bzip2 ? null
|
|
|
|
, celt ? null # CELT decoder
|
|
|
|
#, crystalhd ? null # Broadcom CrystalHD hardware acceleration
|
2019-08-21 14:15:47 +00:00
|
|
|
, dav1d ? null # AV1 decoder (focused on speed and correctness)
|
2015-04-07 07:34:27 +00:00
|
|
|
#, decklinkExtlib ? false, blackmagic-design-desktop-video ? null # Blackmagic Design DeckLink I/O support
|
|
|
|
, fdkaacExtlib ? false, fdk_aac ? null # Fraunhofer FDK AAC de/encoder
|
|
|
|
#, flite ? null # Flite (voice synthesis) support
|
|
|
|
, fontconfig ? null # Needed for drawtext filter
|
|
|
|
, freetype ? null # Needed for drawtext filter
|
|
|
|
, frei0r ? null # frei0r video filtering
|
|
|
|
, fribidi ? null # Needed for drawtext filter
|
|
|
|
, game-music-emu ? null # Game Music Emulator
|
|
|
|
, gnutls ? null
|
|
|
|
, gsm ? null # GSM de/encoder
|
|
|
|
#, ilbc ? null # iLBC de/encoder
|
2015-06-27 07:17:52 +00:00
|
|
|
, libjack2 ? null # Jack audio (only version 2 is supported in this build)
|
2015-04-07 07:34:27 +00:00
|
|
|
, ladspaH ? null # LADSPA audio filtering
|
|
|
|
, lame ? null # LAME MP3 encoder
|
|
|
|
, libass ? null # (Advanced) SubStation Alpha subtitle rendering
|
2018-08-01 15:03:44 +00:00
|
|
|
, libaom ? null # AV1 encoder
|
2015-04-07 07:34:27 +00:00
|
|
|
, libbluray ? null # BluRay reading
|
|
|
|
, libbs2b ? null # bs2b DSP library
|
|
|
|
, libcaca ? null # Textual display (ASCII art)
|
|
|
|
#, libcdio-paranoia ? null # Audio CD grabbing
|
|
|
|
, libdc1394 ? null, libraw1394 ? null # IIDC-1394 grabbing (ieee 1394)
|
|
|
|
, libiconv ? null
|
|
|
|
#, libiec61883 ? null, libavc1394 ? null # iec61883 (also uses libraw1394)
|
2019-03-11 07:10:56 +00:00
|
|
|
, libmfx ? null # Hardware acceleration vis libmfx
|
2015-04-07 07:34:27 +00:00
|
|
|
, libmodplug ? null # ModPlug support
|
2018-03-26 10:35:23 +00:00
|
|
|
, libmysofa ? null # HRTF support via SOFAlizer
|
2015-04-07 07:34:27 +00:00
|
|
|
#, libnut ? null # NUT (de)muxer, native (de)muser exists
|
|
|
|
, libogg ? null # Ogg container used by vorbis & theora
|
|
|
|
, libopus ? null # Opus de/encoder
|
|
|
|
, libssh ? null # SFTP protocol
|
|
|
|
, libtheora ? null # Theora encoder
|
|
|
|
, libv4l ? null # Video 4 Linux support
|
|
|
|
, libva ? null # Vaapi hardware acceleration
|
|
|
|
, libvdpau ? null # Vdpau hardware acceleration
|
|
|
|
, libvorbis ? null # Vorbis de/encoding, native encoder exists
|
|
|
|
, libvpx ? null # VP8 & VP9 de/encoding
|
|
|
|
, libwebp ? null # WebP encoder
|
|
|
|
, libX11 ? null # Xlib support
|
|
|
|
, libxcb ? null # X11 grabbing using XCB
|
|
|
|
, libxcbshmExtlib ? true # X11 grabbing shm communication
|
|
|
|
, libxcbxfixesExtlib ? true # X11 grabbing mouse rendering
|
|
|
|
, libxcbshapeExtlib ? true # X11 grabbing shape rendering
|
|
|
|
, libXv ? null # Xlib support
|
2018-12-17 15:48:54 +00:00
|
|
|
, libXext ? null # Xlib support
|
2015-04-07 07:34:27 +00:00
|
|
|
, lzma ? null # xz-utils
|
2019-08-23 09:01:47 +00:00
|
|
|
, nvenc ? !stdenv.isDarwin && !stdenv.isAarch64, nv-codec-headers ? null # NVIDIA NVENC support
|
2015-04-07 07:34:27 +00:00
|
|
|
, openal ? null # OpenAL 1.1 capture support
|
|
|
|
#, opencl ? null # OpenCL code
|
2017-08-09 01:40:36 +00:00
|
|
|
, opencore-amr ? null # AMR-NB de/encoder & AMR-WB decoder
|
2015-04-07 07:34:27 +00:00
|
|
|
#, opencv ? null # Video filtering
|
2018-02-24 13:12:44 +00:00
|
|
|
, openglExtlib ? false, libGLU_combined ? null # OpenGL rendering
|
2015-04-07 07:34:27 +00:00
|
|
|
#, openh264 ? null # H.264/AVC encoder
|
2018-05-12 09:45:22 +00:00
|
|
|
, openjpeg ? null # JPEG 2000 de/encoder
|
2015-04-07 07:34:27 +00:00
|
|
|
, opensslExtlib ? false, openssl ? null
|
2015-05-27 19:42:15 +00:00
|
|
|
, libpulseaudio ? null # Pulseaudio input support
|
2015-04-07 07:34:27 +00:00
|
|
|
, rtmpdump ? null # RTMP[E] support
|
|
|
|
#, libquvi ? null # Quvi input support
|
|
|
|
, samba ? null # Samba protocol
|
|
|
|
#, schroedinger ? null # Dirac de/encoder
|
2017-04-07 03:12:20 +00:00
|
|
|
, SDL2 ? null
|
2015-04-07 07:34:27 +00:00
|
|
|
#, shine ? null # Fixed-point MP3 encoder
|
|
|
|
, soxr ? null # Resampling via soxr
|
|
|
|
, speex ? null # Speex de/encoder
|
|
|
|
#, twolame ? null # MP2 encoder
|
|
|
|
#, utvideo ? null # Ut Video de/encoder
|
|
|
|
, vid-stab ? null # Video stabilization
|
|
|
|
#, vo-aacenc ? null # AAC encoder
|
2018-04-17 15:41:47 +00:00
|
|
|
, vo-amrwbenc ? null # AMR-WB encoder
|
2015-04-07 07:34:27 +00:00
|
|
|
, wavpack ? null # Wavpack encoder
|
|
|
|
, x264 ? null # H.264/AVC encoder
|
|
|
|
, x265 ? null # H.265/HEVC encoder
|
|
|
|
, xavs ? null # AVS encoder
|
|
|
|
, xvidcore ? null # Xvid encoder, native encoder exists
|
|
|
|
, zeromq4 ? null # Message passing
|
|
|
|
, zlib ? null
|
|
|
|
#, zvbi ? null # Teletext support
|
|
|
|
/*
|
|
|
|
* Developer options
|
|
|
|
*/
|
|
|
|
, debugDeveloper ? false
|
|
|
|
, optimizationsDeveloper ? true
|
|
|
|
, extraWarningsDeveloper ? false
|
|
|
|
, strippingDeveloper ? false
|
2015-11-11 21:56:38 +00:00
|
|
|
/*
|
|
|
|
* Darwin frameworks
|
|
|
|
*/
|
2016-08-31 18:03:58 +00:00
|
|
|
, Cocoa, CoreAudio, CoreServices, AVFoundation, MediaToolbox
|
2019-06-19 18:01:18 +00:00
|
|
|
, VideoDecodeAcceleration
|
2015-04-07 07:34:27 +00:00
|
|
|
}:
|
|
|
|
|
|
|
|
/* Maintainer notes:
|
|
|
|
*
|
|
|
|
* Version bumps:
|
|
|
|
* It should always be safe to bump patch releases (e.g. 2.1.x, x being a patch release)
|
|
|
|
* If adding a new branch, note any configure flags that were added, changed, or deprecated/removed
|
|
|
|
* and make the necessary changes.
|
|
|
|
*
|
|
|
|
* Packages with errors:
|
|
|
|
* flite ilbc schroedinger
|
|
|
|
* opencv - circular dependency issue
|
|
|
|
*
|
|
|
|
* Not packaged:
|
|
|
|
* aacplus avisynth cdio-paranoia crystalhd libavc1394 libiec61883
|
2019-03-11 07:10:56 +00:00
|
|
|
* libnut libquvi nvenc opencl openh264 oss shine twolame
|
2015-04-07 07:34:27 +00:00
|
|
|
* utvideo vo-aacenc vo-amrwbenc xvmc zvbi blackmagic-design-desktop-video
|
|
|
|
*
|
|
|
|
* Need fixes to support Darwin:
|
2019-03-11 07:10:56 +00:00
|
|
|
* frei0r game-music-emu gsm libjack2 libmfx(intel-media-sdk) libssh
|
|
|
|
* libvpx(stable 1.3.0) openal openjpeg pulseaudio rtmpdump samba vid-stab
|
|
|
|
* wavpack x265 xavs
|
2015-04-07 07:34:27 +00:00
|
|
|
*
|
2019-08-23 09:01:47 +00:00
|
|
|
* Need fixes to support AArch64:
|
|
|
|
* libmfx(intel-media-sdk) nvenc
|
|
|
|
*
|
2015-04-07 07:34:27 +00:00
|
|
|
* Not supported:
|
|
|
|
* stagefright-h264(android only)
|
|
|
|
*
|
|
|
|
* Known issues:
|
|
|
|
* flite: configure fails to find library
|
|
|
|
* Tried modifying ffmpeg's configure script and flite to use pkg-config
|
|
|
|
* Cross-compiling will disable features not present on host OS
|
|
|
|
* (e.g. dxva2 support [DirectX] will not be enabled unless natively compiled on Cygwin)
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
let
|
2019-08-23 09:01:47 +00:00
|
|
|
inherit (stdenv) isCygwin isDarwin isFreeBSD isLinux isAarch64;
|
2016-03-11 20:12:55 +00:00
|
|
|
inherit (stdenv.lib) optional optionals optionalString enableFeature;
|
2015-04-07 07:34:27 +00:00
|
|
|
in
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Licensing dependencies
|
|
|
|
*/
|
|
|
|
assert version3Licensing -> gplLicensing;
|
|
|
|
assert nonfreeLicensing -> gplLicensing && version3Licensing;
|
|
|
|
/*
|
|
|
|
* Build dependencies
|
|
|
|
*/
|
|
|
|
assert networkBuild -> gnutls != null || opensslExtlib;
|
|
|
|
assert pixelutilsBuild -> avutilLibrary;
|
2019-06-22 03:04:23 +00:00
|
|
|
/*
|
|
|
|
* Platform dependencies
|
|
|
|
*/
|
|
|
|
assert isDarwin -> !nvenc;
|
2015-04-07 07:34:27 +00:00
|
|
|
/*
|
|
|
|
* Program dependencies
|
|
|
|
*/
|
|
|
|
assert ffmpegProgram -> avcodecLibrary
|
|
|
|
&& avfilterLibrary
|
|
|
|
&& avformatLibrary
|
|
|
|
&& swresampleLibrary;
|
|
|
|
assert ffplayProgram -> avcodecLibrary
|
|
|
|
&& avformatLibrary
|
|
|
|
&& swscaleLibrary
|
|
|
|
&& swresampleLibrary
|
2017-04-07 03:12:20 +00:00
|
|
|
&& SDL2 != null;
|
2015-04-07 07:34:27 +00:00
|
|
|
assert ffprobeProgram -> avcodecLibrary && avformatLibrary;
|
|
|
|
/*
|
|
|
|
* Library dependencies
|
|
|
|
*/
|
|
|
|
assert avcodecLibrary -> avutilLibrary; # configure flag since 0.6
|
|
|
|
assert avdeviceLibrary -> avformatLibrary
|
|
|
|
&& avcodecLibrary
|
|
|
|
&& avutilLibrary; # configure flag since 0.6
|
|
|
|
assert avformatLibrary -> avcodecLibrary && avutilLibrary; # configure flag since 0.6
|
|
|
|
assert avresampleLibrary -> avutilLibrary;
|
|
|
|
assert postprocLibrary -> avutilLibrary;
|
|
|
|
assert swresampleLibrary -> soxr != null;
|
|
|
|
assert swscaleLibrary -> avutilLibrary;
|
|
|
|
/*
|
|
|
|
* External libraries
|
|
|
|
*/
|
|
|
|
#assert decklinkExtlib -> blackmagic-design-desktop-video != null
|
|
|
|
# && !isCygwin && multithreadBuild # POSIX threads required
|
|
|
|
# && nonfreeLicensing;
|
|
|
|
assert fdkaacExtlib -> fdk_aac != null && nonfreeLicensing;
|
|
|
|
assert gnutls != null -> !opensslExtlib;
|
|
|
|
assert libxcbshmExtlib -> libxcb != null;
|
|
|
|
assert libxcbxfixesExtlib -> libxcb != null;
|
|
|
|
assert libxcbshapeExtlib -> libxcb != null;
|
2018-02-24 13:12:44 +00:00
|
|
|
assert openglExtlib -> libGLU_combined != null;
|
2015-04-07 07:34:27 +00:00
|
|
|
assert opensslExtlib -> gnutls == null && openssl != null && nonfreeLicensing;
|
|
|
|
|
|
|
|
stdenv.mkDerivation rec {
|
2019-08-15 12:41:18 +00:00
|
|
|
pname = "ffmpeg-full";
|
2019-09-14 18:12:49 +00:00
|
|
|
version = "4.2.1";
|
2015-04-07 07:34:27 +00:00
|
|
|
|
|
|
|
src = fetchurl {
|
2016-06-18 13:16:33 +00:00
|
|
|
url = "https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz";
|
2019-09-14 18:12:49 +00:00
|
|
|
sha256 = "1m5nkc61ihgcf0b2wabm0zyqa8sj3c0w8fi6kr879lb0kdzciiyf";
|
2015-04-07 07:34:27 +00:00
|
|
|
};
|
2019-08-21 14:15:47 +00:00
|
|
|
|
|
|
|
patches = [ ./prefer-libdav1d-over-libaom.patch ];
|
2015-04-07 07:34:27 +00:00
|
|
|
|
2017-11-27 23:24:02 +00:00
|
|
|
prePatch = ''
|
|
|
|
patchShebangs .
|
2016-08-31 18:03:58 +00:00
|
|
|
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
|
|
|
sed -i 's/#ifndef __MAC_10_11/#if 1/' ./libavcodec/audiotoolboxdec.c
|
2017-07-30 10:52:03 +00:00
|
|
|
'' + stdenv.lib.optionalString (frei0r != null) ''
|
|
|
|
substituteInPlace libavfilter/vf_frei0r.c \
|
|
|
|
--replace /usr/local/lib/frei0r-1 ${frei0r}/lib/frei0r-1
|
|
|
|
substituteInPlace doc/filters.texi \
|
|
|
|
--replace /usr/local/lib/frei0r-1 ${frei0r}/lib/frei0r-1
|
2016-08-31 18:03:58 +00:00
|
|
|
'';
|
2015-04-07 07:34:27 +00:00
|
|
|
|
2018-05-10 05:38:51 +00:00
|
|
|
configurePlatforms = [];
|
2015-04-07 07:34:27 +00:00
|
|
|
configureFlags = [
|
2018-08-20 18:43:41 +00:00
|
|
|
"--target_os=${stdenv.hostPlatform.parsed.kernel.name}"
|
|
|
|
"--arch=${stdenv.hostPlatform.parsed.cpu.name}"
|
2015-04-07 07:34:27 +00:00
|
|
|
/*
|
|
|
|
* Licensing flags
|
|
|
|
*/
|
|
|
|
(enableFeature gplLicensing "gpl")
|
|
|
|
(enableFeature version3Licensing "version3")
|
|
|
|
(enableFeature nonfreeLicensing "nonfree")
|
|
|
|
/*
|
|
|
|
* Build flags
|
|
|
|
*/
|
|
|
|
# On some ARM platforms --enable-thumb
|
2019-08-31 12:10:53 +00:00
|
|
|
"--enable-shared"
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature true "pic")
|
2015-08-04 16:55:29 +00:00
|
|
|
(if stdenv.cc.isClang then "--cc=clang" else null)
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature smallBuild "small")
|
|
|
|
(enableFeature runtimeCpuDetectBuild "runtime-cpudetect")
|
2017-05-07 06:34:03 +00:00
|
|
|
(enableFeature enableLto "lto")
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature grayBuild "gray")
|
|
|
|
(enableFeature swscaleAlphaBuild "swscale-alpha")
|
|
|
|
(enableFeature hardcodedTablesBuild "hardcoded-tables")
|
|
|
|
(enableFeature safeBitstreamReaderBuild "safe-bitstream-reader")
|
|
|
|
(if multithreadBuild then (
|
|
|
|
if isCygwin then
|
|
|
|
"--disable-pthreads --enable-w32threads"
|
|
|
|
else # Use POSIX threads by default
|
|
|
|
"--enable-pthreads --disable-w32threads")
|
|
|
|
else
|
|
|
|
"--disable-pthreads --disable-w32threads")
|
|
|
|
"--disable-os2threads" # We don't support OS/2
|
|
|
|
(enableFeature networkBuild "network")
|
|
|
|
(enableFeature pixelutilsBuild "pixelutils")
|
|
|
|
/*
|
|
|
|
* Program flags
|
|
|
|
*/
|
|
|
|
(enableFeature ffmpegProgram "ffmpeg")
|
|
|
|
(enableFeature ffplayProgram "ffplay")
|
|
|
|
(enableFeature ffprobeProgram "ffprobe")
|
|
|
|
/*
|
|
|
|
* Library flags
|
|
|
|
*/
|
|
|
|
(enableFeature avcodecLibrary "avcodec")
|
|
|
|
(enableFeature avdeviceLibrary "avdevice")
|
|
|
|
(enableFeature avfilterLibrary "avfilter")
|
|
|
|
(enableFeature avformatLibrary "avformat")
|
|
|
|
(enableFeature avresampleLibrary "avresample")
|
|
|
|
(enableFeature avutilLibrary "avutil")
|
|
|
|
(enableFeature (postprocLibrary && gplLicensing) "postproc")
|
|
|
|
(enableFeature swresampleLibrary "swresample")
|
|
|
|
(enableFeature swscaleLibrary "swscale")
|
|
|
|
/*
|
|
|
|
* Documentation flags
|
|
|
|
*/
|
|
|
|
(enableFeature (htmlpagesDocumentation
|
|
|
|
|| manpagesDocumentation
|
|
|
|
|| podpagesDocumentation
|
|
|
|
|| txtpagesDocumentation) "doc")
|
|
|
|
(enableFeature htmlpagesDocumentation "htmlpages")
|
|
|
|
(enableFeature manpagesDocumentation "manpages")
|
|
|
|
(enableFeature podpagesDocumentation "podpages")
|
|
|
|
(enableFeature txtpagesDocumentation "txtpages")
|
|
|
|
/*
|
|
|
|
* External libraries
|
|
|
|
*/
|
|
|
|
#(enableFeature avisynth "avisynth")
|
|
|
|
(enableFeature (bzip2 != null) "bzlib")
|
|
|
|
(enableFeature (celt != null) "libcelt")
|
|
|
|
#(enableFeature crystalhd "crystalhd")
|
2019-08-21 14:15:47 +00:00
|
|
|
(enableFeature (dav1d != null) "libdav1d")
|
2015-04-07 07:34:27 +00:00
|
|
|
#(enableFeature decklinkExtlib "decklink")
|
|
|
|
(enableFeature (fdkaacExtlib && gplLicensing) "libfdk-aac")
|
|
|
|
#(enableFeature (flite != null) "libflite")
|
|
|
|
"--disable-libflite" # Force disable until a solution is found
|
|
|
|
(enableFeature (fontconfig != null) "fontconfig")
|
|
|
|
(enableFeature (freetype != null) "libfreetype")
|
|
|
|
(enableFeature (frei0r != null && gplLicensing) "frei0r")
|
|
|
|
(enableFeature (fribidi != null) "libfribidi")
|
|
|
|
(enableFeature (game-music-emu != null) "libgme")
|
|
|
|
(enableFeature (gnutls != null) "gnutls")
|
|
|
|
(enableFeature (gsm != null) "libgsm")
|
|
|
|
#(enableFeature (ilbc != null) "libilbc")
|
|
|
|
(enableFeature (ladspaH !=null) "ladspa")
|
|
|
|
(enableFeature (lame != null) "libmp3lame")
|
2018-08-01 15:03:44 +00:00
|
|
|
(enableFeature (libaom != null) "libaom")
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature (libass != null) "libass")
|
|
|
|
#(enableFeature (libavc1394 != null) null null)
|
|
|
|
(enableFeature (libbluray != null) "libbluray")
|
|
|
|
(enableFeature (libbs2b != null) "libbs2b")
|
|
|
|
#(enableFeature (libcaca != null) "libcaca")
|
|
|
|
#(enableFeature (cdio-paranoia != null && gplLicensing) "libcdio")
|
|
|
|
(enableFeature (if isLinux then libdc1394 != null && libraw1394 != null else false) "libdc1394")
|
|
|
|
(enableFeature (libiconv != null) "iconv")
|
|
|
|
#(enableFeature (if isLinux then libiec61883 != null && libavc1394 != null && libraw1394 != null else false) "libiec61883")
|
2019-08-23 09:01:47 +00:00
|
|
|
(enableFeature (if isLinux && !isAarch64 then libmfx != null else false) "libmfx")
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature (libmodplug != null) "libmodplug")
|
2018-03-26 10:35:23 +00:00
|
|
|
(enableFeature (libmysofa != null) "libmysofa")
|
2015-04-07 07:34:27 +00:00
|
|
|
#(enableFeature (libnut != null) "libnut")
|
|
|
|
(enableFeature (libopus != null) "libopus")
|
|
|
|
(enableFeature (libssh != null) "libssh")
|
|
|
|
(enableFeature (libtheora != null) "libtheora")
|
|
|
|
(enableFeature (if isLinux then libv4l != null else false) "libv4l2")
|
|
|
|
(enableFeature ((isLinux || isFreeBSD) && libva != null) "vaapi")
|
|
|
|
(enableFeature (libvdpau != null) "vdpau")
|
|
|
|
(enableFeature (libvorbis != null) "libvorbis")
|
|
|
|
(enableFeature (libvpx != null) "libvpx")
|
|
|
|
(enableFeature (libwebp != null) "libwebp")
|
2018-12-17 15:48:54 +00:00
|
|
|
(enableFeature (libX11 != null && libXv != null && libXext != null) "xlib")
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature (libxcb != null) "libxcb")
|
|
|
|
(enableFeature libxcbshmExtlib "libxcb-shm")
|
|
|
|
(enableFeature libxcbxfixesExtlib "libxcb-xfixes")
|
|
|
|
(enableFeature libxcbshapeExtlib "libxcb-shape")
|
|
|
|
(enableFeature (lzma != null) "lzma")
|
2016-06-14 15:50:53 +00:00
|
|
|
(enableFeature nvenc "nvenc")
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature (openal != null) "openal")
|
|
|
|
#(enableFeature opencl "opencl")
|
2017-08-09 01:40:36 +00:00
|
|
|
(enableFeature (opencore-amr != null && version3Licensing) "libopencore-amrnb")
|
2015-04-07 07:34:27 +00:00
|
|
|
#(enableFeature (opencv != null) "libopencv")
|
|
|
|
(enableFeature openglExtlib "opengl")
|
|
|
|
#(enableFeature (openh264 != null) "openh264")
|
2018-05-12 09:45:22 +00:00
|
|
|
(enableFeature (openjpeg != null) "libopenjpeg")
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature (opensslExtlib && gplLicensing) "openssl")
|
2015-05-27 19:42:15 +00:00
|
|
|
(enableFeature (libpulseaudio != null) "libpulse")
|
2015-04-07 07:34:27 +00:00
|
|
|
#(enableFeature quvi "libquvi")
|
|
|
|
(enableFeature (rtmpdump != null) "librtmp")
|
|
|
|
#(enableFeature (schroedinger != null) "libschroedinger")
|
2017-04-07 03:12:20 +00:00
|
|
|
(enableFeature (SDL2 != null) "sdl2")
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature (soxr != null) "libsoxr")
|
|
|
|
(enableFeature (speex != null) "libspeex")
|
|
|
|
#(enableFeature (twolame != null) "libtwolame")
|
|
|
|
#(enableFeature (utvideo != null && gplLicensing) "libutvideo")
|
|
|
|
(enableFeature (vid-stab != null && gplLicensing) "libvidstab") # Actual min. version 2.0
|
|
|
|
#(enableFeature (vo-aacenc != null && version3Licensing) "libvo-aacenc")
|
2018-04-17 15:41:47 +00:00
|
|
|
(enableFeature (vo-amrwbenc != null && version3Licensing) "libvo-amrwbenc")
|
2015-04-07 07:34:27 +00:00
|
|
|
(enableFeature (wavpack != null) "libwavpack")
|
|
|
|
(enableFeature (x264 != null && gplLicensing) "libx264")
|
|
|
|
(enableFeature (x265 != null && gplLicensing) "libx265")
|
|
|
|
(enableFeature (xavs != null && gplLicensing) "libxavs")
|
|
|
|
(enableFeature (xvidcore != null && gplLicensing) "libxvid")
|
|
|
|
(enableFeature (zeromq4 != null) "libzmq")
|
|
|
|
(enableFeature (zlib != null) "zlib")
|
|
|
|
#(enableFeature (zvbi != null && gplLicensing) "libzvbi")
|
|
|
|
/*
|
|
|
|
* Developer flags
|
|
|
|
*/
|
|
|
|
(enableFeature debugDeveloper "debug")
|
|
|
|
(enableFeature optimizationsDeveloper "optimizations")
|
|
|
|
(enableFeature extraWarningsDeveloper "extra-warnings")
|
|
|
|
(enableFeature strippingDeveloper "stripping")
|
2018-05-10 05:38:51 +00:00
|
|
|
] ++ optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
|
|
|
"--cross-prefix=${stdenv.cc.targetPrefix}"
|
|
|
|
"--enable-cross-compile"
|
2015-04-07 07:34:27 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
nativeBuildInputs = [ perl pkgconfig texinfo yasm ];
|
|
|
|
|
|
|
|
buildInputs = [
|
2019-08-21 14:15:47 +00:00
|
|
|
bzip2 celt dav1d fontconfig freetype frei0r fribidi game-music-emu gnutls gsm
|
2018-08-01 15:03:44 +00:00
|
|
|
libjack2 ladspaH lame libaom libass libbluray libbs2b libcaca libdc1394 libmodplug libmysofa
|
2015-04-07 07:34:27 +00:00
|
|
|
libogg libopus libssh libtheora libvdpau libvorbis libvpx libwebp libX11
|
2018-12-17 15:48:54 +00:00
|
|
|
libxcb libXv libXext lzma openal openjpeg libpulseaudio rtmpdump opencore-amr
|
2018-04-17 15:41:47 +00:00
|
|
|
samba SDL2 soxr speex vid-stab vo-amrwbenc wavpack x264 x265 xavs xvidcore
|
|
|
|
zeromq4 zlib
|
2018-02-24 13:12:44 +00:00
|
|
|
] ++ optional openglExtlib libGLU_combined
|
2017-01-25 02:35:42 +00:00
|
|
|
++ optionals nonfreeLicensing [ fdk_aac openssl ]
|
2015-04-07 07:34:27 +00:00
|
|
|
++ optional ((isLinux || isFreeBSD) && libva != null) libva
|
2015-11-11 21:56:38 +00:00
|
|
|
++ optionals isLinux [ alsaLib libraw1394 libv4l ]
|
2019-08-23 09:01:47 +00:00
|
|
|
++ optional (isLinux && !isAarch64 && libmfx != null) libmfx
|
2019-05-09 17:36:40 +00:00
|
|
|
++ optional nvenc nv-codec-headers
|
2017-02-02 13:47:01 +00:00
|
|
|
++ optionals stdenv.isDarwin [ Cocoa CoreServices CoreAudio AVFoundation
|
2017-10-31 00:33:14 +00:00
|
|
|
MediaToolbox VideoDecodeAcceleration
|
2019-06-19 18:01:18 +00:00
|
|
|
libiconv ];
|
2015-04-07 07:34:27 +00:00
|
|
|
|
2019-05-11 09:08:31 +00:00
|
|
|
buildFlags = [ "all" ]
|
|
|
|
++ optional qtFaststartProgram "tools/qt-faststart"; # Build qt-faststart executable
|
2016-03-11 20:12:55 +00:00
|
|
|
|
|
|
|
# Hacky framework patching technique borrowed from the phantomjs2 package
|
|
|
|
postInstall = optionalString qtFaststartProgram ''
|
|
|
|
cp -a tools/qt-faststart $out/bin/
|
|
|
|
'';
|
|
|
|
|
2015-04-07 07:34:27 +00:00
|
|
|
enableParallelBuilding = true;
|
|
|
|
|
|
|
|
meta = with stdenv.lib; {
|
|
|
|
description = "A complete, cross-platform solution to record, convert and stream audio and video";
|
2016-03-10 22:14:44 +00:00
|
|
|
homepage = https://www.ffmpeg.org/;
|
2015-04-07 07:34:27 +00:00
|
|
|
longDescription = ''
|
2017-02-02 13:47:01 +00:00
|
|
|
FFmpeg is the leading multimedia framework, able to decode, encode, transcode,
|
|
|
|
mux, demux, stream, filter and play pretty much anything that humans and machines
|
|
|
|
have created. It supports the most obscure ancient formats up to the cutting edge.
|
|
|
|
No matter if they were designed by some standards committee, the community or
|
|
|
|
a corporation.
|
2015-04-07 07:34:27 +00:00
|
|
|
'';
|
|
|
|
license = (
|
|
|
|
if nonfreeLicensing then
|
|
|
|
licenses.unfreeRedistributable
|
|
|
|
else if version3Licensing then
|
|
|
|
licenses.gpl3
|
|
|
|
else if gplLicensing then
|
|
|
|
licenses.gpl2Plus
|
|
|
|
else
|
|
|
|
licenses.lgpl21Plus
|
|
|
|
);
|
|
|
|
platforms = platforms.all;
|
|
|
|
maintainers = with maintainers; [ codyopel fuuzetsu ];
|
|
|
|
};
|
|
|
|
}
|