diff options
Diffstat (limited to 'pkgs/development/libraries/libav')
-rw-r--r-- | pkgs/development/libraries/libav/default.nix | 17 | ||||
-rw-r--r-- | pkgs/development/libraries/libav/vpx-12.3-libvpx-1.8.patch | 46 |
2 files changed, 57 insertions, 6 deletions
diff --git a/pkgs/development/libraries/libav/default.nix b/pkgs/development/libraries/libav/default.nix index 15b6a275214..a3de9225d1c 100644 --- a/pkgs/development/libraries/libav/default.nix +++ b/pkgs/development/libraries/libav/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, yasm, bzip2, zlib, perl, bash +{ lib, stdenv, fetchurl, pkg-config, yasm, bzip2, zlib, perl, bash , mp3Support ? true, lame ? null , speexSupport ? true, speex ? null , theoraSupport ? true, libtheora ? null @@ -17,7 +17,7 @@ assert faacSupport -> enableUnfree; -let inherit (stdenv.lib) optional hasPrefix enableFeature; in +let inherit (lib) optional hasPrefix enableFeature; in /* ToDo: - more deps, inspiration: https://packages.ubuntu.com/raring/libav-tools @@ -43,6 +43,7 @@ let patches = [] ++ optional (vpxSupport && hasPrefix "0.8." version) ./vpxenc-0.8.17-libvpx-1.5.patch + ++ optional (vpxSupport && hasPrefix "12." version) ./vpx-12.3-libvpx-1.8.patch ; postPatch = '' @@ -52,7 +53,7 @@ let ''; configurePlatforms = []; - configureFlags = assert stdenv.lib.all (x: x!=null) buildInputs; [ + configureFlags = assert lib.all (x: x!=null) buildInputs; [ "--arch=${stdenv.hostPlatform.parsed.cpu.name}" "--target_os=${stdenv.hostPlatform.parsed.kernel.name}" #"--enable-postproc" # it's now a separate package in upstream @@ -60,7 +61,7 @@ let "--enable-avplay" "--enable-shared" "--enable-runtime-cpudetect" - "--cc=cc" + "--cc=${stdenv.cc.targetPrefix}cc" (enableFeature enableGPL "gpl") (enableFeature enableGPL "swscale") (enableFeature mp3Support "libmp3lame") @@ -81,7 +82,7 @@ let "--enable-cross-compile" ]; - nativeBuildInputs = [ pkgconfig perl ]; + nativeBuildInputs = [ pkg-config perl ]; buildInputs = [ lame yasm zlib bzip2 SDL bash ] ++ [ perl ] # for install-man target ++ optional mp3Support lame @@ -120,12 +121,16 @@ let passthru = { inherit vdpauSupport; }; - meta = with stdenv.lib; { + meta = with lib; { homepage = "https://libav.org/"; description = "A complete, cross-platform solution to record, convert and stream audio and video (fork of ffmpeg)"; license = with licenses; if enableUnfree then unfree #ToDo: redistributable or not? else if enableGPL then gpl2Plus else lgpl21Plus; platforms = with platforms; linux ++ darwin; + knownVulnerabilities = + lib.optional (lib.versionOlder version "12.1") "CVE-2017-9051" + ++ lib.optionals (lib.versionOlder version "12.3") [ "CVE-2018-5684" "CVE-2018-5766" ] + ++ lib.optionals (lib.versionOlder version "12.4") [ "CVE-2019-9717" "CVE-2019-9720" ]; }; }; # libavFun diff --git a/pkgs/development/libraries/libav/vpx-12.3-libvpx-1.8.patch b/pkgs/development/libraries/libav/vpx-12.3-libvpx-1.8.patch new file mode 100644 index 00000000000..8f8e5003284 --- /dev/null +++ b/pkgs/development/libraries/libav/vpx-12.3-libvpx-1.8.patch @@ -0,0 +1,46 @@ +--- libav/libavcodec/libvpx.c.orig 2018-02-12 21:25:59 UTC ++++ libav/libavcodec/libvpx.c +@@ -25,6 +25,7 @@ + enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt_t img) + { + switch (img) { ++#if VPX_IMAGE_ABI_VERSION < 5 + case VPX_IMG_FMT_RGB24: return AV_PIX_FMT_RGB24; + case VPX_IMG_FMT_RGB565: return AV_PIX_FMT_RGB565BE; + case VPX_IMG_FMT_RGB555: return AV_PIX_FMT_RGB555BE; +@@ -36,10 +37,13 @@ enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt + case VPX_IMG_FMT_ARGB_LE: return AV_PIX_FMT_BGRA; + case VPX_IMG_FMT_RGB565_LE: return AV_PIX_FMT_RGB565LE; + case VPX_IMG_FMT_RGB555_LE: return AV_PIX_FMT_RGB555LE; ++#endif + case VPX_IMG_FMT_I420: return AV_PIX_FMT_YUV420P; + case VPX_IMG_FMT_I422: return AV_PIX_FMT_YUV422P; + case VPX_IMG_FMT_I444: return AV_PIX_FMT_YUV444P; ++#if VPX_IMAGE_ABI_VERSION < 5 + case VPX_IMG_FMT_444A: return AV_PIX_FMT_YUVA444P; ++#endif + #if VPX_IMAGE_ABI_VERSION >= 3 + case VPX_IMG_FMT_I440: return AV_PIX_FMT_YUV440P; + case VPX_IMG_FMT_I42016: return AV_PIX_FMT_YUV420P16BE; +@@ -53,6 +57,7 @@ enum AVPixelFormat ff_vpx_imgfmt_to_pixfmt(vpx_img_fmt + vpx_img_fmt_t ff_vpx_pixfmt_to_imgfmt(enum AVPixelFormat pix) + { + switch (pix) { ++#if VPX_IMAGE_ABI_VERSION < 5 + case AV_PIX_FMT_RGB24: return VPX_IMG_FMT_RGB24; + case AV_PIX_FMT_RGB565BE: return VPX_IMG_FMT_RGB565; + case AV_PIX_FMT_RGB555BE: return VPX_IMG_FMT_RGB555; +@@ -64,10 +69,13 @@ vpx_img_fmt_t ff_vpx_pixfmt_to_imgfmt(enum AVPixelForm + case AV_PIX_FMT_BGRA: return VPX_IMG_FMT_ARGB_LE; + case AV_PIX_FMT_RGB565LE: return VPX_IMG_FMT_RGB565_LE; + case AV_PIX_FMT_RGB555LE: return VPX_IMG_FMT_RGB555_LE; ++#endif + case AV_PIX_FMT_YUV420P: return VPX_IMG_FMT_I420; + case AV_PIX_FMT_YUV422P: return VPX_IMG_FMT_I422; + case AV_PIX_FMT_YUV444P: return VPX_IMG_FMT_I444; ++#if VPX_IMAGE_ABI_VERSION < 5 + case AV_PIX_FMT_YUVA444P: return VPX_IMG_FMT_444A; ++#endif + #if VPX_IMAGE_ABI_VERSION >= 3 + case AV_PIX_FMT_YUV440P: return VPX_IMG_FMT_I440; + case AV_PIX_FMT_YUV420P16BE: return VPX_IMG_FMT_I42016; |