

VLC 1.1 : vers un meilleur support des GPU d’AMD pour la HD
Publié par Joris dans Liens divers, News, Open Source, Trucs et astucesComme nous l’avions évoqué il y a quelques semaines, les développeurs de l’outil vidéo VLC sont actuellement dans une phase de modification profonde du logiciel.
Il faut dire que celui-ci avait été en partie délaissé par les utilisateurs en raison de fonctionnalités manquantes, parmi lesquelles l’aide au décodage des vidéos HD par le GPU.
De nouveaux besoins pour les utilisateurs : VLC s’adapte
Ainsi, Media Player Classic avait fait son grand retour il y a quelques mois via sa version Home Cinema qui permet de profiter de l’accélération des GPU d’AMD, Intel ou NVIDIA de manière assez simple et assez efficace, ce qui semble avoir INtéressé les amateurs de MKV et autres films de vacances.
L’équipe de VLC a donc décidé de changer de stratégie sur ce point en implémentant une telle fonctionnalité au sein de la version 1.1 du logiciel qui est actuellement en plein développement.
Libre et multi-plateforme, le logiciel ne pouvait se permettre de se limiter à Windows ou Linux (Apple ne fournissant pas d’API sous MacOS X, comme l’a déjà évoqué Adobe pour Flash 10.1), ce sont donc deux implémentations différentes qui font leur apparition, uniquement avec les vidéos en H.264 pour le moment.
Gestion du GPU pour l’aide au décodage des vidéos : sous Linux et sous Windows
Sous Linux, c’est libva / VAAPI qui est exploité. Déjà utilisée dans une version spécifique de Gnash (voir cette actualité), VAAPI permet de tirer bénéfice des GPU de plusieurs constructeurs, utilisant leur implémentation en tant que backend.
C’est le cas avec VDPAU, par exemple, qui est développé par les équipes de NVIDIA pour les GPU de… NVIDIA. Il en est de même pour XvBA qui est utilisé pour les GPU d’AMD.
Sous Windows, c’est via DxVA 2.0 que VLC opère, ce qui exclut Windows XP pour le moment.
Mais comme nous l’expliquait récemment Jean-Baptiste Kempf, développeur au sein du projet, le fait que VLC ne soit pas un simple lecteur DirectShow / Media Foundation, mais bien une solution de lecture / encodage vidéo complète, complique la tâche.
Ainsi, le logiciel doit récupérer les données traitées au sein du GPU pour les renvoyer au CPU afin de continuer leur traitement avant leur affichage.
Le GPU exploité uniquement pour le décodage : plus complexe, mais plus flexible
L’avantage de cette solution est qu’elle permet de continuer à appliquer n’importe quel filtre de VLC sur la vidéo accélérée, et de la rediriger vers la sortie de votre choix (affichage via n’importe quel outil de rendu, réencodage, éditeur vidéo de VLC…).
L’inconvénient est que cette solution semble moins efficace en terme de performances, surtout avec les GPU d’AMD.
D’après les informations que nous avons pu récolter, ce problème avait été rencontré par les équipes d’Adobe lors du développement de Flash 10.1, qui exploite aussi le GPU pour le décodage des vidéos HD encodées en H.264.
Récupération efficace des données depuis une Radeon : la solution existe
L’étape de récupération des données au sein du GPU semble plus complexe que chez NVIDIA et demande la mise en place d’une solution spécifique.
Pour l’instant les équipes de VLC ont décidé de passer par la fonction MOVNTDQA introduite dans SSE 4.1, pour améliorer les choses, ce qui n’est pas optimal. En effet, cela limite le bon fonctionnement de l’application aux processeurs compatibles (Penryn et supérieurs)
Nous avons bien entendu mis en relation les développeurs de VLC avec les équipes d’AMD qui semblent leur avoir indiqué une solution plus viable pour la récupération des données au sein de VLC.
Vers un VLC 1.1 toujours plus efficace ? Stay Tuned !
Avec un peu de chance, elle devrait être implémentée sous peu et devenir rapidement fonctionnelle pour les utilisateurs de Radeon. Nous vous en tiendrons bien entendu informés.
En attendant, pour le téléchargement de VLC 1.1 pour Windows, ça se passera par ici. Un sujet de discussion faisant aussi office de guide d’installation est disponible sur le forum du projet à cette adresse.