summary refs log tree commit diff
diff options
context:
space:
mode:
authorAnthony Cowley <acowley@gmail.com>2016-03-11 15:12:55 -0500
committerAnthony Cowley <acowley@gmail.com>2016-04-15 18:21:33 -0400
commit184a3957e6a476e6f81abee552856861118ce85b (patch)
tree05b4d3c87ce7cf0de91b11868c1a3494e6519776
parentca1d46f98a71d3b21de0b9a30f759a7af2514f61 (diff)
downloadnixpkgs-184a3957e6a476e6f81abee552856861118ce85b.tar
nixpkgs-184a3957e6a476e6f81abee552856861118ce85b.tar.gz
nixpkgs-184a3957e6a476e6f81abee552856861118ce85b.tar.bz2
nixpkgs-184a3957e6a476e6f81abee552856861118ce85b.tar.lz
nixpkgs-184a3957e6a476e6f81abee552856861118ce85b.tar.xz
nixpkgs-184a3957e6a476e6f81abee552856861118ce85b.tar.zst
nixpkgs-184a3957e6a476e6f81abee552856861118ce85b.zip
ffmpeg-full: avfoundation indev support on darwin
Adds support for camera input devices on OS X.

This required fixing links in output libraries and executables to pull
in the system's CoreFoundation.framework rather than the open source CF
one.
-rw-r--r--pkgs/development/libraries/ffmpeg-full/default.nix22
-rw-r--r--pkgs/top-level/all-packages.nix4
2 files changed, 21 insertions, 5 deletions
diff --git a/pkgs/development/libraries/ffmpeg-full/default.nix b/pkgs/development/libraries/ffmpeg-full/default.nix
index 91974a31175..0f6ffe51d85 100644
--- a/pkgs/development/libraries/ffmpeg-full/default.nix
+++ b/pkgs/development/libraries/ffmpeg-full/default.nix
@@ -141,7 +141,7 @@
 /*
  *  Darwin frameworks
  */
-, Cocoa, CoreServices
+, Cocoa, CoreServices, AVFoundation, MediaToolbox, VideoDecodeAcceleration, CF
 }:
 
 /* Maintainer notes:
@@ -177,7 +177,7 @@
 
 let
   inherit (stdenv) isCygwin isFreeBSD isLinux;
-  inherit (stdenv.lib) optional optionals enableFeature;
+  inherit (stdenv.lib) optional optionals optionalString enableFeature;
 in
 
 /*
@@ -410,11 +410,25 @@ stdenv.mkDerivation rec {
     ++ optionals nonfreeLicensing [ faac fdk_aac openssl ]
     ++ optional ((isLinux || isFreeBSD) && libva != null) libva
     ++ optionals isLinux [ alsaLib libraw1394 libv4l ]
-    ++ optionals stdenv.isDarwin [ Cocoa CoreServices ];
+    ++ optionals stdenv.isDarwin [ Cocoa CoreServices AVFoundation MediaToolbox
+                                   VideoDecodeAcceleration ];
 
   # Build qt-faststart executable
   buildPhase = optional qtFaststartProgram ''make tools/qt-faststart'';
-  postInstall = optional qtFaststartProgram ''cp -a tools/qt-faststart $out/bin/'';
+
+  # Hacky framework patching technique borrowed from the phantomjs2 package
+  postInstall = optionalString qtFaststartProgram ''
+    cp -a tools/qt-faststart $out/bin/
+  '' + optionalString stdenv.isDarwin ''
+    FILES=($(ls $out/bin/*))
+    FILES+=($(ls $out/lib/*.dylib))
+    for f in ''${FILES[@]}; do
+      if [ ! -h "$f" ]; then
+        install_name_tool -change ${CF}/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation "$f"
+      fi
+    done
+  '';
+
 
   enableParallelBuilding = true;
 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 9e44ac3e0bb..5cf8a5b7448 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -6705,7 +6705,9 @@ in
     vid-stab = if stdenv.isDarwin then null else vid-stab;
     x265 = if stdenv.isDarwin then null else x265;
     xavs = if stdenv.isDarwin then null else xavs;
-    inherit (darwin.apple_sdk.frameworks) Cocoa CoreServices;
+    inherit (darwin) CF;
+    inherit (darwin.apple_sdk.frameworks) Cocoa CoreServices AVFoundation
+                                          MediaToolbox VideoDecodeAcceleration;
   };
 
   ffmpegthumbnailer = callPackage ../development/libraries/ffmpegthumbnailer { };