Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Libass Integration #448

Open
wants to merge 51 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
c4105ee
Integrate wang-bin pre-built libs into ffmpeg build
lukasf Dec 27, 2024
16c2957
Update PkgConfigFake for libass
lukasf Dec 27, 2024
2e4e511
Update to ffmpeg 7.1
lukasf Dec 27, 2024
9b03263
Work on libass build scripts
lukasf Dec 27, 2024
b1b7946
Reference libass nuget packages
lukasf Dec 27, 2024
3d30367
Fix cpp sample package reference
lukasf Dec 28, 2024
a10d25d
Start supporting libass
ramtinak Dec 30, 2024
b14f406
Tiny fix
ramtinak Dec 30, 2024
a503bb4
work on libass integration
Dec 31, 2024
0af0c60
fix NULL result for ass_render_frame
ramtinak Jan 1, 2025
574f84e
Add OnCueExited OnCueEntered
ramtinak Jan 1, 2025
634877a
Add SetPosition to SubtitleProviderLibass
ramtinak Jan 1, 2025
9118711
Somehow works!
ramtinak Jan 1, 2025
6a96010
Merge
ramtinak Jan 1, 2025
e6c90cb
Up again
ramtinak Jan 1, 2025
c1894f6
bugfix
ramtinak Jan 1, 2025
2d2dcc9
Fix subtitle rendering and correct video size issues
lukasf Jan 2, 2025
78cffd6
improve memory performance of ConvertASSImageToSoftwareBitmap
Jan 2, 2025
0b273e2
Revert "improve memory performance of ConvertASSImageToSoftwareBitmap"
lukasf Jan 2, 2025
80ae278
Fix subtitle blending and improve performance
lukasf Jan 2, 2025
e744dbe
try fix fonts
Jan 2, 2025
485d656
Add hack fix for fonts directory
lukasf Jan 2, 2025
165381f
return GetDummyBitmap instead of throwing exception
ramtinak Jan 2, 2025
ecc3915
demo external rendering API
Jan 2, 2025
5a00050
A very inefficient demo of sub rendering
Jan 2, 2025
51bd51e
Tiny fix
ramtinak Jan 3, 2025
0dbb31f
Update Xaml
ramtinak Jan 3, 2025
0994926
support stream changing in UI
ramtinak Jan 3, 2025
a6ba012
Fix embedded fonts code if no fonts are available
lukasf Jan 3, 2025
965837a
WIP: IDirect3DSurface API
Jan 8, 2025
99b083a
Make d3d rendering working and add some optimizations
lukasf Jan 9, 2025
b081089
use parallel_for for CPU blending
Jan 11, 2025
ecf656a
Reduce debug logging
lukasf Jan 12, 2025
695311b
Work on rendering in sample
lukasf Jan 12, 2025
c381582
Upload only actual content to GPU memory
lukasf Jan 13, 2025
c5ca6b5
cleanup
Jan 14, 2025
853b436
remove redundand size parameter from api
lukasf Jan 14, 2025
4e3c694
introduce SubtitleRenderResult
Jan 15, 2025
45ea93f
fix handling of empty frames
lukasf Jan 15, 2025
c7d6f79
fix null ref
Jan 15, 2025
685d1ee
Increase blend performance
lukasf Jan 22, 2025
a9d2f69
Tiny fix for adding external subtitles
ramtinak Jan 24, 2025
4f0d66f
WIP: DXGISwapChain example for C++ users (does not work)
Jan 24, 2025
57b1b6c
Improve CS sample and libass render
lukasf Jan 24, 2025
3aef0f5
Reduce flicker on resize CS sample
lukasf Jan 24, 2025
2675a11
win2D swap chain example
Jan 24, 2025
591a563
fix stats
Jan 24, 2025
dcf4298
make use of async rendering again, remove delay
Jan 25, 2025
2e8e940
fix swap chain creation in CPP sample
Jan 25, 2025
4f49059
Support high dpi in canvas swap chain sample
lukasf Jan 25, 2025
97ac191
Run canvas swap chain loop on bg task
lukasf Jan 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 56 additions & 9 deletions Build-FFmpeg.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ param(

[ValidateSet('x86', 'x64', 'ARM', 'ARM64')]
[string[]] $Platforms = ('x86', 'x64', 'ARM64'),

<#
Example values:
14.1
Expand All @@ -13,7 +13,14 @@ param(

Note. The PlatformToolset will be inferred from this value ('v141', 'v142'...)
#>
[version] $VcVersion = '14.3',
[version] $VcVersion = '14.4',

<#
Example values:
v141
v142
#>
[string] $PlatformToolset = 'v143',

[ValidateSet('UWP', 'Desktop')]
[string] $WindowsTarget = 'UWP',
Expand Down Expand Up @@ -117,10 +124,20 @@ function Build-Platform {

New-Item -ItemType Directory -Force $SolutionDir\Intermediate\FFmpeg$WindowsTarget\$Platform -OutVariable build | Out-Null
New-Item -ItemType Directory -Force $SolutionDir\Output\FFmpeg$WindowsTarget\$Platform -OutVariable target | Out-Null
New-Item -ItemType Directory -Force $SolutionDir\Output\FFmpeg$WindowsTarget\$Platform\bin | Out-Null

$env:LIB += ";$build\lib"
$env:INCLUDE += ";$build\include"
$env:Path += ";$SolutionDir\Libs\gas-preprocessor"
$env:INCLUDE += ";$build\include\harfbuzz"
$env:INCLUDE += ";$build\include\freetype2"
$env:Path += ";$SolutionDir\Libs\gas-preprocessor"

# Copy wang-bin
Write-Host Copying wang-bin pre-built binaries...
Get-ChildItem $WangBin\install\$Platform | Copy-Item -Destination $build\ -Force -Recurse
Copy-Item $build\bin\libass.dll $target\bin\
Copy-Item $build\lib\ass.lib $target\bin\
Copy-Item $WangBin\install\$Platform\include\ass $target\include\ -Force -Recurse

if (! $SkipBuildLibs)
{
Expand Down Expand Up @@ -457,10 +474,6 @@ if (!$vsLatestPath){

Write-Host "Visual Studio Installation folder: [$vsLatestPath]"

# 14.16.27023 => v141
$platformToolSet = "v$($VcVersion.Major)$("$($VcVersion.Minor)"[0])"
Write-Host "Platform Toolset: [$platformToolSet]"

# Export full current PATH from environment into MSYS2
$env:MSYS2_PATH_TYPE = 'inherit'

Expand All @@ -477,6 +490,40 @@ if ($NugetPackageVersion)
}
}

# Check for 7z.exe
$7z = @(cmd /c "where.exe 7z.exe 2>nul")[0]
if (-not $7z) {
$7z = "$Env:ProgramFiles\7-zip\7z.exe"
if (-not (Test-Path $7z)) {
Write-Error "7z.exe not found."
}
}

$IntDir = "${PSScriptRoot}\Intermediate\FFmpeg$WindowsTarget"
$WangBin = "$IntDir\wang-bin"
if (-not (Test-Path "$WangBin\install")) {

Write-Host
Write-Host Downloading wang-bin binaries...
Write-Host

$WangTmp = "$IntDir\wang-tmp"
New-Item -ItemType Directory -Force $WangTmp
New-Item -ItemType Directory -Force $WangBin
Get-ChildItem $WangTmp | Remove-Item -Force -Recurse
Get-ChildItem $WangBin | Remove-Item -Force -Recurse
if ($WindowsTarget = "UWP") {
$url = "https://nightly.link/wang-bin/devpkgs/workflows/build/main/devpkgs-vs2022-uwp-Release.zip"
} else {
$url = "https://nightly.link/wang-bin/devpkgs/workflows/build/main/devpkgs-vs2022-windows-desktop-Release.zip"
}
& curl.exe -L -o $WangTmp\temp.zip $url
& $7z x $WangTmp\temp.zip "-o$WangTmp" -y
$file = Get-ChildItem $WangTmp -Filter "*.7z"
& $7z x $file.FullName "-o$WangTmp" -y
Move-Item "$WangTmp\install" "$WangBin\install"
}

$start = Get-Date
$success = 1

Expand Down Expand Up @@ -506,7 +553,7 @@ if ($AllowParallelBuilds -and $Platforms.Count -gt 1)
{
$skip
}
$proc = Start-Process -PassThru powershell "-File .\Build-FFmpeg.ps1 -Platforms $platform -VcVersion $VcVersion -WindowsTarget $WindowsTarget -WindowsTargetPlatformVersion $WindowsTargetPlatformVersion -Configuration $Configuration -SharedOrStatic $SharedOrStatic -Gpl $Gpl -Encoders $Encoders -Devices $Devices -Programs $Programs -VSInstallerFolder ""$VSInstallerFolder"" -VsWhereCriteria ""$VsWhereCriteria"" -BashExe ""$BashExe"" $clear -FFmpegUrl $FFmpegUrl -FFmpegCommit $FFmpegCommit $skipPkgConfig $addparams"
$proc = Start-Process -PassThru powershell "-File .\Build-FFmpeg.ps1 -Platforms $platform -VcVersion $VcVersion -PlatformToolset $PlatformToolset -WindowsTarget $WindowsTarget -WindowsTargetPlatformVersion $WindowsTargetPlatformVersion -Configuration $Configuration -SharedOrStatic $SharedOrStatic -Gpl $Gpl -Encoders $Encoders -Devices $Devices -Programs $Programs -VSInstallerFolder ""$VSInstallerFolder"" -VsWhereCriteria ""$VsWhereCriteria"" -BashExe ""$BashExe"" $clear -FFmpegUrl $FFmpegUrl -FFmpegCommit $FFmpegCommit $skipPkgConfig $addparams"
$processes[$platform] = $proc

# only build PkgConfigFake once
Expand Down Expand Up @@ -550,7 +597,7 @@ else
-Configuration 'Release' `
-WindowsTargetPlatformVersion $WindowsTargetPlatformVersion `
-VcVersion $VcVersion `
-PlatformToolset $platformToolSet `
-PlatformToolset $PlatformToolSet `
-VsLatestPath $vsLatestPath `
-BashExe $BashExe `
-LogFileName $logFile `
Expand Down
17 changes: 9 additions & 8 deletions Build-FFmpegInteropX.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,15 @@ param(
14.16
14.16.27023
14.23.27820
#>
[version] $VcVersion = '14.4',

Note. The PlatformToolset will be inferred from this value ('v141', 'v142'...)
<#
Example values:
v141
v142
#>
[version] $VcVersion = '14.3',
[string] $PlatformToolset = 'v143',

<#
Example values:
Expand Down Expand Up @@ -124,10 +129,6 @@ $ErrorActionPreference = "Stop"

Write-Host "Visual Studio Installation folder: [$vsLatestPath]"

# 14.16.27023 => v141
$platformToolSet = "v$($VcVersion.Major)$("$($VcVersion.Minor)"[0])"
Write-Host "Platform Toolset: [$platformToolSet]"

# Export full current PATH from environment into MSYS2
$env:MSYS2_PATH_TYPE = 'inherit'

Expand Down Expand Up @@ -175,7 +176,7 @@ if ($AllowParallelBuilds -and $Platforms.Count -gt 1)
continue;
}

$proc = Start-Process -PassThru powershell "-File .\Build-FFmpegInteropX.ps1 -Platforms $platform -VcVersion $VcVersion -WindowsTarget $WindowsTarget -WindowsTargetPlatformVersion $WindowsTargetPlatformVersion -Configuration $Configuration -VSInstallerFolder ""$VSInstallerFolder"" -VsWhereCriteria ""$VsWhereCriteria"" -FFmpegInteropXUrl ""$FFmpegInteropXUrl"" -FFmpegInteropXBranch ""FFmpegInteropXBranch"" -FFmpegInteropXCommit ""$FFmpegInteropXCommit"" -LibraryVersionNumber $LibraryVersionNumber $addparams"
$proc = Start-Process -PassThru powershell "-File .\Build-FFmpegInteropX.ps1 -Platforms $platform -VcVersion $VcVersion -PlatformToolset $PlatformToolset -WindowsTarget $WindowsTarget -WindowsTargetPlatformVersion $WindowsTargetPlatformVersion -Configuration $Configuration -VSInstallerFolder ""$VSInstallerFolder"" -VsWhereCriteria ""$VsWhereCriteria"" -FFmpegInteropXUrl ""$FFmpegInteropXUrl"" -FFmpegInteropXBranch ""FFmpegInteropXBranch"" -FFmpegInteropXCommit ""$FFmpegInteropXCommit"" -LibraryVersionNumber $LibraryVersionNumber $addparams"
$processes[$platform] = $proc
}

Expand Down Expand Up @@ -214,7 +215,7 @@ else
Build-Platform `
-SolutionDir "${PSScriptRoot}\" `
-Platform $platform `
-PlatformToolset $platformToolSet `
-PlatformToolset $PlatformToolset `
-VsLatestPath $vsLatestPath `
-LibraryVersionNumber $LibraryVersionNumber
}
Expand Down
1 change: 1 addition & 0 deletions Build/FFmpegConfig.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ configureArgs="\
--enable-iconv \
--enable-libdav1d \
--enable-openssl \
--enable-libass \
--enable-hwaccels \
--enable-d3d11va \
--disable-dxva2 \
Expand Down
34 changes: 34 additions & 0 deletions FFmpegInteropX.sln
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FFmpegInteropX.DotNet", "So
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FFmpegInteropX.VideoEffects", "VideoEffects\FFmpegInteropX.VideoEffects.vcxproj", "{6C4BFF5E-7037-4EE8-9C9F-5381C35BA066}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AssSsaRenderElement", "Samples\AssSsaRenderElement\AssSsaRenderElement.vcxproj", "{CBED4D40-9319-4AA3-9616-80144E8083AC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug_Desktop|ARM = Debug_Desktop|ARM
Expand Down Expand Up @@ -262,6 +264,38 @@ Global
{6C4BFF5E-7037-4EE8-9C9F-5381C35BA066}.Release_UWP|x64.Build.0 = Release_UWP|x64
{6C4BFF5E-7037-4EE8-9C9F-5381C35BA066}.Release_UWP|x86.ActiveCfg = Release_UWP|Win32
{6C4BFF5E-7037-4EE8-9C9F-5381C35BA066}.Release_UWP|x86.Build.0 = Release_UWP|Win32
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_Desktop|ARM.ActiveCfg = Debug|ARM
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_Desktop|ARM.Build.0 = Debug|ARM
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_Desktop|ARM64.ActiveCfg = Debug|ARM64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_Desktop|ARM64.Build.0 = Debug|ARM64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_Desktop|x64.ActiveCfg = Debug|x64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_Desktop|x64.Build.0 = Debug|x64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_Desktop|x86.ActiveCfg = Debug|Win32
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_Desktop|x86.Build.0 = Debug|Win32
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_UWP|ARM.ActiveCfg = Debug|ARM
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_UWP|ARM.Build.0 = Debug|ARM
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_UWP|ARM64.ActiveCfg = Debug|ARM64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_UWP|ARM64.Build.0 = Debug|ARM64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_UWP|x64.ActiveCfg = Debug|x64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_UWP|x64.Build.0 = Debug|x64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_UWP|x86.ActiveCfg = Debug|Win32
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Debug_UWP|x86.Build.0 = Debug|Win32
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_Desktop|ARM.ActiveCfg = Release|ARM
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_Desktop|ARM.Build.0 = Release|ARM
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_Desktop|ARM64.ActiveCfg = Release|ARM64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_Desktop|ARM64.Build.0 = Release|ARM64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_Desktop|x64.ActiveCfg = Release|x64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_Desktop|x64.Build.0 = Release|x64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_Desktop|x86.ActiveCfg = Release|Win32
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_Desktop|x86.Build.0 = Release|Win32
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_UWP|ARM.ActiveCfg = Release|ARM
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_UWP|ARM.Build.0 = Release|ARM
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_UWP|ARM64.ActiveCfg = Release|ARM64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_UWP|ARM64.Build.0 = Release|ARM64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_UWP|x64.ActiveCfg = Release|x64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_UWP|x64.Build.0 = Release|x64
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_UWP|x86.ActiveCfg = Release|Win32
{CBED4D40-9319-4AA3-9616-80144E8083AC}.Release_UWP|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
3 changes: 3 additions & 0 deletions Samples/AssSsaRenderElement/AssSsaRenderElement.def
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
EXPORTS
DllCanUnloadNow = WINRT_CanUnloadNow PRIVATE
DllGetActivationFactory = WINRT_GetActivationFactory PRIVATE
156 changes: 156 additions & 0 deletions Samples/AssSsaRenderElement/AssSsaRenderElement.vcxproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\..\packages\Microsoft.Windows.CppWinRT.2.0.220531.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.220531.1\build\native\Microsoft.Windows.CppWinRT.props')" />
<PropertyGroup Label="Globals">
<CppWinRTOptimized>true</CppWinRTOptimized>
<CppWinRTRootNamespaceAutoMerge>true</CppWinRTRootNamespaceAutoMerge>
<CppWinRTGenerateWindowsMetadata>true</CppWinRTGenerateWindowsMetadata>
<MinimalCoreWin>true</MinimalCoreWin>
<ProjectGuid>{cbed4d40-9319-4aa3-9616-80144e8083ac}</ProjectGuid>
<ProjectName>AssSsaRenderElement</ProjectName>
<RootNamespace>AssSsaRenderElement</RootNamespace>
<DefaultLanguage>en-US</DefaultLanguage>
<MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
<AppContainerApplication>true</AppContainerApplication>
<ApplicationType>Windows Store</ApplicationType>
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>
<WindowsTargetPlatformVersion Condition=" '$(WindowsTargetPlatformVersion)' == '' ">10.0.26100.0</WindowsTargetPlatformVersion>
<WindowsTargetPlatformMinVersion>10.0.17134.0</WindowsTargetPlatformMinVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<PlatformToolset>v143</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '16.0'">v142</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '15.0'">v141</PlatformToolset>
<PlatformToolset Condition="'$(VisualStudioVersion)' == '14.0'">v140</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<GenerateManifest>false</GenerateManifest>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<UseDebugLibraries>true</UseDebugLibraries>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="PropertySheet.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup>
<ClCompile>
<PrecompiledHeader>Use</PrecompiledHeader>
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
<PrecompiledHeaderOutputFile>$(IntDir)pch.pch</PrecompiledHeaderOutputFile>
<WarningLevel>Level4</WarningLevel>
<AdditionalOptions>%(AdditionalOptions) /bigobj</AdditionalOptions>
<PreprocessorDefinitions>_WINRT_DLL;WIN32_LEAN_AND_MEAN;WINRT_LEAN_AND_MEAN;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalUsingDirectories>$(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories)</AdditionalUsingDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateWindowsMetadata>false</GenerateWindowsMetadata>
<ModuleDefinitionFile>AssSsaRenderElement.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
<ClCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
<ClCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="AssSsaRenderer.h" />
<ClInclude Include="pch.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="AssSsaRenderer.cpp" />
<ClCompile Include="pch.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
</ItemGroup>
<ItemGroup>
<None Include="AssSsaRenderElement.def" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<None Include="PropertySheet.props" />
<Text Include="readme.txt">
<DeploymentContent>false</DeploymentContent>
</Text>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Source\FFmpegInteropX.vcxproj">
<Project>{9cfa3b3e-b7af-4629-84e2-c962c5b046b1}</Project>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<Midl Include="Source.idl" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\..\packages\Microsoft.Windows.CppWinRT.2.0.220531.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.220531.1\build\native\Microsoft.Windows.CppWinRT.targets')" />
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.220531.1\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Windows.CppWinRT.2.0.220531.1\build\native\Microsoft.Windows.CppWinRT.props'))" />
<Error Condition="!Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.220531.1\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.Windows.CppWinRT.2.0.220531.1\build\native\Microsoft.Windows.CppWinRT.targets'))" />
</Target>
</Project>
Loading