diff options
Diffstat (limited to 'pkgs/development/libraries/ffmpeg/generic.nix')
-rw-r--r-- | pkgs/development/libraries/ffmpeg/generic.nix | 140 |
1 files changed, 83 insertions, 57 deletions
diff --git a/pkgs/development/libraries/ffmpeg/generic.nix b/pkgs/development/libraries/ffmpeg/generic.nix index 4e8226c1904a..eab578cf931f 100644 --- a/pkgs/development/libraries/ffmpeg/generic.nix +++ b/pkgs/development/libraries/ffmpeg/generic.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, buildPackages, removeReferencesTo, addDriverRunpath, pkg-config, perl, texinfo, texinfo6, yasm +{ lib, config, stdenv, buildPackages, removeReferencesTo, addDriverRunpath, pkg-config, perl, texinfo, texinfo6, yasm # You can fetch any upstream version using this derivation by specifying version and hash # NOTICE: Always use this argument to override the version. Do not use overrideAttrs. @@ -33,28 +33,27 @@ , fetchpatch2 # Feature flags -, withAlsa ? withHeadlessDeps && stdenv.isLinux # Alsa in/output supporT +, withAlsa ? withHeadlessDeps && stdenv.hostPlatform.isLinux # Alsa in/output supporT , withAmf ? lib.meta.availableOn stdenv.hostPlatform amf # AMD Media Framework video encoding , withAom ? withHeadlessDeps # AV1 reference encoder -, withAppKit ? withHeadlessDeps && stdenv.isDarwin # Apple AppKit framework +, withAribb24 ? withFullDeps # ARIB text and caption decoding , withAribcaption ? withFullDeps && lib.versionAtLeast version "6.1" # ARIB STD-B24 Caption Decoder/Renderer , withAss ? withHeadlessDeps && stdenv.hostPlatform == stdenv.buildPlatform # (Advanced) SubStation Alpha subtitle rendering -, withAudioToolbox ? withHeadlessDeps && stdenv.isDarwin # Apple AudioToolbox -, withAvFoundation ? withHeadlessDeps && stdenv.isDarwin # Apple AVFoundation framework , withAvisynth ? withFullDeps # AviSynth script files reading , withBluray ? withFullDeps # BluRay reading , withBs2b ? withFullDeps # bs2b DSP library , withBzlib ? withHeadlessDeps , withCaca ? withFullDeps # Textual display (ASCII art) +, withCdio ? withFullDeps && withGPL # Audio CD grabbing , withCelt ? withHeadlessDeps # CELT decoder , withChromaprint ? withFullDeps # Audio fingerprinting , withCodec2 ? withFullDeps # codec2 en/decoding -, withCoreImage ? withHeadlessDeps && stdenv.isDarwin # Apple CoreImage framework , withCuda ? withFullDeps && withNvcodec , withCudaLLVM ? withFullDeps +, withCudaNVCC ? withFullDeps && withUnfree && config.cudaSupport , withCuvid ? withHeadlessDeps && withNvcodec , withDav1d ? withHeadlessDeps # AV1 decoder (focused on speed and correctness) -, withDc1394 ? withFullDeps && !stdenv.isDarwin # IIDC-1394 grabbing (ieee 1394) +, withDc1394 ? withFullDeps && !stdenv.hostPlatform.isDarwin # IIDC-1394 grabbing (ieee 1394) , withDrm ? withHeadlessDeps && (with stdenv; isLinux || isFreeBSD) # libdrm support , withDvdnav ? withFullDeps && withGPL && lib.versionAtLeast version "7" # needed for DVD demuxing , withDvdread ? withFullDeps && withGPL && lib.versionAtLeast version "7" # needed for DVD demuxing @@ -71,38 +70,42 @@ , withHarfbuzz ? withHeadlessDeps && lib.versionAtLeast version "6.1" # Needed for drawtext filter , withIconv ? withHeadlessDeps , withIlbc ? withFullDeps # iLBC de/encoding -, withJack ? withFullDeps && !stdenv.isDarwin # Jack audio +, withJack ? withFullDeps && !stdenv.hostPlatform.isDarwin # Jack audio , withJxl ? withFullDeps && lib.versionAtLeast version "5" # JPEG XL de/encoding +, withKvazaar ? withFullDeps # HEVC encoding , withLadspa ? withFullDeps # LADSPA audio filtering +, withLc3 ? withFullDeps && lib.versionAtLeast version "7.1" # LC3 de/encoding +, withLcevcdec ? withFullDeps && lib.versionAtLeast version "7.1" # LCEVC decoding , withLcms2 ? withFullDeps # ICC profile support via lcms2 , withLzma ? withHeadlessDeps # xz-utils , withMetal ? false # Unfree and requires manual downloading of files , withMfx ? withFullDeps && (with stdenv.hostPlatform; isLinux && !isAarch) # Hardware acceleration via intel-media-sdk/libmfx -, withModplug ? withFullDeps && !stdenv.isDarwin # ModPlug support +, withModplug ? withFullDeps && !stdenv.hostPlatform.isDarwin # ModPlug support , withMp3lame ? withHeadlessDeps # LAME MP3 encoder , withMysofa ? withFullDeps # HRTF support via SOFAlizer +, withNpp ? withFullDeps && withUnfree && config.cudaSupport # Nvidia Performance Primitives-based code , withNvdec ? withHeadlessDeps && withNvcodec , withNvenc ? withHeadlessDeps && withNvcodec -, withOgg ? withHeadlessDeps # Ogg container used by vorbis & theora , withOpenal ? withFullDeps # OpenAL 1.1 capture support , withOpencl ? withFullDeps , withOpencoreAmrnb ? withFullDeps && withVersion3 # AMR-NB de/encoder , withOpencoreAmrwb ? withFullDeps && withVersion3 # AMR-WB decoder -, withOpengl ? withFullDeps && !stdenv.isDarwin # OpenGL rendering +, withOpengl ? withFullDeps && !stdenv.hostPlatform.isDarwin # OpenGL rendering , withOpenh264 ? withFullDeps # H.264/AVC encoder , withOpenjpeg ? withHeadlessDeps # JPEG 2000 de/encoder , withOpenmpt ? withFullDeps # Tracked music files decoder , withOpus ? withHeadlessDeps # Opus de/encoder -, withPlacebo ? withFullDeps && !stdenv.isDarwin # libplacebo video processing library -, withPulse ? withSmallDeps && stdenv.isLinux # Pulseaudio input support +, withPlacebo ? withFullDeps && !stdenv.hostPlatform.isDarwin # libplacebo video processing library +, withPulse ? withSmallDeps && stdenv.hostPlatform.isLinux # Pulseaudio input support , withQrencode ? withFullDeps && lib.versionAtLeast version "7" # QR encode generation , withQuirc ? withFullDeps && lib.versionAtLeast version "7" # QR decoding , withRav1e ? withFullDeps # AV1 encoder (focused on speed and safety) +, withRist ? withHeadlessDeps # Reliable Internet Stream Transport (RIST) protocol , withRtmp ? withFullDeps # RTMP[E] support , withRubberband ? withFullDeps && withGPL # Rubberband filter -, withSamba ? withFullDeps && !stdenv.isDarwin && withGPLv3 # Samba protocol +, withSamba ? withFullDeps && !stdenv.hostPlatform.isDarwin && withGPLv3 # Samba protocol , withSdl2 ? withSmallDeps -, withShaderc ? withFullDeps && !stdenv.isDarwin && lib.versionAtLeast version "5.0" +, withShaderc ? withFullDeps && !stdenv.hostPlatform.isDarwin && lib.versionAtLeast version "5.0" , withShine ? withFullDeps # Fixed-point MP3 encoding , withSnappy ? withFullDeps # Snappy compression, needed for hap encoding , withSoxr ? withHeadlessDeps # Resampling via soxr @@ -110,22 +113,22 @@ , withSrt ? withHeadlessDeps # Secure Reliable Transport (SRT) protocol , withSsh ? withHeadlessDeps # SFTP protocol , withSvg ? withFullDeps # SVG protocol -, withSvtav1 ? withHeadlessDeps && !stdenv.isAarch64 && !stdenv.hostPlatform.isMinGW # AV1 encoder/decoder (focused on speed and correctness) +, withSvtav1 ? withHeadlessDeps && !stdenv.hostPlatform.isAarch64 && !stdenv.hostPlatform.isMinGW # AV1 encoder/decoder (focused on speed and correctness) , withTensorflow ? false # Tensorflow dnn backend support (Increases closure size by ~390 MiB) , withTheora ? withHeadlessDeps # Theora encoder , withTwolame ? withFullDeps # MP2 encoding -, withV4l2 ? withHeadlessDeps && stdenv.isLinux # Video 4 Linux support +, withV4l2 ? withHeadlessDeps && stdenv.hostPlatform.isLinux # Video 4 Linux support , withV4l2M2m ? withV4l2 , withVaapi ? withHeadlessDeps && (with stdenv; isLinux || isFreeBSD) # Vaapi hardware acceleration , withVdpau ? withSmallDeps && !stdenv.hostPlatform.isMinGW # Vdpau hardware acceleration -, withVideoToolbox ? withHeadlessDeps && stdenv.isDarwin # Apple VideoToolbox -, withVidStab ? withFullDeps && withGPL # Video stabilization -, withVmaf ? withFullDeps && !stdenv.isAarch64 && lib.versionAtLeast version "5" # Netflix's VMAF (Video Multi-Method Assessment Fusion) +, withVidStab ? withHeadlessDeps && withGPL # Video stabilization +, withVmaf ? withFullDeps && !stdenv.hostPlatform.isAarch64 && lib.versionAtLeast version "5" # Netflix's VMAF (Video Multi-Method Assessment Fusion) , withVoAmrwbenc ? withFullDeps && withVersion3 # AMR-WB encoder , withVorbis ? withHeadlessDeps # Vorbis de/encoding, native encoder exists , withVpl ? false # Hardware acceleration via intel libvpl , withVpx ? withHeadlessDeps && stdenv.buildPlatform == stdenv.hostPlatform # VP8 & VP9 de/encoding -, withVulkan ? withSmallDeps && !stdenv.isDarwin +, withVulkan ? withSmallDeps && !stdenv.hostPlatform.isDarwin +, withVvenc ? withFullDeps && lib.versionAtLeast version "7.1" # H.266/VVC encoding , withWebp ? withHeadlessDeps # WebP encoder , withX264 ? withHeadlessDeps && withGPL # H.264/AVC encoder , withX265 ? withHeadlessDeps && withGPL # H.265/HEVC encoder @@ -134,14 +137,15 @@ , withXcbShape ? withFullDeps # X11 grabbing shape rendering , withXcbShm ? withFullDeps # X11 grabbing shm communication , withXcbxfixes ? withFullDeps # X11 grabbing mouse rendering -, withXevd ? withFullDeps && lib.versionAtLeast version "7" && !xevd.meta.broken # MPEG-5 EVC decoding -, withXeve ? withFullDeps && lib.versionAtLeast version "7" && !xeve.meta.broken # MPEG-5 EVC encoding +, withXevd ? withFullDeps && lib.versionAtLeast version "7.1" && !xevd.meta.broken # MPEG-5 EVC decoding +, withXeve ? withFullDeps && lib.versionAtLeast version "7.1" && !xeve.meta.broken # MPEG-5 EVC encoding , withXlib ? withFullDeps # Xlib support , withXml2 ? withFullDeps # libxml2 support, for IMF and DASH demuxers , withXvid ? withHeadlessDeps && withGPL # Xvid encoder, native encoder exists , withZimg ? withHeadlessDeps , withZlib ? withHeadlessDeps , withZmq ? withFullDeps # Message passing +, withZvbi ? withFullDeps # Teletext support /* * Licensing options (yes some are listed twice, filters and such are not listed) @@ -224,6 +228,7 @@ , alsa-lib , amf , amf-headers +, aribb24 , avisynthplus , bzip2 , celt @@ -242,8 +247,10 @@ , gsm , harfbuzz , intel-media-sdk +, kvazaar , ladspaH , lame +, lcevcdec , lcms2 , libaom , libaribcaption @@ -251,6 +258,8 @@ , libbluray , libbs2b , libcaca +, libcdio +, libcdio-paranoia , libdc1394 , libdrm , libdvdnav @@ -261,15 +270,16 @@ , libilbc , libjack2 , libjxl +, liblc3 , libmodplug , libmysofa -, libogg , libopenmpt , libopus , libplacebo , libplacebo_5 , libpulseaudio , libraw1394 +, librist , librsvg , libssh , libtensorflow @@ -315,6 +325,7 @@ , vo-amrwbenc , vulkan-headers , vulkan-loader +, vvenc , x264 , x265 , xavs @@ -325,17 +336,19 @@ , zeromq4 , zimg , zlib +, zvbi /* - * Darwin frameworks + * Darwin */ -, Accelerate -, AppKit -, AudioToolbox -, AVFoundation -, CoreImage -, VideoToolbox +, apple-sdk_15 , xcode # unfree contains metalcc and metallib /* + * Cuda Packages + */ +, cuda_cudart +, cuda_nvcc +, libnpp +/* * Testing */ , testers @@ -451,16 +464,8 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-sqUUSOPTPLwu2h8GbAw4SfEf+0oWioz52BcpW1n4v3Y="; }) ] - ++ optionals (lib.versionAtLeast version "7.0" && lib.versionOlder version "7.0.1") [ - (fetchpatch2 { - # Will likely be obsolete in >7.0 - name = "fate_avoid_dependency_on_samples"; - url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/7b7b7819bd21cc92ac07f6696b0e7f26fa8f9834"; - hash = "sha256-TKI289XqtG86Sj9s7mVYvmkjAuRXeK+2cYYEDkg6u6I="; - }) - ] - ++ optionals (lib.versionAtLeast version "7.0") [ - ./0001-avfoundation.m-macOS-SDK-10.12-compatibility.patch + ++ optionals (lib.versionAtLeast version "7.1") [ + ./fix-fate-ffmpeg-spec-disposition-7.1.patch # Expose a private API for Chromium / Qt WebEngine. (fetchpatch2 { @@ -554,24 +559,23 @@ stdenv.mkDerivation (finalAttrs: { (enableFeature withAlsa "alsa") (enableFeature withAmf "amf") (enableFeature withAom "libaom") - (enableFeature withAppKit "appkit") + (enableFeature withAribb24 "libaribb24") ] ++ optionals (versionAtLeast version "6.1") [ (enableFeature withAribcaption "libaribcaption") ] ++ [ (enableFeature withAss "libass") - (enableFeature withAudioToolbox "audiotoolbox") - (enableFeature withAvFoundation "avfoundation") (enableFeature withAvisynth "avisynth") (enableFeature withBluray "libbluray") (enableFeature withBs2b "libbs2b") (enableFeature withBzlib "bzlib") (enableFeature withCaca "libcaca") + (enableFeature withCdio "libcdio") (enableFeature withCelt "libcelt") (enableFeature withChromaprint "chromaprint") (enableFeature withCodec2 "libcodec2") - (enableFeature withCoreImage "coreimage") (enableFeature withCuda "cuda") (enableFeature withCudaLLVM "cuda-llvm") + (enableFeature withCudaNVCC "cuda-nvcc") (enableFeature withCuvid "cuvid") (enableFeature withDav1d "libdav1d") (enableFeature withDc1394 "libdc1394") @@ -600,7 +604,11 @@ stdenv.mkDerivation (finalAttrs: { ] ++ optionals (versionAtLeast finalAttrs.version "5.0") [ (enableFeature withJxl "libjxl") ] ++ [ + (enableFeature withKvazaar "libkvazaar") (enableFeature withLadspa "ladspa") + ] ++ optionals (versionAtLeast version "7.1") [ + (enableFeature withLc3 "liblc3") + (enableFeature withLcevcdec "liblcevc-dec") ] ++ optionals (versionAtLeast version "5.1") [ (enableFeature withLcms2 "lcms2") ] ++ [ @@ -612,6 +620,7 @@ stdenv.mkDerivation (finalAttrs: { (enableFeature withModplug "libmodplug") (enableFeature withMp3lame "libmp3lame") (enableFeature withMysofa "libmysofa") + (enableFeature withNpp "libnpp") (enableFeature withNvdec "nvdec") (enableFeature withNvenc "nvenc") (enableFeature withOpenal "openal") @@ -632,6 +641,7 @@ stdenv.mkDerivation (finalAttrs: { (enableFeature withQuirc "libquirc") ] ++ [ (enableFeature withRav1e "librav1e") + (enableFeature withRist "librist") (enableFeature withRtmp "librtmp") (enableFeature withRubberband "librubberband") (enableFeature withSamba "libsmbclient") @@ -657,13 +667,15 @@ stdenv.mkDerivation (finalAttrs: { ] ++ optionals (versionAtLeast version "6.0") [ (enableFeature withVpl "libvpl") ] ++ [ - (enableFeature withVideoToolbox "videotoolbox") (enableFeature withVidStab "libvidstab") # Actual min. version 2.0 (enableFeature withVmaf "libvmaf") (enableFeature withVoAmrwbenc "libvo-amrwbenc") (enableFeature withVorbis "libvorbis") (enableFeature withVpx "libvpx") (enableFeature withVulkan "vulkan") + ] ++ optionals (versionAtLeast version "7.1") [ + (enableFeature withVvenc "libvvenc") + ] ++ [ (enableFeature withWebp "libwebp") (enableFeature withX264 "libx264") (enableFeature withX265 "libx265") @@ -682,6 +694,7 @@ stdenv.mkDerivation (finalAttrs: { (enableFeature withZimg "libzimg") (enableFeature withZlib "zlib") (enableFeature withZmq "libzmq") + (enableFeature withZvbi "libzvbi") /* * Developer flags */ @@ -717,26 +730,27 @@ stdenv.mkDerivation (finalAttrs: { nativeBuildInputs = [ removeReferencesTo addDriverRunpath perl pkg-config yasm ] # Texinfo version 7.1 introduced breaking changes, which older versions of ffmpeg do not handle. ++ (if versionOlder version "5" then [ texinfo6 ] else [ texinfo ]) - ++ optionals withCudaLLVM [ clang ]; + ++ optionals withCudaLLVM [ clang ] + ++ optionals withCudaNVCC [ cuda_nvcc ]; buildInputs = [] + ++ optionals stdenv.hostPlatform.isDarwin [ apple-sdk_15 ] ++ optionals withAlsa [ alsa-lib ] ++ optionals withAmf [ amf-headers ] ++ optionals withAom [ libaom ] - ++ optionals withAppKit [ AppKit ] + ++ optionals withAribb24 [ aribb24 ] ++ optionals withAribcaption [ libaribcaption ] ++ optionals withAss [ libass ] - ++ optionals withAudioToolbox [ AudioToolbox ] - ++ optionals withAvFoundation [ AVFoundation ] ++ optionals withAvisynth [ avisynthplus ] ++ optionals withBluray [ libbluray ] ++ optionals withBs2b [ libbs2b ] ++ optionals withBzlib [ bzip2 ] ++ optionals withCaca [ libcaca ] + ++ optionals withCdio [ libcdio libcdio-paranoia ] ++ optionals withCelt [ celt ] ++ optionals withChromaprint [ chromaprint ] ++ optionals withCodec2 [ codec2 ] - ++ optionals withCoreImage [ CoreImage ] + ++ optionals withCudaNVCC [ cuda_cudart cuda_nvcc ] ++ optionals withDav1d [ dav1d ] ++ optionals withDc1394 [ libdc1394 libraw1394 ] ++ optionals withDrm [ libdrm ] @@ -757,14 +771,17 @@ stdenv.mkDerivation (finalAttrs: { ++ optionals withIlbc [ libilbc ] ++ optionals withJack [ libjack2 ] ++ optionals withJxl [ libjxl ] + ++ optionals withKvazaar [ kvazaar ] ++ optionals withLadspa [ ladspaH ] + ++ optionals withLc3 [ liblc3 ] + ++ optionals withLcevcdec [ lcevcdec ] ++ optionals withLcms2 [ lcms2 ] ++ optionals withLzma [ xz ] ++ optionals withMfx [ intel-media-sdk ] ++ optionals withModplug [ libmodplug ] ++ optionals withMp3lame [ lame ] ++ optionals withMysofa [ libmysofa ] - ++ optionals withOgg [ libogg ] + ++ optionals withNpp [ libnpp cuda_cudart cuda_nvcc ] ++ optionals withOpenal [ openal ] ++ optionals withOpencl [ ocl-icd opencl-headers ] ++ optionals (withOpencoreAmrnb || withOpencoreAmrwb) [ opencore-amr ] @@ -778,8 +795,9 @@ stdenv.mkDerivation (finalAttrs: { ++ optionals withQrencode [ qrencode ] ++ optionals withQuirc [ quirc ] ++ optionals withRav1e [ rav1e ] + ++ optionals withRist [ librist ] ++ optionals withRtmp [ rtmpdump ] - ++ optionals withRubberband ([ rubberband ] ++ lib.optional stdenv.hostPlatform.isDarwin Accelerate) + ++ optionals withRubberband [ rubberband ] ++ optionals withSamba [ samba ] ++ optionals withSdl2 [ SDL2 ] ++ optionals withShaderc [ shaderc ] @@ -797,7 +815,6 @@ stdenv.mkDerivation (finalAttrs: { ++ optionals withV4l2 [ libv4l ] ++ optionals withVaapi [ (if withSmallDeps then libva else libva-minimal) ] ++ optionals withVdpau [ libvdpau ] - ++ optionals withVideoToolbox [ VideoToolbox ] ++ optionals withVidStab [ vid-stab ] ++ optionals withVmaf [ libvmaf ] ++ optionals withVoAmrwbenc [ vo-amrwbenc ] @@ -805,6 +822,7 @@ stdenv.mkDerivation (finalAttrs: { ++ optionals withVpl [ libvpl ] ++ optionals withVpx [ libvpx ] ++ optionals withVulkan [ vulkan-headers vulkan-loader ] + ++ optionals withVvenc [ vvenc ] ++ optionals withWebp [ libwebp ] ++ optionals withX264 [ x264 ] ++ optionals withX265 [ x265 ] @@ -818,16 +836,24 @@ stdenv.mkDerivation (finalAttrs: { ++ optionals withZimg [ zimg ] ++ optionals withZlib [ zlib ] ++ optionals withZmq [ zeromq4 ] + ++ optionals withZvbi [ zvbi ] ; buildFlags = [ "all" ] ++ optional buildQtFaststart "tools/qt-faststart"; # Build qt-faststart executable - doCheck = stdenv.hostPlatform == stdenv.buildPlatform; + env = lib.optionalAttrs stdenv.cc.isGNU { + NIX_CFLAGS_COMPILE = toString [ + "-Wno-error=incompatible-pointer-types" + "-Wno-error=int-conversion" + ]; + }; + + doCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform; # Fails with SIGABRT otherwise FIXME: Why? checkPhase = let - ldLibraryPathEnv = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH"; + ldLibraryPathEnv = if stdenv.hostPlatform.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH"; libsToLink = [ ] ++ optional buildAvcodec "libavcodec" ++ optional buildAvdevice "libavdevice" @@ -856,7 +882,7 @@ stdenv.mkDerivation (finalAttrs: { # Set RUNPATH so that libnvcuvid and libcuda in /run/opengl-driver(-32)/lib can be found. # See the explanation in addDriverRunpath. - postFixup = optionalString (stdenv.isLinux && withLib) '' + postFixup = optionalString (stdenv.hostPlatform.isLinux && withLib) '' addDriverRunpath ${placeholder "lib"}/lib/libavcodec.so addDriverRunpath ${placeholder "lib"}/lib/libavutil.so '' |