Moonlight Playbacks Video Directly on GPU
Moonlight has been enhanced to support GPU-accelerated video playback. Silverlight 5 will do the same, but with extra features.
Miguel de Icaza has announced the availability of GPU-accelerated video rendering on Moonlight, the Unix port of Silverlight. The Mono team announced Moonlight 4 Preview 1 a month ago, with new rendering improvements such as: GPU-accelerated graphics, 3D transformations, V4L2 video capture with YUYV or YUV420 pixel format, and the inclusion of Microsoft’s H.264 and AAC codecs that come with Windows Media Pack. But unlike these enhancements, which provide GPU-based rendering for visual trees of components, the new enhancement allows playing HD video on the GPU for a smoother and visually compelling experience.
de Icaza has explained that the new rendering pipeline introduced in Moonlight is simplified compared to the initial one used for video. Instead of converting the H.264 stream to a YUV format, followed by another conversion to RGB, then a resizing of the frame and a final transfer to the video card, the new pipeline decodes the video to YUV format and transfers it to the GPU which does the remaining steps – conversion to RGB and resizing – through hardware before rendering it.
de Icaza remarked that the perceived quality of a 1080p HD video rendered by Moonlight on the GPU was “absolutely perfect.” The source code is available on GitHub and it is going to be included soon in the nightly builds.
Microsoft announced similar improvements for Silverlight and are to be made available with Silverlight 5 beta some time this half of the year, the final version being planned for the second half. While Silverlight will have GPU-accelerated video after Moonlight, Microsoft’s plug-in will come with extra features: TrickPlay which allows fast-forward, rewind, and playback at different speeds, remote control support and DRM management. Also, it is likely Microsoft to test Silverlight on a large sample of graphics cards in order to ensure the video runs smoothly.