« Précédent - Version 5/9 (diff) - Suivant » - Version actuelle
Emmanuel Quemener, 13/04/2013 22:54


Installation d'un FFmpeg OpenCL

Préparation de la Debian Wheezy

  • Installation de quoi compiler un paquet
    apt-get install pbuilder
    
  • Installation de git pour le téléchargement des sources
    apt-get install git
    
  • Installation des dépendances nécessaires pour compiler le ffmpeg de la Debian
    apt-get build-dep ffmpeg
    
  • Installation de l'OpenCL AMD utilisable sur le processeur
    apt-get install amd-opencl-icd amd-opencl-dev amd-libopencl1 amd-clinfo
    

Vérification de la disponibilité OpenCL

Le lancement de la commande clinfo

Number of platforms:                 1
  Platform Profile:                 FULL_PROFILE
  Platform Version:                 OpenCL 1.2 AMD-APP (938.2)
  Platform Name:                 AMD Accelerated Parallel Processing
  Platform Vendor:                 Advanced Micro Devices, Inc.
  Platform Extensions:                 cl_khr_icd cl_amd_event_callback cl_amd_offline_devices

  Platform Name:                 AMD Accelerated Parallel Processing
Number of devices:                 1
  Device Type:                     CL_DEVICE_TYPE_CPU
  Device ID:                     4098
---
  Name:                         QEMU Virtual CPU version 1.1.2
  Vendor:                     AuthenticAMD
  Device OpenCL C version:             OpenCL C 1.2 
  Driver version:                 2.0 (sse2)
  Profile:                     FULL_PROFILE
  Version:                     OpenCL 1.2 AMD-APP (938.2)
  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 

Récupération des sources par git

git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

Préparation de la compilation

Nous supposons que nous allons placer toute notre archive compilée FFmpeg dans /opt/ffmpeg :

cd ffmpeg
./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/

Compilation

time make
STRIP    ffserver
skipping strip ffserver

real    16m43.162s
user    14m53.112s
sys    1m15.065s

Installation

time make install

Vérification des dépendances OpenCL

cd /opt/ffmpeg
find /opt/ffmpeg/ -executable -exec ldd {} \; 2>/dev/null | grep -i opencl

<pre>
    libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f021c24b000)
    libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007fbaeba83000)
    libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f5a182eb000)
    libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f5a9173d000)
    libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f848b776000)
    libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 (0x00007f892615a000)
</pre>

Nous découvrons que 6 exécutables ou librairies disposent d'une dépendance à OpenCL.
h2. Test de compression