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

Publié le 28/04/2011 par
Envoyer Imprimer


Avant d'entrer dans le vif du sujet et pour comprendre ce que nous avons comparé exactement, permettez nous un petit rappel sur quelques points concernant le sujet de la vidéo.

Conteneur, codecs
Ce que l'on appelle abusivement un fichier vidéo est avant tout un conteneur. Le concept est simple, il entrelace en son sein les différents contenus du fichier, à savoir la piste vidéo, la piste audio, et éventuellement les pistes de sous titre.


A gauche vue de principe, à droite l'entrelacement des pistes.


Entrelacer les contenus permet de faciliter la lecture simultanée des différentes pistes en évitant de devoir se déplacer trop souvent à l'intérieur du fichier. Les données relatives les unes aux autres (le son qui correspond à l'image par exemple) restent ainsi proches. Un point particulièrement important pour des disques vidéos (DVD, Blu-ray) ou quand il s'agit de transmettre un flux digital (par exemple via la TNT).

Il n'y a pas réellement de lien entre un conteneur et le format des pistes qu'il contient. Un fichier AVI peut contenir des pistes vidéos encodées dans de multiples formats (MPEG-1, Xvid, etc…) tout comme les pistes audio (MP3, AAC, etc…). Un utilitaire comme MediaInfo permet de savoir exactement quelles pistes composent un fichier, et dans quel format elles sont encodées. Certaines limitations techniques existent également, ce qui peut empêcher par exemple un format vidéo comme le H.264 d'être intégré (sans subterfuge) dans un fichier AVI.

Transcodage
Lorsque l'on parle de solutions de transcodage, on parle donc de changer un ou plusieurs des formats présents dans le fichier original. On peut changer les formats de compression pour obtenir un fichier plus petit. Par exemple convertir un DVD (conteneur VOB, vidéo MPEG-2, audio Dolby Digital) en un fichier vidéo (AVI, XviD, MP3). Parfois on peut souhaiter garder un même format vidéo mais réduire la taille des fichiers, par exemple en convertissant un Blu-ray (.m2ts, H.264, DTS-HD) en un fichier lisible sur une tablette (.mp4, H.264, AAC) ou une console de jeux. Même si l'on ne change pas de format vidéo (H.264 de chaque côté), on peut souhaiter recompresser la vidéo, soit pour des questions de taille de fichier (les Blu-ray sont volumineux), de taille d'écran destination (réduire à 1280 par 720 au lieu de 1920 par 1080) ou de spécificité de la machine destination (un iPad par exemple ne peux pas lire tous les « niveaux » de compression H.264, d'où la notion de profil existante à l'intérieur de la norme, voir page suivante).

Pour arriver à transcoder un fichier, il y a donc un grand nombre d'étapes à gérer, et toutes ne sont pas accélérées par le GPU. Sur le schéma suivant vous pouvez voir, d'en haut à gauche à en haut à droite, le cheminement nécessaire pour transcoder un fichier vidéo :


Cliquez pour agrandir.


De tout ceci, seules deux étapes peuvent être accélérées par un GPU aujourd'hui, le décodage de la piste vidéo d'origine en un format vidéo brut (en utilisant les circuits dédiés intégrés au GPU pour ce biais, les mêmes qui servent lors de la lecture accélérée d'un DVD ou d'un Blu-ray) et l'encodage (en utilisant, soit les unités de calculs du GPU [méthode CUDA/Stream de Nvidia/AMD], soit une partie du GPU dédiée à cette tâche [méthode Intel pour Sandy Bridge/HD 3000]).

Seulement deux étapes, certes, mais ce sont de loin les plus gourmandes. Voici par exemple un découpage d'un encodage que nous avons réalisé pour nos tests (fichier extrait d'un Blu-ray vers fichier MKV 720p) :


Il s'agit ici d'un encodage très haute qualité que nous avons effectué afin de créer un fichier source (nous y reviendrons). Le temps d'encodage vidéo est donc significatif. Pour conclure sur le sujet du transcodage, notez deux points importants pour la suite de notre article :
- Le décodage et l'encodage de la vidéo sont des tâches qui s'effectuent en parallèle, image par image. L'encodage est théoriquement plus long que le décodage, mais ce n'est pas toujours vrai dans certains cas lorsque l'on parle d'accélération GPU.
- Si certains outils permettent de décomposer le temps de chaque étape, tous les logiciels que nous avons testés ne le permettent pas. Lorsque nous parlerons de temps de transcodage par la suite, il s'agira donc du temps complet incluant toutes les étapes (demux, encodage vidéo, audio, remux) et pas uniquement du temps de l'encodage vidéo !

Passons maintenant aux spécificités du H.264.
Vos réactions

Top articles