发表于 2013-2-12 22:08:11
| For backers only, Posted by VideoLAN |
|StatusSo, a few weeks have passed, and we have not spoken a lot about the port on WinRT/Metro/Windows RT/WP8.|
Of course, some of you will complain, but the main reason for that, is that we've been very busy on VLC :) So here is what we did, mostly on the technical side :)
VLC engineThe biggest part of the work resides in the port of the VLC engine to a WinRT compatible runtime. A lot of the work we've done so far has been on that.
More specifically, we have:
Winstore compatibility libraryA lot of work has been and will be on this library, so let me speak a bit more about it.
- ported VLC APIs call to UNICODE (wide chars),
- allowed VLC to be compiled for Windows 8 API targets,
- upgraded some VLC Win32 API calls,
- removed some code-path when compiling for WinRT,
- fixed some issues on mingw-w64 toolchain for Windows 8,
- prepared a compatibility library,
- changed our packaging for WinRT,
- improved our audio output for Windows.
Instead of ifdef-ing the VLC code everywhere for WinRT, we decided to reimplement the forbidden calls in a library that would expose the same old Win32 functions, but implemented with the allowed APIs.
The biggest advantage of this approach is that you don't need to modify a lot of your common codebase, and that you don't need to hack all the libraries that are linked to VLC. And this would have been a huge task. Moreover, it allows to adapt to newer versions of Windows more easily.
Moreover, this library will be usable by every other project.
But as you can imagine, doing that is quite tricky, since we don't modify VLC, we don't modify the headers, but we insert it at link time...
We have done some of the work, but we still have a huge amount of work to do, notably on threads and Winsock reimplementation.
Thi s library is hosted in the mingw-w64 repository and will be the main focus of some of us for a bit of time.
ApplicationAbove the VLC engine (libVLC), we have a CX/C++ wrapper, in order to expose VLC functions to the application, since libVLC is plain C, and it is compiled in Visual Studio.
Above the wrapper, we have the main application.
This application is written in C#, compiled in Visual Studio, and uses the wrapper in order to access playback functions.
So far, the application has a basic media library, and playback support using VLC engine. The media library UI follows more or less what we've shown in the KickStarter. The player UI wasn't shown, but it looks a bit like the normal Video application, in order to match the official style.
The video, so far, is rendered into a memory buffer from libVLC and then is displayed using Direct2D in a video surface. This is not yet the best method, but it is good enough for now.
What's nextSo, what are we going to work on now:
A lot of the work is going to go faster now that we have done correctly the beginning and a beta as soon as possible for our backers.
- the winstore compat library
- the winstore compat library (threads) ,
- the winstore compat library (MSVCRT),
- the interface, in order to match our promises,
- the audio and video outputs, to go faster.
Next update should have screenshots :)
Thanks a lot