Hi,

This is an updated version of my previous patch.
Sorry! The previous one doesn’t work with the last version of the configure.
This version is tested with both parameters: “--enable-libnpp-static” and 
“--disable-libnpp-static”.

To summarize the info about this patch:

- This is a simple solution to include libnpp*_static.a when compile FFmpeg.

- Even “non-free” is required, three advantages exists:

1) If you link libnpp* static (with this patch) you can upgrade the NVidia 
driver and the CUDA SDK without recompiling the FFmpeg. The main advantage is 
this.

2) If you link libnpp* static you can uninstall the CUDA SDK after compile the 
FFmpeg. It doesn't need the SDK to run. Then you can save (a lot of) space.

3) Even if you compile FFmpeg with "non-free" enabled, you can use the binary 
in any machine you own. You can't distribute the binary, but you can copy/use 
the binary. So, if you have a cluster of machines, you only need to copy the 
binary, install the NVidia driver, and... nothing more. The CUDA SDK is not a 
requirement for run FFmpeg, only to compile it.

- The trick is the dynamic loading of the library "libcuda.so.1" in the source 
code of the "dynalink_loader.h".

- By default the linking is the regular dynamic link (aka 
"--disable-libnpp-static" config). However, if you like to compile statically 
with "libnpp*_static.a" then add these parameters:

$ configure ... --enable-nonfree --enable-libnpp --enable-libnpp-static 
--enable-cuda --extra-cflags="-I/usr/local/cuda/include/" 
--extra-ldflags="-L/usr/local/cuda/lib64/"

This assumes the CUDA SDK is installed in "/usr/local/cuda".

- This patch is based on the original work done by Timo Rothenpieler, and his 
patch for static linking with libnpp:
http://ffmpeg.org/pipermail/ffmpeg-devel/2016-June/195078.html

- Read more about linking directly to libnpp* libraries without link to the 
CUDA SDK:
http://trac.ffmpeg.org/ticket/6405

Regards.
A.H.

Sent with [ProtonMail](https://protonmail.com) Secure Email.
From 01b521720c78fdc0f1e6fab0887def03d559b58c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20H=C3=A5kon?= <andreas.ha...@protonmail.com>
Date: Fri, 2 Jun 2017 13:19:26 +0100
Subject: [PATCH] configure: support static libnpp [v3]

---
 configure |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/configure b/configure
index 72060ef..8636be9 100755
--- a/configure
+++ b/configure
@@ -300,6 +300,7 @@ External library support:
   --disable-dxva2          disable Microsoft DirectX 9 video acceleration code 
[autodetect]
   --enable-libmfx          enable Intel MediaSDK (AKA Quick Sync Video) code 
via libmfx [no]
   --enable-libnpp          enable Nvidia Performance Primitives-based code [no]
+  --disable-libnpp-static  disable using static version of libnpp [autodetect]
   --enable-mmal            enable Broadcom Multi-Media Abstraction Layer 
(Raspberry Pi) via MMAL [no]
   --disable-nvenc          disable Nvidia video encoding code [autodetect]
   --enable-omx             enable OpenMAX IL code [no]
@@ -1599,6 +1600,7 @@ HWACCEL_AUTODETECT_LIBRARY_LIST="
 HWACCEL_LIBRARY_NONFREE_LIST="
     cuda_sdk
     libnpp
+    libnpp_static
 "
 
 HWACCEL_LIBRARY_LIST="
@@ -5816,7 +5818,15 @@ enabled libmfx            && { use_pkg_config libmfx 
"mfx/mfxvideo.h" MFXInit ||
                                { require libmfx "mfx/mfxvideo.h" MFXInit 
-llibmfx && warn "using libmfx without pkg-config"; } }
 enabled libmodplug        && require_pkg_config libmodplug 
libmodplug/modplug.h ModPlug_Load
 enabled libmp3lame        && require "libmp3lame >= 3.98.3" lame/lame.h 
lame_set_VBR_quality -lmp3lame
-enabled libnpp            && require libnpp npp.h nppGetLibVersion -lnppi 
-lnppc
+enabled libnpp            && { { if ! disabled libnpp_static; then
+                                 check_lib libnpp npp.h nppGetLibVersion 
-lnppi_static -lnppc_static -lcudart_static -lculibos $ldl  ||
+                                 check_lib libnpp npp.h nppGetLibVersion 
-lnppi_static -lnppc_static -lcudart_static -lculibos $ldl -lstdc++ ||
+                                 check_lib libnpp npp.h nppGetLibVersion 
-lnppi_static -lnppc_static -lcudart_static -lculibos $ldl -lstdc++ -lrt
+                               else false; fi; } ||
+                               { if ! enabled libnpp_static; then
+                                 require libnpp npp.h nppGetLibVersion -lnppi 
-lnppc
+                               else false; fi; } ||
+                               die "ERROR: libnpp not found"; }
 enabled libopencore_amrnb && require libopencore_amrnb 
opencore-amrnb/interf_dec.h Decoder_Interface_init -lopencore-amrnb
 enabled libopencore_amrwb && require libopencore_amrwb opencore-amrwb/dec_if.h 
D_IF_init -lopencore-amrwb
 enabled libopencv         && { check_header opencv2/core/core_c.h &&
-- 
1.7.10.4

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to