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

Publié le 28/04/2011 par
Envoyer Imprimer

Conclusion
Difficile de conclure simplement tant de tests en quelques lignes, mais pourtant une constatation s'impose : l'accélération du transcodage H.264 par les GPU n'est pas au niveau d'encodages réalisés côté processeurs.


Ce que ces solutions apportent avant tout, c'est bien souvent de la frustration. Que ce soit Nvidia, AMD ou Intel, les trois constructeurs ont misés via les encodeurs qu'ils proposent sur la rapidité au détriment de la qualité. Il est tout de même dérangeant de voir systématiquement, dans des logiciels comme MediaConverter d'Arcsoft ou MediaEspresso de Cyberlink, leurs encodeurs processeurs proposer un meilleur résultat sur le plan de la qualité que les encodeurs GPU intégrés !

Il est également extrêmement ennuyeux de constater, dans le cas des encodages GeForce et Radeon, qu'il n'y a pas de différence de rapidité entre des cartes graphiques à 100, 170 ou 330 euros. La qualité est strictement identique d'une carte à l'autre - sauf dans le cas des bugs - et les temps d'encodages ne changent pas. En aucun cas la puissance réelle en matière de GPGPU de nos cartes graphiques n'est saturée, ou pleinement utilisée.

L'utilisation des cartes graphiques se fait en prime toujours avec une aide du processeur. Lorsque l'on utilise pourtant décodages et encodages GPU, par exemple avec l'application de Cyberlink, un cœur est utilisé à 100% avec les Radeon ou le HD 3000 d'Intel, et deux avec les GeForce. Dans le cas du logiciel d'Arcsoft, on peut monter à quatre cœurs utilisés à 100%.

Autre particularité importante, les décodages assurés côté GPU sont souvent un frein aux performances des encodeurs GPU. Là encore, pas de miracle : le décodage H.264 ne se fait pas par les unités de calcul du GPU, mais par un ASIC dédié qui sert au décodage des vidéos comme les Blu-ray. Décodages qui n'ont pas besoin d'une rapidité extrême puisque la lecture d'un média se fait en temps réel. MediaCoder, malgré ses autres défauts, prouve que pour tirer la quintessence de rapidité des encodeurs GPU (sans pour autant que cela ne crée de variations entre nos cartes de différentes gammes de prix…), il est nécessaire d'utiliser un décodeur côté processeur multithreadé.


Des trois solutions utilisant le GPU pour le transcodage, il est délicat de trouver à en recommander une. Le logiciel d'Arcsoft propose l'encodeur qui, hors x264, obtient les meilleures notes tout en étant extrêmement rapide. Ses résultats sont globalement flous mais, pour des périphériques mobiles ils peuvent être considérés comme suffisants si vous n'êtes pas trop regardants. Des résultats obtenus uniquement par l'encodeur processeur de Media Converter, sa version CUDA étant littéralement cauchemardesque, sa version Radeon limitée (comme les autres) à un profil baseline qui, bien que de bonne facture, ne peux pas rivaliser avec les profils H.264 plus élevés. Et en ce qui concerne la version Intel/MediaSDK, si les scores obtenus dans nos mesures sont souvent élevés, les résultats visuels ne suivent pas avec des résultats particulièrement flous dans les zones importantes de l'image (visages, etc).

Le logiciel de Cyberlink, de son côté, se disqualifie en ne proposant que des encodages de type H.264 baseline qui ne suivent pas dans les scènes d'actions. Les multiples bugs de l'implémentation de Cyberlink de MediaSDK n'arrangent rien (carrés blancs et carrés noirs rendent les encodages inutilisables), et l'incapacité des encodeurs à insérer une I-frame lorsqu'une nouvelle scène commence crée des effets de clignotements désagréables en vidéo. La qualité des rendus Nvidia et AMD est correcte, ce qui est un progrès par rapport au logiciel d'Arcsoft pour les GeForce. Mais en pratique, l'utilisation de profils H.264 baseline reste un handicap dont il est impossible de se relever.

MediaCoder de son côté est le plus rapide, le plus configurable et le plus efficace des logiciels d'encodage GPU. Mais si l'on peut passer sur ses publicités, le fait qu'il produise des fichiers où il manque des images est tout de même ennuyeux. Il est au moins gratuit. D'un point de vue qualitatif, là encore l'encodeur Nvidia prend le dessus sur celui d'Intel qui tend un peu trop à flouter les résultats.

Le couple StaxRip/x264 gagne assez facilement sur la qualité. A nombre de passes égales, les modes faster/fast font généralement aussi bien, voir mieux que tout le reste des encodeurs présents. Mais si vous ne devez retenir qu'une seule chose de notre article, c'est bel et bien que le moyen le plus simple d'augmenter la qualité… est tout simplement d'ajouter une seconde passe aux encodages. Il est d'autant plus rageant que Nvidia, AMD et Intel pourraient simplement proposer dans leurs kits de développement cette seconde passe qui fait tant de miracles pour homogénéiser la qualité sur toute la longueur de la vidéo.

Bien entendu, cette qualité supérieure se paye par un temps d'encodage plus élevé, équivalent à du temps réel en 1080p (une heure d'encodage environ pour une heure de film pour le mode 2p veryfast sous Avatar par exemple). Descendre en qualité est possible, certains trouveront que les modes 1p faster proposent un compromis plus intéressant en divisant quasiment par deux le temps d'encodage, mais en dessous la qualité pâtit rapidement.


Si l'on tente de résumer ce qu'AMD, Nvidia et Intel proposent via ces logiciels tiers, on se doit d'effectuer quelques remarques. D'abord, l'encodeur proposé par AMD est tout sauf stable. A de maintes reprises il aura planté les logiciels qui l'utilisent, un comportement que nous avons pu produire en lançant manuellement l'interface de transcodage d'AMD (on peut y accéder par le panneau de contrôle CCC). En se limitant au profil baseline, là encore, AMD n'a aucune chance sur le plan de la qualité. C'est particulièrement dommage tant, malgré cela, la qualité est souvent de bonne facture sur les scènes fixes. Une implémentation d'un profil H.264 high pourrait être intéressante.

Nvidia propose de son côté possiblement le SDK le plus avancé et dont les résultats sont souvent les meilleurs quand il s'agit d'accélération GPU. Meilleurs, mais la qualité visuelle reste maigre, au point que les solutions purement processeurs sont souvent capables de produire un rapport qualité/temps d'encodage équivalent. Si l'on rajoute la consommation de la carte graphique, le résultat reste décevant.

L'offre d'Intel est la plus surprenante. L'encodage vidéo est géré par des unités rajoutées au GPU qui semblent accélérer une grande partie du décodage. Avec une utilisation processeur très basse, la consommation est de loin la plus faible. Au rang des problèmes, pour pouvoir en profiter il faut bien entendu disposer d'une carte mère H67 ou d'une future Z68, ce qui réduit déjà significativement les utilisateurs potentiels. Mais même si vous réunissez toutes les conditions, la qualité visuelle des encodages laisse trop franchement à désirer pour pouvoir être réellement utilisables.

Au final, les promesses marketings de transcodage GPGPU sont dommageables. Les constructeurs mettent en avant la rapidité de leurs solutions pour répondre à un problème réel : le temps, trop long pour beaucoup, nécessaire à l'encodage de vidéos par le processeur. En apportant pour seule réponse un temps d'encodage rapide, avec une qualité qui laisse significativement à désirer, le transcodage H.264 via GPGPU reste en 2011 une mauvaise réponse à un vrai problème.
Vos réactions

Top articles