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 1080p
Nous utilisons ici les mêmes scènes que précédemment, les sources étant les fichiers vidéo des Blu-ray.


La moyenne de SSIM de la version processeur de l'encodeur d'Arcsoft est excessivement basse. En cause, le fait que pour les encodages 1080p, cet encodeur utilise… un framerate variable ! Alors que notre source utilise un framerate constant à 23.976 images/secondes, l'encodeur d'Arcsoft crée des variations en fonction de la complexité de la scène. Et si souvent on parle de quelques millisecondes, ici les écarts sont forts (via MediaInfo) :

Original frame rate : 23.976 fps
Minimum frame rate : 8.108 fps
Maximum frame rate : 29.132 fps

Résultat, au bout d'environ 1500 images, l'encodeur applique un nombre d'images par seconde quasiment divisé par quatre sur une scène qu'il estime lente et fixe. Et les comparaisons SSIM/PSNR deviennent impossibles !

L'utilisation du VFR est une technique valable, car présente dans la specification H.264. Cependant elle est généralement réservée à des usages bien précis comme le streaming ou les caméras de surveillances. Pour encoder des films, cela ne fait pas à nos yeux sens tant la lecture de fichiers VFR peut poser problème avec certains logiciels/périphériques, encore moins en 1080p ou l'on destine le fichier à la lecture sur un téléviseur. Les encodages CUDA/Stream/Media SDK n'ont pas ce problème et utilisent un nombre d'images par seconde constant.


Côté temps d'encodage, MediaConverter semble buter sur la piste audio qui est encodée en parrallèle à la piste vidéo. Le temps est anormalement long.

Regardons tout de même l'évolution du SSIM durant les 500 premières images de la scène :

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


Durant les 500 premières images, le frame rate ne change pas pour l'encodeur CPU d'Arcsoft. Il est ici sérieusement tallonné par l'encodeur HD 3000 d'Intel. Qu'est ce que cela donne en images ?

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


Malgré un score moyen plus haut, le résultat de la version MediaSDK n'est pas très bon, les visages et les textures de peau étant significativement moins nettes comparativement aux versions CPU et Radeon.

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


Sur cette seconde scène, la version CPU s'est déjà décalée de 7 images. De quoi rendre toutes les comparaisons fausses et les scores obtenus sur la version CPU inutiles. Pour les autres encodeurs, les résultats des versions MediaSDK et Stream semblent très bon, avec un petit avantage à MediaSDK. Vérifions sur les images :

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


Encore assez ironiquement, la version Radeon des encodages est de meilleure facture dans la conservation des détails, on peut le voir facilement en regardant la grille au milieu de l'écran, complètement floutée sur les autres encodages.
Vos réactions

Top articles