Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/libvlc-nuget
  • aaqib/libvlc-nuget
  • jpgrusling/libvlc-nuget
  • Clancey/libvlc-nuget
  • mfkl/libvlc-nuget
  • pouyanchasebi1364/libvlc-nuget
  • reverentdueces/libvlc-nuget
  • berrylcm/libvlc-nuget
  • thombrink/libvlc-nuget
  • alexandre-janniaux/libvlc-nuget
  • huynhsontung/libvlc-nuget
  • hezeping/libvlc-nuget
12 results
Show changes
Commits on Source (42)
Showing
with 530 additions and 58 deletions
custom: https://videolabs.io/solutions/libvlcsharp
\ No newline at end of file
name: CI
on:
push:
pull_request:
jobs:
LibVLC_iOS_NuGet:
if: github.event_name == 'push' || github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: LibVLC iOS build
shell: bash
run: |
git clone https://github.com/videolan/vlckit
cd vlckit && git checkout 3.0
./buildMobileVLCKit.sh -f
patchBinary () {
install_name_tool -id @rpath/DynamicMobileVLCKit.framework/DynamicMobileVLCKit MobileVLCKit
defaults write $(pwd)/Info.plist CFBundleExecutable -string DynamicMobileVLCKit
defaults write $(pwd)/Info.plist CFBundleName -string DynamicMobileVLCKit
defaults write $(pwd)/Info.plist CFBundleIdentifier -string org.videolan.DynamicMobileVLCKit
mv MobileVLCKit DynamicMobileVLCKit
cd ..
mv MobileVLCKit.framework DynamicMobileVLCKit.framework
cd ..
}
cd build/MobileVLCKit.xcframework/ios-arm64_armv7_armv7s/MobileVLCKit.framework
patchBinary
cd ios-arm64_i386_x86_64-simulator/MobileVLCKit.framework
patchBinary
mkdir -p $GITHUB_WORKSPACE/build/ios-device
mkdir -p $GITHUB_WORKSPACE/build/ios-simulator
mv ios-arm64_armv7_armv7s/DynamicMobileVLCKit.framework $GITHUB_WORKSPACE/build/ios-device
mv ios-arm64_i386_x86_64-simulator/DynamicMobileVLCKit.framework $GITHUB_WORKSPACE/build/ios-simulator
- name: Setup NuGet
uses: nuget/setup-nuget@v1
with:
nuget-version: '5.x'
- name: Create LibVLC iOS NuGet package
run: |
nuget pack VideoLAN.LibVLC.iOS.nuspec
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: libvlc-ios-build
path: ./*.nupkg
UWP_access_v3:
if: github.event_name == 'push' || github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id
strategy:
matrix:
arch: [x64, x86, arm]
runs-on: windows-2019
steps:
- name: Checkout libvlc uwp access module code
shell: bash
run: |
git clone https://code.videolan.org/mfkl/vlc-winrt && cd vlc-winrt && git checkout uwp-access-v3
mkdir -p libvlc/Universal/vlc-${{ matrix.arch }}/Release
- name: Download VLC headers
uses: azure/powershell@v1
with:
inlineScript: |
Invoke-WebRequest -Uri "https://code.videolan.org/videolan/vlc/-/archive/3.0.x/vlc-3.0.x.zip" -OutFile "vlc-3.0.x.zip"
azPSVersion : '3.1.0'
- name: Extract LibVLC
shell: bash
run: |
7z x vlc-3.0.x.zip -ovlc
mv vlc/vlc-3.0.x/include vlc-winrt/libvlc/Universal/vlc-${{ matrix.arch }}/Release
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.0.3
- name: MSBuild x64/ARM
if: matrix.arch != 'x86'
working-directory: vlc-winrt/modules/libaccess_winrt_plugin.UWP
run: msbuild libaccess_winrt_plugin.UWP.vcxproj /p:Configuration=Release /p:Platform=${{ matrix.arch }}
- name: MSBuild x86
if: matrix.arch == 'x86'
working-directory: vlc-winrt/modules/libaccess_winrt_plugin.UWP
run: msbuild libaccess_winrt_plugin.UWP.vcxproj /p:Configuration=Release /p:Platform=Win32
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: libvlc-uwp-access-build-${{ matrix.arch }}
path: vlc-winrt/modules/libaccess_winrt_plugin.UWP/Release/libaccess_winrt_plugin.UWP
UWP_NuGet:
if: github.event_name == 'push' || github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id
runs-on: ubuntu-latest
needs: UWP_access_v3
steps:
- uses: actions/checkout@v2
- uses: actions/download-artifact@v4
- uses: NuGet/setup-nuget@v1.2.0
with:
nuget-version: '5.x'
- name: Create NuGet folders
shell: bash
run: |
mkdir -p build/win10-arm/native
mkdir -p build/win10-x64/native
mkdir -p build/win10-x86/native
- name: Download and extract UWP builds
env:
VLC_VERSION: 3.0.20
shell: bash
run: |
wget -O arm.zip https://code.videolan.org/videolan/libvlc-nuget/-/jobs/artifacts/master/download?job=uwp-arm
wget -O x86.zip https://code.videolan.org/videolan/libvlc-nuget/-/jobs/artifacts/master/download?job=uwp-x86
wget -O x64.zip https://code.videolan.org/videolan/libvlc-nuget/-/jobs/artifacts/master/download?job=uwp-x64
7z x arm.zip -oarm -y
7z x arm/vlc/winarm-uwp/vlc-$VLC_VERSION-win32.7z -oarm/vlc/winarm-uwp -y
7z x x86.zip -ox86 -y
7z x x86/vlc/win32-uwp/vlc-$VLC_VERSION-win32.7z -ox86/vlc/win32-uwp -y
7z x x64.zip -ox64 -y
7z x x64/vlc/win64-uwp/vlc-$VLC_VERSION-win64.7z -ox64/vlc/win64-uwp -y
mv arm/vlc/winarm-uwp/vlc-$VLC_VERSION/lua build/win10-arm/native
mv arm/vlc/winarm-uwp/vlc-$VLC_VERSION/plugins build/win10-arm/native
mv libvlc-uwp-access-build-arm/libaccess_winrt_plugin.dll build/win10-arm/native/plugins/access
mv arm/vlc/winarm-uwp/vlc-$VLC_VERSION/sdk build/win10-arm/native
mv arm/vlc/winarm-uwp/vlc-$VLC_VERSION/libvlc.dll build/win10-arm/native
mv arm/vlc/winarm-uwp/vlc-$VLC_VERSION/libvlccore.dll build/win10-arm/native
mv x86/vlc/win32-uwp/vlc-$VLC_VERSION/lua build/win10-x86/native
mv x86/vlc/win32-uwp/vlc-$VLC_VERSION/plugins build/win10-x86/native
mv libvlc-uwp-access-build-x86/libaccess_winrt_plugin.dll build/win10-x86/native/plugins/access
mv x86/vlc/win32-uwp/vlc-$VLC_VERSION/sdk build/win10-x86/native
mv x86/vlc/win32-uwp/vlc-$VLC_VERSION/libvlc.dll build/win10-x86/native
mv x86/vlc/win32-uwp/vlc-$VLC_VERSION/libvlccore.dll build/win10-x86/native
mv x64/vlc/win64-uwp/vlc-$VLC_VERSION/lua build/win10-x64/native
mv x64/vlc/win64-uwp/vlc-$VLC_VERSION/plugins build/win10-x64/native
mv libvlc-uwp-access-build-x64/libaccess_winrt_plugin.dll build/win10-x64/native/plugins/access
mv x64/vlc/win64-uwp/vlc-$VLC_VERSION/sdk build/win10-x64/native
mv x64/vlc/win64-uwp/vlc-$VLC_VERSION/libvlc.dll build/win10-x64/native
mv x64/vlc/win64-uwp/vlc-$VLC_VERSION/libvlccore.dll build/win10-x64/native
- name: Package NuGet
shell: bash
run: |
nuget pack VideoLAN.LibVLC.UWP.nuspec
- name: Upload NuGet package
uses: actions/upload-artifact@v4
with:
name: libvlc-uwp
path: '*.nupkg'
......@@ -27,9 +27,11 @@ Thumbs.db
*.lib
*.sbr
*.dylib
build/**
build/**/*.dll
build/**/*.jar
build/**/*.so
build/**/*.dylib
obj/
build/**
mac/**
[Rr]elease*/
_ReSharper*/
......
# `libvlc` for .NET
[![Join the chat at https://discord.gg/3h3K3JF](https://img.shields.io/discord/716939396464508958?label=discord)](https://discord.gg/3h3K3JF)
This repository is about presenting `libvlc` and its capabilities to .NET developers.
It also contains packaging tools and files for nuget packaging/deployment.
In other words: It's just the same thing as if you had downloaded the files from VideoLAN's website, in a NuGet package,
......@@ -68,7 +70,7 @@ Currently, you can customize three things during the build:
#### LibVLC 3:
Latest stable version is [3.0.14](https://code.videolan.org/videolan/vlc-3.0/-/tags/3.0.14). Feel free to check out the [release notes](https://code.videolan.org/videolan/vlc-3.0/-/blob/master/NEWS).
Latest stable version is [3.0.21](https://code.videolan.org/videolan/vlc/-/tags). Feel free to check out the [release notes](https://code.videolan.org/videolan/vlc/-/blob/3.0.x/NEWS).
Minimum OS version supported by LibVLC 3.x:
......@@ -83,6 +85,11 @@ Minimum OS version supported by LibVLC 3.x:
dotnet add package VideoLAN.LibVLC.Windows
```
*For the GPL version, use the following command:*
```cmd
dotnet add package VideoLAN.LibVLC.Windows.GPL
```
[![NuGet version](https://img.shields.io/nuget/v/VideoLAN.LibVLC.Windows.svg)](https://www.nuget.org/packages/VideoLAN.LibVLC.Windows)
[![NuGet downloads](https://img.shields.io/nuget/dt/VideoLAN.LibVLC.Windows.svg)](https://www.nuget.org/packages/VideoLAN.LibVLC.Windows)
......@@ -173,13 +180,16 @@ For Ubuntu, follow this [guide](https://code.videolan.org/videolan/LibVLCSharp/b
## Unity3D
| Platform | Unity Store Asset |
| ----------------- | ----------------------------------------------- |
| Windows | [![VLCUnityWindowsBadge]][VLCUnityWindows] |
| Platform | Unity Store Asset |
| ----------------- | ---------------------------------------------- |
| Unity3D - Windows | [![VLCUnityBadge]][VLCUnityStore] |
| Unity3D - UWP | [![VLCUnityBadge]][VLCUnityStore] |
| Unity3D - Android | [![VLCUnityBadge]][VLCUnityStore] |
| Unity3D - iOS | [![VLCUnityBadge]][VLCUnityStore] |
| Unity3D - macOS | [![VLCUnityBadge]][VLCUnityStore] |
[RVLCUnityWindows]: https://assetstore.unity.com/packages/tools/video/vlc-for-unity-windows-133979
[VLCUnityWindows]: https://assetstore.unity.com/packages/tools/video/vlc-for-unity-windows-133979
[VLCUnityWindowsBadge]: https://img.shields.io/badge/Made%20with-Unity-57b9d3.svg?style=flat&logo=unity
[VLCUnityStore]: https://videolabs.io/store/unity
[VLCUnityBadge]: https://img.shields.io/badge/Made%20with-Unity-57b9d3.svg?style=flat&logo=unity
# Roadmap
......@@ -192,9 +202,9 @@ For Ubuntu, follow this [guide](https://code.videolan.org/videolan/LibVLCSharp/b
If you would like VLC developers to provide you with:
- custom development on LibVLC and/or LibVLCSharp,
- training and workshops,
- commercial licenses,
- [LibVLCSharp commercial licenses](https://videolabs.io/solutions/libvlcsharp),
- support services,
- consulting services,
- other multimedia services.
Feel free to [contact us](https://videolabs.io/#contact).
\ No newline at end of file
Feel free to [contact us](https://videolabs.io/#contact).
......@@ -3,7 +3,7 @@
<metadata>
<id>VideoLAN.LibVLC.Android</id>
<title>VideoLAN.LibVLC.Android</title>
<version>3.2.0</version>
<version>3.2.0.1</version>
<authors>VideoLAN</authors>
<owners>VideoLAN</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
......
......@@ -3,7 +3,7 @@
<metadata>
<id>VideoLAN.LibVLC.UWP</id>
<title>VideoLAN.LibVLC.UWP</title>
<version>3.3.1</version>
<version>3.3.2</version>
<authors>VideoLAN</authors>
<owners>VideoLAN</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
......@@ -19,7 +19,7 @@ Use this LibVLC build for Windows Universal projects (UAP) on Windows 10 Desktop
<icon>icon.png</icon>
</metadata>
<files>
<!-- https://code.videolan.org/videolan/vlc-winrt/-/pipelines/54134 -->
<!-- https://code.videolan.org/videolan/vlc/-/commit/c900a2183f8988f32e60afdcae3aa398387295f1 -->
<file src="build\VideoLAN.LibVLC.UWP.targets" target="build\VideoLAN.LibVLC.UWP.targets"/>
<file src="build\win10-x86\native\**" target="build\win10-x86"/>
<file src="build\win10-x64\native\**" target="build\win10-x64"/>
......
<?xml version="1.0"?>
<package >
<metadata>
<id>VideoLAN.LibVLC.Windows.GPL</id>
<title>VideoLAN.LibVLC.Windows.GPL</title>
<version>3.0.11</version>
<authors>VideoLAN</authors>
<owners>VideoLAN</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<summary>LibVLC is a modular multimedia framework</summary>
<description>LibVLC is a modular multimedia framework that can render video and output audio as well as encode and stream.
As it is native code, you will need to use a wrapper library such as LibVLCSharp to use it from .NET.
This package contains GPL plugin DLLs from official releases. Make sure you comply with the GPL license.</description>
<tags>libvlc;vlc;videolan;native;c/c++;video;audio;player;media;mediaplayer;codec;ffmpeg;xamarin;graphics;ios;android;linux;windows;macos;cross-platform</tags>
<projectUrl>https://code.videolan.org/videolan/libvlc-nuget</projectUrl>
<license type="expression">GPL-2.0-or-later</license>
<icon>icon.png</icon>
<releaseNotes>https://code.videolan.org/videolan/vlc/blob/master/NEWS</releaseNotes>
</metadata>
<files>
<file src="build\VideoLAN.LibVLC.Windows.GPL.targets" target="build\VideoLAN.LibVLC.Windows.GPL.targets"/>
<file src="build\win7-x64\native\**" target="build\x64"/>
<file src="build\win7-x86\native\**" target="build\x86"/>
<file src="icon.png" target="" />
</files>
</package>
\ No newline at end of file
......@@ -3,7 +3,7 @@
<metadata>
<id>VideoLAN.LibVLC.iOS</id>
<title>VideoLAN.LibVLC.iOS</title>
<version>3.3.10</version>
<version>3.3.17</version>
<authors>VideoLAN</authors>
<owners>VideoLAN</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
......
......@@ -3,7 +3,7 @@
<metadata>
<id>VideoLAN.LibVLC.tvOS</id>
<title>VideoLAN.LibVLC.tvOS</title>
<version>3.2.0.1</version>
<version>3.3.17</version>
<authors>VideoLAN</authors>
<owners>VideoLAN</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
......@@ -18,8 +18,8 @@ As it is native code, you will need to use a wrapper library such as LibVLCSharp
</metadata>
<files>
<file src="build\VideoLAN.LibVLC.tvOS.targets" target="build\VideoLAN.LibVLC.tvOS.targets"/>
<file src="build\tvOS-simulator\DynamicTVVLCKit.framework\*" target="build\tvOS-simulator\DynamicTVVLCKit.framework"/>
<file src="build\tvOS-device\DynamicTVVLCKit.framework\*" target="build\tvOS-device\DynamicTVVLCKit.framework"/>
<file src="build\tvOS-simulator\TVVLCKit.framework\*" target="build\tvOS-simulator\TVVLCKit.framework"/>
<file src="build\tvOS-device\TVVLCKit.framework\*" target="build\tvOS-device\TVVLCKit.framework"/>
<file src="icon.png" target="" />
</files>
</package>
\ No newline at end of file
......@@ -2,7 +2,7 @@
<PropertyGroup>
<CopyLibcppShared Condition="'$(CopyLibcppShared)' == ''">true</CopyLibcppShared>
</PropertyGroup>
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('armeabi-v7a'))">
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('armeabi-v7a')) or $(RuntimeIdentifiers.Contains('android-arm'))">
<AndroidNativeLibrary Include="$(MSBuildThisFileDirectory)android-armv7\libvlc.so">
<Link>libvlc-armv7\libvlc.so</Link>
<Abi>armeabi-v7a</Abi>
......@@ -12,7 +12,7 @@
<Abi>armeabi-v7a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('arm64-v8a'))">
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('arm64-v8a')) or $(RuntimeIdentifiers.Contains('android-arm64'))">
<AndroidNativeLibrary Include="$(MSBuildThisFileDirectory)android-armv8\libvlc.so">
<Link>libvlc-armv8\libvlc.so</Link>
<Abi>arm64-v8a</Abi>
......@@ -22,7 +22,7 @@
<Abi>arm64-v8a</Abi>
</AndroidNativeLibrary>
</ItemGroup>
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('x86'))">
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('x86')) or $(RuntimeIdentifiers.Contains('android-x86'))">
<AndroidNativeLibrary Include="$(MSBuildThisFileDirectory)android-x86\libvlc.so">
<Link>libvlc-x86\libvlc.so</Link>
<Abi>x86</Abi>
......@@ -32,7 +32,7 @@
<Abi>x86</Abi>
</AndroidNativeLibrary>
</ItemGroup>
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('x86_64'))">
<ItemGroup Condition="$(AndroidSupportedAbis.Contains('x86_64')) or $(RuntimeIdentifiers.Contains('android-x64'))">
<AndroidNativeLibrary Include="$(MSBuildThisFileDirectory)android-x86_64\libvlc.so">
<Link>libvlc-x86_64\libvlc.so</Link>
<Abi>x86_64</Abi>
......@@ -42,4 +42,4 @@
<Abi>x86_64</Abi>
</AndroidNativeLibrary>
</ItemGroup>
</Project>
\ No newline at end of file
</Project>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VlcWindowsX64TargetDir Condition=" '$(VlcWindowsX64TargetDir)' == '' ">libvlc\win-x64</VlcWindowsX64TargetDir>
<VlcWindowsX86TargetDir Condition=" '$(VlcWindowsX86TargetDir)' == '' ">libvlc\win-x86</VlcWindowsX86TargetDir>
<VlcWindowsX64Enabled Condition="'$(VlcWindowsX64Enabled)' == '' AND ('$(Platform)' == 'x64' OR '$(Platform)' == 'AnyCPU')">true</VlcWindowsX64Enabled>
<VlcWindowsX86Enabled Condition="'$(VlcWindowsX86Enabled)' == '' AND ('$(Platform)' == 'x86' OR '$(Platform)' == 'AnyCPU')">true</VlcWindowsX86Enabled>
</PropertyGroup>
<ItemGroup>
<!-- If no VlcWindows[...]IncludeFiles was declared previously, include all plugins by default by specifying ** (escaped, so %2A%2A) -->
<VlcWindowsX64IncludeFiles Condition="'@(VlcWindowsX64IncludeFiles)'==''" Include="libvlc.%2A;libvlccore.%2A;hrtfs\%2A%2A;lua\%2A%2A;plugins\%2A%2A" />
<VlcWindowsX86IncludeFiles Condition="'@(VlcWindowsX86IncludeFiles)'==''" Include="libvlc.%2A;libvlccore.%2A;hrtfs\%2A%2A;lua\%2A%2A;plugins\%2A%2A" />
</ItemGroup>
<Target Name="CollectVlcFilesToCopyWindows" BeforeTargets="BeforeBuild">
<!-- We need a target in order to make batching work -->
<!-- Some useful links to understand how it works:
http://sedotech.com/Resources#Batching (4 parts of excellent explanation of Batching. Link 2 is dead, but can be found in parts 3 and above)
http://sedodream.com/2010/10/21/MSBuildFilterListTake2.aspx
-->
<!-- First, transform the escaped, relative, platform-independant file path into real path, relative to 32/64 folders -->
<!-- x64 -->
<ItemGroup Condition="'$(VlcWindowsX64Enabled)' == 'true'">
<!-- Expand selectors and compute absolute paths for include, exclude and MainLibraries -->
<VlcWindowsX64IncludeFilesFullPath Include="$([MSBuild]::Unescape($(MSBuildThisFileDirectory)..\build\x64\%(VlcWindowsX64IncludeFiles.Identity)))" />
<VlcWindowsX64ExcludeFilesFullPath Include="$([MSBuild]::Unescape($(MSBuildThisFileDirectory)..\build\x64\%(VlcWindowsX64ExcludeFiles.Identity)))" Condition="'%(VlcWindowsX64ExcludeFiles.Identity)'!=''" />
<!-- We have gathered all the full path of what should be copied and what should be skipped, let's include that as Content that gets copied -->
<Content Include="@(VlcWindowsX64IncludeFilesFullPath)" Exclude="@(VlcWindowsX64ExcludeFilesFullPath)">
<Link>$(VlcWindowsX64TargetDir)\$([MSBuild]::MakeRelative($(MSBuildThisFileDirectory)..\build\x64\, %(FullPath)))</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<!-- x86 -->
<ItemGroup Condition="'$(VlcWindowsX86Enabled)' == 'true'">
<!-- Expand selectors and compute absolute paths for include, exclude and MainLibraries -->
<VlcWindowsX86IncludeFilesFullPath Include="$([MSBuild]::Unescape($(MSBuildThisFileDirectory)..\build\x86\%(VlcWindowsX86IncludeFiles.Identity)))" />
<VlcWindowsX86ExcludeFilesFullPath Include="$([MSBuild]::Unescape($(MSBuildThisFileDirectory)..\build\x86\%(VlcWindowsX86ExcludeFiles.Identity)))" Condition="'%(VlcWindowsX86ExcludeFiles.Identity)'!=''" />
<!-- We have gathered all the full path of what should be copied and what should be skipped, let's include that as Content that gets copied -->
<Content Include="@(VlcWindowsX86IncludeFilesFullPath)" Exclude="@(VlcWindowsX86ExcludeFilesFullPath)">
<Link>$(VlcWindowsX86TargetDir)\$([MSBuild]::MakeRelative($(MSBuildThisFileDirectory)..\build\x86\, %(FullPath)))</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Target>
<ItemDefinitionGroup>
<ClCompile Condition="'$(Language)' == 'C++' and ('$(Platform)' == 'x64' or '$(Platform)' == 'x86') and '$(OS)'=='Windows_NT'">
<AdditionalIncludeDirectories>
$(MSBuildThisFileDirectory)\$(Platform)\include\;%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup>
<Link Condition="'$(Language)' == 'C++' and ('$(Platform)' == 'x64' or '$(Platform)' == 'x86') and '$(OS)'=='Windows_NT'">
<AdditionalDependencies>libvlc.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)\$(Platform)\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)\$(Platform)\*.dll"
Condition="'$(Language)' == 'C++' and ('$(Platform)' == 'x64' or '$(Platform)' == 'x86') and '$(OS)'=='Windows_NT'">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)\$(Platform)\plugins\**"
Condition="'$(Language)' == 'C++' and '$(OS)'=='Windows_NT' and ('$(Platform)' == 'x86' or '$(Platform)' == 'x64')">
<Link>plugins\%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)\$(Platform)\hrtfs\**"
Condition="'$(Language)' == 'C++' and '$(OS)'=='Windows_NT' and ('$(Platform)' == 'x86' or '$(Platform)' == 'x64')">
<Link>hrtfs\%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)\$(Platform)\lua\**"
Condition="'$(Language)' == 'C++' and '$(OS)'=='Windows_NT' and ('$(Platform)' == 'x86' or '$(Platform)' == 'x64')">
<Link>lua\%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
......@@ -9,8 +9,8 @@
<ItemGroup>
<!-- If no VlcWindows[...]IncludeFiles was declared previously, include all plugins by default by specifying ** (escaped, so %2A%2A) -->
<VlcWindowsX64IncludeFiles Condition="'@(VlcWindowsX64IncludeFiles)'==''" Include="libvlc.%2A;libvlccore.%2A;hrtfs\%2A%2A;locale\%2A%2A;lua\%2A%2A;plugins\%2A%2A" />
<VlcWindowsX86IncludeFiles Condition="'@(VlcWindowsX86IncludeFiles)'==''" Include="libvlc.%2A;libvlccore.%2A;hrtfs\%2A%2A;locale\%2A%2A;lua\%2A%2A;plugins\%2A%2A" />
<VlcWindowsX64IncludeFiles Condition="'@(VlcWindowsX64IncludeFiles)'==''" Include="libvlc.%2A;libvlccore.%2A;hrtfs\%2A%2A;lua\%2A%2A;plugins\%2A%2A" />
<VlcWindowsX86IncludeFiles Condition="'@(VlcWindowsX86IncludeFiles)'==''" Include="libvlc.%2A;libvlccore.%2A;hrtfs\%2A%2A;lua\%2A%2A;plugins\%2A%2A" />
</ItemGroup>
<Target Name="CollectVlcFilesToCopyWindows" BeforeTargets="BeforeBuild">
......@@ -48,4 +48,51 @@
</Content>
</ItemGroup>
</Target>
<ItemDefinitionGroup>
<ClCompile Condition="'$(Language)' == 'C++' and ('$(Platform)' == 'x64' or '$(Platform)' == 'x86') and '$(OS)'=='Windows_NT'">
<AdditionalIncludeDirectories>
$(MSBuildThisFileDirectory)\$(Platform)\include\;%(AdditionalIncludeDirectories)
</AdditionalIncludeDirectories>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup>
<Link Condition="'$(Language)' == 'C++' and ('$(Platform)' == 'x64' or '$(Platform)' == 'x86') and '$(OS)'=='Windows_NT'">
<AdditionalDependencies>libvlc.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)\$(Platform)\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)\$(Platform)\*.dll"
Condition="'$(Language)' == 'C++' and ('$(Platform)' == 'x64' or '$(Platform)' == 'x86') and '$(OS)'=='Windows_NT'">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)\$(Platform)\plugins\**"
Condition="'$(Language)' == 'C++' and '$(OS)'=='Windows_NT' and ('$(Platform)' == 'x86' or '$(Platform)' == 'x64')">
<Link>plugins\%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)\$(Platform)\hrtfs\**"
Condition="'$(Language)' == 'C++' and '$(OS)'=='Windows_NT' and ('$(Platform)' == 'x86' or '$(Platform)' == 'x64')">
<Link>hrtfs\%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<Content Include="$(MSBuildThisFileDirectory)\$(Platform)\lua\**"
Condition="'$(Language)' == 'C++' and '$(OS)'=='Windows_NT' and ('$(Platform)' == 'x86' or '$(Platform)' == 'x64')">
<Link>lua\%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="(('$(Platform)' == 'iPhoneSimulator'))">
<ItemGroup Condition="(('$(Platform)' == 'iPhoneSimulator') OR $(RuntimeIdentifier.StartsWith('iossimulator')))">
<NativeReference Include="$(MSBuildThisFileDirectory)ios-simulator\DynamicMobileVLCKit.framework">
<Kind>Framework</Kind>
</NativeReference>
</ItemGroup>
<ItemGroup Condition="(('$(Platform)' == 'iPhone'))">
<ItemGroup Condition="(('$(Platform)' == 'iPhone') OR ('$(RuntimeIdentifier)' == 'ios') OR $(RuntimeIdentifier.StartsWith('ios-')) OR $(RuntimeIdentifier.StartsWith('ios.')))">
<NativeReference Include="$(MSBuildThisFileDirectory)ios-device\DynamicMobileVLCKit.framework">
<Kind>Framework</Kind>
</NativeReference>
......
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="(('$(Platform)' == 'iPhoneSimulator'))">
<NativeReference Include="$(MSBuildThisFileDirectory)tvOS-simulator\DynamicTVVLCKit.framework">
<NativeReference Include="$(MSBuildThisFileDirectory)tvOS-simulator\TVVLCKit.framework">
<Kind>Framework</Kind>
</NativeReference>
</ItemGroup>
<ItemGroup Condition="(('$(Platform)' == 'iPhone'))">
<NativeReference Include="$(MSBuildThisFileDirectory)tvOS-device\DynamicTVVLCKit.framework">
<NativeReference Include="$(MSBuildThisFileDirectory)tvOS-device\TVVLCKit.framework">
<Kind>Framework</Kind>
</NativeReference>
</ItemGroup>
......
variables:
VLC_UWP_LLVM_IMAGE: registry.videolan.org/vlc-debian-llvm-uwp:20211020111246
VLC_VERSION: 3.0.20
UWP_LIBVLC_BUILD_FLAGS: -z -r -u -w
.variables-win32: &variables-win32
SHORTARCH: win32
HOST_ARCH: i686
TRIPLET: $HOST_ARCH-w64-mingw32
.variables-win64: &variables-win64
SHORTARCH: win64
HOST_ARCH: x86_64
TRIPLET: $HOST_ARCH-w64-mingw32
.variables-win-arm: &variables-win-arm
SHORTARCH: winarm
HOST_ARCH: armv7
TRIPLET: $HOST_ARCH-w64-mingw32
# Common rules for jobs using docker
.docker-template:
tags:
- docker
- amd64
#
# Windows
#
.winrt-common:
extends: .docker-template
script: |
git clone https://code.videolan.org/videolan/vlc && cd vlc && git checkout 3.0.x
git config --global user.email "cone@example.com"
git config --local user.name "Cony Cone"
git am -3 ../patches/*.patch
if [ $? -ne 0 ]; then
git am --abort
echo "Applying the patches failed, aborting git-am"
exit 1
fi
extras/package/win32/build.sh -c -a $HOST_ARCH $UWP_LIBVLC_BUILD_FLAGS
.nightly-winrt-common:
extends: .winrt-common
artifacts:
paths:
- vlc/$SHORTARCH-uwp/*.7z
uwp-x64:
extends: .nightly-winrt-common
image:
name: $VLC_UWP_LLVM_IMAGE
variables:
<<: *variables-win64
uwp-x86:
extends: .nightly-winrt-common
image:
name: $VLC_UWP_LLVM_IMAGE
variables:
<<: *variables-win32
uwp-arm:
extends: .nightly-winrt-common
image:
name: $VLC_UWP_LLVM_IMAGE
variables:
<<: *variables-win-arm
\ No newline at end of file
......@@ -7,6 +7,6 @@ pr:
jobs:
- job: Linux
pool:
vmImage: 'ubuntu-18.04'
vmImage: 'ubuntu-latest'
steps:
- template: linux-build.yml
\ No newline at end of file
......@@ -54,14 +54,14 @@ Task("Package-windows-classic-nightly")
Task("Download-win32-nightly")
.Does(async () =>
{
await DownloadArtifact("win32");
await DownloadArtifact("win32-llvm");
});
Task("Download-win64-nightly")
.IsDependentOn("Clean")
.Does(async () =>
{
await DownloadArtifact("win64");
await DownloadArtifact("win64-llvm");
});
Task("Publish")
......@@ -88,7 +88,7 @@ Task("Publish")
bool IsPrBuild()
{
if(!BuildSystem.IsRunningOnAzurePipelines && !BuildSystem.IsRunningOnAzurePipelinesHosted) return false;
if(!BuildSystem.AzurePipelines.IsRunningOnAzurePipelines) return false;
return BuildSystem.AzurePipelines.Environment.PullRequest.Number > 0;
}
......@@ -136,12 +136,12 @@ async Task DownloadArtifact(string arch)
client.Dispose();
string artifact = string.Empty;
if(arch == "win32")
if(arch.StartsWith("win32"))
{
packageVersionWin32 = today;
artifact = $"artifact-{packageVersionWin32}-{arch}";
}
else if(arch == "win64")
else if(arch.StartsWith("win64"))
{
packageVersionWin64 = today;
artifact = $"artifact-{packageVersionWin64}-{arch}";
......@@ -149,13 +149,18 @@ async Task DownloadArtifact(string arch)
Console.WriteLine("Found the nightly artifact URL");
using (var webClient = new WebClient())
using (var httpClient = new HttpClient())
{
url = $"{baseUrl}{arch}/{todayPartialLink}{todayLinkEnding}";
Console.WriteLine($"requesting {url}");
webClient.DownloadProgressChanged += (s, e) => Console.Write($"\r{e.ProgressPercentage}%");
await webClient.DownloadFileTaskAsync(url, $"../artifacts/{artifact}{ext}");
using (var stream = await httpClient.GetStreamAsync(url))
{
using (var fs = new FileStream($"../artifacts/{artifact}{ext}", FileMode.CreateNew))
{
await stream.CopyToAsync(fs);
}
}
Console.WriteLine(Environment.NewLine);
Console.WriteLine("Done...");
}
......@@ -173,8 +178,8 @@ void PrepareForPackaging()
{
Console.WriteLine("PrepareForPackaging...");
var artifactwin32 = $"../artifacts/artifact-{packageVersionWin32}-win32";
var artifactwin64 = $"../artifacts/artifact-{packageVersionWin64}-win64";
var artifactwin32 = $"../artifacts/artifact-{packageVersionWin32}-win32-llvm";
var artifactwin64 = $"../artifacts/artifact-{packageVersionWin64}-win64-llvm";
var libsWin32 = new []
{
......@@ -191,14 +196,12 @@ void PrepareForPackaging()
var directories = new []
{
Directory($"./{artifactwin32}/{nightlyVersion}/hrtfs"),
Directory($"./{artifactwin32}/{nightlyVersion}/locale"),
Directory($"./{artifactwin32}/{nightlyVersion}/lua"),
Directory($"./{artifactwin32}/{nightlyVersion}/plugins"),
Directory($"./{artifactwin32}/{nightlyVersion}/sdk/lib"),
Directory($"./{artifactwin32}/{nightlyVersion}/sdk/include"),
Directory($"./{artifactwin64}/{nightlyVersion}/hrtfs"),
Directory($"./{artifactwin64}/{nightlyVersion}/locale"),
Directory($"./{artifactwin64}/{nightlyVersion}/lua"),
Directory($"./{artifactwin64}/{nightlyVersion}/plugins"),
Directory($"./{artifactwin64}/{nightlyVersion}/sdk/lib"),
......@@ -210,14 +213,12 @@ void PrepareForPackaging()
CopyFiles(libsWin32, packageLocationX86);
CopyDirectory(Directory($"./{artifactwin32}/{nightlyVersion}/hrtfs"), Directory($"{packageLocationX86}/hrtfs"));
CopyDirectory(Directory($"./{artifactwin32}/{nightlyVersion}/locale"), Directory($"{packageLocationX86}/locale"));
CopyDirectory(Directory($"./{artifactwin32}/{nightlyVersion}/lua"), Directory($"{packageLocationX86}/lua"));
CopyDirectory(Directory($"./{artifactwin32}/{nightlyVersion}/plugins"), Directory($"{packageLocationX86}/plugins"));
CopyDirectory(Directory($"./{artifactwin32}/{nightlyVersion}/sdk/lib"), Directory($"{packageLocationX86}/sdk/lib"));
CopyDirectory(Directory($"./{artifactwin32}/{nightlyVersion}/sdk/include"), Directory($"{packageLocationX86}/sdk/include"));
CopyDirectory(Directory($"./{artifactwin64}/{nightlyVersion}/hrtfs"), Directory($"{packageLocationX64}/hrtfs"));
CopyDirectory(Directory($"./{artifactwin64}/{nightlyVersion}/locale"), Directory($"{packageLocationX64}/locale"));
CopyDirectory(Directory($"./{artifactwin64}/{nightlyVersion}/lua"), Directory($"{packageLocationX64}/lua"));
CopyDirectory(Directory($"./{artifactwin64}/{nightlyVersion}/plugins"), Directory($"{packageLocationX64}/plugins"));
CopyDirectory(Directory($"./{artifactwin64}/{nightlyVersion}/sdk/lib"), Directory($"{packageLocationX64}/sdk/lib"));
......
......@@ -3,7 +3,7 @@ steps:
displayName: 'Use .NET Core SDK'
inputs:
packageType: sdk
version: 5.0.101
version: 8.0.300
- task: DotNetCoreCLI@2
displayName: 'Install Cake'
......
......@@ -77,5 +77,5 @@ Of course, you can group items with `;` as with the exclusive strategy.
The default value of `VlcWindowsX64IncludeFiles` and `VlcWindowsX86IncludeFiles` is:
```
libvlc.dll;libvlccore.dll;hrtfs\%2A%2A;locale\%2A%2A;lua\%2A%2A;plugins\%2A%2A
libvlc.dll;libvlccore.dll;hrtfs\%2A%2A;lua\%2A%2A;plugins\%2A%2A
```
#! /bin/bash
#!/usr/bin/env bash
set -e
version=$1
version=${1:?"Usage: $0 <libvlc version>"}
downloadUrlx86="https://get.videolan.org/vlc/$version/win32/vlc-$version-win32.7z"
downloadUrlx64="https://get.videolan.org/vlc/$version/win64/vlc-$version-win64.7z"
packageName="VideoLAN.LibVLC.Windows"
packageNameGPL="VideoLAN.LibVLC.Windows.GPL"
echo "downloading x86 binaries..." $downloadUrlx86
x86PluginsLocation="build/win7-x86/native/plugins"
x64PluginsLocation="build/win7-x64/native/plugins"
# GPL plugin list
gpl_plugins=(
"access/libaccess_realrtsp_plugin.dll"
"access/libdvdnav_plugin.dll"
"access/libdvdread_plugin.dll"
"access/libvnc_plugin.dll"
"access/libdshow_plugin.dll"
"audio_filter/libmad_plugin.dll"
"audio_filter/libmono_plugin.dll"
"audio_filter/libsamplerate_plugin.dll"
"codec/liba52_plugin.dll"
"codec/libaribsub_plugin.dll"
"codec/libdca_plugin.dll"
"codec/libfaad_plugin.dll"
"codec/liblibmpeg2_plugin.dll"
"codec/libt140_plugin.dll"
"codec/libx264_plugin.dll"
"codec/libx265_plugin.dll"
"control"
"demux/libmpc_plugin.dll"
"demux/libreal_plugin.dll"
"demux/libsid_plugin.dll"
"gui"
"logger/libfile_logger_plugin.dll"
"misc/libaudioscrobbler_plugin.dll"
"misc/libexport_plugin.dll"
"misc/liblogger_plugin.dll"
"misc/libstats_plugin.dll"
"misc/libvod_rtsp_plugin.dll"
"packetizer/libpacketizer_a52_plugin.dll"
"services_discovery/libmediadirs_plugin.dll"
"services_discovery/libpodcast_plugin.dll"
"services_discovery/libsap_plugin.dll"
"stream_out/libstream_out_cycle_plugin.dll"
"stream_out/libstream_out_rtp_plugin.dll"
"video_filter/libpostproc_plugin.dll"
"video_filter/librotate_plugin.dll"
)
# echo "downloading x86 binaries..." $downloadUrlx86
curl -Lsfo x86.7z $downloadUrlx86
echo "downloading x64 binaries..." $downloadUrlx64
# echo "downloading x64 binaries..." $downloadUrlx64
curl -Lsfo x64.7z $downloadUrlx64
echo "downloading NuGet..."
curl -Lsfo nuget.exe https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
if [ ! -f "nuget.exe" ]; then
echo "downloading NuGet..."
curl -Lsfo nuget.exe https://dist.nuget.org/win-x86-commandline/latest/nuget.exe
fi
echo "unzipping vlc..."
7z x x86.7z -o./x86
7z x x64.7z -o./x64
echo "copying x86 dlls, libs and headers files..."
mkdir -p build/win7-x86/native/
cp -R ./x86/vlc-$version/{libvlc.dll,libvlccore.dll,hrtfs,locale,lua,plugins} build/win7-x86/native/
cp -R ./x86/vlc-$version/{libvlc.dll,libvlccore.dll,hrtfs,lua,plugins} build/win7-x86/native/
cp ./x86/vlc-$version/sdk/lib/{libvlc.lib,libvlccore.lib,vlc.lib,vlccore.lib} build/win7-x86/native/
cp -R ./x86/vlc-$version/sdk/include build/win7-x86/native/
echo "copying x64 dlls, libs and headers files..."
mkdir -p build/win7-x64/native/
cp -R ./x64/vlc-$version/{libvlc.dll,libvlccore.dll,hrtfs,locale,lua,plugins} build/win7-x64/native/
cp -R ./x64/vlc-$version/{libvlc.dll,libvlccore.dll,hrtfs,lua,plugins} build/win7-x64/native/
cp ./x64/vlc-$version/sdk/lib/{libvlc.lib,libvlccore.lib,vlc.lib,vlccore.lib} build/win7-x64/native/
cp -R ./x64/vlc-$version/sdk/include build/win7-x64/native/
echo "packaging GPL version..."
mono nuget.exe pack "$packageNameGPL".nuspec -Version "$version"
echo "removing GPL plugins from x86..."
# remove x86 GPL plugins
for file in "${gpl_plugins[@]}"; do
rm -rf "$x86PluginsLocation/$file"
done
echo "removing GPL plugins from x64..."
# remove x64 GPL plugins
for file in "${gpl_plugins[@]}"; do
rm -rf "$x64PluginsLocation/$file"
done
echo "packaging LGPL version..."
mono nuget.exe pack "$packageName".nuspec -Version "$version"
echo "cleaning up..."
rm ./x86.7z
rm -rf ./x86
rm ./x64.7z
rm -rf ./x64
echo "packaging"
mono nuget.exe pack "$packageName".nuspec -Version "$version"
echo "done"