From 184a3957e6a476e6f81abee552856861118ce85b Mon Sep 17 00:00:00 2001 From: Anthony Cowley Date: Fri, 11 Mar 2016 15:12:55 -0500 Subject: [PATCH] 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. --- .../libraries/ffmpeg-full/default.nix | 22 +++++++++++++++---- pkgs/top-level/all-packages.nix | 4 +++- 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 { };