VLC For Win8: building the new compatibility layer

As you can see, we are doing a KickStarter for the Windows 8 (WinRT) port of VLC media player. The goal is to take our existing code, which already works on Windows 8’s “desktop mode”, and make it run on WinRT, the “Metro” interface.

Porting code to WinRT offers significant challenges, mainly caused by the changes in the APIs. A lot of functions we were using, like LoadLibrary, are not available anymore, and replaced by slightly different functions (like LoadPackagedLibrary). Those might not be too hard to integrate into our current code base.

Other APIs, like sockets, were replaced by their COM interfaces counterpart (for instance Windows.Networking.Sockets). They are used to provide asynchronous interfaces for code running under WinRT. They got inspiration from mobile applications and the “always responsive” goal: a WinRT application should not use blocking code, and should go to sleep or wake up quickly if needed. With COM interfaces, the code polling the socket is executed in another process, and the data is provided through a callback. This changes a bit the usual networking code (connect->select->read->select>…) and we need to write a large layer of compatibility code.

After all of that, we still have to solve the issue of packaging. We already experimented a bit with side loading, which offers an easy way to distribute applications, but the real goal is to push VLC media player to the Windows Store.

So, why are we doing this? Windows 8 is happening, it is now preinstalled on most of the new computers.

Why am I excited to work on this port? This KickStarter will give us the opportunity to work full time on WinRT for a few months, and solve all these challenges for us, but also for other open source projects. We already know how to create a compatibility layer for different operating systems, so we will be able to build one for WinRT. We could also come up with guidelines on using free software toolchains to build WinRT applications.

Basically, we’re paving the way to WinRT for opensource libraries and applications, with the nice side effect on running VLC on Windows 8.

Help us make this project a reality! Please contribute to our Kickstarter for Windows 8!


12 thoughts on “VLC For Win8: building the new compatibility layer

  1. “we’re paving the way to WinRT for opensource libraries and applications, with the nice side effect on running VLC on Windows 8.”

    This was a driving factor in my personal decision to support this Kickstarter project. Opening up the Windows 8 tablet world (RT is the ARM-powered tablet flavor) to the OSS community was a HUGE bonus. I have a Surface and there are so many OSS apps I’d love to run on it, it was such a win-win. I really look forward to seeing everything that comes out of this project on top of a version of VLC I can run on my Surface.

    • Thank you for your support! Getting open source code on new platforms is a crucial task, because open source libraries power most of the current applications. By taking care of this task once and for all, we will let the application developers concentrate on the interesting parts: UI, integration, etc.

  2. Microsoft News | VLC for Windows 8 Metro at 90% of target, gives details on development challenges and benefits

      • I have heard (seen ) the dxva2 acceleration is not so efficient in VLC as other players like mpc, arcsoft tmt etc….

      • It might be the case, but without sufficient data, I can’t comment on that. DXVA is implemented by Windows, so in theory, the decoding should be the same everywhere. But the choice of algorithms and the data handling (like the post processing we do in VLC) may affect the performance.

      • This is the section of the above link i was referring to… Also why is still DXVA in vlc is experimental??
        “What that means is that, compared to some other implementation, GPU decoding in VLC can be slower because it needs to get the data back from the GPU. But you can plug ANY video output (sink) to it and use all the VLC video filters.”

      • VLC gathers the data from the GPU and applies its own filters before displaying it, instead of using the built-in video filters and displaying it directly. Thus, it benefits from the large collection of video filters and shaders that were developed for VLC. It doesn’t mean that it will be noticeably slower, just that it will result in better video quality.
        It is still marked as experimental because of bugs with some graphic cards, that we are working on. We can’t release to millions of users a VLC with DxVA activated by default if it results in crashes or glitches in the video.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s