diff options
Diffstat (limited to 'pkgs/development/libraries/ffmpeg/generic.nix')
-rw-r--r-- | pkgs/development/libraries/ffmpeg/generic.nix | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/pkgs/development/libraries/ffmpeg/generic.nix b/pkgs/development/libraries/ffmpeg/generic.nix index bdc0cdd5ffa4c..7496cb4de0e76 100644 --- a/pkgs/development/libraries/ffmpeg/generic.nix +++ b/pkgs/development/libraries/ffmpeg/generic.nix @@ -40,12 +40,14 @@ , 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) , withCelt ? withFullDeps # CELT decoder , withChromaprint ? withFullDeps # Audio fingerprinting +, withCodec2 ? withFullDeps # codec2 en/decoding , withCoreImage ? withHeadlessDeps && stdenv.isDarwin # Apple CoreImage framework , withCuda ? withFullDeps && withNvcodec , withCudaLLVM ? withFullDeps @@ -68,6 +70,7 @@ , withHarfbuzz ? withHeadlessDeps && lib.versionAtLeast version "6.1" # Needed for drawtext filter , withIconv ? withHeadlessDeps , withJack ? withFullDeps && !stdenv.isDarwin # Jack audio +, withJxl ? withFullDeps && lib.versionAtLeast version "5" # JPEG XL de/encoding , withLadspa ? withFullDeps # LADSPA audio filtering , withLzma ? withHeadlessDeps # xz-utils , withMfx ? withFullDeps && (with stdenv.hostPlatform; isLinux && !isAarch) # Hardware acceleration via intel-media-sdk/libmfx @@ -211,9 +214,11 @@ * External libraries options */ , alsa-lib +, avisynthplus , bzip2 , celt , chromaprint +, codec2 , clang , dav1d , fdk_aac @@ -243,6 +248,7 @@ , libGLU , libiconv , libjack2 +, libjxl , libmodplug , libmysofa , libogg @@ -415,6 +421,28 @@ stdenv.mkDerivation (finalAttrs: { ''; } ] + ++ (lib.optionals (lib.versionAtLeast version "5" && lib.versionOlder version "6") [ + { + name = "fix_build_failure_due_to_libjxl_version_to_new"; + url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/75b1a555a70c178a9166629e43ec2f6250219eb2"; + hash = "sha256-+2kzfPJf5piim+DqEgDuVEEX5HLwRsxq0dWONJ4ACrU="; + } + { + name = "5.x-CVE-2024-31585.patch"; + url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/8711cea3841fc385cccb1e7255176479e865cd4d"; + hash = "sha256-WT+ly/l04yM/tRVbhkESA3sDDjwvtd/Cg2y8tQo4ApI="; + } + { + name = "CVE-2024-31582.patch"; + url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/99debe5f823f45a482e1dc08de35879aa9c74bd2"; + hash = "sha256-+CQ9FXR6Vr/AmsbXFiCUXZcxKj1s8nInEdke/Oc/kUA="; + } + { + name = "CVE-2024-31578.patch"; + url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/3bb00c0a420c3ce83c6fafee30270d69622ccad7"; + hash = "sha256-oZMZysBA+/gwaGEM1yvI+8wCadXWE7qLRL6Emap3b8Q="; + } + ]) ++ (lib.optionals (lib.versionAtLeast version "6.1" && lib.versionOlder version "6.2") [ { # this can be removed post 6.1 name = "fix_build_failure_due_to_PropertyKey_EncoderID"; @@ -426,8 +454,18 @@ stdenv.mkDerivation (finalAttrs: { url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/e06ce6d2b45edac4a2df04f304e18d4727417d24"; hash = "sha256-73mlX1rdJrguw7OXaSItfHtI7gflDrFj+7SepVvvUIg="; } + { + name = "CVE-2024-31582.patch"; + url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/99debe5f823f45a482e1dc08de35879aa9c74bd2"; + hash = "sha256-+CQ9FXR6Vr/AmsbXFiCUXZcxKj1s8nInEdke/Oc/kUA="; + } + { + name = "CVE-2024-31578.patch"; + url = "https://git.ffmpeg.org/gitweb/ffmpeg.git/patch/3bb00c0a420c3ce83c6fafee30270d69622ccad7"; + hash = "sha256-oZMZysBA+/gwaGEM1yvI+8wCadXWE7qLRL6Emap3b8Q="; + } ]) - ++ (lib.optionals (lib.versionAtLeast version "7.0") [ + ++ (lib.optionals (lib.versionAtLeast version "7.0" && lib.versionOlder version "7.0.1") [ { # Will likely be obsolete in >7.0 name = "fate_avoid_dependency_on_samples"; @@ -527,12 +565,14 @@ stdenv.mkDerivation (finalAttrs: { (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 withCelt "libcelt") (enableFeature withChromaprint "chromaprint") + (enableFeature withCodec2 "libcodec2") (enableFeature withCoreImage "coreimage") (enableFeature withCuda "cuda") (enableFeature withCudaLLVM "cuda-llvm") @@ -560,6 +600,9 @@ stdenv.mkDerivation (finalAttrs: { ] ++ [ (enableFeature withIconv "iconv") (enableFeature withJack "libjack") + ] ++ optionals (versionAtLeast finalAttrs.version "5.0") [ + (enableFeature withJxl "libjxl") + ] ++ [ (enableFeature withLadspa "ladspa") (enableFeature withLzma "lzma") (enableFeature withMfx "libmfx") @@ -671,12 +714,14 @@ stdenv.mkDerivation (finalAttrs: { ++ 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 withCelt [ celt ] ++ optionals withChromaprint [ chromaprint ] + ++ optionals withCodec2 [ codec2 ] ++ optionals withCoreImage [ CoreImage ] ++ optionals withDav1d [ dav1d ] ++ optionals withDc1394 [ libdc1394 libraw1394 ] @@ -696,6 +741,7 @@ stdenv.mkDerivation (finalAttrs: { ++ optionals withHarfbuzz [ harfbuzz ] ++ optionals withIconv [ libiconv ] # On Linux this should be in libc, do we really need it? ++ optionals withJack [ libjack2 ] + ++ optionals withJxl [ libjxl ] ++ optionals withLadspa [ ladspaH ] ++ optionals withLzma [ xz ] ++ optionals withMfx [ intel-media-sdk ] @@ -804,7 +850,7 @@ stdenv.mkDerivation (finalAttrs: { passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; meta = with lib; { - description = "A complete, cross-platform solution to record, convert and stream audio and video"; + description = "Complete, cross-platform solution to record, convert and stream audio and video"; homepage = "https://www.ffmpeg.org/"; changelog = "https://github.com/FFmpeg/FFmpeg/blob/n${version}/Changelog"; longDescription = '' |