FFmpegOpenCL

Version 7 (Emmanuel Quemener, 26/06/2014 18:38)

1 1 Emmanuel Quemener
h1. Installation d'un FFmpeg OpenCL
2 1 Emmanuel Quemener
3 1 Emmanuel Quemener
h2. Préparation de la Debian Wheezy
4 1 Emmanuel Quemener
5 3 Emmanuel Quemener
* Installation de quoi compiler un paquet
6 3 Emmanuel Quemener
<pre>
7 7 Emmanuel Quemener
apt-get install pbuilder ccache
8 3 Emmanuel Quemener
</pre>
9 1 Emmanuel Quemener
* Installation de git pour le téléchargement des sources
10 1 Emmanuel Quemener
<pre>
11 1 Emmanuel Quemener
apt-get install git
12 1 Emmanuel Quemener
</pre>
13 1 Emmanuel Quemener
* Installation des dépendances nécessaires pour compiler le ffmpeg de la Debian
14 1 Emmanuel Quemener
<pre>
15 1 Emmanuel Quemener
apt-get build-dep ffmpeg
16 1 Emmanuel Quemener
</pre>
17 1 Emmanuel Quemener
* Installation de l'OpenCL AMD utilisable sur le processeur
18 1 Emmanuel Quemener
<pre>
19 2 Emmanuel Quemener
apt-get install amd-opencl-icd amd-opencl-dev amd-libopencl1 amd-clinfo
20 2 Emmanuel Quemener
</pre>
21 1 Emmanuel Quemener
22 2 Emmanuel Quemener
h2. Vérification de la disponibilité OpenCL
23 2 Emmanuel Quemener
24 2 Emmanuel Quemener
Le lancement de la commande clinfo
25 2 Emmanuel Quemener
<pre>
26 2 Emmanuel Quemener
Number of platforms:				 1
27 2 Emmanuel Quemener
  Platform Profile:				 FULL_PROFILE
28 2 Emmanuel Quemener
  Platform Version:				 OpenCL 1.2 AMD-APP (938.2)
29 2 Emmanuel Quemener
  Platform Name:				 AMD Accelerated Parallel Processing
30 2 Emmanuel Quemener
  Platform Vendor:				 Advanced Micro Devices, Inc.
31 2 Emmanuel Quemener
  Platform Extensions:				 cl_khr_icd cl_amd_event_callback cl_amd_offline_devices
32 2 Emmanuel Quemener
33 2 Emmanuel Quemener
34 2 Emmanuel Quemener
  Platform Name:				 AMD Accelerated Parallel Processing
35 2 Emmanuel Quemener
Number of devices:				 1
36 2 Emmanuel Quemener
  Device Type:					 CL_DEVICE_TYPE_CPU
37 2 Emmanuel Quemener
  Device ID:					 4098
38 2 Emmanuel Quemener
---
39 2 Emmanuel Quemener
  Name:						 QEMU Virtual CPU version 1.1.2
40 2 Emmanuel Quemener
  Vendor:					 AuthenticAMD
41 2 Emmanuel Quemener
  Device OpenCL C version:			 OpenCL C 1.2 
42 2 Emmanuel Quemener
  Driver version:				 2.0 (sse2)
43 2 Emmanuel Quemener
  Profile:					 FULL_PROFILE
44 2 Emmanuel Quemener
  Version:					 OpenCL 1.2 AMD-APP (938.2)
45 2 Emmanuel Quemener
  Extensions:					 cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_device_fission cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_popcnt 
46 2 Emmanuel Quemener
</pre>
47 2 Emmanuel Quemener
48 2 Emmanuel Quemener
h2. Récupération des sources par git
49 2 Emmanuel Quemener
50 2 Emmanuel Quemener
<pre>
51 2 Emmanuel Quemener
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
52 2 Emmanuel Quemener
</pre>
53 2 Emmanuel Quemener
54 2 Emmanuel Quemener
h2. Préparation de la compilation
55 2 Emmanuel Quemener
56 2 Emmanuel Quemener
Nous supposons que nous allons placer toute notre archive compilée FFmpeg dans @/opt/ffmpeg@ :<pre>
57 2 Emmanuel Quemener
cd ffmpeg
58 2 Emmanuel Quemener
./configure --prefix=/opt/ffmpeg --extra-cflags="-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security " --extra-ldflags="-Wl,-z,relro" --cc="ccache cc" --enable-shared --enable-libmp3lame --enable-gpl --enable-nonfree --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-libvpx --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-librtmp --enable-avfilter --enable-libfreetype --enable-libvo-aacenc --disable-decoder=amrnb --enable-libvo-amrwbenc --enable-libaacplus --libdir=/opt/ffmpeg/lib --disable-vda --enable-libbluray --enable-libcdio --enable-gnutls --enable-frei0r --enable-openssl --enable-libass --enable-libopus --enable-fontconfig --enable-opencl --enable-libdc1394 --enable-libfdk-aac --disable-altivec --disable-armv5te --disable-armv6 --disable-vis --shlibdir=/opt/ffmpeg/lib/
59 2 Emmanuel Quemener
</pre>
60 2 Emmanuel Quemener
61 2 Emmanuel Quemener
h2. Compilation
62 2 Emmanuel Quemener
63 2 Emmanuel Quemener
<pre>
64 2 Emmanuel Quemener
time make
65 2 Emmanuel Quemener
</pre>
66 2 Emmanuel Quemener
67 5 Emmanuel Quemener
<pre>
68 5 Emmanuel Quemener
STRIP	ffserver
69 5 Emmanuel Quemener
skipping strip ffserver
70 5 Emmanuel Quemener
71 5 Emmanuel Quemener
real	16m43.162s
72 5 Emmanuel Quemener
user	14m53.112s
73 5 Emmanuel Quemener
sys	1m15.065s
74 5 Emmanuel Quemener
</pre>
75 5 Emmanuel Quemener
76 2 Emmanuel Quemener
h2. Installation
77 2 Emmanuel Quemener
78 2 Emmanuel Quemener
<pre>
79 1 Emmanuel Quemener
time make install
80 1 Emmanuel Quemener
</pre>
81 4 Emmanuel Quemener
82 4 Emmanuel Quemener
h2. Vérification des dépendances OpenCL
83 4 Emmanuel Quemener
84 5 Emmanuel Quemener
<pre>
85 5 Emmanuel Quemener
cd /opt/ffmpeg
86 5 Emmanuel Quemener
find /opt/ffmpeg/ -executable -exec ldd {} \; 2>/dev/null | grep -i opencl
87 6 Emmanuel Quemener
</pre>
88 4 Emmanuel Quemener
89 5 Emmanuel Quemener
<pre>
90 5 Emmanuel Quemener
	libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f021c24b000)
91 5 Emmanuel Quemener
	libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007fbaeba83000)
92 5 Emmanuel Quemener
	libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f5a182eb000)
93 5 Emmanuel Quemener
	libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f5a9173d000)
94 5 Emmanuel Quemener
	libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f848b776000)
95 5 Emmanuel Quemener
	libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f892615a000)
96 5 Emmanuel Quemener
</pre>
97 5 Emmanuel Quemener
98 5 Emmanuel Quemener
Nous découvrons que 6 exécutables ou librairies disposent d'une dépendance à OpenCL.
99 4 Emmanuel Quemener
h2. Test de compression