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

Publié le 28/04/2011 par
Imprimer

ArcSoft Media Converter, Avatar 720p (1/4)
Développé par ArcSoft  (auteurs du logiciel de lecture Blu-ray Total Media Theater), Media Converter 7 (en version 7.1.15.55, abrégé AMC dans nos graphiques) propose de transcoder au choix des sources sous la forme de fichiers vidéo ou de DVD. Le logiciel dispose de profils pour les consoles (Xbox, PS3, Wii, PSP), tablettes (iPad), Smartphones et autres périphériques dédiés à la lecture sur TV (Apple TV, WD TV, etc).


Nous avons crée manuellement deux profils pour les résolutions 720p et 1080p en maximisant les options de qualité. Le profil H.264 high n'est pas supporté, et Arcsoft semble disposer d'encodeurs custom pour les versions CUDA et Stream. La qualité est presque constante indépendamment du modèle de GeForce, avec un très léger avantage à la GeForce GTX 460. En pratique cette différence est sans intérêt, notez également que la GeForce GTX 570 (trop récente ?) n'était pas détectée par notre version de Media Converter. La qualité est strictement identique entre les différents modèles de Radeon.

Commençons par les résultats en 720p avec Avatar. Pour rappel, nos encodages 720p sont réalisés avec un débit vidéo demandé de 4 Mbit/s.

Avatar 720p


Première surprise, utiliser une Radeon change drastiquement les options d'encodage. On repasse au profil Baseline et l'on perd B Frames et CABAC. On gagne par contre un GOP quasi dynamique dans le sens ou il utilisera une I Frame en cas de changement de scène. Les autres encodages gardent un fonctionnement plus radical, une I Frame toutes les 80 images, puis entre les deux, un groupe qui se répète : 1 P Frame suivie de 2 B Frames. Si l'on compare entre eux les scores des encodeurs d'Arcsoft, la version processeur termine significativement devant en SSIM. Le MediaSDK d'Intel semble optimisé pour le PSNR (et donc optimisé pour les benchmarks et non la qualité visuelle). Le score de la version CUDA est extrêmement bas, ce qui mérite quelques explications.


Côté temps de calcul, la version processeur pure est diaboliquement rapide, tandis que la version Radeon, malgré un profil baseline est plus de deux fois plus lente. La Radeon HD 5750 est plus rapide que ses grandes soeurs, sans raison valable.

Les valeurs moyennes de SSIM (ou de PSNR) ne veulent cependant pas dire grand-chose. A l'image de la vie en couple, c'est dans la gestion des moments difficiles que l'on peut juger de la qualité d'un encodeur. Pour pouvoir mettre un peu mieux en avant ces cas difficiles, nous avons isolés deux séries de 500 images distinctes, issues de notre extrait.

Utilisez un navigateur compatible HTML5 pour voir le graphique !
Cliquez ici pour voir le graphique PSNR de cette scène.


Notez que pour ce graphique ainsi que pour tout ceux qui suivent, nous avons du opter pour une échelle dynamique en fonction du contenu. Afin de vous aider a mieux visualiser les écarts entre les différents graphiques, une ligne orange matérialise un SSIM de 0.9. Vous pouvez également agrandir le graphique en cliquant sur l'icône en haut à droite.

Notre premier extrait de 500 images (scène 1) peut se décomposer en trois parties. D'abord de l'image 0 à 157 environ, une première scène relativement fixe à lieu. Le personnage principal est filmé dans son pod et seule sa tête bouge. Une partie très facile à compresser, et tous les encodeurs s'en tirent bien. La scène se termine par un fondu au noir (ce qui nous vaut un plateau à 1, tous les encodeurs savent correctement encoder une image totalement noire !). Jusqu'à l'image 362, une nouvelle scène prend place, plus complexe puisque la caméra se déplace dans un travelling (lent) de gauche à droite en avançant légèrement. A 363, une nouvelle scène apparait, la aussi relativement lente.

Les Radeon utilisent l'encodage le moins techniquement avancé (profil baseline), mais disposent du GOP dynamique. Résultat, si la qualité de leur encodage est quasi systématiquement derrière, la présence du GOP dynamique permet aux Radeon de supplanter le HD 3000 lors d'un changement de scène. A l'inverse, les Geforce sont complètement perdues lors du changement de scène avec une dégradation de la qualité notable. Mais beaucoup plus grave, lorsque l'image change un peu trop (et il s'agit d'une scène lente…), l'encodeur Cuda d'Arcsoft perd ses pédales entre deux I Frames (les pics vers le haut toutes les 80 images) avec une qualité qui se dégrade fortement. Pas de miracle, ces sauts de qualité sont très visibles. Afin de voir ce que cela donne en pratique, nous avons isolés une image identique pour chacun des encodages, environ une demie seconde après le changement de scène. Les images utilisées pour notre comparateur ci-dessous sont stockées au format PNG pour éviter toute déformation. Leur chargement peut prendre quelques secondes selon la vitesse de votre connexion :

Cliquez-ici pour afficher le comparateur d'images dans un nouvel onglet.


Si comme nous l'évoquions, l'encodage CUDA GTX 460 garde un très léger avantage sur la conservation des textures par rapport à la version GTS 450, en pratique les deux encodages sont inutilisables tant les artefacts sont présents. L'encodeur CUDA d'Arcsoft n'est tout simplement pas au niveau. La netteté départage ensuite nos autres encodeurs. La version HD 3000 reste en deçà d'un point de vue visuel, tandis que les versions AMD et encodage processeurs sont assez proches, l'encodeur d'AMD parait même légèrement supérieur lorsque l'on regarde de près les textures de peaux. En pratique ces deux images restent malheureusement un gros cran derrière l'image source avec une perte de détails importante.
Notre seconde scène comporte plusieurs déplacements assez rapide, utilisant massivement le flou de mouvement (motion blur) ce qui facilite la tâche des encodeurs. Qu'est ce que cela donne en pratique ?

Utilisez un navigateur compatible HTML5 pour voir le graphique !
Cliquez ici pour voir le graphique PSNR de cette scène.


Les encodeurs d'Arcsoft aiment le flou et se complaisent dans le motion blur. La version CUDA ne mérite pas que l'on parle d'elle, mais nos trois autres encodeurs sont au coude à coude. Les nuances infimes de SSIM sont cependant visibles, jugez plutôt sur la seconde image que nous avons extrait d'un motion blur :

Cliquez-ici pour afficher le comparateur d'images dans un nouvel onglet.


Si l'on prend en compte uniquement les visages, l'encodeur version AMD s'en tire plutôt bien en conservant le maximum de netteté sur eux. A l'inverse les encodeurs version CPU et version HD 3000 affichent des artefacts dans les dégradés entre les zones sombres et claires sur les visages (partie gauche du front de Jake, à droite de l'écran). Voyons si ces prestations se confirment dans des scènes un peu plus complexes !
Vos réactions

Top articles