README 3.92 KB
Newer Older
Thomas Nigro's avatar
Thomas Nigro committed
1
This project is about the port of VLC to the WinRT platform.
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
2 3 4 5 6 7 8 9

The goal is to target Windows 8/8.1 Modern environment, on x86 and ARM (Windows RT).
But also Windows Phone 8/8.1 and other devices running the WinRT platform.

Most of the media code engine is licensed under LGPL, like libVLC.
The application is dual-licensed under GPLv2/MPL and the license might change later,
if need be.

10 11 12
How to compile VLC for WinRT:
-----------------------------

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
13
You need:
14 15
* Visual Studio 2013 update 4
* Windows 8.1
16

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
17 18 19 20
If you are only on Windows, skip the step 0)

0) Cross-compile libvlc for WinRT
---------------------------------
21 22 23 24 25 26
You need:
* A very, very, very recent Linux
* build-essentials and all related build tools (make, autotools, git, etc...)
* Prodigious patience and tenacity :)

Build and install mingw-w64 SVN rev 5568 or higher (for libwinstorecompat).
27 28 29 30 31
Be sure to pass --disable-shared when configuring GCC.

Why? Statically linking to
libgcc.a will ensure that all unused methods get stripped. It will drastically
reduce the number of forbidden calls.
32 33

Run ./compile.sh and generate vlc.7z
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
34 35 36 37 38 39

1) Extract libVLC
-----------------

If you skipped step 0), take the nightly build vlc.7z

40 41 42
Extract the libVLC contents from vlc.7z to vlc/vlc-<platform>/<configuration>
<platform> is either ARM or x86
<configuration>  is Debug or Release
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
43

44
2) Build and package the front-end
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
45 46 47
----------------------------------
Open the VLC_WinRT solution in app/VLC_WINRT.sln 

48
3a) Get a developer signature from your account
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
49 50 51
--------------------------------------------------
If you don't have a dev account, see the next paragraph

52
3b) Local signature
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
53 54
-------------------
Package.appxmanifest, and generate a self-signed cert
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74

Project → Store → Create App Packages...
Select target "Debug (Win32)"
Build the package.

Now we have to import the self-signed cert into the local computer:

Open MMC
File → Add/Remove Snap In...
Certificates → Add
Select "Computer account"
Select "Local computer" (already selected), press Finish
OK to close "Add/Remove Snap-ins" dialog
Certificates (Local Computer) → Trusted Root Certification Authorities → Certificates
Right click, All Tasks... → Import...
Next
Select your "VLC_WINRT_1.0.0.0_x86_Debug.cer"
Next
Finish

75
4) Build
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
76 77
--------
Click on Build Solution. 
78

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
79
Click on Deploy Solution
80

Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
81
Profit. \o/
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99

4b) Alternately, if you wish to manually install:
-------------------------------------------------
Useful in case of network drive, for instance.

Start → Programs → Microsoft Visual Studio 2012 → Visual Studio Tools → Debuggable Package Manager

Install VCRT dependency:
Add-AppxPackage Dependencies/x86/*
( or Add-AppxPackage Dependencies/x86/Microsoft.VCLibs.x86.Debug.11.00.appx if you feel like it )

Deploy VLC appx:
Add-AppxPackage VLC_WINRT_1.0.0.0_x86_Debug.appx

Enable debug mode for the app:
(note: use Get-AppxPackage to look up the full name of the app)
Enable-AppxDebug  9519ba58-7ad6-4c4e-97ed-bfc2135a0d19_1.0.0.0_x86__2c7ztm58ext6g
# Debugging has been enabled for 9519ba58-7ad6-4c4e-97ed-bfc2135a0d19_1.0.0.0_x86__2c7ztm58ext6g.
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
100
 
101
5) Extra: Helpful snippets and tools
Jean-Baptiste Kempf's avatar
Jean-Baptiste Kempf committed
102
------------------------------------
103 104 105 106 107 108
Use http://technet.microsoft.com/en-us/sysinternals/bb896647 DebugView to view the debug logs
And Procmon ( http://technet.microsoft.com/en-ca/sysinternals/bb896645.aspx ) helps to see and debug events (like loading DLLs/modules/etc)

Quick one-liners to remove ugly mode changes and ugly CR-LF line endings.
git status -s | grep "^ M " | awk '{ print $2; }' | xargs chmod 644
git status -s | grep "^ M " | awk '{ print $2; }' | xargs dos2unix
Thomas Nigro's avatar
Thomas Nigro committed
109 110 111 112 113 114


6) For Windows Phone developers:
------------------------------------
You'll need PanelsView control. The project is available here.
https://github.com/ThomasNigro/PanelsView
115 116 117
You'll also need https://github.com/ThomasNigro/ScrollWatchedSelector. The project is available here.
https://github.com/ThomasNigro/ScrollWatchedSelector
Those two projects will in the future be available as Nuget packages.