Moonlight (Silverlight) accélère le rendu des vidéos

Moonlight 4 proposera un nouveau moteur de rendu des vidéos, qui exploitera au mieux les GPU présents au sein des cartes graphiques. La méthode utilisée ici se veut générique.

En novembre dernier, nous expliquions que David Reveman implémentait un support de l’accélération graphique matérielle au sein de Moonlight, le clone open source de Silverlight parrainé par Novell.

Il propose aujourd’hui un nouveau procédé pour décoder les vidéos. Auparavant le modèle était très classique : décodage d’une image, conversion YUV vers RGB, mise à l’échelle, transfert vers la carte graphique et affichage. Le tout est dorénavant simplifié : le processeur se charge de décoder l’image et le résultat est transféré directement en YUV au GPU. L’OpenGL ne travaillant qu’un mode RGB, les développeurs ont mis au point un pixel shader qui effectue la conversion YUV vers RGB. Simple… mais encore fallait-il y penser. Le GPU se charge ensuite de mettre l’image à la bonne taille et de l’afficher à l’écran.

Cette méthode de rendu générique ne fait pas appel aux (éventuelles) capacités de prise en charge du décodage vidéo par la carte graphique. Elle sera ainsi compatible avec la majorité des modèle. Selon Miguel de Icaza, le responsable du projet Mono (le clone open source de .NET), les vidéos en 1080p s’affichent de façon fluide grâce à ce procédé (reste encore à savoir sur quel type de machine). Les résultats de ces travaux seront intégrés à Moonlight 4.