From: <sag...@us...> - 2014-10-19 20:48:08
|
Revision: 4448 http://sourceforge.net/p/modplug/code/4448 Author: saga-games Date: 2014-10-19 20:47:50 +0000 (Sun, 19 Oct 2014) Log Message: ----------- [New] Sample tab: Support resampling to any arbitrary sampling rate using r8brain-free. [New] Sample tab: As upsampling no longer automatically converts the sample to 16-bit, 16-bit conversion is now a separate option (same shortcut as 8-bit conversion) [Mod] OpenMPT: Version is now 1.24.00.11 Modified Paths: -------------- trunk/OpenMPT/build/premake4.lua trunk/OpenMPT/common/version.cpp trunk/OpenMPT/common/versionNumber.h trunk/OpenMPT/installer/packageTemplate/readme.txt trunk/OpenMPT/mptrack/CommandSet.cpp trunk/OpenMPT/mptrack/Ctrl_smp.cpp trunk/OpenMPT/mptrack/Ctrl_smp.h trunk/OpenMPT/mptrack/MPTRACK_08.sln trunk/OpenMPT/mptrack/MPTRACK_10.sln trunk/OpenMPT/mptrack/Mainfrm.h trunk/OpenMPT/mptrack/SampleEditorDialogs.cpp trunk/OpenMPT/mptrack/SampleEditorDialogs.h trunk/OpenMPT/mptrack/View_smp.cpp trunk/OpenMPT/mptrack/View_smp.h trunk/OpenMPT/mptrack/mptrack.rc trunk/OpenMPT/mptrack/mptrack_08.vcproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj trunk/OpenMPT/mptrack/resource.h trunk/OpenMPT/packageTemplate/readme.txt trunk/OpenMPT/soundlib/SampleFormatConverters.h Added Paths: ----------- trunk/OpenMPT/build/gen/r8brain.vcproj trunk/OpenMPT/build/gen/r8brain.vcxproj trunk/OpenMPT/build/gen/r8brain.vcxproj.filters trunk/OpenMPT/include/r8brain/ trunk/OpenMPT/include/r8brain/CDSPBlockConvolver.h trunk/OpenMPT/include/r8brain/CDSPFIRFilter.h trunk/OpenMPT/include/r8brain/CDSPFracInterpolator.h trunk/OpenMPT/include/r8brain/CDSPProcessor.h trunk/OpenMPT/include/r8brain/CDSPRealFFT.h trunk/OpenMPT/include/r8brain/CDSPResampler.h trunk/OpenMPT/include/r8brain/CDSPSincFilterGen.h trunk/OpenMPT/include/r8brain/OpenMPT.txt trunk/OpenMPT/include/r8brain/fft4g.h trunk/OpenMPT/include/r8brain/other/ trunk/OpenMPT/include/r8brain/other/License.txt trunk/OpenMPT/include/r8brain/other/calcCorrTable.cpp trunk/OpenMPT/include/r8brain/other/calcErrorTable.cpp trunk/OpenMPT/include/r8brain/other/r8bdoxy.txt trunk/OpenMPT/include/r8brain/r8bbase.cpp trunk/OpenMPT/include/r8brain/r8bbase.h trunk/OpenMPT/include/r8brain/r8bconf.h trunk/OpenMPT/include/r8brain/r8butil.h trunk/OpenMPT/include/r8brain.premake4.lua Added: trunk/OpenMPT/build/gen/r8brain.vcproj =================================================================== --- trunk/OpenMPT/build/gen/r8brain.vcproj (rev 0) +++ trunk/OpenMPT/build/gen/r8brain.vcproj 2014-10-19 20:47:50 UTC (rev 4448) @@ -0,0 +1,549 @@ +<?xml version="1.0" encoding="Windows-1252"?> +<VisualStudioProject + ProjectType="Visual C++" + Version="9.00" + Name="r8brain" + ProjectGUID="{BC116B29-9958-4389-B294-7529BB7C7D37}" + RootNamespace="r8brain" + Keyword="Win32Proj" + > + <Platforms> + <Platform + Name="Win32" + /> + <Platform + Name="x64" + /> + </Platforms> + <ToolFiles> + </ToolFiles> + <Configurations> + <Configuration + Name="Debug|Win32" + OutputDirectory="..\lib\x32\Debug" + IntermediateDirectory="..\obj\r8brain\x32\Debug" + ConfigurationType="4" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\..\include\r8brain" + PreprocessorDefinitions="DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="1" + EnableFunctionLevelLinking="true" + UsePrecompiledHeader="0" + WarningLevel="3" + ProgramDataBaseFileName="$(OutDir)\r8brain.pdb" + DebugInformationFormat="4" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + AdditionalIncludeDirectories="..\..\include\r8brain" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="$(OutDir)\r8brain.lib" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Debug|x64" + OutputDirectory="..\lib\x64\Debug" + IntermediateDirectory="..\obj\r8brain\x64\Debug" + ConfigurationType="4" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + Optimization="0" + AdditionalIncludeDirectories="..\..\include\r8brain" + PreprocessorDefinitions="DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + MinimalRebuild="true" + BasicRuntimeChecks="3" + RuntimeLibrary="1" + EnableFunctionLevelLinking="true" + UsePrecompiledHeader="0" + WarningLevel="3" + ProgramDataBaseFileName="$(OutDir)\r8brain.pdb" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + AdditionalIncludeDirectories="..\..\include\r8brain" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="$(OutDir)\r8brain.lib" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|Win32" + OutputDirectory="..\lib\x32\Release" + IntermediateDirectory="..\obj\r8brain\x32\Release" + ConfigurationType="4" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/MP" + Optimization="3" + AdditionalIncludeDirectories="..\..\include\r8brain" + PreprocessorDefinitions="NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + StringPooling="true" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" + FloatingPointModel="2" + UsePrecompiledHeader="0" + WarningLevel="3" + ProgramDataBaseFileName="$(OutDir)\r8brain.pdb" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + AdditionalIncludeDirectories="..\..\include\r8brain" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="$(OutDir)\r8brain.lib" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="Release|x64" + OutputDirectory="..\lib\x64\Release" + IntermediateDirectory="..\obj\r8brain\x64\Release" + ConfigurationType="4" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/MP" + Optimization="3" + AdditionalIncludeDirectories="..\..\include\r8brain" + PreprocessorDefinitions="NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + StringPooling="true" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" + FloatingPointModel="2" + UsePrecompiledHeader="0" + WarningLevel="3" + ProgramDataBaseFileName="$(OutDir)\r8brain.pdb" + DebugInformationFormat="3" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + AdditionalIncludeDirectories="..\..\include\r8brain" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="$(OutDir)\r8brain.lib" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="ReleaseNoLTCG|Win32" + OutputDirectory="..\lib\x32\ReleaseNoLTCG" + IntermediateDirectory="..\obj\r8brain\x32\ReleaseNoLTCG" + ConfigurationType="4" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GL- /MP" + Optimization="3" + AdditionalIncludeDirectories="..\..\include\r8brain" + PreprocessorDefinitions="NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + StringPooling="true" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" + FloatingPointModel="2" + UsePrecompiledHeader="0" + WarningLevel="3" + ProgramDataBaseFileName="$(OutDir)\r8brain.pdb" + DebugInformationFormat="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + AdditionalIncludeDirectories="..\..\include\r8brain" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="$(OutDir)\r8brain.lib" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + <Configuration + Name="ReleaseNoLTCG|x64" + OutputDirectory="..\lib\x64\ReleaseNoLTCG" + IntermediateDirectory="..\obj\r8brain\x64\ReleaseNoLTCG" + ConfigurationType="4" + CharacterSet="2" + > + <Tool + Name="VCPreBuildEventTool" + /> + <Tool + Name="VCCustomBuildTool" + /> + <Tool + Name="VCXMLDataGeneratorTool" + /> + <Tool + Name="VCWebServiceProxyGeneratorTool" + /> + <Tool + Name="VCMIDLTool" + TargetEnvironment="3" + /> + <Tool + Name="VCCLCompilerTool" + AdditionalOptions="/GL- /MP" + Optimization="3" + AdditionalIncludeDirectories="..\..\include\r8brain" + PreprocessorDefinitions="NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + StringPooling="true" + RuntimeLibrary="0" + EnableFunctionLevelLinking="true" + FloatingPointModel="2" + UsePrecompiledHeader="0" + WarningLevel="3" + ProgramDataBaseFileName="$(OutDir)\r8brain.pdb" + DebugInformationFormat="0" + /> + <Tool + Name="VCManagedResourceCompilerTool" + /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS" + AdditionalIncludeDirectories="..\..\include\r8brain" + /> + <Tool + Name="VCPreLinkEventTool" + /> + <Tool + Name="VCLibrarianTool" + OutputFile="$(OutDir)\r8brain.lib" + /> + <Tool + Name="VCALinkTool" + /> + <Tool + Name="VCManifestTool" + /> + <Tool + Name="VCXDCMakeTool" + /> + <Tool + Name="VCBscMakeTool" + /> + <Tool + Name="VCFxCopTool" + /> + <Tool + Name="VCAppVerifierTool" + /> + <Tool + Name="VCWebDeploymentTool" + /> + <Tool + Name="VCPostBuildEventTool" + /> + </Configuration> + </Configurations> + <References> + </References> + <Files> + <Filter + Name="include" + Filter="" + > + <Filter + Name="r8brain" + Filter="" + > + <File + RelativePath="..\..\include\r8brain\r8bbase.cpp" + > + </File> + <File + RelativePath="..\..\include\r8brain\CDSPBlockConvolver.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\CDSPFIRFilter.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\CDSPFracInterpolator.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\CDSPProcessor.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\CDSPRealFFT.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\CDSPResampler.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\CDSPSincFilterGen.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\fft4g.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\r8bbase.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\r8bconf.h" + > + </File> + <File + RelativePath="..\..\include\r8brain\r8butil.h" + > + </File> + </Filter> + </Filter> + </Files> + <Globals> + </Globals> +</VisualStudioProject> Property changes on: trunk/OpenMPT/build/gen/r8brain.vcproj ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/x-ms-vcproj \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Added: trunk/OpenMPT/build/gen/r8brain.vcxproj =================================================================== --- trunk/OpenMPT/build/gen/r8brain.vcxproj (rev 0) +++ trunk/OpenMPT/build/gen/r8brain.vcxproj 2014-10-19 20:47:50 UTC (rev 4448) @@ -0,0 +1,302 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <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|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="ReleaseNoLTCG|Win32"> + <Configuration>ReleaseNoLTCG</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="ReleaseNoLTCG|x64"> + <Configuration>ReleaseNoLTCG</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{BC116B29-9958-4389-B294-7529BB7C7D37}</ProjectGuid> + <RootNamespace>r8brain</RootNamespace> + <Keyword>Win32Proj</Keyword> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <CharacterSet>MultiByte</CharacterSet> + <UseDebugLibraries>true</UseDebugLibraries> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <CharacterSet>MultiByte</CharacterSet> + <UseDebugLibraries>true</UseDebugLibraries> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <CharacterSet>MultiByte</CharacterSet> + <WholeProgramOptimization>true</WholeProgramOptimization> + <UseDebugLibraries>false</UseDebugLibraries> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <CharacterSet>MultiByte</CharacterSet> + <WholeProgramOptimization>true</WholeProgramOptimization> + <UseDebugLibraries>false</UseDebugLibraries> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|Win32'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <CharacterSet>MultiByte</CharacterSet> + <WholeProgramOptimization>true</WholeProgramOptimization> + <UseDebugLibraries>false</UseDebugLibraries> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|x64'" Label="Configuration"> + <ConfigurationType>StaticLibrary</ConfigurationType> + <CharacterSet>MultiByte</CharacterSet> + <WholeProgramOptimization>true</WholeProgramOptimization> + <UseDebugLibraries>false</UseDebugLibraries> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|Win32'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|x64'" Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup> + <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\lib\x32\Debug\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\obj\r8brain\x32\Debug\</IntDir> + <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">r8brain</TargetName> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\lib\x64\Debug\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">..\obj\r8brain\x64\Debug\</IntDir> + <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">r8brain</TargetName> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\lib\x32\Release\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\obj\r8brain\x32\Release\</IntDir> + <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">r8brain</TargetName> + <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\lib\x64\Release\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">..\obj\r8brain\x64\Release\</IntDir> + <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">r8brain</TargetName> + <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|Win32'">..\lib\x32\ReleaseNoLTCG\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|Win32'">..\obj\r8brain\x32\ReleaseNoLTCG\</IntDir> + <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|Win32'">r8brain</TargetName> + <OutDir Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|x64'">..\lib\x64\ReleaseNoLTCG\</OutDir> + <IntDir Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|x64'">..\obj\r8brain\x64\ReleaseNoLTCG\</IntDir> + <TargetName Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|x64'">r8brain</TargetName> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>true</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader></PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>EditAndContinue</DebugInformationFormat> + </ClCompile> + <ResourceCompile> + <PreprocessorDefinitions>DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ResourceCompile> + <Lib> + <OutputFile>$(OutDir)r8brain.lib</OutputFile> + </Lib> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDataBaseFileName>$(OutDir)r8brain.pdb</ProgramDataBaseFileName> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> + <ClCompile> + <Optimization>Disabled</Optimization> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>true</MinimalRebuild> + <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> + <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader></PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <DebugInformationFormat>OldStyle</DebugInformationFormat> + </ClCompile> + <ResourceCompile> + <PreprocessorDefinitions>DEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ResourceCompile> + <Lib> + <OutputFile>$(OutDir)r8brain.lib</OutputFile> + </Lib> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <ProgramDataBaseFileName>$(OutDir)r8brain.pdb</ProgramDataBaseFileName> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> + <Optimization>Full</Optimization> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>false</MinimalRebuild> + <StringPooling>true</StringPooling> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader></PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <FloatingPointModel>Fast</FloatingPointModel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + </ClCompile> + <ResourceCompile> + <PreprocessorDefinitions>NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ResourceCompile> + <Lib> + <OutputFile>$(OutDir)r8brain.lib</OutputFile> + </Lib> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <ProgramDataBaseFileName>$(OutDir)r8brain.pdb</ProgramDataBaseFileName> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> + <ClCompile> + <AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions> + <Optimization>Full</Optimization> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>false</MinimalRebuild> + <StringPooling>true</StringPooling> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader></PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <FloatingPointModel>Fast</FloatingPointModel> + <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> + </ClCompile> + <ResourceCompile> + <PreprocessorDefinitions>NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ResourceCompile> + <Lib> + <OutputFile>$(OutDir)r8brain.lib</OutputFile> + </Lib> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <ProgramDataBaseFileName>$(OutDir)r8brain.pdb</ProgramDataBaseFileName> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|Win32'"> + <ClCompile> + <AdditionalOptions>/GL- /MP %(AdditionalOptions)</AdditionalOptions> + <Optimization>Full</Optimization> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>false</MinimalRebuild> + <StringPooling>true</StringPooling> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader></PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <FloatingPointModel>Fast</FloatingPointModel> + <DebugInformationFormat></DebugInformationFormat> + </ClCompile> + <ResourceCompile> + <PreprocessorDefinitions>NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ResourceCompile> + <Lib> + <OutputFile>$(OutDir)r8brain.lib</OutputFile> + </Lib> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseNoLTCG|x64'"> + <ClCompile> + <AdditionalOptions>/GL- /MP %(AdditionalOptions)</AdditionalOptions> + <Optimization>Full</Optimization> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <PreprocessorDefinitions>NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <MinimalRebuild>false</MinimalRebuild> + <StringPooling>true</StringPooling> + <RuntimeLibrary>MultiThreaded</RuntimeLibrary> + <FunctionLevelLinking>true</FunctionLevelLinking> + <PrecompiledHeader></PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <FloatingPointModel>Fast</FloatingPointModel> + <DebugInformationFormat></DebugInformationFormat> + </ClCompile> + <ResourceCompile> + <PreprocessorDefinitions>NDEBUG;WIN32;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>..\..\include\r8brain;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ResourceCompile> + <Lib> + <OutputFile>$(OutDir)r8brain.lib</OutputFile> + </Lib> + <Link> + <SubSystem>Windows</SubSystem> + <GenerateDebugInformation>false</GenerateDebugInformation> + <OptimizeReferences>true</OptimizeReferences> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="..\..\include\r8brain\CDSPBlockConvolver.h" /> + <ClInclude Include="..\..\include\r8brain\CDSPFIRFilter.h" /> + <ClInclude Include="..\..\include\r8brain\CDSPFracInterpolator.h" /> + <ClInclude Include="..\..\include\r8brain\CDSPProcessor.h" /> + <ClInclude Include="..\..\include\r8brain\CDSPRealFFT.h" /> + <ClInclude Include="..\..\include\r8brain\CDSPResampler.h" /> + <ClInclude Include="..\..\include\r8brain\CDSPSincFilterGen.h" /> + <ClInclude Include="..\..\include\r8brain\fft4g.h" /> + <ClInclude Include="..\..\include\r8brain\r8bbase.h" /> + <ClInclude Include="..\..\include\r8brain\r8bconf.h" /> + <ClInclude Include="..\..\include\r8brain\r8butil.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\include\r8brain\r8bbase.cpp"> + </ClCompile> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> Property changes on: trunk/OpenMPT/build/gen/r8brain.vcxproj ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/x-ms-vcproj \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Added: trunk/OpenMPT/build/gen/r8brain.vcxproj.filters =================================================================== --- trunk/OpenMPT/build/gen/r8brain.vcxproj.filters (rev 0) +++ trunk/OpenMPT/build/gen/r8brain.vcxproj.filters 2014-10-19 20:47:50 UTC (rev 4448) @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup> + <Filter Include="include"> + <UniqueIdentifier>{50A0CB9A-E943-1041-8162-5106A9BC81BE}</UniqueIdentifier> + </Filter> + <Filter Include="include\r8brain"> + <UniqueIdentifier>{32431A0D-396E-9643-AE4D-180AA97B39DB}</UniqueIdentifier> + </Filter> + </ItemGroup> + <ItemGroup> + <ClInclude Include="..\..\include\r8brain\CDSPBlockConvolver.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\CDSPFIRFilter.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\CDSPFracInterpolator.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\CDSPProcessor.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\CDSPRealFFT.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\CDSPResampler.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\CDSPSincFilterGen.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\fft4g.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\r8bbase.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\r8bconf.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + <ClInclude Include="..\..\include\r8brain\r8butil.h"> + <Filter>include\r8brain</Filter> + </ClInclude> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\..\include\r8brain\r8bbase.cpp"> + <Filter>include\r8brain</Filter> + </ClCompile> + </ItemGroup> +</Project> Property changes on: trunk/OpenMPT/build/gen/r8brain.vcxproj.filters ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/x-ms-vcproj \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +CRLF \ No newline at end of property Modified: trunk/OpenMPT/build/premake4.lua =================================================================== --- trunk/OpenMPT/build/premake4.lua 2014-10-19 19:26:33 UTC (rev 4447) +++ trunk/OpenMPT/build/premake4.lua 2014-10-19 20:47:50 UTC (rev 4448) @@ -9,6 +9,7 @@ dofile "../include/minizip.premake4.lua" dofile "../include/portaudio.premake4.lua" dofile "../include/portmidi.premake4.lua" + dofile "../include/r8brain.premake4.lua" dofile "../include/smbPitchShift.premake4.lua" dofile "../include/soundtouch.premake4.lua" dofile "../include/UnRAR.premake4.lua" Modified: trunk/OpenMPT/common/version.cpp =================================================================== --- trunk/OpenMPT/common/version.cpp 2014-10-19 19:26:33 UTC (rev 4447) +++ trunk/OpenMPT/common/version.cpp 2014-10-19 20:47:50 UTC (rev 4448) @@ -422,8 +422,8 @@ #ifdef MODPLUG_TRACKER "Stephan M. Bernsee for pitch shifting source code\n" "http://www.dspdimension.com/\n" -#endif -#ifdef MODPLUG_TRACKER + "Aleksey Vaneev of Voxengo for r8brain sample rate converter\n" + "https://code.google.com/p/r8brain-free-src/\n" "Olli Parviainen for SoundTouch Library (time stretching)\n" "http://www.surina.net/soundtouch/\n" #endif Modified: trunk/OpenMPT/common/versionNumber.h =================================================================== --- trunk/OpenMPT/common/versionNumber.h 2014-10-19 19:26:33 UTC (rev 4447) +++ trunk/OpenMPT/common/versionNumber.h 2014-10-19 20:47:50 UTC (rev 4448) @@ -19,7 +19,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 24 #define VER_MINOR 00 -#define VER_MINORMINOR 10 +#define VER_MINORMINOR 11 //Version string. For example "1.17.02.28" #define MPT_VERSION_STR VER_STRINGIZE(VER_MAJORMAJOR) "." VER_STRINGIZE(VER_MAJOR) "." VER_STRINGIZE(VER_MINOR) "." VER_STRINGIZE(VER_MINORMINOR) Index: trunk/OpenMPT/include/r8brain =================================================================== --- trunk/OpenMPT/include/r8brain 2014-10-19 19:26:33 UTC (rev 4447) +++ trunk/OpenMPT/include/r8brain 2014-10-19 20:47:50 UTC (rev 4448) Property changes on: trunk/OpenMPT/include/r8brain ___________________________________________________________________ Added: tsvn:logminsize ## -0,0 +1 ## +10 \ No newline at end of property Added: trunk/OpenMPT/include/r8brain/CDSPBlockConvolver.h =================================================================== --- trunk/OpenMPT/include/r8brain/CDSPBlockConvolver.h (rev 0) +++ trunk/OpenMPT/include/r8brain/CDSPBlockConvolver.h 2014-10-19 20:47:50 UTC (rev 4448) @@ -0,0 +1,635 @@ +//$ nocpp + +/** + * @file CDSPBlockConvolver.h + * + * @brief Single-block overlap-save convolution processor class. + * + * This file includes single-block overlap-save convolution processor class. + * + * r8brain-free-src Copyright (c) 2013-2014 Aleksey Vaneev + * See the "License.txt" file for license. + */ + +#ifndef R8B_CDSPBLOCKCONVOLVER_INCLUDED +#define R8B_CDSPBLOCKCONVOLVER_INCLUDED + +#include "CDSPFIRFilter.h" +#include "CDSPProcessor.h" + +namespace r8b { + +/** + * @brief Single-block overlap-save convolution processing class. + * + * Class that implements single-block overlap-save convolution processing. The + * length of a single FFT block used depends on the length of the filter + * kernel. + * + * The rationale behind "single-block" processing is that increasing the FFT + * block length by 2 is more efficient than performing convolution at the same + * FFT block length but using two blocks. + * + * This class also implements a built-in resampling by any whole-number + * factor, which simplifies the overall resampling objects topology. + */ + +class CDSPBlockConvolver : public CDSPProcessor +{ +public: + /** + * Constructor initializes internal variables and constants of *this + * object. + * + * @param aFilter Pre-calculated filter data. Reference to this object is + * inhertied by *this object, and the object will be released when *this + * object is destroyed. If upsampling is used, filter's gain should be + * equal to the upsampling factor. + * @param aUpFactor The upsampling factor, positive value. E.g. value of 2 + * means 2x upsampling should be performed over the input data. + * @param aDownFactor The downsampling factor, positive value. E.g. value + * of 2 means 2x downsampling should be performed over the output data. + * @param PrevLatency Latency, in samples (any value >=0), which was left + * in the output signal by a previous process. This value is usually + * non-zero if the minimum-phase filters are in use. This value is always + * zero if the linear-phase filters are in use. + * @param aDoConsumeLatency "True" if the output latency should be + * consumed. Does not apply to the fractional part of the latency (if such + * part is available). + */ + + CDSPBlockConvolver( CDSPFIRFilter& aFilter, const int aUpFactor, + const int aDownFactor, const double PrevLatency = 0.0, + const bool aDoConsumeLatency = true ) + : Filter( &aFilter ) + , UpFactor( aUpFactor ) + , DownFactor( aDownFactor ) + , DoConsumeLatency( aDoConsumeLatency ) + , BlockLen2( 2 << Filter -> getBlockLenBits() ) + { + R8BASSERT( UpFactor > 0 ); + R8BASSERT( DownFactor > 0 ); + R8BASSERT( PrevLatency >= 0.0 ); + + int fftinBits; + UpShift = getBitOccupancy( UpFactor ) - 1; + + if(( 1 << UpShift ) == UpFactor ) + { + fftinBits = Filter -> getBlockLenBits() + 1 - UpShift; + PrevInputLen = ( Filter -> getKernelLen() - 1 ) / UpFactor; + InputLen = BlockLen2 - PrevInputLen * UpFactor; + } + else + { + UpShift = -1; + fftinBits = Filter -> getBlockLenBits() + 1; + PrevInputLen = Filter -> getKernelLen() - 1; + InputLen = BlockLen2 - PrevInputLen; + } + + OutOffset = Filter -> getLatency(); + LatencyFrac = Filter -> getLatencyFrac() + PrevLatency * UpFactor; + Latency = (int) LatencyFrac; + LatencyFrac -= Latency; + LatencyFrac /= DownFactor; + + Latency += InputLen + OutOffset; + + int fftoutBits; + InputDelay = 0; + UpSkipInit = 0; + DownSkipInit = 0; + DownShift = getBitOccupancy( DownFactor ) - 1; + + if(( 1 << DownShift ) == DownFactor ) + { + fftoutBits = Filter -> getBlockLenBits() + 1 - DownShift; + + if( DownFactor > 1 ) + { + if( UpShift > 0 ) + { + // This case never happens in practice due to mutual + // exclusion of "power of 2" DownFactor and UpFactor + // values. + + R8BASSERT( UpShift == 0 ); + } + else + { + int Delay = Latency & ( DownFactor - 1 ); + + if( Delay > 0 ) + { + Delay = DownFactor - Delay; + Latency += Delay; + + if( Delay < UpFactor ) + { + UpSkipInit = Delay; + } + else + { + UpSkipInit = UpFactor - 1; + InputDelay = Delay - UpSkipInit; + } + } + + if( !DoConsumeLatency ) + { + Latency /= DownFactor; + } + } + } + } + else + { + fftoutBits = Filter -> getBlockLenBits() + 1; + DownShift = -1; + + if( !DoConsumeLatency && DownFactor > 1 ) + { + DownSkipInit = Latency % DownFactor; + Latency /= DownFactor; + } + } + + fftin = new CDSPRealFFTKeeper( fftinBits ); + + if( fftoutBits == fftinBits ) + { + fftout = fftin; + } + else + { + ffto2 = new CDSPRealFFTKeeper( fftoutBits ); + fftout = ffto2; + } + + WorkBlocks.alloc( BlockLen2 * 2 + PrevInputLen ); + CurInput = &WorkBlocks[ 0 ]; + CurOutput = &WorkBlocks[ BlockLen2 ]; + PrevInput = &WorkBlocks[ BlockLen2 * 2 ]; + + clear(); + + R8BCONSOLE( "CDSPBlockConvolver: flt_len=%i in_len=%i io=%i/%i " + "fft=%i/%i latency=%i\n", Filter -> getKernelLen(), InputLen, + UpFactor, DownFactor, (*fftin) -> getLen(), (*fftout) -> getLen(), + getLatency() ); + } + + virtual ~CDSPBlockConvolver() + { + Filter -> unref(); + } + + virtual int getLatency() const + { + return( DoConsumeLatency ? 0 : Latency ); + } + + virtual double getLatencyFrac() const + { + return( LatencyFrac ); + } + + virtual int getInLenBeforeOutStart( const int NextInLen ) const + { + return(( InputLen - InputDelay + NextInLen * DownFactor ) / + UpFactor ); + } + + virtual int getMaxOutLen( const int MaxInLen ) const + { + R8BASSERT( MaxInLen >= 0 ); + + return(( MaxInLen * UpFactor + InputDelay + DownFactor - 1 ) / + DownFactor ); + } + + virtual void clear() + { + memset( &PrevInput[ 0 ], 0, PrevInputLen * sizeof( double )); + + if( DoConsumeLatency ) + { + LatencyLeft = Latency; + } + else + { + LatencyLeft = 0; + + if( DownShift > 0 ) + { + memset( &CurOutput[ 0 ], 0, ( BlockLen2 >> DownShift ) * + sizeof( double )); + } + else + { + memset( &CurOutput[ BlockLen2 - OutOffset ], 0, OutOffset * + sizeof( double )); + + memset( &CurOutput[ 0 ], 0, ( InputLen - OutOffset ) * + sizeof( double )); + } + } + + memset( CurInput, 0, InputDelay * sizeof( double )); + + InDataLeft = InputLen - InputDelay; + UpSkip = UpSkipInit; + DownSkip = DownSkipInit; + } + + virtual int process( double* ip, int l0, double*& op0 ) + { + R8BASSERT( l0 >= 0 ); + R8BASSERT( UpFactor / DownFactor <= 1 || ip != op0 || l0 == 0 ); + + double* op = op0; + int l = l0 * UpFactor; + l0 = 0; + + while( l > 0 ) + { + const int Offs = InputLen - InDataLeft; + + if( l < InDataLeft ) + { + InDataLeft -= l; + + if( UpShift >= 0 ) + { + memcpy( &CurInput[ Offs >> UpShift ], ip, + ( l >> UpShift ) * sizeof( double )); + } + else + { + copyUpsample( ip, &CurInput[ Offs ], l ); + } + + copyToOutput( Offs - OutOffset, op, l, l0 ); + break; + } + + const int b = InDataLeft; + l -= b; + InDataLeft = InputLen; + int ilu; + + if( UpShift >= 0 ) + { + const int bu = b >> UpShift; + memcpy( &CurInput[ Offs >> UpShift ], ip, + bu * sizeof( double )); + + ip += bu; + ilu = InputLen >> UpShift; + } + else + { + copyUpsample( ip, &CurInput[ Offs ], b ); + ilu = InputLen; + } + + const int pil = PrevInputLen * sizeof( double ); + memcpy( &CurInput[ ilu ], PrevInput, pil ); + memcpy( PrevInput, &CurInput[ ilu - PrevInputLen ], pil ); + + (*fftin) -> forward( CurInput ); + + if( UpShift > 0 ) + { + mirrorInputSpectrum(); + } + + if( Filter -> isZeroPhase() ) + { + (*fftout) -> multiplyBlocksZ( Filter -> getKernelBlock(), + CurInput ); + } + else + { + (*fftout) -> multiplyBlocks( Filter -> getKernelBlock(), + CurInput ); + } + + if( DownShift > 0 ) + { + const int z = BlockLen2 >> DownShift; + CurInput[ 1 ] = Filter -> getKernelBlock()[ z ] * + CurInput[ z ]; + } + + (*fftout) -> inverse( CurInput ); + + copyToOutput( Offs - OutOffset, op, b, l0 ); + + double* const tmp = CurInput; + CurInput = CurOutput; + CurOutput = tmp; + } + + return( l0 ); + } + +private: + CDSPFIRFilter* Filter; ///< Filter in use. + ///< + CPtrKeeper< CDSPRealFFTKeeper* > fftin; ///< FFT object 1, used to produce + ///< the input spectrum (can embed the "power of 2" upsampling). + ///< + CPtrKeeper< CDSPRealFFTKeeper* > ffto2; ///< FFT object 2 (can be NULL). + ///< + CDSPRealFFTKeeper* fftout; ///< FFT object used to produce the output + ///< signal (can embed the "power of 2" downsampling), may point to + ///< either "fftin" or "ffto2". + ///< + int UpFactor; ///< Upsampling factor. + ///< + int DownFactor; ///< Downsampling factor. + ///< + bool DoConsumeLatency; ///< "True" if the output latency should be + ///< consumed. Does not apply to the fractional part of the latency + ///< (if such part is available). + ///< + int BlockLen2; ///< Equals block length * 2. + ///< + int OutOffset; ///< Output offset, depends on filter's introduced latency. + ///< + int PrevInputLen; ///< The length of previous input data saved, used for + ///< overlap. + ///< + int InputLen; ///< The number of input samples that should be accumulated + ///< before the input block is processed. + ///< + int Latency; ///< Processing latency, in samples. + ///< + double LatencyFrac; ///< Fractional latency, in samples, that is left in + ///< the output signal. + ///< + int UpShift; ///< "Power of 2" upsampling shift. Equals -1 if UpFactor is + ///< not a "power of 2" value. Equals 0 if UpFactor equals 1. + ///< + int DownShift; ///< "Power of 2" downsampling shift. Equals -1 if + ///< DownFactor is not a "power of 2". Equals 0 if DownFactor equals + ///< 1. + ///< + int InputDelay; ///< Additional input delay, in samples. Used to make the + ///< output latency divisible by DownShift. Used only if UpShift <= 0 + ///< and DownShift > 0. + ///< + CFixedBuffer< double > WorkBlocks; ///< Previous input data, input and + ///< output data blocks, overall capacity = BlockLen2 * 2 + + ///< PrevInputLen. Used in the flip-flop manner. + ///< + double* PrevInput; ///< Previous input data buffer, capacity = BlockLen. + ///< + double* CurInput; ///< Input data buffer, capacity = BlockLen2. + ///< + double* CurOutput; ///< Output data buffer, capacity = BlockLen2. + ///< + int InDataLeft; ///< Samples left before processing input and output FFT + ///< blocks. Initialized to InputLen on clear. + ///< + int LatencyLeft; ///< Latency in samples left to skip. + ///< + int UpSkip; ///< The current upsampling sample skip (value in the range + ///< 0 to UpFactor - 1). + ///< + int UpSkipInit; ///< The initial UpSkip value after clear(). + ///< + int DownSkip; ///< The current downsampling sample skip (value in the + ///< range 0 to DownFactor - 1). Not used if DownShift > 0. + ///< + int DownSkipInit; ///< The initial DownSkip value after clear(). + ///< + + /** + * Function copies samples from the input buffer to the output buffer + * while inserting zeros inbetween them to perform the whole-numbered + * upsampling. + * + * @param[in,out] ip0 Input buffer. Will be advanced on function's return. + * @param[out] op Output buffer. + * @param l0 The number of samples to fill in the output buffer, including + * both input samples and interpolation (zero) samples. + */ + + void copyUpsample( double*& ip0, double* op, int l0 ) + { + int b = min( UpSkip, l0 ); + + if( b > 0 ) + { + l0 -= b; + UpSkip -= b; + *op = 0.0; + op++; + b--; + + while( b > 0 ) + { + *op = 0.0; + op++; + b--; + } + } + + double* ip = ip0; + int l = l0 / UpFactor; + int lz = l0 - l * UpFactor; + + if( UpFactor == 3 ) + { + while( l > 0 ) + { + op[ 0 ] = *ip; + op[ 1 ] = 0.0; + op[ 2 ] = 0.0; + ip++; + op += UpFactor; + l--; + } + } + else + if( UpFactor == 5 ) + { + while( l > 0 ) + { + op[ 0 ] = *ip; + op[ 1 ] = 0.0; + op[ 2 ] = 0.0; + op[ 3 ] = 0.0; + op[ 4 ] = 0.0; + ip++; + op += UpFactor; + l--; + } + } + else + { + while( l > 0 ) + { + op[ 0 ] = *ip; + int j; + + for( j = 1; j < UpFactor; j++ ) + { + op[ j ] = 0.0; + } + + ip++; + op += UpFactor; + l--; + } + } + + if( lz > 0 ) + { + *op = *ip; + op++; + ip++; + UpSkip = UpFactor - lz; + + while( lz > 1 ) + { + *op = 0.0; + op++; + lz--; + } + } + + ip0 = ip; + } + + /** + * Function copies sample data from the CurOutput buffer to the specified + * output buffer and advances its position. If necessary, this function + * "consumes" latency and performs downsampling. + * + * @param Offs CurOutput buffer offset, can be negative. + * @param[out] op0 Output buffer pointer, will be advanced. + * @param b The number of output samples available, including those which + * are discarded during whole-number downsampling. + * @param l0 The overall output sample count, will be increased. + */ + + void copyToOutput( int Offs, double*& op0, int b, int& l0 ) + { + if( Offs < 0 ) + { + if( Offs + b <= 0 ) + { + Offs += BlockLen2; + } + else + { + copyToOutput( Offs + BlockLen2, op0, -Offs, l0 ); + b += Offs; + Offs = 0; + } + } + + if( LatencyLeft > 0 ) + { + if( LatencyLeft >= b ) + { + LatencyLeft -= b; + return; + } + + Offs += LatencyLeft; + b -= LatencyLeft; + LatencyLeft = 0; + } + + const int df = DownFactor; + + if( DownShift > 0 ) + { + int Skip = Offs & ( df - 1 ); + + if( Skip > 0 ) + { + Skip = df - Skip; + b -= Skip; + Offs += Skip; + } + + if( b > 0 ) + { + b = ( b + df - 1 ) >> DownShift; + memcpy( op0, &CurOutput[ Offs >> DownShift ], + b * sizeof( double )); + + op0 += b; + l0 += b; + } + } + else + { + if( df > 1 ) + { + const double* ip = &CurOutput[ Offs + DownSkip ]; + int l = ( b + df - 1 - DownSkip ) / df; + DownSkip += l * df - b; + + double* op = op0; + l0 += l; + op0 += l; + + while( l > 0 ) + { + *op = *ip; + op++; + ip += df; + l--; + } + } + else + { + memcpy( op0, &CurOutput[ Offs ], b * sizeof( double )); + op0 += b; + l0 += b; + } + } + } + + /** + * Function performs input spectrum mirroring which is used to perform a + * fast "power of 2" upsampling. Such mirroring is equivalent to insertion + * of zeros into the input signal. + */ + + void mirrorInputSpectrum() + { + const int bl1 = BlockLen2 >> UpShift; + const int bl2 = bl1 + bl1; + + int i; + + for( i = bl1 + 2; i < bl2; i += 2 ) + { + CurInput[ i ] = CurInput[ bl2 - i ]; + CurInput[ i + 1 ] = -CurInput[ bl2 - i + 1 ]; + } + + CurInput[ bl1 ] = CurInput[ 1 ]; + CurInput[ bl1 + 1 ] = 0.0; + CurInput[ 1 ] = CurInput[ 0 ]; + + for( i = 1; i < UpShift; i++ ) + { + const int z = bl1 << i; + memcpy( &CurInput[ z ], CurInput, z * sizeof( double )); + CurInput[ z + 1 ] = 0.0; + } + } +}; + +} // namespace r8b + +#endif // R8B_CDSPBLOCKCONVOLVER_INCLUDED Property changes on: trunk/OpenMPT/include/r8brain/CDSPBlockConvolver.h ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/x-chdr \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: trunk/OpenMPT/include/r8brain/CDSPFIRFilter.h =================================================================== --- trunk/OpenMPT/include/r8brain/CDSPFIRFilter.h (rev 0) +++ trunk/OpenMPT/include/r8brain/CDSPFIRFilter.h 2014-10-19 20:47:50 UTC (rev 4448) @@ -0,0 +1,708 @@ +//$ nocpp + +/** + * @file CDSPFIRFilter.h + * + * @brief FIR filter generator and filter cache classes. + * + * This file includes low-pass FIR filter generator and filter cache. + * + * r8brain-free-src Copyright (c) 2013-2014 Aleksey Vaneev + * See the "License.txt" file for license. + */ + +#ifndef R8B_CDSPFIRFILTER_INCLUDED +#define R8B_CDSPFIRFILTER_INCLUDED + +#include "CDSPSincFilterGen.h" +#include "CDSPRealFFT.h" + +namespace r8b { + +/** + * Enumeration of filter's phase responses. + */ + +enum EDSPFilterPhaseResponse +{ + fprLinearPhase = 0 ///< Linear-phase response. Features a linear-phase + ///< high-latency response, with the latency expressed as integer + ///< value. +// fprMinPhase ///< Minimum-phase response. Features a minimal latency + ///< response, but the response's phase is non-linear. The latency is + ///< usually expressed as non-integer value, and usually is small, but + ///< is never equal to zero. The minimum-phase filter is transformed + ///< from the linear-phase filter. The transformation has precision + ///< limits which may skew both the -3 dB point and attenuation of the + ///< filter being transformed: as it was measured, the skew happens + ///< purely at random, and in most cases it is within tolerable range. + ///< In a small (1%) random subset of cases the skew is bigger and + ///< cannot be predicted. +}; + +/** + * @brief Calculation and storage class for FIR filters. + * + * Class that implements calculation and storing of a FIR filter (currently + * contains low-pass filter calculation routine designed for sample rate + * conversion). Objects of this class cannot be created directly, but can be + * obtained via the CDSPFilterCache::getLPFilter() static function. + */ + +class CDSPFIRFilter : public R8B_BASECLASS +{ + R8BNOCTOR( CDSPFIRFilter ); + + friend class CDSPFIRFilterCache; + +public: + ~CDSPFIRFilter() + { + R8BASSERT( RefCount == 0 ); + + delete Next; + } + + /** + * @return The minimal allowed low-pass filter's transition band, in + * percent. + */ + + static double getLPMinTransBand() + { + return( 0.5 ); + } + + /** + * @return The maximal allowed low-pass filter's transition band, in + * percent. + */ + + static double getLPMaxTransBand() + { + return( 45.0 ); + } + + /** + * @return The minimal allowed low-pass filter's stop-band attenuation, in + * decibel. + */ + + static double getLPMinAtten() + { + return( 49.0 ); + } + + /** + * @return The maximal allowed low-pass filter's stop-band attenuation, in + * decibel. + */ + + static double getLPMaxAtten() + { + return( 218.0 ); + } + + /** + * @return "True" if kernel block of *this filter has zero-phase response. + */ + + bool isZeroPhase() const + { + return( IsZeroPhase ); + } + + /** + * @return Filter's latency, in samples (integer part). + */ + + int getLatency() const + { + return( Latency ); + } + + /** + * @return Filter's latency, in samples (fractional part). Always zero for + * linear-phase filters. + */ + + double getLatencyFrac() const + { + return( LatencyFrac ); + } + + /** + * @return Filter kernel length, in samples. Not to be confused with the + * block length. + */ + + int getKernelLen() const + { + return( KernelLen ); + } + + /** + * @return Filter's block length, espressed as Nth power of 2. The actual + * length is twice as large due to zero-padding. + */ + + int getBlockLenBits() const + { + return( BlockLenBits ); + } + + /** + * @return Filter's kernel block, in complex-numbered form obtained via + * the CDSPRealFFT::forward() function call, zero-padded, gain-adjusted + * with the CDSPRealFFT::getInvMulConst() * ReqGain constant, immediately + * suitable for convolution. Kernel block may have "zero-phase" response, + * depending on the isZeroPhase() function's result. + */ + + const double* getKernelBlock() const + { + return( KernelBlock ); + } + + /** + * This function should be called when the filter obtained via the + * filter cache is no longer needed. + */ + + void unref(); + +private: + double ReqNormFreq; ///< Required normalized frequency, 0 to 1 inclusive. + ///< + double ReqTransBand; ///< Required transition band in percent, as passed + ///< by the user. + ///< + double ReqAtten; ///< Required stop-band attenuation in decibel, as passed + ///< by the user (positive value). + ///< + EDSPFilterPhaseResponse ReqPhase; ///< Required filter's phase response. + ///< + double ReqGain; ///< Required overall filter's gain. + ///< + CDSPFIRFilter* Next; ///< Next FIR filter in cache's list. + ///< + int RefCount; ///< The number of references made to *this FIR filter. + ///< + bool IsZeroPhase; ///< "True" if kernel block of *this filter has + ///< zero-phase response. + ///< + int Latency; ///< Filter's latency in samples (integer part). + ///< + double LatencyFrac; ///< Filter's latency in samples (fractional part). + ///< + int KernelLen; ///< Filter kernel length, in samples. + ///< + int BlockLenBits; ///< Block length used to store *this FIR filter, + ///< expressed as Nth power of 2. This value is used directly by the + ///< convolver. + ///< + CFixedBuffer< double > KernelBlock; ///< FIR filter buffer, capacity + ///< equals to 1 << ( BlockLenBits + 1 ). Second part of the buffer + ///< contains zero-padding to allow alias-free convolution. + ///< + + CDSPFIRFilter() + : RefCount( 1 ) + { + } + + /** + * Function builds filter kernel based on the "Req" parameters. + * + * @param ExtAttenCorrs External attentuation correction table, for + * internal use. + */ + + void buildLPFilter( const double* const ExtAttenCorrs ) + { + const double tb = ReqTransBand * 0.01; + double pwr; + double fo1; + double hl; + double atten = -ReqAtten; + + if( tb >= 0.25 ) + { + if( ReqAtten >= 117.0 ) + { + atten -= 1.60; + } + else + if( ReqAtten >= 60.0 ) + { + atten -= 1.91; + } + else + { + atten -= 2.25; + } + } + else + if( tb >= 0.10 ) + ... [truncated message content] |