VisualC-WinRT/SDL2-WinRT.targets
author Ryan C. Gordon <icculus@icculus.org>
Tue, 15 May 2018 01:04:11 -0400
changeset 11987 0c284754e25b
parent 10911 1863707d9df8
permissions -rw-r--r--
audio: converting int32 to/from float shouldn't use doubles.

The concern is that a massive int sample, like 0x7FFFFFFF, won't fit in a
float32, which doesn't have enough bits to hold a whole number this large,
just to divide it to get a value between 0 and 1.
Previously we would convert to double, to get more bits, do the division, and
cast back to a float, but this is expensive.

Casting to double is more accurate, but it's 2x to 3x slower. Shifting out
the least significant byte of an int32, so it'll definitely fit in a float,
and dividing by 0x7FFFFF is still accurate to about 5 decimal places, and the
difference doesn't appear to be perceptable.
dludwig@9940
     1
<?xml version="1.0" encoding="utf-8"?>
dludwig@9940
     2
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
dludwig@9940
     3
dludwig@9940
     4
  <PropertyGroup>
dludwig@9940
     5
    <LibSDL2-DeviceType Condition="'$(TargetPlatformIdentifier)' == 'Windows' and '$(TargetPlatformVersion)' == '8.1'">WinRT81</LibSDL2-DeviceType>
dludwig@9940
     6
    <LibSDL2-DeviceType Condition="'$(TargetPlatformIdentifier)' == 'Windows Phone' and '$(TargetPlatformVersion)' == '8.0'">WinPhone80</LibSDL2-DeviceType>
dludwig@9940
     7
    <LibSDL2-DeviceType Condition="'$(TargetPlatformIdentifier)' == 'WindowsPhoneApp' and '$(TargetPlatformVersion)' == '8.1'">WinPhone81</LibSDL2-DeviceType>
dludwig@9940
     8
    <LibSDL2-DeviceType Condition="'$(TargetPlatformIdentifier)' == 'UAP'">UWP</LibSDL2-DeviceType>
dludwig@9940
     9
dludwig@9940
    10
  	<LibSDL2-BinPath>$(MSBuildThisFileDirectory)..\..\bin\$(LibSDL2-DeviceType)\$(Platform)</LibSDL2-BinPath>
dludwig@9940
    11
  </PropertyGroup>
dludwig@9940
    12
dludwig@9940
    13
  <Target Name="LibSDL2-DeviceType-Check" BeforeTargets="ResolveAssemblyReferences">
dludwig@9940
    14
      <Error Condition="'$(LibSDL2-DeviceType)' == ''" Text="Unable to determine which version of Windows is being built-for" />
dludwig@9940
    15
  </Target>
dludwig@9940
    16
dludwig@9940
    17
  <ItemDefinitionGroup>
dludwig@9940
    18
    <Link>
dludwig@9940
    19
      <AdditionalLibraryDirectories>$(LibSDL2-BinPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
dludwig@9940
    20
      <AdditionalDependencies>SDL2.lib;%(AdditionalDependencies)</AdditionalDependencies>
dludwig@9940
    21
    </Link>
dludwig@9940
    22
  </ItemDefinitionGroup>
dludwig@9940
    23
dludwig@9940
    24
  <ItemDefinitionGroup>
dludwig@9940
    25
    <ClCompile>
dludwig@9940
    26
      <AdditionalIncludeDirectories>$(MSBuildThisFileDirectory)..\..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
dludwig@9940
    27
    </ClCompile>
dludwig@9940
    28
  </ItemDefinitionGroup>
dludwig@9940
    29
dludwig@9940
    30
  <ItemGroup Label="LibSDL2">
dludwig@9940
    31
    <PackagingOutputs Include="$(LibSDL2-BinPath)\SDL2.dll">
dludwig@9940
    32
        <OutputGroup>LibSDL2Binaries</OutputGroup>
dludwig@9940
    33
        <ProjectName>$(ProjectName)</ProjectName>
dludwig@9940
    34
        <TargetPath>%(Filename)%(Extension)</TargetPath>
dludwig@9940
    35
    </PackagingOutputs>
dludwig@9940
    36
  </ItemGroup>
dludwig@9940
    37
dludwig@9940
    38
</Project>