Encodage H.264 - CPU vs GPU : Nvidia CUDA, AMD Stream, Intel MediaSDK et x264 en test

Publié le 28/04/2011 par
Envoyer Imprimer


Depuis quelques années, les constructeurs de cartes graphiques mettent en avant la capacité de leurs GPU à faire autre chose que du jeu. Si l'on peut relever certaines réussites dans le marché du High Performance Computing (milieux financiers, etc), côté grand public le concept du GPGPU (General Purpose computing on GPU) se cherche encore. Les standards comme OpenCL et DirectCompute tentent de faire leur trou mais l'adoption reste encore, côté grand public, relativement anecdotique.

La vidéo, évidemment !
Un usage GPGPU grand public revient cependant assez souvent dans les présentations : l'encodage de vidéos. Sur le papier, l'idée semble très bonne. Les GPU peuvent déjà être mis à contribution quand il s'agit de décoder des vidéos (par exemple des Blu-ray), ce qui se fait par le biais d'un circuit dédié, intégré au GPU. Utiliser un GPU pour encoder semble donc l'étape suivante dans la logique.

Après un départ assez limité avec la première version de Badaboom en 2008, le transcodage est revenu sur les devant par l'intégration dans Windows 7 de la possibilité d'utiliser sa carte graphique pour transcoder automatiquement ses fichiers vers un périphérique (lecteur de vidéo portable, smartphone, à condition qu'il soit compatible et détecté par Windows 7). Et de multiples applications, gratuites ou payantes, se sont attaquées aux problèmes de transcodages de fichiers, que ce soit à destination de périphériques mobiles, de tablettes ou de consoles de jeu.

Un point commun de ces applications est qu'elles utilisent souvent des bibliothèques conçues par les constructeurs de GPU eux même. Nvidia fournit ainsi sous licence un encodeur H.264 développé sous CUDA (nvcuvenc), AMD dispose du sien utilisant la technologie Stream (AMD Media Codec package en bas de page), et même Intel s'y est mis, comme nous l'avions vu en début d'année lors du lancement des processeurs Core Sandy Bridge avec son MediaSDK (qui repose lui-même en partie sur la bibliothèque IPP).


Mais que valent en pratique ces solutions ? Tous les logiciels qui les utilisent sont ils équivalents ? Quid de la rapidité d'encodage et de la qualité ? Et comment se mesurent ces solutions d'encodage face à la référence de l'encodage H.264, le logiciel open source x264 (que nous utilisons régulièrement dans nos tests processeurs) ? Des questions brulantes auxquelles nous allons tenter de répondre dans ce dossier !

Avant d'aller plus loin nous tenons à remercier le magasin Nicolas et fils pour les prêts de matériels ainsi que Jason Garrett-Glaser (dévelopeur de x264) pour avoir répondu à nos questions sur H.264. Si vous souhaitez approfondir le sujet, voici quelques ressources que nous avons utilisées pour élaborer cet article :

- La specification de H.264
- Le livre The H.264 Advanced Video Compression Standard de Iain Richardson (dont le site propose un certain nombre de contenus intéressants et gratuits ici)
- Le blog de Jason Garrett-Glaser
Vos réactions

Top articles