mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 10:04:24 +00:00
Updated the build system, now using .NET Framework v4.0 for most things
This commit is contained in:
7
.gitignore
vendored
7
.gitignore
vendored
@@ -3,11 +3,12 @@ obj/
|
||||
bin/
|
||||
lib/
|
||||
Release/
|
||||
Debug/
|
||||
*.vcxproj.user
|
||||
*.csproj.user
|
||||
*.sdf
|
||||
*.suo
|
||||
*.opensdf
|
||||
Win32/
|
||||
x64/
|
||||
ia32/
|
||||
a32/
|
||||
launchSettings.json
|
||||
/CUETools/TestResults
|
||||
|
||||
22
.hgignore
22
.hgignore
@@ -1,22 +0,0 @@
|
||||
syntax: glob
|
||||
CUETools.AVX/Release
|
||||
CUETools.CLParity
|
||||
*.vcxproj.user
|
||||
CUETools.Codecs.DirectSound
|
||||
obj
|
||||
_UpgradeReport_Files
|
||||
MAC_SDK/Source/MACLib/Release
|
||||
MAC_SDK/Source/MACLib/x64
|
||||
ttalib-1.1/x64
|
||||
*.sdf
|
||||
*.suo
|
||||
*.opensdf
|
||||
CUETools.AVX/Win32
|
||||
CUETools.AVX/x64
|
||||
CUETools/TestResults/
|
||||
*.csproj.user
|
||||
bin/
|
||||
flac/src/libFLAC/ia32/*.obj
|
||||
CUETools/ipch/
|
||||
flac/src/libFLAC/x64/
|
||||
flac/src/libFLAC/Release/
|
||||
@@ -1,117 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{B75FA7AD-968E-4990-B342-1B4B17C850DF}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Bwg.Hardware</RootNamespace>
|
||||
<TargetFrameworks>net40;net20</TargetFrameworks>
|
||||
<Version>0.0.7.1</Version>
|
||||
<AssemblyName>Bwg.Hardware</AssemblyName>
|
||||
<SccProjectName>
|
||||
</SccProjectName>
|
||||
<SccLocalPath>
|
||||
</SccLocalPath>
|
||||
<SccAuxPath>
|
||||
</SccAuxPath>
|
||||
<SccProvider>
|
||||
</SccProvider>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<RootNamespace>Bwg.Hardware</RootNamespace>
|
||||
<Product>BwgBurn</Product>
|
||||
<Description>CD-R/CD-RW/DVD-R/DVD-RW burning program for Windows XP: devices.</Description>
|
||||
<Copyright>Copyright © 2006 by Jack W. Griffin, Jr.</Copyright>
|
||||
<Authors>Jack W. Griffin, Jr</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<OutputPath>..\bin\$(Configuration)\plugins</OutputPath>
|
||||
<RepositoryUrl>https://svn.code.sf.net/p/bwgburn/code/</RepositoryUrl>
|
||||
<RepositoryType>svn</RepositoryType>
|
||||
<Company>BwgSoftware</Company>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>bin\Debug\Bwg.Hardware.XML</DocumentationFile>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\plugins\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="HardwareDevice.cs" />
|
||||
<Compile Include="HardwareManager.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 2.0 %28x86%29</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.0 %28x86%29</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Bwg.Hardware")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("BwgSoftware")]
|
||||
[assembly: AssemblyProduct("BwgBurn")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2006 by Jack W. Griffin, Jr.")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("de5dc145-3520-47ee-8988-205a142c6177")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("0.0.7.1")]
|
||||
[assembly: AssemblyFileVersion("0.0.7.1")]
|
||||
@@ -1,3 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup/></configuration>
|
||||
@@ -1,125 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Bwg.Logging</RootNamespace>
|
||||
<TargetFrameworks>net40;net20</TargetFrameworks>
|
||||
<Version>0.0.7.1</Version>
|
||||
<AssemblyName>Bwg.Logging</AssemblyName>
|
||||
<SccProjectName>
|
||||
</SccProjectName>
|
||||
<SccLocalPath>
|
||||
</SccLocalPath>
|
||||
<SccAuxPath>
|
||||
</SccAuxPath>
|
||||
<SccProvider>
|
||||
</SccProvider>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<RootNamespace>Bwg.Logging</RootNamespace>
|
||||
<Product>BwgBurn</Product>
|
||||
<Description>CD-R/CD-RW/DVD-R/DVD-RW burning program for Windows XP: logging.</Description>
|
||||
<Copyright>Copyright © 2006 by Jack W. Griffin, Jr.</Copyright>
|
||||
<Authors>Jack W. Griffin, Jr</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<OutputPath>..\bin\$(Configuration)\plugins</OutputPath>
|
||||
<RepositoryUrl>https://svn.code.sf.net/p/bwgburn/code/</RepositoryUrl>
|
||||
<RepositoryType>svn</RepositoryType>
|
||||
<Company>BwgSoftware</Company>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>bin\Debug\Bwg.Logging.XML</DocumentationFile>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\plugins\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="ConsoleSink.cs" />
|
||||
<Compile Include="FileSink.cs" />
|
||||
<Compile Include="Logger.cs" />
|
||||
<Compile Include="MemorySink.cs" />
|
||||
<Compile Include="MessageAddedArgs.cs" />
|
||||
<Compile Include="TeeSink.cs" />
|
||||
<Compile Include="UserMessage.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Sink.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 2.0 %28x86%29</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.0 %28x86%29</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Bwg.Logging")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("BwgSoftware")]
|
||||
[assembly: AssemblyProduct("BwgBurn")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2006 by Jack W. Griffin, Jr.")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("216f12e9-2978-457c-95d6-32b4b87a361d")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("0.0.7.1")]
|
||||
[assembly: AssemblyFileVersion("0.0.7.1")]
|
||||
@@ -1,3 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup/></configuration>
|
||||
@@ -1,162 +1,29 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{A05B6AA6-0EC3-495D-BCC4-ECE1210071A8}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>Bwg.Scsi</RootNamespace>
|
||||
<TargetFrameworks>net40;net20</TargetFrameworks>
|
||||
<Version>0.0.7.1</Version>
|
||||
<AssemblyName>Bwg.Scsi</AssemblyName>
|
||||
<SccProjectName>
|
||||
</SccProjectName>
|
||||
<SccLocalPath>
|
||||
</SccLocalPath>
|
||||
<SccAuxPath>
|
||||
</SccAuxPath>
|
||||
<SccProvider>
|
||||
</SccProvider>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<RootNamespace>Bwg.Scsi</RootNamespace>
|
||||
<Product>BwgBurn</Product>
|
||||
<Description>CD-R/CD-RW/DVD-R/DVD-RW burning program for Windows XP: Windows SCSI interface.</Description>
|
||||
<Copyright>Copyright © 2006 by Jack W. Griffin, Jr.</Copyright>
|
||||
<Authors>Jack W. Griffin, Jr</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>bin\Debug\Bwg.Scsi.XML</DocumentationFile>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<OutputPath>..\bin\$(Configuration)\plugins</OutputPath>
|
||||
<RepositoryUrl>https://svn.code.sf.net/p/bwgburn/code/</RepositoryUrl>
|
||||
<RepositoryType>svn</RepositoryType>
|
||||
<Company>BwgSoftware</Company>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\plugins\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<DocumentationFile>
|
||||
</DocumentationFile>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AtipInfo.cs" />
|
||||
<Compile Include="CapacityDescriptor.cs" />
|
||||
<Compile Include="Command.cs" />
|
||||
<Compile Include="Defs.cs" />
|
||||
<Compile Include="Device.cs" />
|
||||
<Compile Include="DeviceInfo.cs" />
|
||||
<Compile Include="DeviceManager.cs" />
|
||||
<Compile Include="DeviceManagerRescanArgs.cs" />
|
||||
<Compile Include="DiskInformation.cs" />
|
||||
<Compile Include="EventStatusNotification.cs" />
|
||||
<Compile Include="Feature.cs" />
|
||||
<Compile Include="FeatureList.cs" />
|
||||
<None Include="app.config" />
|
||||
<None Include="FileReader.cs" />
|
||||
<Compile Include="FormatParameterList.cs" />
|
||||
<Compile Include="HeaderData.cs" />
|
||||
<Compile Include="InitializationPattern.cs" />
|
||||
<Compile Include="InquiryResult.cs" />
|
||||
<Compile Include="MinuteSecondFrame.cs" />
|
||||
<Compile Include="ModePage.cs" />
|
||||
<Compile Include="ModeTable.cs" />
|
||||
<Compile Include="OpcTableEntry.cs" />
|
||||
<Compile Include="Performance.cs" />
|
||||
<Compile Include="PerformanceList.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Result.cs" />
|
||||
<Compile Include="SpeedDescriptor.cs" />
|
||||
<Compile Include="SpeedDescriptorList.cs" />
|
||||
<Compile Include="SubheaderData.cs" />
|
||||
<Compile Include="TocEntry.cs" />
|
||||
<Compile Include="TrackInformation.cs" />
|
||||
<Compile Include="WinDev.cs" />
|
||||
<Compile Include="WriteBuffer.cs" />
|
||||
<Compile Include="WriteBufferPool.cs" />
|
||||
<Compile Include="WriteBufferStream.cs" />
|
||||
<Compile Include="WriteParameterModePage.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Bwg.Logging\Bwg.Logging.csproj">
|
||||
<Project>{F2DFEB00-BB35-4665-85EA-CB8C7729A6B7}</Project>
|
||||
<Name>Bwg.Logging</Name>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ProjectReference>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.2.0">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 2.0 %28x86%29</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.0">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.0 %28x86%29</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<ProjectReference Include="..\Bwg.Logging\Bwg.Logging.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Messages.resx">
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Messages.ru-RU.resx" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
//
|
||||
// BwgBurn - CD-R/CD-RW/DVD-R/DVD-RW burning program for Windows XP
|
||||
//
|
||||
// Copyright (C) 2006 by Jack W. Griffin (butchg@comcast.net)
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||
// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
// for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License along
|
||||
// with this program; if not, write to the
|
||||
//
|
||||
// Free Software Foundation, Inc.,
|
||||
// 59 Temple Place, Suite 330,
|
||||
// Boston, MA 02111-1307 USA
|
||||
//
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
//using Bwg.Utils;
|
||||
|
||||
namespace Bwg.Scsi
|
||||
{
|
||||
/// <summary>
|
||||
/// This class reads data from a file and sends this data to the buffered
|
||||
/// write stream.
|
||||
/// </summary>
|
||||
public unsafe class FileReader
|
||||
{
|
||||
#region private member variables
|
||||
/// <summary>
|
||||
/// The OS file for reading data from a file into a memory buffer (IntPtr)
|
||||
/// </summary>
|
||||
private OsFileReader m_reader;
|
||||
|
||||
/// <summary>
|
||||
/// The buffer pool to receive the data
|
||||
/// </summary>
|
||||
private WriteBufferPool m_buffer_stream;
|
||||
#endregion
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Create a new file reader that sends the data read to a buffer stream
|
||||
/// object
|
||||
/// </summary>
|
||||
/// <param name="buffer">the buffer to receive the data</param>
|
||||
public FileReader(WriteBufferPool buffer)
|
||||
{
|
||||
m_buffer_stream = buffer;
|
||||
m_reader = new OsFileReader();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Open a file to read data from
|
||||
/// </summary>
|
||||
/// <param name="filename">the name of the file</param>
|
||||
/// <returns>true if the file is opened, false otherwise</returns>
|
||||
public bool Open(string filename)
|
||||
{
|
||||
return m_reader.Open(filename);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This method closes an open file.
|
||||
/// </summary>
|
||||
/// <returns>true if the file is closed sucessfully, false otherwise</returns>
|
||||
public bool Close()
|
||||
{
|
||||
return m_reader.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This function reads data from the file and sends it to the
|
||||
/// buffer stream to be sent to the burner. This function does not
|
||||
/// return until all of the data from the file is read.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool ReadData(int sector_size, long lba)
|
||||
{
|
||||
bool shortbuf = false;
|
||||
int NumberRead ;
|
||||
int num_sectors ;
|
||||
bool first = true;
|
||||
|
||||
// This is the number of whole sectors that will fit into the buffer.
|
||||
num_sectors = m_buffer_stream.PageSize / sector_size;
|
||||
|
||||
while (true)
|
||||
{
|
||||
WriteBuffer buf ;
|
||||
|
||||
buf = m_buffer_stream.GetFreeBuffer();
|
||||
if (!m_reader.ReadData(buf.BufferPtr, num_sectors * sector_size, out NumberRead))
|
||||
return false ;
|
||||
|
||||
// If the read succeeded, but read zero bytes, we have reached the
|
||||
// end of the file.
|
||||
if (NumberRead == 0)
|
||||
return true;
|
||||
|
||||
if (shortbuf)
|
||||
throw new Exception("read two short packets");
|
||||
|
||||
// Mark the buffer with the amount of data that has
|
||||
// been read from the file
|
||||
int sectors = NumberRead / sector_size ;
|
||||
if ((NumberRead % sector_size) != 0)
|
||||
{
|
||||
shortbuf = true;
|
||||
sectors++;
|
||||
}
|
||||
|
||||
if (first)
|
||||
{
|
||||
buf.SourceString = "First block from FileReader";
|
||||
buf.LogicalBlockAddress = lba;
|
||||
first = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
buf.SourceString = "Not first block from FileReader";
|
||||
buf.LogicalBlockAddress = long.MaxValue;
|
||||
}
|
||||
|
||||
buf.SectorSize = sector_size;
|
||||
buf.DataSize = sectors;
|
||||
|
||||
// Send the buffer to the device
|
||||
m_buffer_stream.SendBufferToDevice(buf);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("Bwg.Scsi")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("BwgSoftware")]
|
||||
[assembly: AssemblyProduct("BwgBurn")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2006 by Jack W. Griffin, Jr.")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("d8330703-34ac-4124-a059-ba011391cc2e")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("0.0.7.1")]
|
||||
[assembly: AssemblyFileVersion("0.0.7.1")]
|
||||
@@ -1,3 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup/></configuration>
|
||||
@@ -1,131 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUEControls</RootNamespace>
|
||||
<TargetFrameworks>net40;net20</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUEControls</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<RootNamespace>CUEControls</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<Description>Library containing windows GUI controls for CUETools.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="FileSystemTreeView.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FileSystemTreeView.Designer.cs">
|
||||
<DependentUpon>FileSystemTreeView.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="IIconManager.cs" />
|
||||
<Compile Include="ImgComboBox.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MediaSlider.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="MediaSlider.designer.cs">
|
||||
<DependentUpon>MediaSlider.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="PeakMeterCtrl.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="PeakMeterCtrl.designer.cs">
|
||||
<DependentUpon>PeakMeterCtrl.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ShellIconMgr.cs" />
|
||||
<Service Include="{94E38DFF-614B-4cbd-B67C-F211BB35CE8B}" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="pmicon.bmp" />
|
||||
<None Include="Resources\folder.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUEPlayer</RootNamespace>
|
||||
<AssemblyName>CUEPlayer</AssemblyName>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<FileUpgradeFlags>
|
||||
@@ -31,12 +31,13 @@
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\bin\Debug\</OutputPath>
|
||||
<OutputPath>..\bin\Debug\net40\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -45,7 +46,7 @@
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\</OutputPath>
|
||||
<OutputPath>..\bin\Release\net40\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -71,12 +72,6 @@
|
||||
</Compile>
|
||||
<Compile Include="DataSet1.cs">
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DataSet1.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Deck.cs">
|
||||
<SubType>Form</SubType>
|
||||
@@ -162,10 +157,12 @@
|
||||
<ProjectReference Include="..\CUEControls\CUEControls.csproj">
|
||||
<Project>{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}</Project>
|
||||
<Name>CUEControls</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
|
||||
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
|
||||
<Name>CUETools.CDImage</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Codecs.CoreAudio\CUETools.Codecs.CoreAudio.csproj">
|
||||
<Project>{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}</Project>
|
||||
@@ -178,6 +175,7 @@
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||
<Name>CUETools.Codecs</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.DSP.Mixer\CUETools.DSP.Mixer.csproj">
|
||||
<Project>{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}</Project>
|
||||
@@ -190,6 +188,7 @@
|
||||
<ProjectReference Include="..\CUETools.Processor\CUETools.Processor.csproj">
|
||||
<Project>{4911BD82-49EF-4858-8B51-5394F86739A4}</Project>
|
||||
<Name>CUETools.Processor</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\ProgressODoom\ProgressODoom.csproj">
|
||||
<Project>{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}</Project>
|
||||
@@ -234,7 +233,6 @@
|
||||
<None Include="DataSet1.xsd">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSDataSetGenerator</Generator>
|
||||
<LastGenOutput>DataSet1.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<None Include="DataSet1.xss">
|
||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
||||
|
||||
1643
CUEPlayer/DataSet1.Designer.cs
generated
1643
CUEPlayer/DataSet1.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -11,7 +11,7 @@ namespace CUEPlayer
|
||||
{
|
||||
public partial class Output : Form
|
||||
{
|
||||
private IWavePlayer _player;
|
||||
private CUETools.Codecs.CoreAudio.IWavePlayer _player;
|
||||
private AudioBuffer resampled;
|
||||
private SOXResampler _resampler;
|
||||
private MMDevice _device;
|
||||
|
||||
52
CUEPlayer/Properties/Resources.Designer.cs
generated
52
CUEPlayer/Properties/Resources.Designer.cs
generated
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.239
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -19,7 +19,7 @@ namespace CUEPlayer.Properties {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
@@ -60,6 +60,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap cog {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("cog", resourceCulture);
|
||||
@@ -67,6 +70,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_eject {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_eject", resourceCulture);
|
||||
@@ -74,6 +80,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_eject_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_eject_blue", resourceCulture);
|
||||
@@ -81,6 +90,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_end_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_end_blue", resourceCulture);
|
||||
@@ -88,6 +100,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_equalizer_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_equalizer_blue", resourceCulture);
|
||||
@@ -95,6 +110,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_fastforward_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_fastforward_blue", resourceCulture);
|
||||
@@ -102,6 +120,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_pause_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_pause_blue", resourceCulture);
|
||||
@@ -109,6 +130,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_play_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_play_blue", resourceCulture);
|
||||
@@ -116,6 +140,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_repeat_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_repeat_blue", resourceCulture);
|
||||
@@ -123,6 +150,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_rewind_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_rewind_blue", resourceCulture);
|
||||
@@ -130,6 +160,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_start_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_start_blue", resourceCulture);
|
||||
@@ -137,6 +170,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap control_stop_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("control_stop_blue", resourceCulture);
|
||||
@@ -144,6 +180,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap ctdb {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("ctdb", resourceCulture);
|
||||
@@ -151,6 +190,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap sound {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("sound", resourceCulture);
|
||||
@@ -158,6 +200,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap sound_mute {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("sound_mute", resourceCulture);
|
||||
@@ -165,6 +210,9 @@ namespace CUEPlayer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap transmit_blue {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("transmit_blue", resourceCulture);
|
||||
|
||||
4
CUEPlayer/Properties/Settings.Designer.cs
generated
4
CUEPlayer/Properties/Settings.Designer.cs
generated
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.239
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -12,7 +12,7 @@ namespace CUEPlayer.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
</configSections>
|
||||
<connectionStrings>
|
||||
<add name="CUEPlayer.Properties.Settings.CUEPlayerConnectionString"
|
||||
connectionString="Data Source=|DataDirectory|\CUEPlayer.sdf"
|
||||
providerName="Microsoft.SqlServerCe.Client.3.5" />
|
||||
<add name="CUEPlayer.Properties.Settings.CUEPlayerConnectionString" connectionString="Data Source=|DataDirectory|\CUEPlayer.sdf" providerName="Microsoft.SqlServerCe.Client.3.5"/>
|
||||
</connectionStrings>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<probing privatePath="plugins (x64)"/>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
||||
|
||||
8
CUERipper.WPF/App.xaml
Normal file
8
CUERipper.WPF/App.xaml
Normal file
@@ -0,0 +1,8 @@
|
||||
<Application x:Class="CUERipper.WPF.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
StartupUri="Window1.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
||||
16
CUERipper.WPF/App.xaml.cs
Normal file
16
CUERipper.WPF/App.xaml.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
|
||||
namespace CUERipper.WPF
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
||||
158
CUERipper.WPF/CUERipper.WPF.csproj
Normal file
158
CUERipper.WPF/CUERipper.WPF.csproj
Normal file
@@ -0,0 +1,158 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{2D8D7A03-DFFA-44EF-9299-8BB56D122245}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUERipper.WPF</RootNamespace>
|
||||
<AssemblyName>CUERipper.WPF</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\bin\Debug\net40\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\net40\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="PresentationCore">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="PresentationFramework">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Page Include="Window1.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Window1.xaml.cs">
|
||||
<DependentUpon>Window1.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="app.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<AppDesigner Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUEControls\CUEControls.csproj">
|
||||
<Project>{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}</Project>
|
||||
<Name>CUEControls</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
|
||||
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
|
||||
<Name>CUETools.CDImage</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Processor\CUETools.Processor.csproj">
|
||||
<Project>{4911BD82-49EF-4858-8B51-5394F86739A4}</Project>
|
||||
<Name>CUETools.Processor</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="musicbrainz.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="freedb16.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -1,36 +1,55 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CUETools.Codecs.CoreAudio")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("CUETools.Codecs.CoreAudio")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("f597837f-dd1c-4e0f-b915-0e929bf0dd35")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CUERipper.WPF")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("CUERipper.WPF")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
//In order to begin building localizable applications, set
|
||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||
//inside a <PropertyGroup>. For example, if you are using US english
|
||||
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
||||
//the line below to match the UICulture setting in the project file.
|
||||
|
||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||
|
||||
|
||||
[assembly: ThemeInfo(
|
||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||
//(used if a resource is not found in the page,
|
||||
// or application resource dictionaries)
|
||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||
//(used if a resource is not found in the page,
|
||||
// app, or any theme specific resource dictionaries)
|
||||
)]
|
||||
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
63
CUERipper.WPF/Properties/Resources.Designer.cs
generated
Normal file
63
CUERipper.WPF/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace CUERipper.WPF.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CUERipper.WPF.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
117
CUERipper.WPF/Properties/Resources.resx
Normal file
117
CUERipper.WPF/Properties/Resources.resx
Normal file
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
26
CUERipper.WPF/Properties/Settings.Designer.cs
generated
Normal file
26
CUERipper.WPF/Properties/Settings.Designer.cs
generated
Normal file
@@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace CUERipper.WPF.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
CUERipper.WPF/Properties/Settings.settings
Normal file
7
CUERipper.WPF/Properties/Settings.settings
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
95
CUERipper.WPF/Window1.xaml
Normal file
95
CUERipper.WPF/Window1.xaml
Normal file
@@ -0,0 +1,95 @@
|
||||
<Window x:Class="CUERipper.WPF.Window1"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="CUERipper" Height="504" Width="623" ResizeMode="CanResize" SizeToContent="Manual" Background="#efefef" Loaded="Window_Loaded"
|
||||
DataContext="{Binding RelativeSource={RelativeSource Self}}">
|
||||
<Window.Resources>
|
||||
<!--<Image></Image>
|
||||
<XmlDataProvider x:Key="data" XPath="Images/Image">
|
||||
<x:XData>
|
||||
<Images xxmlns="">
|
||||
<Image Name="Apple"></Image>
|
||||
</Images>
|
||||
</x:XData>
|
||||
</XmlDataProvider>-->
|
||||
</Window.Resources>
|
||||
<Grid Height="Auto" Width="Auto" Margin="10,10,10,10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="249*" />
|
||||
<RowDefinition Height="110*" />
|
||||
<RowDefinition Height="30*" />
|
||||
</Grid.RowDefinitions>
|
||||
<ListView Name="listView1" Grid.Row="3" IsTabStop="True" ItemsSource="{Binding SelectedRelease.metadata.Tracks}" Margin="0,5">
|
||||
<ListView.View>
|
||||
<GridView>
|
||||
<GridViewColumn DisplayMemberBinding="{Binding Title}" Width="50" >Track</GridViewColumn>
|
||||
<GridViewColumn DisplayMemberBinding="{Binding Title}" Width="300">Title</GridViewColumn>
|
||||
<GridViewColumn DisplayMemberBinding="{Binding Artist}" Width="200">Artist</GridViewColumn>
|
||||
</GridView>
|
||||
<!--<GridView ColumnHeaderContainerStyle="{DynamicResource CustomHeaderStyle}"></GridView>-->
|
||||
</ListView.View>
|
||||
</ListView>
|
||||
<ProgressBar Name="progressBar1" HorizontalAlignment="Right" Width="158" Grid.Row="4" Margin="0,0,14,12" Height="20" VerticalAlignment="Bottom" />
|
||||
<ComboBox Name="comboBox1" IsEditable="False" ClipToBounds="False" IsReadOnly="False" SelectedItem="{Binding SelectedDrive}" ItemsSource="{Binding Drives}" Padding="4,0" VerticalContentAlignment="Center" Margin="0,5">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Image Source="{Binding Icon}" Width="Auto" Margin="1,1,5,1" MinWidth="16" MinHeight="16"></Image>
|
||||
<TextBlock Text="{Binding Name}" Width="Auto"></TextBlock>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<ComboBox x:Name="comboBoxReleases" Grid.Row="1" IsEditable="False" ClipToBounds="False" Padding="4,0" SelectedItem="{Binding SelectedRelease}" ItemsSource="{Binding Releases}" VerticalContentAlignment="Center" Margin="0,5">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Image Source="{Binding ImageKey}" Width="Auto" Margin="1,1,5,1" MinWidth="16" MinHeight="16"></Image>
|
||||
<TextBlock Text="{Binding}" Width="Auto"></TextBlock>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<GroupBox Name="groupBox1" Grid.Row="4" Margin="6,6,178,12">
|
||||
<Grid Height="auto" Name="grid1" Width="auto">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="100*" />
|
||||
<RowDefinition Height="100*" />
|
||||
<RowDefinition Height="100*" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="104*" />
|
||||
<ColumnDefinition Width="104*" />
|
||||
<ColumnDefinition Width="88*" />
|
||||
<ColumnDefinition Width="119.5*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<ComboBox Margin="10,5,10,5" Name="comboBox3" SelectedIndex="0" Padding="4,1" VerticalContentAlignment="Center">
|
||||
<ComboBoxItem>lossless</ComboBoxItem>
|
||||
<ComboBoxItem>lossy</ComboBoxItem>
|
||||
</ComboBox>
|
||||
<ComboBox Margin="10,5,10,5" Name="comboBox4" Grid.Row="1" SelectedIndex="0" Padding="4,1" VerticalContentAlignment="Center">
|
||||
<ComboBoxItem>image</ComboBoxItem>
|
||||
<ComboBoxItem>tracks</ComboBoxItem>
|
||||
</ComboBox>
|
||||
<ComboBox Margin="10,5,10,5" Name="comboBox5" Grid.Column="1" Padding="4,1" />
|
||||
<ComboBox Margin="10,5,10,5" Name="comboBox6" Grid.Column="1" Grid.Row="1" Padding="4,1" />
|
||||
<Slider Grid.ColumnSpan="2" Grid.Row="2" Margin="25,3,25,3" Name="slider1" TickPlacement="BottomRight" />
|
||||
<Slider Grid.Column="3" Grid.Row="2" Margin="15,3,15,3" Name="slider2" />
|
||||
<CheckBox Grid.Column="3" Grid.Row="1" Margin="15,3,15,3" Name="checkBox1">EAC log</CheckBox>
|
||||
<TextBox Grid.Column="3" Margin="56,5,10,5" Name="textBox1" />
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
<Button HorizontalAlignment="Right" Width="158" Margin="0,14,14,52" Grid.Row="4">Ok</Button>
|
||||
<StatusBar Grid.Row="5" Height="Auto" HorizontalAlignment="Stretch" Name="statusBar1" VerticalAlignment="Stretch" Width="Auto">
|
||||
<StatusBarItem HorizontalAlignment="Right" VerticalAlignment="Center">
|
||||
<ProgressBar Width="84" Height="15"></ProgressBar>
|
||||
</StatusBarItem>
|
||||
<StatusBarItem HorizontalAlignment="Right" VerticalAlignment="Center">
|
||||
<ProgressBar Width="84" Height="15"></ProgressBar>
|
||||
</StatusBarItem>
|
||||
</StatusBar>
|
||||
</Grid>
|
||||
</Window>
|
||||
77
CUERipper.WPF/Window1.xaml.cs
Normal file
77
CUERipper.WPF/Window1.xaml.cs
Normal file
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Collections.ObjectModel;
|
||||
using CUETools.CDImage;
|
||||
using CUETools.Processor;
|
||||
|
||||
namespace CUERipper.WPF
|
||||
{
|
||||
public class DriveInfo
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public string Icon { get; set; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Interaction logic for Window1.xaml
|
||||
/// </summary>
|
||||
public partial class Window1 : Window
|
||||
{
|
||||
private CUEControls.ShellIconMgr m_icon_mgr;
|
||||
|
||||
public Window1()
|
||||
{
|
||||
InitializeComponent();
|
||||
m_icon_mgr = new CUEControls.ShellIconMgr();
|
||||
}
|
||||
|
||||
ObservableCollection<CUEMetadataEntry> _Releases = new ObservableCollection<CUEMetadataEntry>();
|
||||
ObservableCollection<DriveInfo> _Drives = new ObservableCollection<DriveInfo>();
|
||||
public ObservableCollection<DriveInfo> Drives { get { return _Drives; } }
|
||||
public ObservableCollection<CUEMetadataEntry> Releases { get { return _Releases; } }
|
||||
|
||||
public static DependencyProperty SelectedDriveProperty = DependencyProperty.Register("SelectedDrive", typeof(DriveInfo), typeof(Window1));
|
||||
public DriveInfo SelectedDrive
|
||||
{
|
||||
get { return ((DriveInfo)(base.GetValue(SelectedDriveProperty))); }
|
||||
set { base.SetValue(SelectedDriveProperty, value); }
|
||||
}
|
||||
|
||||
public static DependencyProperty SelectedReleaseProperty = DependencyProperty.Register("SelectedRelease", typeof(CUEMetadataEntry), typeof(Window1));
|
||||
public CUEMetadataEntry SelectedRelease
|
||||
{
|
||||
get { return ((CUEMetadataEntry)(base.GetValue(SelectedReleaseProperty))); }
|
||||
set { base.SetValue(SelectedReleaseProperty, value); }
|
||||
}
|
||||
|
||||
private void Window_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
Drives.Add(new DriveInfo { Name = "aa", Icon = "/CUERipper.WPF;component/musicbrainz.ico" });
|
||||
Drives.Add(new DriveInfo { Name = "cc", Icon = "/CUERipper.WPF;component/freedb16.png" });
|
||||
Drives.Add(new DriveInfo { Name = "ee", Icon = "ff" });
|
||||
SelectedDrive = Drives[0];
|
||||
|
||||
CDImageLayout toc = new CDImageLayout(2, 2, 1, "0 10000 20000");
|
||||
Releases.Add(new CUEMetadataEntry(toc, "/CUERipper.WPF;component/musicbrainz.ico"));
|
||||
Releases[0].metadata.Artist = "Mike Oldfield";
|
||||
Releases[0].metadata.Title = "Amarok";
|
||||
Releases[0].metadata.Tracks[0].Artist = "Mike Oldfield";
|
||||
Releases[0].metadata.Tracks[0].Title = "Amarok 01";
|
||||
Releases[0].metadata.Tracks[1].Artist = "Mike Oldfield";
|
||||
Releases[0].metadata.Tracks[1].Title = "Amarok 02";
|
||||
Releases.Add(new CUEMetadataEntry(toc, "/CUERipper.WPF;component/freedb16.png"));
|
||||
SelectedRelease = Releases[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
4
CUERipper.WPF/app.config
Normal file
4
CUERipper.WPF/app.config
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
||||
17
CUERipper.WPF/depprop.txt
Normal file
17
CUERipper.WPF/depprop.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
//public static global::System.Workflow.ComponentModel.DependencyProperty MyPropertyProperty = DependencyProperty.Register("MyProperty", typeof(string), typeof(Window1));
|
||||
|
||||
//[System.ComponentModel.DescriptionAttribute("MyProperty")]
|
||||
//[System.ComponentModel.CategoryAttribute("MyProperty Category")]
|
||||
//[System.ComponentModel.BrowsableAttribute(true)]
|
||||
//[System.ComponentModel.DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Visible)]
|
||||
//public string MyProperty
|
||||
//{
|
||||
// get
|
||||
// {
|
||||
// return ((string)(base.GetValue(Window1.MyPropertyProperty)));
|
||||
// }
|
||||
// set
|
||||
// {
|
||||
// base.SetValue(Window1.MyPropertyProperty, value);
|
||||
// }
|
||||
//}
|
||||
BIN
CUERipper.WPF/freedb16.png
Normal file
BIN
CUERipper.WPF/freedb16.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 394 B |
BIN
CUERipper.WPF/musicbrainz.ico
Normal file
BIN
CUERipper.WPF/musicbrainz.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
@@ -26,7 +26,7 @@
|
||||
</AssemblyOriginatorKeyFile>
|
||||
<TargetZone>LocalIntranet</TargetZone>
|
||||
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Web</InstallFrom>
|
||||
@@ -48,12 +48,13 @@
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\bin\Debug\</OutputPath>
|
||||
<OutputPath>..\bin\Debug\net40\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -63,7 +64,7 @@
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\</OutputPath>
|
||||
<OutputPath>..\bin\Release\net40\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
@@ -156,6 +157,10 @@
|
||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||
<Name>CUETools.Codecs</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CTDB.Types\CUETools.CTDB.Types.csproj">
|
||||
<Project>{c36efaa5-4f81-4a29-800d-ba866ff13bc8}</Project>
|
||||
<Name>CUETools.CTDB.Types</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CTDB\CUETools.CTDB.csproj">
|
||||
<Project>{AA2A9A7E-45FB-4632-AD85-85B0E556F818}</Project>
|
||||
<Name>CUETools.CTDB</Name>
|
||||
|
||||
4
CUERipper/Properties/Resources.Designer.cs
generated
4
CUERipper/Properties/Resources.Designer.cs
generated
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.18033
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -19,7 +19,7 @@ namespace CUERipper.Properties {
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
4
CUERipper/Properties/Settings.Designer.cs
generated
4
CUERipper/Properties/Settings.Designer.cs
generated
@@ -1,7 +1,7 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.239
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
@@ -12,7 +12,7 @@ namespace CUERipper.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="CUERipper.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<section name="CUERipper.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<userSettings>
|
||||
@@ -17,4 +17,4 @@
|
||||
<probing privatePath="plugins"/>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<probing privatePath="plugins"/>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
|
||||
|
||||
@@ -1,102 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{8E6E1763-39AE-491D-A10F-44C8844ABA5B}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUETools.ALACEnc</RootNamespace>
|
||||
<TargetFrameworks>net40;net20;netcoreapp2.0</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUETools.ALACEnc</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<RootNamespace>CUETools.ALACEnc</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<OutputType>Exe</OutputType>
|
||||
<Description>A tool for encoding and decoding ALAC.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.Codecs.ALAC\CUETools.Codecs.ALAC.csproj">
|
||||
<Project>{F2EC7193-D5E5-4252-9803-5CEB407E910F}</Project>
|
||||
<Name>CUETools.Codecs.ALAC</Name>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ProjectReference>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||
<Name>CUETools.Codecs</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<ProjectReference Include="..\CUETools.Codecs.ALAC\CUETools.Codecs.ALAC.csproj" />
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CUETools.ALACEnc")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("CUETools.ALACEnc")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2009")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("24fa1fb9-e01a-48cf-b478-f560496d1ed3")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -1,102 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.50727</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}</ProjectGuid>
|
||||
<TargetFrameworks>net40;netcoreapp2.0</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUETools.ARCUE</AssemblyName>
|
||||
<RootNamespace>CUETools.ARCUE</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ArCueDotNet</RootNamespace>
|
||||
<AssemblyName>ArCueDotNet</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<Description>A tool for CD image verification against AccurateRip.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||
<Name>CUETools.Codecs</Name>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ProjectReference>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CTDB\CUETools.CTDB.csproj">
|
||||
<Project>{AA2A9A7E-45FB-4632-AD85-85B0E556F818}</Project>
|
||||
<Name>CUETools.CTDB</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Processor\CUETools.Processor.csproj">
|
||||
<Project>{4911BD82-49EF-4858-8B51-5394F86739A4}</Project>
|
||||
<Name>CUETools.Processor</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj" />
|
||||
<ProjectReference Include="..\CUETools.CTDB.Types\CUETools.CTDB.Types.csproj" />
|
||||
<ProjectReference Include="..\CUETools.CTDB\CUETools.CTDB.csproj" />
|
||||
<ProjectReference Include="..\CUETools.Processor\CUETools.Processor.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CUETools.ARCUE")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.ARCUE")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("2da81ac9-8929-42c8-ae27-9431b4f71508")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
[assembly: AssemblyVersion("2.1.6.0")]
|
||||
[assembly: AssemblyFileVersion("2.1.6.0")]
|
||||
@@ -1,109 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{5802C7E9-157E-4124-946D-70B5AE48A5A1}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUETools.AccurateRip</RootNamespace>
|
||||
<TargetFrameworks>net40;net20;netstandard2.0</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUETools.AccurateRip</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<SignAssembly>false</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>
|
||||
</AssemblyOriginatorKeyFile>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<RootNamespace>CUETools.AccurateRip</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<Description>A library for calculating AccurateRip checksums, CRC32 and Reed-solomon codes of CD audio.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AccurateRip.cs" />
|
||||
<Compile Include="CDRepair.cs" />
|
||||
<Compile Include="OffsetSafeCRCRecord.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||
<Name>CUETools.Codecs</Name>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ProjectReference>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
|
||||
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
|
||||
<Name>CUETools.CDImage</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj">
|
||||
<Project>{ECEB839C-171B-4535-958F-9899310A0342}</Project>
|
||||
<Name>CUETools.Parity</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj" />
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj" />
|
||||
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CUETools.AccurateRip")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.AccurateRip")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("080b79f6-6b19-417e-a1d1-afcb6e469112")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("2.1.6.0")]
|
||||
[assembly: AssemblyFileVersion("2.1.6.0")]
|
||||
@@ -1,91 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{1DD41038-D885-46C5-8DDE-E0B82F066584}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUETools.CDImage</RootNamespace>
|
||||
<TargetFrameworks>net40;net20;netstandard2.0</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUETools.CDImage</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<SignAssembly>false</SignAssembly>
|
||||
<AssemblyOriginatorKeyFile>
|
||||
</AssemblyOriginatorKeyFile>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<RootNamespace>CUETools.CDImage</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<Description>A library for working with CD TOC.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CDImage.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CUETools.CDImage")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.CDImage")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("3db8bfa6-d3ba-4875-b02f-ef81119eab98")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("2.1.6.0")]
|
||||
[assembly: AssemblyFileVersion("2.1.6.0")]
|
||||
@@ -10,7 +10,7 @@
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUETools.CDRepair</RootNamespace>
|
||||
<AssemblyName>CUETools.CDRepair</AssemblyName>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
|
||||
664
CUETools.CLParity/CLParity.cs
Normal file
664
CUETools.CLParity/CLParity.cs
Normal file
@@ -0,0 +1,664 @@
|
||||
/**
|
||||
* CUETools.CLParity: Reed-Solomon (32 bit) using OpenCL
|
||||
* Copyright (c) 2009 Gregory S. Chudov
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Threading;
|
||||
using System.Text;
|
||||
using System.Runtime.InteropServices;
|
||||
using CUETools.Codecs;
|
||||
using OpenCLNet;
|
||||
|
||||
namespace CUETools.CLParity
|
||||
{
|
||||
public class CLParitySettings
|
||||
{
|
||||
public CLParitySettings()
|
||||
{
|
||||
this.MappedMemory = false;
|
||||
this.GroupSize = 128;
|
||||
this.DeviceType = OpenCLDeviceType.GPU;
|
||||
}
|
||||
|
||||
[DefaultValue(false)]
|
||||
[SRDescription(typeof(Properties.Resources), "DescriptionMappedMemory")]
|
||||
public bool MappedMemory { get; set; }
|
||||
|
||||
[TypeConverter(typeof(CLParitySettingsGroupSizeConverter))]
|
||||
[DefaultValue(128)]
|
||||
[SRDescription(typeof(Properties.Resources), "DescriptionGroupSize")]
|
||||
public int GroupSize { get; set; }
|
||||
|
||||
[SRDescription(typeof(Properties.Resources), "DescriptionDefines")]
|
||||
public string Defines { get; set; }
|
||||
|
||||
[TypeConverter(typeof(CLParitySettingsPlatformConverter))]
|
||||
[SRDescription(typeof(Properties.Resources), "DescriptionPlatform")]
|
||||
public string Platform { get; set; }
|
||||
|
||||
[DefaultValue(OpenCLDeviceType.GPU)]
|
||||
[SRDescription(typeof(Properties.Resources), "DescriptionDeviceType")]
|
||||
public OpenCLDeviceType DeviceType { get; set; }
|
||||
}
|
||||
|
||||
public class CLParitySettingsPlatformConverter : TypeConverter
|
||||
{
|
||||
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
|
||||
{
|
||||
var res = new List<string>();
|
||||
foreach (var p in OpenCL.GetPlatforms())
|
||||
res.Add(p.Name);
|
||||
return new StandardValuesCollection(res);
|
||||
}
|
||||
}
|
||||
|
||||
public class CLParitySettingsGroupSizeConverter : TypeConverter
|
||||
{
|
||||
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
|
||||
{
|
||||
return new StandardValuesCollection(new int[] { 64, 128, 256 });
|
||||
}
|
||||
}
|
||||
|
||||
public enum OpenCLDeviceType : ulong
|
||||
{
|
||||
CPU = DeviceType.CPU,
|
||||
GPU = DeviceType.GPU
|
||||
}
|
||||
|
||||
//[AudioEncoderClass("CLParity", typeof(CLParitySettings))]
|
||||
public class CLParityWriter : IAudioDest
|
||||
{
|
||||
long _position;
|
||||
|
||||
// total stream samples
|
||||
// if 0, stream length is unknown
|
||||
int sample_count = -1;
|
||||
|
||||
TimeSpan _userProcessorTime;
|
||||
|
||||
int samplesInBuffer = 0;
|
||||
|
||||
bool inited = false;
|
||||
|
||||
OpenCLManager OCLMan;
|
||||
Program openCLProgram;
|
||||
|
||||
CLParityTask task1;
|
||||
CLParityTask task2;
|
||||
|
||||
int npar, stride, stridesPerTask;
|
||||
|
||||
AudioPCMConfig _pcm;
|
||||
|
||||
public CLParityWriter(string path, Stream IO, AudioPCMConfig pcm)
|
||||
{
|
||||
_pcm = pcm;
|
||||
if (pcm.BitsPerSample != 16)
|
||||
throw new Exception("Bits per sample must be 16.");
|
||||
if (pcm.ChannelCount != 2)
|
||||
throw new Exception("ChannelCount must be 2.");
|
||||
npar = 256;
|
||||
stride = 1;
|
||||
}
|
||||
|
||||
public CLParityWriter(string path, AudioPCMConfig pcm)
|
||||
: this(path, null, pcm)
|
||||
{
|
||||
}
|
||||
|
||||
internal CLParitySettings _settings = new CLParitySettings();
|
||||
|
||||
public object Settings
|
||||
{
|
||||
get
|
||||
{
|
||||
return _settings;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value as CLParitySettings == null)
|
||||
throw new Exception("Unsupported options " + value);
|
||||
_settings = value as CLParitySettings;
|
||||
}
|
||||
}
|
||||
|
||||
//[DllImport("kernel32.dll")]
|
||||
//static extern bool GetThreadTimes(IntPtr hThread, out long lpCreationTime, out long lpExitTime, out long lpKernelTime, out long lpUserTime);
|
||||
//[DllImport("kernel32.dll")]
|
||||
//static extern IntPtr GetCurrentThread();
|
||||
|
||||
void DoClose()
|
||||
{
|
||||
if (inited)
|
||||
{
|
||||
int strideCount = samplesInBuffer / stride;
|
||||
if (strideCount > 0)
|
||||
do_output_frames(strideCount);
|
||||
if (samplesInBuffer > 0)
|
||||
throw new Exception(string.Format("samplesInBuffer % stride != 0"));
|
||||
if (task2.strideCount > 0)
|
||||
{
|
||||
task2.openCLCQ.Finish(); // cuda.SynchronizeStream(task2.stream);
|
||||
task2.strideCount = 0;
|
||||
}
|
||||
|
||||
task1.Dispose();
|
||||
task2.Dispose();
|
||||
openCLProgram.Dispose();
|
||||
OCLMan.Dispose();
|
||||
inited = false;
|
||||
}
|
||||
}
|
||||
|
||||
public void Close()
|
||||
{
|
||||
DoClose();
|
||||
if (sample_count > 0 && _position != sample_count)
|
||||
throw new Exception(string.Format("Samples written differs from the expected sample count. Expected {0}, got {1}.", sample_count, _position));
|
||||
}
|
||||
|
||||
public void Delete()
|
||||
{
|
||||
if (inited)
|
||||
{
|
||||
task1.Dispose();
|
||||
task2.Dispose();
|
||||
openCLProgram.Dispose();
|
||||
OCLMan.Dispose();
|
||||
inited = false;
|
||||
}
|
||||
}
|
||||
|
||||
public long Position
|
||||
{
|
||||
get
|
||||
{
|
||||
return _position;
|
||||
}
|
||||
}
|
||||
|
||||
public long FinalSampleCount
|
||||
{
|
||||
set { sample_count = (int)value; }
|
||||
}
|
||||
|
||||
public TimeSpan UserProcessorTime
|
||||
{
|
||||
get { return _userProcessorTime; }
|
||||
}
|
||||
|
||||
public AudioPCMConfig PCM
|
||||
{
|
||||
get { return _pcm; }
|
||||
}
|
||||
|
||||
public unsafe void InitTasks()
|
||||
{
|
||||
if (!inited)
|
||||
{
|
||||
if (OpenCL.NumberOfPlatforms < 1)
|
||||
throw new Exception("no opencl platforms found");
|
||||
|
||||
int groupSize = _settings.DeviceType == OpenCLDeviceType.CPU ? 1 : _settings.GroupSize;
|
||||
OCLMan = new OpenCLManager();
|
||||
// Attempt to save binaries after compilation, as well as load precompiled binaries
|
||||
// to avoid compilation. Usually you'll want this to be true.
|
||||
OCLMan.AttemptUseBinaries = true; // true;
|
||||
// Attempt to compile sources. This should probably be true for almost all projects.
|
||||
// Setting it to false means that when you attempt to compile "mysource.cl", it will
|
||||
// only scan the precompiled binary directory for a binary corresponding to a source
|
||||
// with that name. There's a further restriction that the compiled binary also has to
|
||||
// use the same Defines and BuildOptions
|
||||
OCLMan.AttemptUseSource = true;
|
||||
// Binary and source paths
|
||||
// This is where we store our sources and where compiled binaries are placed
|
||||
//OCLMan.BinaryPath = @"OpenCL\bin";
|
||||
//OCLMan.SourcePath = @"OpenCL\src";
|
||||
// If true, RequireImageSupport will filter out any devices without image support
|
||||
// In this project we don't need image support though, so we set it to false
|
||||
OCLMan.RequireImageSupport = false;
|
||||
// The BuildOptions string is passed directly to clBuild and can be used to do debug builds etc
|
||||
OCLMan.BuildOptions = "";
|
||||
OCLMan.SourcePath = System.IO.Path.GetDirectoryName(GetType().Assembly.Location);
|
||||
OCLMan.BinaryPath = System.IO.Path.Combine(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CUE Tools"), "OpenCL");
|
||||
int platformId = 0;
|
||||
if (_settings.Platform != null)
|
||||
{
|
||||
platformId = -1;
|
||||
string platforms = "";
|
||||
for (int i = 0; i < OpenCL.NumberOfPlatforms; i++)
|
||||
{
|
||||
var platform = OpenCL.GetPlatform(i);
|
||||
platforms += " \"" + platform.Name + "\"";
|
||||
if (platform.Name.Equals(_settings.Platform, StringComparison.InvariantCultureIgnoreCase))
|
||||
{
|
||||
platformId = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (platformId < 0)
|
||||
throw new Exception("unknown platform \"" + _settings.Platform + "\". Platforms available:" + platforms);
|
||||
}
|
||||
OCLMan.CreateDefaultContext(platformId, (DeviceType)_settings.DeviceType);
|
||||
|
||||
this.stridesPerTask = (int)OCLMan.Context.Devices[0].MaxComputeUnits * npar * 8;
|
||||
|
||||
// The Defines string gets prepended to any and all sources that are compiled
|
||||
// and serve as a convenient way to pass configuration information to the compilation process
|
||||
OCLMan.Defines =
|
||||
"#define GROUP_SIZE " + groupSize.ToString() + "\n" +
|
||||
"#define CLPARITY_VERSION \"" + vendor_string + "\"\n" +
|
||||
#if DEBUG
|
||||
"#define DEBUG\n" +
|
||||
#endif
|
||||
(_settings.DeviceType == OpenCLDeviceType.CPU ? "#define CLPARITY_CPU\n" : "") +
|
||||
_settings.Defines + "\n";
|
||||
|
||||
var exts = new string[] { "cl_khr_local_int32_base_atomics", "cl_khr_local_int32_extended_atomics", "cl_khr_fp64", "cl_amd_fp64" };
|
||||
foreach (string extension in exts)
|
||||
if (OCLMan.Context.Devices[0].Extensions.Contains(extension))
|
||||
{
|
||||
OCLMan.Defines += "#pragma OPENCL EXTENSION " + extension + ": enable\n";
|
||||
OCLMan.Defines += "#define HAVE_" + extension + "\n";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
openCLProgram = OCLMan.CompileFile("parity.cl");
|
||||
}
|
||||
catch (OpenCLBuildException ex)
|
||||
{
|
||||
string buildLog = ex.BuildLogs[0];
|
||||
throw ex;
|
||||
}
|
||||
//using (Stream kernel = GetType().Assembly.GetManifestResourceStream(GetType(), "parity.cl"))
|
||||
//using (StreamReader sr = new StreamReader(kernel))
|
||||
//{
|
||||
// try
|
||||
// {
|
||||
// openCLProgram = OCLMan.CompileSource(sr.ReadToEnd()); ;
|
||||
// }
|
||||
// catch (OpenCLBuildException ex)
|
||||
// {
|
||||
// string buildLog = ex.BuildLogs[0];
|
||||
// throw ex;
|
||||
// }
|
||||
//}
|
||||
#if TTTTKJHSKJH
|
||||
var openCLPlatform = OpenCL.GetPlatform(0);
|
||||
openCLContext = openCLPlatform.CreateDefaultContext();
|
||||
using (Stream kernel = GetType().Assembly.GetManifestResourceStream(GetType(), "parity.cl"))
|
||||
using (StreamReader sr = new StreamReader(kernel))
|
||||
openCLProgram = openCLContext.CreateProgramWithSource(sr.ReadToEnd());
|
||||
try
|
||||
{
|
||||
openCLProgram.Build();
|
||||
}
|
||||
catch (OpenCLException)
|
||||
{
|
||||
string buildLog = openCLProgram.GetBuildLog(openCLProgram.Devices[0]);
|
||||
throw;
|
||||
}
|
||||
#endif
|
||||
|
||||
task1 = new CLParityTask(openCLProgram, this, groupSize, this.npar, this.stride, this.stridesPerTask);
|
||||
task2 = new CLParityTask(openCLProgram, this, groupSize, this.npar, this.stride, this.stridesPerTask);
|
||||
inited = true;
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe void Write(AudioBuffer buff)
|
||||
{
|
||||
InitTasks();
|
||||
buff.Prepare(this);
|
||||
int pos = 0;
|
||||
while (pos < buff.Length)
|
||||
{
|
||||
int block = Math.Min(buff.Length - pos, stride * stridesPerTask - samplesInBuffer);
|
||||
|
||||
fixed (byte* buf = buff.Bytes)
|
||||
AudioSamples.MemCpy(((byte*)task1.clSamplesBytesPtr) + samplesInBuffer * _pcm.BlockAlign, buf + pos * _pcm.BlockAlign, block * _pcm.BlockAlign);
|
||||
|
||||
samplesInBuffer += block;
|
||||
pos += block;
|
||||
|
||||
int strideCount = samplesInBuffer / stride;
|
||||
if (strideCount >= stridesPerTask)
|
||||
do_output_frames(strideCount);
|
||||
}
|
||||
}
|
||||
|
||||
public unsafe void do_output_frames(int strideCount)
|
||||
{
|
||||
task1.strideCount = strideCount;
|
||||
if (!task1.UseMappedMemory)
|
||||
task1.openCLCQ.EnqueueWriteBuffer(task1.clSamplesBytes, false, 0, sizeof(int) * stride * strideCount, task1.clSamplesBytesPtr);
|
||||
//task.openCLCQ.EnqueueUnmapMemObject(task.clSamplesBytes, task.clSamplesBytes.HostPtr);
|
||||
//task.openCLCQ.EnqueueMapBuffer(task.clSamplesBytes, true, MapFlags.WRITE, 0, task.samplesBufferLen / 2);
|
||||
task1.EnqueueKernels();
|
||||
if (task2.strideCount > 0)
|
||||
task2.openCLCQ.Finish();
|
||||
int bs = stride * strideCount;
|
||||
samplesInBuffer -= bs;
|
||||
if (samplesInBuffer > 0)
|
||||
AudioSamples.MemCpy(
|
||||
((byte*)task2.clSamplesBytesPtr),
|
||||
((byte*)task1.clSamplesBytesPtr) + bs * _pcm.BlockAlign,
|
||||
samplesInBuffer * _pcm.BlockAlign);
|
||||
CLParityTask tmp = task1;
|
||||
task1 = task2;
|
||||
task2 = tmp;
|
||||
task1.strideCount = 0;
|
||||
}
|
||||
|
||||
public string Path { get { return null; } }
|
||||
|
||||
public static readonly string vendor_string = "CLParity#2.1.6";
|
||||
}
|
||||
|
||||
internal class CLParityTask
|
||||
{
|
||||
Program openCLProgram;
|
||||
public CommandQueue openCLCQ;
|
||||
public Kernel reedSolomonInit;
|
||||
public Kernel reedSolomonInitGx;
|
||||
public Kernel reedSolomonA;
|
||||
public Kernel reedSolomonB;
|
||||
public Kernel reedSolomon;
|
||||
public Kernel reedSolomonDecodeInit;
|
||||
public Kernel reedSolomonDecode;
|
||||
public Kernel chienSearch;
|
||||
public Mem clSamplesBytes;
|
||||
public Mem clExp;
|
||||
public Mem clEncodeGx0;
|
||||
public Mem clEncodeGx1;
|
||||
public Mem clParity0;
|
||||
public Mem clParity1;
|
||||
public Mem clSigma;
|
||||
public Mem clWkOut;
|
||||
|
||||
public Mem clSamplesBytesPinned;
|
||||
public Mem clExpPinned;
|
||||
public Mem clParity0Pinned;
|
||||
public Mem clParity1Pinned;
|
||||
|
||||
public IntPtr clSamplesBytesPtr;
|
||||
public IntPtr clExpPtr;
|
||||
public IntPtr clParity0Ptr;
|
||||
public IntPtr clParity1Ptr;
|
||||
|
||||
public int[] samplesBuffer;
|
||||
public int strideCount = 0;
|
||||
public int npar;
|
||||
public int stride;
|
||||
public int maxStridesCount;
|
||||
|
||||
public Thread workThread = null;
|
||||
public Exception exception = null;
|
||||
public bool done = false;
|
||||
public bool exit = false;
|
||||
|
||||
public int groupSize = 128;
|
||||
public CLParityWriter writer;
|
||||
public bool UseMappedMemory = false;
|
||||
|
||||
unsafe public CLParityTask(Program _openCLProgram, CLParityWriter writer, int groupSize, int npar, int stride, int maxStridesCount)
|
||||
{
|
||||
this.UseMappedMemory = writer._settings.MappedMemory || writer._settings.DeviceType == OpenCLDeviceType.CPU;
|
||||
this.groupSize = groupSize;
|
||||
this.writer = writer;
|
||||
openCLProgram = _openCLProgram;
|
||||
#if DEBUG
|
||||
var prop = CommandQueueProperties.PROFILING_ENABLE;
|
||||
#else
|
||||
var prop = CommandQueueProperties.NONE;
|
||||
#endif
|
||||
openCLCQ = openCLProgram.Context.CreateCommandQueue(openCLProgram.Context.Devices[0], prop);
|
||||
|
||||
this.npar = npar;
|
||||
this.stride = stride;
|
||||
this.maxStridesCount = maxStridesCount;
|
||||
|
||||
int samplesBufferLen = this.maxStridesCount * this.stride * sizeof(int);
|
||||
int parityLength = (this.npar + 1) * sizeof(int);
|
||||
int encodeGxLength = (this.npar + this.groupSize) * sizeof(int);
|
||||
int expLength = this.npar * sizeof(int);
|
||||
int sigmaLength = this.npar * sizeof(int);
|
||||
//int wkOutLength = this.npar * sizeof(int);
|
||||
|
||||
if (!this.UseMappedMemory)
|
||||
{
|
||||
clSamplesBytes = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE, samplesBufferLen);
|
||||
clParity0 = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE, parityLength);
|
||||
clParity1 = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE, parityLength);
|
||||
clExp = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE, expLength);
|
||||
|
||||
clSamplesBytesPinned = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE | MemFlags.ALLOC_HOST_PTR, samplesBufferLen);
|
||||
clParity0Pinned = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE | MemFlags.ALLOC_HOST_PTR, parityLength);
|
||||
clParity1Pinned = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE | MemFlags.ALLOC_HOST_PTR, parityLength);
|
||||
clExpPinned = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE | MemFlags.ALLOC_HOST_PTR, expLength);
|
||||
|
||||
clSamplesBytesPtr = openCLCQ.EnqueueMapBuffer(clSamplesBytesPinned, true, MapFlags.READ_WRITE, 0, samplesBufferLen);
|
||||
clParity0Ptr = openCLCQ.EnqueueMapBuffer(clParity0Pinned, true, MapFlags.READ_WRITE, 0, parityLength);
|
||||
clParity1Ptr = openCLCQ.EnqueueMapBuffer(clParity1Pinned, true, MapFlags.READ_WRITE, 0, parityLength);
|
||||
clExpPtr = openCLCQ.EnqueueMapBuffer(clExpPinned, true, MapFlags.READ_WRITE, 0, expLength);
|
||||
}
|
||||
else
|
||||
{
|
||||
clSamplesBytes = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE | MemFlags.ALLOC_HOST_PTR, samplesBufferLen);
|
||||
clParity0 = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE | MemFlags.ALLOC_HOST_PTR, parityLength);
|
||||
clParity1 = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE | MemFlags.ALLOC_HOST_PTR, parityLength);
|
||||
clExp = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE | MemFlags.ALLOC_HOST_PTR, expLength);
|
||||
|
||||
clSamplesBytesPtr = openCLCQ.EnqueueMapBuffer(clSamplesBytes, true, MapFlags.READ_WRITE, 0, samplesBufferLen);
|
||||
clParity0Ptr = openCLCQ.EnqueueMapBuffer(clParity0, true, MapFlags.READ_WRITE, 0, parityLength);
|
||||
clParity1Ptr = openCLCQ.EnqueueMapBuffer(clParity1, true, MapFlags.READ_WRITE, 0, parityLength);
|
||||
clExpPtr = openCLCQ.EnqueueMapBuffer(clExp, true, MapFlags.READ_WRITE, 0, expLength);
|
||||
|
||||
//clSamplesBytesPtr = clSamplesBytes.HostPtr;
|
||||
//clResidualPtr = clResidual.HostPtr;
|
||||
//clBestRiceParamsPtr = clBestRiceParams.HostPtr;
|
||||
//clResidualTasksPtr = clResidualTasks.HostPtr;
|
||||
//clWindowFunctionsPtr = clWindowFunctions.HostPtr;
|
||||
}
|
||||
|
||||
clEncodeGx0 = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE, encodeGxLength);
|
||||
clEncodeGx1 = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE, encodeGxLength);
|
||||
|
||||
//clSamples = openCLProgram.Context.CreateBuffer(MemFlags.READ_WRITE, samplesBufferLen);
|
||||
//openCLCQ.EnqueueMapBuffer(clSamplesBytes, true, MapFlags.WRITE, 0, samplesBufferLen / 2);
|
||||
|
||||
reedSolomonInit = openCLProgram.CreateKernel("reedSolomonInit");
|
||||
reedSolomonInitGx = openCLProgram.CreateKernel("reedSolomonInitGx");
|
||||
reedSolomonA = openCLProgram.CreateKernel("reedSolomonA");
|
||||
reedSolomonB = openCLProgram.CreateKernel("reedSolomonB");
|
||||
reedSolomon = openCLProgram.CreateKernel("reedSolomon");
|
||||
reedSolomonDecodeInit = openCLProgram.CreateKernel("reedSolomonDecodeInit");
|
||||
reedSolomonDecode = openCLProgram.CreateKernel("reedSolomonDecode");
|
||||
chienSearch = openCLProgram.CreateKernel("chienSearch");
|
||||
|
||||
samplesBuffer = new int[this.maxStridesCount * this.stride];
|
||||
|
||||
InitData();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (workThread != null)
|
||||
{
|
||||
lock (this)
|
||||
{
|
||||
exit = true;
|
||||
Monitor.Pulse(this);
|
||||
}
|
||||
workThread.Join();
|
||||
workThread = null;
|
||||
}
|
||||
|
||||
openCLCQ.Finish();
|
||||
|
||||
reedSolomonInit.Dispose();
|
||||
reedSolomonInitGx.Dispose();
|
||||
reedSolomonA.Dispose();
|
||||
reedSolomonB.Dispose();
|
||||
reedSolomon.Dispose();
|
||||
reedSolomonDecodeInit.Dispose();
|
||||
reedSolomonDecode.Dispose();
|
||||
chienSearch.Dispose();
|
||||
|
||||
if (!this.UseMappedMemory)
|
||||
{
|
||||
if (clSamplesBytesPtr != IntPtr.Zero)
|
||||
openCLCQ.EnqueueUnmapMemObject(clSamplesBytesPinned, clSamplesBytesPtr);
|
||||
clSamplesBytesPtr = IntPtr.Zero;
|
||||
if (clParity0Ptr != IntPtr.Zero)
|
||||
openCLCQ.EnqueueUnmapMemObject(clParity0Pinned, clParity0Ptr);
|
||||
clParity0Ptr = IntPtr.Zero;
|
||||
if (clParity1Ptr != IntPtr.Zero)
|
||||
openCLCQ.EnqueueUnmapMemObject(clParity1Pinned, clParity1Ptr);
|
||||
clParity1Ptr = IntPtr.Zero;
|
||||
if (clExpPtr != IntPtr.Zero)
|
||||
openCLCQ.EnqueueUnmapMemObject(clExpPinned, clExpPtr);
|
||||
clExpPtr = IntPtr.Zero;
|
||||
|
||||
clSamplesBytesPinned.Dispose();
|
||||
clParity0Pinned.Dispose();
|
||||
clParity1Pinned.Dispose();
|
||||
clExpPinned.Dispose();
|
||||
}
|
||||
else
|
||||
{
|
||||
openCLCQ.EnqueueUnmapMemObject(clSamplesBytes, clSamplesBytesPtr);
|
||||
openCLCQ.EnqueueUnmapMemObject(clParity0, clParity0Ptr);
|
||||
openCLCQ.EnqueueUnmapMemObject(clParity1, clParity1Ptr);
|
||||
openCLCQ.EnqueueUnmapMemObject(clExp, clExpPtr);
|
||||
}
|
||||
|
||||
clSamplesBytes.Dispose();
|
||||
clParity0.Dispose();
|
||||
clParity1.Dispose();
|
||||
clEncodeGx0.Dispose();
|
||||
clEncodeGx1.Dispose();
|
||||
clExp.Dispose();
|
||||
|
||||
//clSamples.Dispose();
|
||||
|
||||
openCLCQ.Dispose();
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
private unsafe void InitData()
|
||||
{
|
||||
reedSolomonInit.SetArgs(
|
||||
clEncodeGx0,
|
||||
clEncodeGx1,
|
||||
clParity0,
|
||||
clParity1,
|
||||
npar);
|
||||
|
||||
openCLCQ.EnqueueNDRangeKernel(
|
||||
reedSolomonInit,
|
||||
groupSize, npar / groupSize);
|
||||
|
||||
for (int i = 0; i < npar / (groupSize / 2); i++)
|
||||
{
|
||||
reedSolomonInitGx.SetArgs(
|
||||
clExp,
|
||||
clEncodeGx0,
|
||||
clEncodeGx1,
|
||||
npar,
|
||||
i);
|
||||
|
||||
openCLCQ.EnqueueNDRangeKernel(
|
||||
reedSolomonInitGx,
|
||||
groupSize, npar / (groupSize / 2));
|
||||
|
||||
var temp = clEncodeGx0; clEncodeGx0 = clEncodeGx1; clEncodeGx1 = temp;
|
||||
}
|
||||
}
|
||||
|
||||
internal unsafe void EnqueueKernels()
|
||||
{
|
||||
int blocks = strideCount / groupSize;
|
||||
for (int i = 0; i < blocks; i++)
|
||||
{
|
||||
reedSolomonA.SetArgs(clSamplesBytes, clEncodeGx0, clParity0, this.npar, i * groupSize);
|
||||
openCLCQ.EnqueueNDRangeKernel(reedSolomonA, groupSize, 1);
|
||||
reedSolomonB.SetArgs(clSamplesBytes, clEncodeGx0, clParity0, this.npar, i * groupSize);
|
||||
openCLCQ.EnqueueNDRangeKernel(reedSolomonB, groupSize, npar / groupSize);
|
||||
}
|
||||
for (int i = blocks * groupSize; i < strideCount; i++)
|
||||
{
|
||||
reedSolomon.SetArgs(clSamplesBytes, clEncodeGx0, clParity0, clParity1, this.npar, i);
|
||||
openCLCQ.EnqueueNDRangeKernel(reedSolomon, groupSize, npar / groupSize);
|
||||
var temp = clParity0; clParity0 = clParity1; clParity1 = temp;
|
||||
}
|
||||
|
||||
//openCLCQ.EnqueueReadBuffer(clRiceOutput, false, 0, (channels * frameSize * (writer.PCM.BitsPerSample + 1) + 256) / 8 * frameCount, clRiceOutputPtr);
|
||||
}
|
||||
}
|
||||
|
||||
#if LKJLKJLJK
|
||||
public static class OpenCLExtensions
|
||||
{
|
||||
public static void SetArgs(this Kernel kernel, params object[] args)
|
||||
{
|
||||
int i = 0;
|
||||
foreach (object arg in args)
|
||||
{
|
||||
if (arg is int)
|
||||
kernel.SetArg(i, (int)arg);
|
||||
else if (arg is Mem)
|
||||
kernel.SetArg(i, (Mem)arg);
|
||||
else
|
||||
throw new ArgumentException("Invalid argument type", arg.GetType().ToString());
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
public static void EnqueueNDRangeKernel(this CommandQueue queue, Kernel kernel, long localSize, long globalSize)
|
||||
{
|
||||
if (localSize == 0)
|
||||
queue.EnqueueNDRangeKernel(kernel, 1, null, new long[] { globalSize }, null);
|
||||
else
|
||||
queue.EnqueueNDRangeKernel(kernel, 1, null, new long[] { localSize * globalSize }, new long[] { localSize });
|
||||
}
|
||||
|
||||
public static void EnqueueNDRangeKernel(this CommandQueue queue, Kernel kernel, long localSizeX, long localSizeY, long globalSizeX, long globalSizeY)
|
||||
{
|
||||
queue.EnqueueNDRangeKernel(kernel, 2, null, new long[] { localSizeX * globalSizeX, localSizeY * globalSizeY }, new long[] { localSizeX, localSizeY });
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
127
CUETools.CLParity/CUETools.CLParity.csproj
Normal file
127
CUETools.CLParity/CUETools.CLParity.csproj
Normal file
@@ -0,0 +1,127 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{D41FEFF9-9D43-4049-BF9B-B13D9AC7E192}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUETools.CLParity</RootNamespace>
|
||||
<AssemblyName>CUETools.CLParity</AssemblyName>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation>
|
||||
</UpgradeBackupLocation>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\bin\Debug\plugins\net40\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\plugins\net40\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="OpenCLNet, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\ThirdParty\OpenCLNet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CLParity.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.Codecs.FLAKE\CUETools.Codecs.FLAKE.csproj">
|
||||
<Project>{082D6B9E-326E-4D15-9798-EDAE9EDE70A6}</Project>
|
||||
<Name>CUETools.Codecs.FLAKE</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||
<Name>CUETools.Codecs</Name>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="parity.cl">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.ru-RU.resx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>
|
||||
</PostBuildEvent>
|
||||
<PreBuildEvent>
|
||||
</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,35 +1,35 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CUEControls")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUEControls")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("3c6acc24-0c31-4ad1-8856-218877a987fd")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("2.1.6.0")]
|
||||
[assembly: AssemblyFileVersion("2.1.6.0")]
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CUETools.CLParity")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.CLParity")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2011 Gregory S. Chudov")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("b28ffece-6c89-426b-b227-e647b435cc3d")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("2.1.6.0")]
|
||||
[assembly: AssemblyFileVersion("2.1.6.0")]
|
||||
180
CUETools.CLParity/Properties/Resources.Designer.cs
generated
Normal file
180
CUETools.CLParity/Properties/Resources.Designer.cs
generated
Normal file
@@ -0,0 +1,180 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.18033
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace CUETools.CLParity.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CUETools.CLParity.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Use additional CPU threads.
|
||||
/// </summary>
|
||||
internal static string DescriptionCPUThreads {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionCPUThreads", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Additional preprocessor definitions for OpenCL kernel.
|
||||
/// </summary>
|
||||
internal static string DescriptionDefines {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionDefines", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Use CPU or GPU device.
|
||||
/// </summary>
|
||||
internal static string DescriptionDeviceType {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionDeviceType", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Do final encoding stages on GPU (experimental).
|
||||
/// </summary>
|
||||
internal static string DescriptionDoRice {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionDoRice", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Use GPU on all stages.
|
||||
/// </summary>
|
||||
internal static string DescriptionGPUOnly {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionGPUOnly", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to GPU thread block size (64, 128, 256).
|
||||
/// </summary>
|
||||
internal static string DescriptionGroupSize {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionGroupSize", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Device uses host memory (Don't use).
|
||||
/// </summary>
|
||||
internal static string DescriptionMappedMemory {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionMappedMemory", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to OpenCL platform to use.
|
||||
/// </summary>
|
||||
internal static string DescriptionPlatform {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionPlatform", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Number of frames processed per one multiprocessor.
|
||||
/// </summary>
|
||||
internal static string DescriptionTaskSize {
|
||||
get {
|
||||
return ResourceManager.GetString("DescriptionTaskSize", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Calculate MD5 hash for audio stream.
|
||||
/// </summary>
|
||||
internal static string DoMD5Description {
|
||||
get {
|
||||
return ResourceManager.GetString("DoMD5Description", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Decode each frame and compare with original.
|
||||
/// </summary>
|
||||
internal static string DoVerifyDescription {
|
||||
get {
|
||||
return ResourceManager.GetString("DoVerifyDescription", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Samples written differs from the expected sample count.
|
||||
/// </summary>
|
||||
internal static string ExceptionSampleCount {
|
||||
get {
|
||||
return ResourceManager.GetString("ExceptionSampleCount", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Validation failed.
|
||||
/// </summary>
|
||||
internal static string ExceptionValidationFailed {
|
||||
get {
|
||||
return ResourceManager.GetString("ExceptionValidationFailed", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
159
CUETools.CLParity/Properties/Resources.resx
Normal file
159
CUETools.CLParity/Properties/Resources.resx
Normal file
@@ -0,0 +1,159 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="DescriptionCPUThreads" xml:space="preserve">
|
||||
<value>Use additional CPU threads</value>
|
||||
</data>
|
||||
<data name="DescriptionDefines" xml:space="preserve">
|
||||
<value>Additional preprocessor definitions for OpenCL kernel</value>
|
||||
</data>
|
||||
<data name="DescriptionDeviceType" xml:space="preserve">
|
||||
<value>Use CPU or GPU device</value>
|
||||
</data>
|
||||
<data name="DescriptionDoRice" xml:space="preserve">
|
||||
<value>Do final encoding stages on GPU (experimental)</value>
|
||||
</data>
|
||||
<data name="DescriptionGPUOnly" xml:space="preserve">
|
||||
<value>Use GPU on all stages</value>
|
||||
</data>
|
||||
<data name="DescriptionGroupSize" xml:space="preserve">
|
||||
<value>GPU thread block size (64, 128, 256)</value>
|
||||
</data>
|
||||
<data name="DescriptionMappedMemory" xml:space="preserve">
|
||||
<value>Device uses host memory (Don't use)</value>
|
||||
</data>
|
||||
<data name="DescriptionPlatform" xml:space="preserve">
|
||||
<value>OpenCL platform to use</value>
|
||||
</data>
|
||||
<data name="DescriptionTaskSize" xml:space="preserve">
|
||||
<value>Number of frames processed per one multiprocessor</value>
|
||||
</data>
|
||||
<data name="DoMD5Description" xml:space="preserve">
|
||||
<value>Calculate MD5 hash for audio stream</value>
|
||||
</data>
|
||||
<data name="DoVerifyDescription" xml:space="preserve">
|
||||
<value>Decode each frame and compare with original</value>
|
||||
</data>
|
||||
<data name="ExceptionSampleCount" xml:space="preserve">
|
||||
<value>Samples written differs from the expected sample count</value>
|
||||
</data>
|
||||
<data name="ExceptionValidationFailed" xml:space="preserve">
|
||||
<value>Validation failed</value>
|
||||
</data>
|
||||
</root>
|
||||
138
CUETools.CLParity/Properties/Resources.ru-RU.resx
Normal file
138
CUETools.CLParity/Properties/Resources.ru-RU.resx
Normal file
@@ -0,0 +1,138 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="DescriptionCPUThreads" xml:space="preserve">
|
||||
<value>Использовать дополнительные потоки</value>
|
||||
</data>
|
||||
<data name="DescriptionGPUOnly" xml:space="preserve">
|
||||
<value>Использовать GPU на всех стадиях</value>
|
||||
</data>
|
||||
<data name="DoMD5Description" xml:space="preserve">
|
||||
<value>Вычислять MD5-хеш аудиопотока</value>
|
||||
</data>
|
||||
<data name="DoVerifyDescription" xml:space="preserve">
|
||||
<value>Декодировать каждый блок и сравнивать с оригиналом</value>
|
||||
</data>
|
||||
<data name="ExceptionSampleCount" xml:space="preserve">
|
||||
<value>Количество записанных сэмплов отличается от ожидавшегося</value>
|
||||
</data>
|
||||
<data name="ExceptionValidationFailed" xml:space="preserve">
|
||||
<value>Ошибка верификации</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
CUETools.CLParity/fastdecode/0901.1886v1.pdf
Normal file
BIN
CUETools.CLParity/fastdecode/0901.1886v1.pdf
Normal file
Binary file not shown.
3
CUETools.CLParity/fastdecode/0901.1886v1.txt
Normal file
3
CUETools.CLParity/fastdecode/0901.1886v1.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
q = 2^m = 65536, m = 16
|
||||
k == npar?
|
||||
n < q
|
||||
1
CUETools.CLParity/fastdecode/VERSION
Normal file
1
CUETools.CLParity/fastdecode/VERSION
Normal file
@@ -0,0 +1 @@
|
||||
Mon Jul 13 12:03:07 CEST 2009
|
||||
20
CUETools.CLParity/fastdecode/fastdecode.sln
Normal file
20
CUETools.CLParity/fastdecode/fastdecode.sln
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fastdecode", "fastdecode.vcproj", "{32B8B6B7-FAED-4D9D-B90D-7E5C1E392DD8}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{32B8B6B7-FAED-4D9D-B90D-7E5C1E392DD8}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{32B8B6B7-FAED-4D9D-B90D-7E5C1E392DD8}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{32B8B6B7-FAED-4D9D-B90D-7E5C1E392DD8}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{32B8B6B7-FAED-4D9D-B90D-7E5C1E392DD8}.Release|Win32.Build.0 = Release|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,194 +1,204 @@
|
||||
<?xml version="1.0" encoding="Windows-1252"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="8.00"
|
||||
Name="flac_ren"
|
||||
ProjectGUID="{4cefbc7f-c215-11db-8314-0800200c9a66}"
|
||||
RootNamespace="flac_ren"
|
||||
Keyword="Win32Proj"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="..\..\..\objs\debug\bin"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings="4267;4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
IgnoreDefaultLibraryNames="uuid.lib"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="..\..\..\objs\release\bin"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
EnableIntrinsicFunctions="true"
|
||||
FavorSizeOrSpeed="1"
|
||||
OmitFramePointers="true"
|
||||
WholeProgramOptimization="true"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
|
||||
RuntimeLibrary="0"
|
||||
BufferSecurityCheck="false"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="0"
|
||||
DisableSpecificWarnings="4267;4996"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="1"
|
||||
IgnoreDefaultLibraryNames="uuid.lib"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
LinkTimeCodeGeneration="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\main.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<VisualStudioProject
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
Name="fastdecode"
|
||||
ProjectGUID="{32B8B6B7-FAED-4D9D-B90D-7E5C1E392DD8}"
|
||||
Keyword="Win32Proj"
|
||||
TargetFrameworkVersion="0"
|
||||
>
|
||||
<Platforms>
|
||||
<Platform
|
||||
Name="Win32"
|
||||
/>
|
||||
</Platforms>
|
||||
<ToolFiles>
|
||||
</ToolFiles>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
OutputDirectory="Debug"
|
||||
IntermediateDirectory="Debug"
|
||||
ConfigurationType="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="4"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
OutputDirectory="Release"
|
||||
IntermediateDirectory="Release"
|
||||
ConfigurationType="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
WarningLevel="3"
|
||||
Detect64BitPortabilityProblems="true"
|
||||
DebugInformationFormat="3"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
SubSystem="1"
|
||||
OptimizeReferences="2"
|
||||
EnableCOMDATFolding="2"
|
||||
TargetMachine="1"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManifestTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCAppVerifierTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<References>
|
||||
</References>
|
||||
<Files>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\reed_solomon.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Resource Files"
|
||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||
>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Source Files"
|
||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\main.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\reed_solomon.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\speed.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\test_rs.c"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
</VisualStudioProject>
|
||||
@@ -0,0 +1,65 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<VisualStudioUserFile
|
||||
ProjectType="Visual C++"
|
||||
Version="9,00"
|
||||
ShowAllFiles="false"
|
||||
>
|
||||
<Configurations>
|
||||
<Configuration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<DebugSettings
|
||||
Command="$(TargetPath)"
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="FANDRAHOMEVS"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="Release|Win32"
|
||||
>
|
||||
<DebugSettings
|
||||
Command="$(TargetPath)"
|
||||
WorkingDirectory=""
|
||||
CommandArguments=""
|
||||
Attach="false"
|
||||
DebuggerType="3"
|
||||
Remote="1"
|
||||
RemoteMachine="FANDRAHOMEVS"
|
||||
RemoteCommand=""
|
||||
HttpUrl=""
|
||||
PDBPath=""
|
||||
SQLDebugging=""
|
||||
Environment=""
|
||||
EnvironmentMerge="true"
|
||||
DebuggerFlavor=""
|
||||
MPIRunCommand=""
|
||||
MPIRunArguments=""
|
||||
MPIRunWorkingDirectory=""
|
||||
ApplicationCommand=""
|
||||
ApplicationArguments=""
|
||||
ShimCommand=""
|
||||
MPIAcceptMode=""
|
||||
MPIAcceptFilter=""
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
</VisualStudioUserFile>
|
||||
1
CUETools.CLParity/fastdecode/fastdecode.vcproj.user
Normal file
1
CUETools.CLParity/fastdecode/fastdecode.vcproj.user
Normal file
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><VisualStudioUserFile ProjectType="Visual C++" Version="9.00" ShowAllFiles="true"></VisualStudioUserFile>
|
||||
305
CUETools.CLParity/fastdecode/inttypes.h
Normal file
305
CUETools.CLParity/fastdecode/inttypes.h
Normal file
@@ -0,0 +1,305 @@
|
||||
// ISO C9x compliant inttypes.h for Microsoft Visual Studio
|
||||
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
||||
//
|
||||
// Copyright (c) 2006 Alexander Chemeris
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
//
|
||||
// 2. Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
//
|
||||
// 3. The name of the author may be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _MSC_VER // [
|
||||
#error "Use this header only with Microsoft Visual C++ compilers!"
|
||||
#endif // _MSC_VER ]
|
||||
|
||||
#ifndef _MSC_INTTYPES_H_ // [
|
||||
#define _MSC_INTTYPES_H_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
// 7.8 Format conversion of integer types
|
||||
|
||||
typedef struct {
|
||||
intmax_t quot;
|
||||
intmax_t rem;
|
||||
} imaxdiv_t;
|
||||
|
||||
// 7.8.1 Macros for format specifiers
|
||||
|
||||
#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198
|
||||
|
||||
// The fprintf macros for signed integers are:
|
||||
#define PRId8 "d"
|
||||
#define PRIi8 "i"
|
||||
#define PRIdLEAST8 "d"
|
||||
#define PRIiLEAST8 "i"
|
||||
#define PRIdFAST8 "d"
|
||||
#define PRIiFAST8 "i"
|
||||
|
||||
#define PRId16 "hd"
|
||||
#define PRIi16 "hi"
|
||||
#define PRIdLEAST16 "hd"
|
||||
#define PRIiLEAST16 "hi"
|
||||
#define PRIdFAST16 "hd"
|
||||
#define PRIiFAST16 "hi"
|
||||
|
||||
#define PRId32 "I32d"
|
||||
#define PRIi32 "I32i"
|
||||
#define PRIdLEAST32 "I32d"
|
||||
#define PRIiLEAST32 "I32i"
|
||||
#define PRIdFAST32 "I32d"
|
||||
#define PRIiFAST32 "I32i"
|
||||
|
||||
#define PRId64 "I64d"
|
||||
#define PRIi64 "I64i"
|
||||
#define PRIdLEAST64 "I64d"
|
||||
#define PRIiLEAST64 "I64i"
|
||||
#define PRIdFAST64 "I64d"
|
||||
#define PRIiFAST64 "I64i"
|
||||
|
||||
#define PRIdMAX "I64d"
|
||||
#define PRIiMAX "I64i"
|
||||
|
||||
#define PRIdPTR "Id"
|
||||
#define PRIiPTR "Ii"
|
||||
|
||||
// The fprintf macros for unsigned integers are:
|
||||
#define PRIo8 "o"
|
||||
#define PRIu8 "u"
|
||||
#define PRIx8 "x"
|
||||
#define PRIX8 "X"
|
||||
#define PRIoLEAST8 "o"
|
||||
#define PRIuLEAST8 "u"
|
||||
#define PRIxLEAST8 "x"
|
||||
#define PRIXLEAST8 "X"
|
||||
#define PRIoFAST8 "o"
|
||||
#define PRIuFAST8 "u"
|
||||
#define PRIxFAST8 "x"
|
||||
#define PRIXFAST8 "X"
|
||||
|
||||
#define PRIo16 "ho"
|
||||
#define PRIu16 "hu"
|
||||
#define PRIx16 "hx"
|
||||
#define PRIX16 "hX"
|
||||
#define PRIoLEAST16 "ho"
|
||||
#define PRIuLEAST16 "hu"
|
||||
#define PRIxLEAST16 "hx"
|
||||
#define PRIXLEAST16 "hX"
|
||||
#define PRIoFAST16 "ho"
|
||||
#define PRIuFAST16 "hu"
|
||||
#define PRIxFAST16 "hx"
|
||||
#define PRIXFAST16 "hX"
|
||||
|
||||
#define PRIo32 "I32o"
|
||||
#define PRIu32 "I32u"
|
||||
#define PRIx32 "I32x"
|
||||
#define PRIX32 "I32X"
|
||||
#define PRIoLEAST32 "I32o"
|
||||
#define PRIuLEAST32 "I32u"
|
||||
#define PRIxLEAST32 "I32x"
|
||||
#define PRIXLEAST32 "I32X"
|
||||
#define PRIoFAST32 "I32o"
|
||||
#define PRIuFAST32 "I32u"
|
||||
#define PRIxFAST32 "I32x"
|
||||
#define PRIXFAST32 "I32X"
|
||||
|
||||
#define PRIo64 "I64o"
|
||||
#define PRIu64 "I64u"
|
||||
#define PRIx64 "I64x"
|
||||
#define PRIX64 "I64X"
|
||||
#define PRIoLEAST64 "I64o"
|
||||
#define PRIuLEAST64 "I64u"
|
||||
#define PRIxLEAST64 "I64x"
|
||||
#define PRIXLEAST64 "I64X"
|
||||
#define PRIoFAST64 "I64o"
|
||||
#define PRIuFAST64 "I64u"
|
||||
#define PRIxFAST64 "I64x"
|
||||
#define PRIXFAST64 "I64X"
|
||||
|
||||
#define PRIoMAX "I64o"
|
||||
#define PRIuMAX "I64u"
|
||||
#define PRIxMAX "I64x"
|
||||
#define PRIXMAX "I64X"
|
||||
|
||||
#define PRIoPTR "Io"
|
||||
#define PRIuPTR "Iu"
|
||||
#define PRIxPTR "Ix"
|
||||
#define PRIXPTR "IX"
|
||||
|
||||
// The fscanf macros for signed integers are:
|
||||
#define SCNd8 "d"
|
||||
#define SCNi8 "i"
|
||||
#define SCNdLEAST8 "d"
|
||||
#define SCNiLEAST8 "i"
|
||||
#define SCNdFAST8 "d"
|
||||
#define SCNiFAST8 "i"
|
||||
|
||||
#define SCNd16 "hd"
|
||||
#define SCNi16 "hi"
|
||||
#define SCNdLEAST16 "hd"
|
||||
#define SCNiLEAST16 "hi"
|
||||
#define SCNdFAST16 "hd"
|
||||
#define SCNiFAST16 "hi"
|
||||
|
||||
#define SCNd32 "ld"
|
||||
#define SCNi32 "li"
|
||||
#define SCNdLEAST32 "ld"
|
||||
#define SCNiLEAST32 "li"
|
||||
#define SCNdFAST32 "ld"
|
||||
#define SCNiFAST32 "li"
|
||||
|
||||
#define SCNd64 "I64d"
|
||||
#define SCNi64 "I64i"
|
||||
#define SCNdLEAST64 "I64d"
|
||||
#define SCNiLEAST64 "I64i"
|
||||
#define SCNdFAST64 "I64d"
|
||||
#define SCNiFAST64 "I64i"
|
||||
|
||||
#define SCNdMAX "I64d"
|
||||
#define SCNiMAX "I64i"
|
||||
|
||||
#ifdef _WIN64 // [
|
||||
# define SCNdPTR "I64d"
|
||||
# define SCNiPTR "I64i"
|
||||
#else // _WIN64 ][
|
||||
# define SCNdPTR "ld"
|
||||
# define SCNiPTR "li"
|
||||
#endif // _WIN64 ]
|
||||
|
||||
// The fscanf macros for unsigned integers are:
|
||||
#define SCNo8 "o"
|
||||
#define SCNu8 "u"
|
||||
#define SCNx8 "x"
|
||||
#define SCNX8 "X"
|
||||
#define SCNoLEAST8 "o"
|
||||
#define SCNuLEAST8 "u"
|
||||
#define SCNxLEAST8 "x"
|
||||
#define SCNXLEAST8 "X"
|
||||
#define SCNoFAST8 "o"
|
||||
#define SCNuFAST8 "u"
|
||||
#define SCNxFAST8 "x"
|
||||
#define SCNXFAST8 "X"
|
||||
|
||||
#define SCNo16 "ho"
|
||||
#define SCNu16 "hu"
|
||||
#define SCNx16 "hx"
|
||||
#define SCNX16 "hX"
|
||||
#define SCNoLEAST16 "ho"
|
||||
#define SCNuLEAST16 "hu"
|
||||
#define SCNxLEAST16 "hx"
|
||||
#define SCNXLEAST16 "hX"
|
||||
#define SCNoFAST16 "ho"
|
||||
#define SCNuFAST16 "hu"
|
||||
#define SCNxFAST16 "hx"
|
||||
#define SCNXFAST16 "hX"
|
||||
|
||||
#define SCNo32 "lo"
|
||||
#define SCNu32 "lu"
|
||||
#define SCNx32 "lx"
|
||||
#define SCNX32 "lX"
|
||||
#define SCNoLEAST32 "lo"
|
||||
#define SCNuLEAST32 "lu"
|
||||
#define SCNxLEAST32 "lx"
|
||||
#define SCNXLEAST32 "lX"
|
||||
#define SCNoFAST32 "lo"
|
||||
#define SCNuFAST32 "lu"
|
||||
#define SCNxFAST32 "lx"
|
||||
#define SCNXFAST32 "lX"
|
||||
|
||||
#define SCNo64 "I64o"
|
||||
#define SCNu64 "I64u"
|
||||
#define SCNx64 "I64x"
|
||||
#define SCNX64 "I64X"
|
||||
#define SCNoLEAST64 "I64o"
|
||||
#define SCNuLEAST64 "I64u"
|
||||
#define SCNxLEAST64 "I64x"
|
||||
#define SCNXLEAST64 "I64X"
|
||||
#define SCNoFAST64 "I64o"
|
||||
#define SCNuFAST64 "I64u"
|
||||
#define SCNxFAST64 "I64x"
|
||||
#define SCNXFAST64 "I64X"
|
||||
|
||||
#define SCNoMAX "I64o"
|
||||
#define SCNuMAX "I64u"
|
||||
#define SCNxMAX "I64x"
|
||||
#define SCNXMAX "I64X"
|
||||
|
||||
#ifdef _WIN64 // [
|
||||
# define SCNoPTR "I64o"
|
||||
# define SCNuPTR "I64u"
|
||||
# define SCNxPTR "I64x"
|
||||
# define SCNXPTR "I64X"
|
||||
#else // _WIN64 ][
|
||||
# define SCNoPTR "lo"
|
||||
# define SCNuPTR "lu"
|
||||
# define SCNxPTR "lx"
|
||||
# define SCNXPTR "lX"
|
||||
#endif // _WIN64 ]
|
||||
|
||||
#endif // __STDC_FORMAT_MACROS ]
|
||||
|
||||
// 7.8.2 Functions for greatest-width integer types
|
||||
|
||||
// 7.8.2.1 The imaxabs function
|
||||
#define imaxabs _abs64
|
||||
|
||||
// 7.8.2.2 The imaxdiv function
|
||||
|
||||
// This is modified version of div() function from Microsoft's div.c found
|
||||
// in %MSVC.NET%\crt\src\div.c
|
||||
#ifdef STATIC_IMAXDIV // [
|
||||
static
|
||||
#else // STATIC_IMAXDIV ][
|
||||
_inline
|
||||
#endif // STATIC_IMAXDIV ]
|
||||
imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
|
||||
{
|
||||
imaxdiv_t result;
|
||||
|
||||
result.quot = numer / denom;
|
||||
result.rem = numer % denom;
|
||||
|
||||
if (numer < 0 && result.rem > 0) {
|
||||
// did division wrong; must fix up
|
||||
++result.quot;
|
||||
result.rem -= denom;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// 7.8.2.3 The strtoimax and strtoumax functions
|
||||
#define strtoimax _strtoi64
|
||||
#define strtoumax _strtoui64
|
||||
|
||||
// 7.8.2.4 The wcstoimax and wcstoumax functions
|
||||
#define wcstoimax _wcstoi64
|
||||
#define wcstoumax _wcstoui64
|
||||
|
||||
|
||||
#endif // _MSC_INTTYPES_H_ ]
|
||||
422
CUETools.CLParity/fastdecode/main.c
Normal file
422
CUETools.CLParity/fastdecode/main.c
Normal file
@@ -0,0 +1,422 @@
|
||||
// ************************************************
|
||||
// ************************************************
|
||||
|
||||
// Sample program to use reed_solomon.c
|
||||
// (c) 2009 Frederic Didier.
|
||||
|
||||
#include "reed_solomon.h"
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
#include "time.h"
|
||||
|
||||
/************************************************/
|
||||
/** Random number generator -> 32bits **/
|
||||
/** Mersenne twister code **/
|
||||
/************************************************/
|
||||
|
||||
/* A C-program for MT19937: Integer version */
|
||||
/* genrand() generates one pseudorandom unsigned integer (32bit) */
|
||||
/* which is uniformly distributed among 0 to 2^32-1 for each */
|
||||
/* call. sgenrand(seed) set initial values to the working area */
|
||||
/* of 624 words. Before genrand(), sgenrand(seed) must be */
|
||||
/* called once. (seed is any 32-bit integer except for 0). */
|
||||
/* Coded by Takuji Nishimura, considering the suggestions by */
|
||||
/* Topher Cooper and Marc Rieffel in July-Aug. 1997. */
|
||||
|
||||
/* This library is free software; you can redistribute it and/or */
|
||||
/* modify it under the terms of the GNU Library General Public */
|
||||
/* License as published by the Free Software Foundation; either */
|
||||
/* version 2 of the License, or (at your option) any later */
|
||||
/* version. */
|
||||
/* This library is distributed in the hope that it will be useful, */
|
||||
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */
|
||||
/* See the GNU Library General Public License for more details. */
|
||||
/* You should have received a copy of the GNU Library General */
|
||||
/* Public License along with this library; if not, write to the */
|
||||
/* Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA */
|
||||
/* 02111-1307 USA */
|
||||
|
||||
/* Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. */
|
||||
/* Any feedback is very welcome. For any question, comments, */
|
||||
/* see http://www.math.keio.ac.jp/matumoto/emt.html or email */
|
||||
/* matumoto@math.keio.ac.jp */
|
||||
|
||||
/* Period parameters */
|
||||
#define MT_N 624
|
||||
#define MT_M 397
|
||||
#define MATRIX_A 0x9908b0df /* constant vector a */
|
||||
#define UPPER_MASK 0x80000000 /* most significant w-r bits */
|
||||
#define LOWER_MASK 0x7fffffff /* least significant r bits */
|
||||
|
||||
/* Tempering parameters */
|
||||
#define TEMPERING_MASK_B 0x9d2c5680
|
||||
#define TEMPERING_MASK_C 0xefc60000
|
||||
#define TEMPERING_SHIFT_U(y) (y >> 11)
|
||||
#define TEMPERING_SHIFT_S(y) (y << 7)
|
||||
#define TEMPERING_SHIFT_T(y) (y << 15)
|
||||
#define TEMPERING_SHIFT_L(y) (y >> 18)
|
||||
|
||||
static unsigned long mt[MT_N]; /* the table for the state vector */
|
||||
static int mti=MT_N+1; /* mti==MT_N+1 means mt[MT_N] is not initialized */
|
||||
|
||||
/* initializing the table with a NONZERO seed */
|
||||
void sgenrand(unsigned long seed)
|
||||
{
|
||||
/* setting initial seeds to mt[MT_N] using */
|
||||
/* the generator Line 25 of Table 1 in */
|
||||
/* [KNUTH 1981, The Art of Computer Programming */
|
||||
/* Vol. 2 (2nd Ed.), pp102] */
|
||||
mt[0]= seed & 0xffffffff;
|
||||
for (mti=1; mti<MT_N; mti++)
|
||||
mt[mti] = (69069 * mt[mti-1]) & 0xffffffff;
|
||||
}
|
||||
|
||||
unsigned int genrand()
|
||||
{
|
||||
unsigned int y;
|
||||
static unsigned long mag01[2]={0x0, MATRIX_A};
|
||||
/* mag01[x] = x * MATRIX_A for x=0,1 */
|
||||
|
||||
if (mti >= MT_N) { /* generate MT_N words at one time */
|
||||
int kk;
|
||||
|
||||
if (mti == MT_N+1) /* if sgenrand() has not been called, */
|
||||
sgenrand(4357); /* a default initial seed is used */
|
||||
|
||||
for (kk=0;kk<MT_N-MT_M;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+MT_M] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
for (;kk<MT_N-1;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+(MT_M-MT_N)] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
y = (mt[MT_N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
|
||||
mt[MT_N-1] = mt[MT_M-1] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
|
||||
mti = 0;
|
||||
}
|
||||
|
||||
y = mt[mti++];
|
||||
y ^= TEMPERING_SHIFT_U(y);
|
||||
y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
|
||||
y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C;
|
||||
y ^= TEMPERING_SHIFT_L(y);
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
double double_genrand() {
|
||||
return genrand() * (1.0/4294967295.0);
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
// The Art of Computer programming - Knuth
|
||||
// vol 2 - section 3.4.2 page 137
|
||||
// Algorithm S (Selection sampling technique)
|
||||
|
||||
void generate_positions(int N, int K, int *pos)
|
||||
{
|
||||
int size=N;
|
||||
int w=K;
|
||||
do {
|
||||
if (double_genrand()*size <= w) {
|
||||
pos[K-w] = N-size;
|
||||
w--;
|
||||
}
|
||||
size--;
|
||||
} while (size);
|
||||
}
|
||||
|
||||
//void generate_message(byte *data, int size)
|
||||
//{
|
||||
// int *p = (int *)data;
|
||||
// size >>=2;
|
||||
// int i;
|
||||
// for (i=0; i<size; i++) {
|
||||
// *p++ = genrand();
|
||||
// }
|
||||
//}
|
||||
|
||||
void generate_message(void *data, int size, int n_field)
|
||||
{
|
||||
if (n_field==8 || n_field==16) {
|
||||
int *p = (int *)data;
|
||||
int i;
|
||||
size >>=2;
|
||||
for (i=0; i<size; i++) {
|
||||
*p++ = genrand();
|
||||
}
|
||||
} else {
|
||||
unsigned short int *p = (unsigned short int *)data;
|
||||
int i;
|
||||
size>>=1;
|
||||
for (i=0; i<size; i++) {
|
||||
*p++ = genrand() & ((1<<n_field)-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int compare_message(byte *p, byte *q, int size)
|
||||
{
|
||||
int *pi = (int *)p;
|
||||
int *qi = (int *)q;
|
||||
int res=0;
|
||||
int i;
|
||||
size >>=2;
|
||||
for (i=0; i<size; i++) {
|
||||
if (pi[i]!=qi[i]) {
|
||||
res++;
|
||||
if (res<100) {
|
||||
printf("%d ",i*4);
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
double get_sec(clock_t diff)
|
||||
{
|
||||
return (double)diff / (double)CLOCKS_PER_SEC;
|
||||
}
|
||||
|
||||
double get_rate(clock_t diff, int byte)
|
||||
{
|
||||
return (double)(byte)/((double)(1<<20) * get_sec(diff));
|
||||
}
|
||||
|
||||
double get_KB(int byte)
|
||||
{
|
||||
return (double)byte/(double)(1<<10);
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int i,j,n;
|
||||
clock_t tick;
|
||||
|
||||
// get parameters
|
||||
int n_field,K,N,S,m_size;
|
||||
char flag[256];
|
||||
int inc;
|
||||
int temp=0;
|
||||
int nb_elt;
|
||||
int nb_bloc;
|
||||
int n_walsh=1;
|
||||
int *positions;
|
||||
byte *message;
|
||||
byte *received;
|
||||
byte *codeword;
|
||||
byte *dst;
|
||||
|
||||
// default ones
|
||||
m_size = 1<<26;
|
||||
S = 1<<10;
|
||||
|
||||
// help message
|
||||
if (argc<=5) {
|
||||
printf("usage: %s flag n_field K N S [message size in MB]\n",argv[0]);
|
||||
printf("where flag is a combinaison of \n");
|
||||
printf(" x : Use xor for field multiplication\n");
|
||||
printf(" l : Use another xor version\n");
|
||||
printf(" t : Use table for field multiplication\n");
|
||||
printf(" d : Use direct field multiplication\n");
|
||||
printf(" q : Quadratic algorithm\n");
|
||||
printf(" i : Incremental algorithm\n");
|
||||
printf(" k : Karatsuba algorithm\n");
|
||||
printf(" s : Quadratic with one table for multiplication\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (i=0; i<256; i++) flag[i]=0;
|
||||
i=0;
|
||||
while (argv[1][i]!=0) {
|
||||
flag[argv[1][i]]=1;
|
||||
i++;
|
||||
}
|
||||
|
||||
// read parameters
|
||||
n_field = atoi(argv[2]);
|
||||
K = atoi(argv[3]);
|
||||
N = atoi(argv[4]);
|
||||
if (argc>5) S = atoi(argv[5]);
|
||||
if (argc>6) m_size = atoi(argv[6]) << 20;
|
||||
|
||||
// modify packet size
|
||||
// always divisible by [4],
|
||||
// if xor code used, divisible by [4*n_field]
|
||||
inc = 4 * n_field;
|
||||
while (temp < S) temp +=inc;
|
||||
S = temp;
|
||||
|
||||
// number of field elements per packets.
|
||||
nb_elt = (S * 8) / n_field;
|
||||
|
||||
// compute number of blocs
|
||||
nb_bloc = m_size / (K*S);
|
||||
if (nb_bloc==0) nb_bloc=1;
|
||||
|
||||
// power of two just greater than N
|
||||
while ((1<<n_walsh) < N) n_walsh++;
|
||||
|
||||
// print parameters
|
||||
printf("[parameters]\n");
|
||||
printf("GF 2^%d\n", n_field);
|
||||
printf("n = %d (n_walsh = %d)\n", N, n_walsh);
|
||||
printf("k = %d\n", K);
|
||||
printf("s = %d (bytes per packet)\n", S);
|
||||
|
||||
printf("field elements per packet = %d\n", nb_elt);
|
||||
printf("segment size = %d \n", S/n_field);
|
||||
printf("unused bits per packet = %d\n", S*8 - nb_elt*n_field);
|
||||
printf("number of bloc = %d\n", nb_bloc);
|
||||
printf("bloc size = %f KB\n", get_KB(K*S));
|
||||
printf("message size = %f KB\n", get_KB(K*S*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// code init
|
||||
fill_table(n_field);
|
||||
code_init(n_walsh);
|
||||
|
||||
// method to perform field multiply and xor
|
||||
if (flag['x']) use_xor();
|
||||
if (flag['t']) use_table();
|
||||
if (flag['d']) use_direct();
|
||||
if (flag['l']) use_xor2();
|
||||
|
||||
// method to encode/decode
|
||||
if (flag['q']) use_quadratic();
|
||||
if (flag['i']) use_incremental();
|
||||
if (flag['k']) use_karatsuba();
|
||||
if (flag['s']) use_special();
|
||||
|
||||
if (process==NULL) {
|
||||
printf("you should specify a way to multiply in the field\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (RS_encode == NULL || RS_decode == NULL) {
|
||||
printf("you should specify an algorithm for encoding/decoding\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[initialisation (memory + randomness)]\n");
|
||||
tick = clock();
|
||||
|
||||
// memory for the full message
|
||||
positions = (int *)malloc(sizeof(int)*K*nb_bloc);
|
||||
message = (byte *)malloc(sizeof(byte)*S*K*nb_bloc);
|
||||
received = (byte *)malloc(sizeof(byte)*S*K*nb_bloc);
|
||||
|
||||
// memory for encoding/decoding one bloc
|
||||
codeword = (byte *)malloc(sizeof(byte)*S*N);
|
||||
fast_init(N,S);
|
||||
|
||||
// init random number generator
|
||||
// sgenrand(time(NULL));
|
||||
sgenrand(123);
|
||||
// sgenrand(321);
|
||||
|
||||
// Generate the random message
|
||||
generate_message(message, S*K*nb_bloc, n_field);
|
||||
|
||||
// Generate the random positions
|
||||
for (n=0; n<nb_bloc; n++) {
|
||||
generate_positions(N, K, positions + n*K);
|
||||
}
|
||||
|
||||
// end of initialisation
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*K*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[encoding message]\n");
|
||||
tick = clock();
|
||||
|
||||
encode_init(N, K);
|
||||
|
||||
dst=received;
|
||||
for (n=0; n<nb_bloc; n++)
|
||||
{
|
||||
int *pos = positions + n*K;
|
||||
byte *systematic = message + n*K*S;
|
||||
|
||||
RS_encode(N, K, S, systematic, codeword);
|
||||
|
||||
// simulate errors...
|
||||
for (i=0; i<K; i++)
|
||||
{
|
||||
byte *src;
|
||||
if (pos[i]<K) src = systematic + pos[i] * S;
|
||||
else src = codeword + (pos[i]-K) * S;
|
||||
|
||||
memcpy(dst, src, S);
|
||||
dst += S;
|
||||
}
|
||||
}
|
||||
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*K*nb_bloc));
|
||||
printf("%f MB/s\n", get_rate(tick, S*N*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[decoding]\n");
|
||||
tick = clock();
|
||||
|
||||
double syst=0;
|
||||
for (n=0; n<nb_bloc; n++)
|
||||
{
|
||||
// current bloc
|
||||
int *pos = positions + n*K;
|
||||
byte *rec = received + n*S*K;
|
||||
|
||||
// stat for systematic packet
|
||||
for (i=0; i<K; i++) {
|
||||
if (pos[i]<K) syst++;
|
||||
}
|
||||
|
||||
RS_decode(N, K, S, pos, rec, codeword);
|
||||
|
||||
// put result back into received
|
||||
memcpy(rec, codeword, S*K);
|
||||
}
|
||||
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*K*nb_bloc));
|
||||
printf("%f percent of systematic packets received\n", syst / (double)(K*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
|
||||
// verify that we recovered the message correctly
|
||||
printf("[errors]\n");
|
||||
printf("%d\n\n", compare_message(message, received, S*K*nb_bloc));
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
|
||||
// clear code
|
||||
code_clear();
|
||||
|
||||
// end;
|
||||
return 0;
|
||||
}
|
||||
|
||||
25
CUETools.CLParity/fastdecode/new/README
Normal file
25
CUETools.CLParity/fastdecode/new/README
Normal file
@@ -0,0 +1,25 @@
|
||||
You can find the actual encoding/decoding code in
|
||||
reed_solomon.c and reed_solomon.h
|
||||
|
||||
The file main.c is just there as an example to show how to use the
|
||||
encoding/decoding functions and to display the speed in MB/s.
|
||||
|
||||
Compile it with one of the following commands
|
||||
gcc -O3 reed_solomon.c main.c -o test
|
||||
gcc -O3 -DSSE -mssse3 reed_solomon.c main.c -o test_sse
|
||||
|
||||
Then the program work with
|
||||
./test K N [S in Byte] [message size in MB]
|
||||
|
||||
Like
|
||||
./test 1024 2048 1024 50
|
||||
|
||||
We give three speed:
|
||||
1. message size / encoding time
|
||||
2. full coded size / encoding time
|
||||
3. message size / decoding time
|
||||
|
||||
The current version is optimised for GF(2^16).
|
||||
But all the code is present to work on other field of the form GF(2^m).
|
||||
|
||||
|
||||
1
CUETools.CLParity/fastdecode/new/VERSION
Normal file
1
CUETools.CLParity/fastdecode/new/VERSION
Normal file
@@ -0,0 +1 @@
|
||||
Mon Jul 6 14:17:13 CEST 2009
|
||||
891
CUETools.CLParity/fastdecode/new/fermat.cc
Normal file
891
CUETools.CLParity/fastdecode/new/fermat.cc
Normal file
@@ -0,0 +1,891 @@
|
||||
// ************************************************
|
||||
// ************************************************
|
||||
|
||||
// Fast RS on GF(2^16+1)
|
||||
// (c) 2009 Frederic Didier.
|
||||
|
||||
#include <complex>
|
||||
using namespace std;
|
||||
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
#include "time.h"
|
||||
|
||||
typedef unsigned char byte;
|
||||
|
||||
/************************************************/
|
||||
/** Random number generator -> 32bits **/
|
||||
/** Mersenne twister code **/
|
||||
/************************************************/
|
||||
|
||||
/* A C-program for MT19937: Integer version */
|
||||
/* genrand() generates one pseudorandom unsigned integer (32bit) */
|
||||
/* which is uniformly distributed among 0 to 2^32-1 for each */
|
||||
/* call. sgenrand(seed) set initial values to the working area */
|
||||
/* of 624 words. Before genrand(), sgenrand(seed) must be */
|
||||
/* called once. (seed is any 32-bit integer except for 0). */
|
||||
/* Coded by Takuji Nishimura, considering the suggestions by */
|
||||
/* Topher Cooper and Marc Rieffel in July-Aug. 1997. */
|
||||
|
||||
/* This library is free software; you can redistribute it and/or */
|
||||
/* modify it under the terms of the GNU Library General Public */
|
||||
/* License as published by the Free Software Foundation; either */
|
||||
/* version 2 of the License, or (at your option) any later */
|
||||
/* version. */
|
||||
/* This library is distributed in the hope that it will be useful, */
|
||||
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */
|
||||
/* See the GNU Library General Public License for more details. */
|
||||
/* You should have received a copy of the GNU Library General */
|
||||
/* Public License along with this library; if not, write to the */
|
||||
/* Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA */
|
||||
/* 02111-1307 USA */
|
||||
|
||||
/* Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. */
|
||||
/* Any feedback is very welcome. For any question, comments, */
|
||||
/* see http://www.math.keio.ac.jp/matumoto/emt.html or email */
|
||||
/* matumoto@math.keio.ac.jp */
|
||||
|
||||
/* Period parameters */
|
||||
#define MT_N 624
|
||||
#define MT_M 397
|
||||
#define MATRIX_A 0x9908b0df /* constant vector a */
|
||||
#define UPPER_MASK 0x80000000 /* most significant w-r bits */
|
||||
#define LOWER_MASK 0x7fffffff /* least significant r bits */
|
||||
|
||||
/* Tempering parameters */
|
||||
#define TEMPERING_MASK_B 0x9d2c5680
|
||||
#define TEMPERING_MASK_C 0xefc60000
|
||||
#define TEMPERING_SHIFT_U(y) (y >> 11)
|
||||
#define TEMPERING_SHIFT_S(y) (y << 7)
|
||||
#define TEMPERING_SHIFT_T(y) (y << 15)
|
||||
#define TEMPERING_SHIFT_L(y) (y >> 18)
|
||||
|
||||
static unsigned long mt[MT_N]; /* the table for the state vector */
|
||||
static int mti=MT_N+1; /* mti==MT_N+1 means mt[MT_N] is not initialized */
|
||||
|
||||
/* initializing the table with a NONZERO seed */
|
||||
void sgenrand(unsigned long seed)
|
||||
{
|
||||
/* setting initial seeds to mt[MT_N] using */
|
||||
/* the generator Line 25 of Table 1 in */
|
||||
/* [KNUTH 1981, The Art of Computer Programming */
|
||||
/* Vol. 2 (2nd Ed.), pp102] */
|
||||
mt[0]= seed & 0xffffffff;
|
||||
for (mti=1; mti<MT_N; mti++)
|
||||
mt[mti] = (69069 * mt[mti-1]) & 0xffffffff;
|
||||
}
|
||||
|
||||
unsigned int genrand()
|
||||
{
|
||||
unsigned int y;
|
||||
static unsigned long mag01[2]={0x0, MATRIX_A};
|
||||
/* mag01[x] = x * MATRIX_A for x=0,1 */
|
||||
|
||||
if (mti >= MT_N) { /* generate MT_N words at one time */
|
||||
int kk;
|
||||
|
||||
if (mti == MT_N+1) /* if sgenrand() has not been called, */
|
||||
sgenrand(4357); /* a default initial seed is used */
|
||||
|
||||
for (kk=0;kk<MT_N-MT_M;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+MT_M] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
for (;kk<MT_N-1;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+(MT_M-MT_N)] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
y = (mt[MT_N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
|
||||
mt[MT_N-1] = mt[MT_M-1] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
|
||||
mti = 0;
|
||||
}
|
||||
|
||||
y = mt[mti++];
|
||||
y ^= TEMPERING_SHIFT_U(y);
|
||||
y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
|
||||
y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C;
|
||||
y ^= TEMPERING_SHIFT_L(y);
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
double double_genrand() {
|
||||
return genrand() * (1.0/4294967295.0);
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
// The Art of Computer programming - Knuth
|
||||
// vol 2 - section 3.4.2 page 137
|
||||
// Algorithm S (Selection sampling technique)
|
||||
|
||||
void generate_positions(int N, int K, int *pos)
|
||||
{
|
||||
int size=N;
|
||||
int w=K;
|
||||
do {
|
||||
if (double_genrand()*size <= w) {
|
||||
pos[K-w] = N-size;
|
||||
w--;
|
||||
}
|
||||
size--;
|
||||
} while (size);
|
||||
}
|
||||
|
||||
void generate_message(byte *data, int size)
|
||||
{
|
||||
int *p = (int *)data;
|
||||
size >>=2;
|
||||
int i;
|
||||
for (i=0; i<size; i++) {
|
||||
*p++ = genrand();
|
||||
}
|
||||
}
|
||||
|
||||
int compare_message(byte *p, byte *q, int size)
|
||||
{
|
||||
int *pi = (int *)p;
|
||||
int *qi = (int *)q;
|
||||
size >>=2;
|
||||
int res=0;
|
||||
int i;
|
||||
for (i=0; i<size; i++) {
|
||||
if (pi[i]!=qi[i]) {
|
||||
res++;
|
||||
if (res<100) {
|
||||
printf("%d ",i*4);
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
return res;
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
double get_sec(clock_t diff)
|
||||
{
|
||||
return (double)diff / (double)CLOCKS_PER_SEC;
|
||||
}
|
||||
|
||||
double get_rate(clock_t diff, int byte)
|
||||
{
|
||||
return (double)(byte)/((double)(1<<20) * get_sec(diff));
|
||||
}
|
||||
|
||||
double get_KB(int byte)
|
||||
{
|
||||
return (double)byte/(double)(1<<10);
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
#define GF ((1<<16)+1)
|
||||
|
||||
int *GF_log, *GF_exp, *inv;
|
||||
|
||||
int inline reduce(unsigned int a)
|
||||
{
|
||||
a = (a& ((1<<16)-1)) - (a>>16);
|
||||
a += (((int)a)>>31) & GF;
|
||||
return a;
|
||||
}
|
||||
|
||||
int inline field_mult(unsigned int a, unsigned int b)
|
||||
{
|
||||
if (a==(1<<16)) return -(int)b + (((-(int)b)>>31) & GF);
|
||||
return reduce(a*b);
|
||||
}
|
||||
|
||||
// this one work if not both a and b are (1<<16) that is -1.
|
||||
int inline field_mult_no(unsigned int a, unsigned int b)
|
||||
{
|
||||
return reduce(a*b);
|
||||
}
|
||||
|
||||
int inline field_diff(unsigned int a, unsigned int b)
|
||||
{
|
||||
a -= b;
|
||||
return a + ((((int)a)>>31)&GF);
|
||||
}
|
||||
|
||||
int inline field_sum(unsigned int a, unsigned int b)
|
||||
{
|
||||
a -= GF-b;
|
||||
return a + ((((int)a)>>31)&GF);
|
||||
}
|
||||
|
||||
|
||||
void init_field()
|
||||
{
|
||||
GF_log = (int *) malloc(sizeof(int) * GF);
|
||||
GF_exp = (int *) malloc(sizeof(int) * GF);
|
||||
inv = (int *) malloc(sizeof(int) * GF);
|
||||
|
||||
int p = 1;
|
||||
int i;
|
||||
for (i=0; i+1<GF; i++) {
|
||||
GF_exp[i]=p;
|
||||
GF_log[p]=i;
|
||||
p = reduce(3*p);
|
||||
}
|
||||
GF_exp[GF-1]=1;
|
||||
GF_log[0]=0;
|
||||
|
||||
for (i=0; i<GF; i++) {
|
||||
inv[i]=GF_exp[GF-1-GF_log[i]];
|
||||
}
|
||||
inv[0]=0;
|
||||
inv[1]=1;
|
||||
|
||||
//test
|
||||
for (i=0; i<GF; i++) {
|
||||
if (field_mult(i, inv[i]) != 1) printf("%d ",i);
|
||||
if (GF_exp[GF_log[i]]!=i) printf("%d ", i);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
//*********************************************************************
|
||||
|
||||
// return GF_log_2(b);
|
||||
int get_log(int n)
|
||||
{
|
||||
int i=0;
|
||||
while (n>>(i+1))
|
||||
i++;
|
||||
return i;
|
||||
}
|
||||
|
||||
void reverse(int *vect, int n)
|
||||
{
|
||||
int i,j;
|
||||
|
||||
j=n >> 1;
|
||||
for (i=1; i<n; i++)
|
||||
{
|
||||
if (j > i) {
|
||||
int temp=vect[i];
|
||||
vect[i]=vect[j];
|
||||
vect[j]=temp;
|
||||
}
|
||||
|
||||
int m = n >> 1;
|
||||
while (m >= 1 && (j & m)) {
|
||||
j ^= m;
|
||||
m >>= 1;
|
||||
}
|
||||
j += m;
|
||||
}
|
||||
}
|
||||
|
||||
void fft_dit(int *vect, int n)
|
||||
{
|
||||
reverse(vect, n);
|
||||
|
||||
int i,j;
|
||||
|
||||
int step=1;
|
||||
int number=n/2;
|
||||
int mult=15;
|
||||
while (number>0)
|
||||
{
|
||||
int *p=vect;
|
||||
int *q=vect+step;
|
||||
for (i=0; i<number; i++) {
|
||||
for (j=0; j<step; j++) {
|
||||
int a = *p;
|
||||
int b = field_mult_no(*q, GF_exp[j<<mult]);
|
||||
*(p++) = field_sum(a,b);
|
||||
*(q++) = field_diff(a,b);
|
||||
}
|
||||
p+=step;
|
||||
q+=step;
|
||||
}
|
||||
step<<=1;
|
||||
number>>=1;
|
||||
mult--;
|
||||
}
|
||||
}
|
||||
|
||||
void ifft_dit(int *vect, int n)
|
||||
{
|
||||
reverse(vect, n);
|
||||
|
||||
int i,j;
|
||||
|
||||
int step=1;
|
||||
int number=n/2;
|
||||
int mult=15;
|
||||
while (number>0)
|
||||
{
|
||||
int *p=vect;
|
||||
int *q=vect+step;
|
||||
for (i=0; i<number; i++) {
|
||||
for (j=2*step; j>step; j--) {
|
||||
int a = *p;
|
||||
int b = field_mult_no(*q, GF_exp[j<<mult]);
|
||||
*(p++) = field_sum(a,b);
|
||||
*(q++) = field_diff(a,b);
|
||||
}
|
||||
p+=step;
|
||||
q+=step;
|
||||
}
|
||||
step<<=1;
|
||||
number>>=1;
|
||||
mult--;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void fft2(int *vect, int n)
|
||||
{
|
||||
int i=n/2;
|
||||
while (i--) {
|
||||
int a = *vect;
|
||||
int b = *(vect+1);
|
||||
*(vect++) = field_sum(a,b);
|
||||
*(vect++) = field_diff(a,b);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// decimation in frequency
|
||||
void fft_inc(int *vect, int n)
|
||||
{
|
||||
int i,j;
|
||||
|
||||
int number=1;
|
||||
int step=n/2;
|
||||
int mult = 16 - get_log(n);
|
||||
|
||||
while (step>0)
|
||||
{
|
||||
int *p=vect;
|
||||
int *q=vect+step;
|
||||
for (i=0; i<number; i++) {
|
||||
for (j=0; j<step; j++) {
|
||||
int a = *p;
|
||||
int b = *q;
|
||||
*(p++) = field_sum(a,b);
|
||||
// GF_exp[1<<15] never happen, so we are safe to use mult_no
|
||||
*(q++) = field_mult_no(field_diff(a,b), GF_exp[j<<mult]);
|
||||
}
|
||||
p+=step;
|
||||
q+=step;
|
||||
}
|
||||
step>>=1;
|
||||
number<<=1;
|
||||
mult++;
|
||||
}
|
||||
}
|
||||
|
||||
// decimation in time
|
||||
void ifft_inc(int *vect, int n)
|
||||
{
|
||||
int i,j;
|
||||
int number=n/2;
|
||||
|
||||
int step=1;
|
||||
int mult=15;
|
||||
|
||||
int *root=GF_exp + (1<<16);
|
||||
while (number>0)
|
||||
{
|
||||
int *p=vect;
|
||||
int *q=vect+step;
|
||||
for (i=0; i<number; i++) {
|
||||
for (j=0; j<step; j++) {
|
||||
int a = *p;
|
||||
// GF_exp[1<<15] never happen, so we are safe to use mult_no
|
||||
int b = field_mult_no(*q, *(root - (j<<mult)));
|
||||
*(p++) = field_sum(a,b);
|
||||
*(q++) = field_diff(a,b);
|
||||
}
|
||||
p+=step;
|
||||
q+=step;
|
||||
}
|
||||
step<<=1;
|
||||
number>>=1;
|
||||
mult--;
|
||||
}
|
||||
}
|
||||
|
||||
void fft_rec(int *vect, int n)
|
||||
{
|
||||
if (n == 1<<11) return fft_inc(vect, n);
|
||||
/* if (n==2) {
|
||||
int a = vect[0];
|
||||
int b = vect[1];
|
||||
vect[0] = field_sum(a,b);
|
||||
vect[1] = field_diff(a,b);
|
||||
return;
|
||||
}
|
||||
*/
|
||||
int i;
|
||||
int mult = 16 - get_log(n);
|
||||
|
||||
n/=2;
|
||||
int *l = vect;
|
||||
int *h = vect + n;
|
||||
for (i=0; i<n; i++) {
|
||||
int a = *l;
|
||||
int b = *h;
|
||||
*(l++) = field_sum(a,b);
|
||||
// GF_exp[1<<15] never happen, so we are safe to use mult_no
|
||||
*(h++) = field_mult_no(field_diff(a,b), GF_exp[i<<mult]);
|
||||
}
|
||||
|
||||
fft_rec(vect, n);
|
||||
fft_rec(vect+n, n);
|
||||
}
|
||||
|
||||
void ifft_rec(int *vect, int n)
|
||||
{
|
||||
if (n <= 1<<11) return ifft_inc(vect, n);
|
||||
/* if (n==2) {
|
||||
int a = vect[0];
|
||||
int b = vect[1];
|
||||
vect[0] = field_sum(a,b);
|
||||
vect[1] = field_diff(a,b);
|
||||
return;
|
||||
}
|
||||
*/
|
||||
int i;
|
||||
int mult = 16 - get_log(n);
|
||||
n/=2;
|
||||
ifft_rec(vect, n);
|
||||
ifft_rec(vect+n, n);
|
||||
|
||||
int *l = vect;
|
||||
int *h = vect + n;
|
||||
int *root = GF_exp + (1<<16);
|
||||
for (i=0; i<n; i++) {
|
||||
int a = *l;
|
||||
// GF_exp[1<<15] never happen, so we are safe to use mult_no
|
||||
int b = field_mult_no(*h, *(root - (i<<mult)));
|
||||
*(l++) = field_sum(a,b);
|
||||
*(h++) = field_diff(a,b);
|
||||
}
|
||||
}
|
||||
|
||||
void (*fft)(int *, int) = fft_rec;
|
||||
void (*ifft)(int *, int) = ifft_rec;
|
||||
|
||||
//*********************************************************************
|
||||
//*********************************************************************
|
||||
|
||||
void compute_prod_old(int *prod, int *pos, int k, int n)
|
||||
{
|
||||
int x,i;
|
||||
for (x=0; x<n; x++) {
|
||||
long long t=1;
|
||||
for (i=0; i<k; i++) {
|
||||
if (x!=pos[i])
|
||||
t = field_mult(t, field_diff(x,pos[i]));
|
||||
}
|
||||
prod[x]=t;
|
||||
}
|
||||
}
|
||||
|
||||
void compute_prod(int *prod, int *pos, int k, int n)
|
||||
{
|
||||
int x,i;
|
||||
for (x=0; x<n; x++) {
|
||||
unsigned int t=0;
|
||||
for (i=0; i<k; i++) {
|
||||
t += GF_log[field_diff(x,pos[i])];
|
||||
}
|
||||
prod[x]=GF_exp[t % (1<<16)];
|
||||
}
|
||||
}
|
||||
|
||||
// C++ part for FFT, better use a good fft library instead.
|
||||
|
||||
const double Pi = acos(-1);
|
||||
|
||||
// decimation in frequency
|
||||
// output is bit reversed
|
||||
void complex_fft_rec(complex<double>* X, int n)
|
||||
{
|
||||
if (n==1) return;
|
||||
for (int i=0; i<n/2; i++) {
|
||||
complex<double> a = X[i];
|
||||
complex<double> b = X[n/2 + i];
|
||||
X[i] = a + b;
|
||||
X[n/2 + i] = (a - b) * polar(1.0, -2*Pi*i/double(n));
|
||||
}
|
||||
complex_fft_rec(X, n/2);
|
||||
complex_fft_rec(X + n/2, n/2);
|
||||
}
|
||||
|
||||
// decimation in time
|
||||
// input is bit reversed.
|
||||
void complex_ifft_rec(complex<double>* X, int n)
|
||||
{
|
||||
if (n==1) return;
|
||||
complex_ifft_rec(X, n/2);
|
||||
complex_ifft_rec(X + n/2, n/2);
|
||||
for (int i=0; i<n/2; i++) {
|
||||
complex<double> a = X[i];
|
||||
complex<double> b = X[n/2 + i] * polar(1.0, 2*Pi*i/double(n));
|
||||
X[i] = a + b;
|
||||
X[n/2 + i] = (a - b);
|
||||
}
|
||||
}
|
||||
|
||||
// The memory can be allocated only once if many call to this
|
||||
// function are expected. the fft of the log can be precomputed.
|
||||
void compute_prod_fast(int *prod, int *pos, int k, int n)
|
||||
{
|
||||
const int NN = 2*n;
|
||||
complex<double>* R = (complex<double> *)malloc(NN * sizeof(complex<double>));
|
||||
complex<double>* L = (complex<double> *)malloc(NN * sizeof(complex<double>));
|
||||
for (int i=0; i<NN; ++i) {
|
||||
R[i] = 0;
|
||||
L[i] = 0;
|
||||
}
|
||||
for (int i=0; i < k; ++i) {
|
||||
R[pos[i]] = 1;
|
||||
}
|
||||
for (int i=0; i < n; ++i) {
|
||||
L[i] = GF_log[i];
|
||||
if (i>0) {
|
||||
L[NN - i] = GF_log[GF - i];
|
||||
}
|
||||
}
|
||||
|
||||
// convolution
|
||||
complex_fft_rec(R, NN);
|
||||
complex_fft_rec(L, NN);
|
||||
for (int i=0; i < NN; ++i) {
|
||||
R[i] *= L[i];
|
||||
}
|
||||
complex_ifft_rec(R, NN);
|
||||
|
||||
// now we have the GF_log(prod[i]) in Re(R[i])
|
||||
// we take the result mod 2^16 since we are in the multiplicative
|
||||
// field of GF(2^16+1)
|
||||
for (int x=0; x < n; ++x) {
|
||||
prod[x] = GF_exp[((long long) (real(R[x])/double(NN) + 0.5)) % (1<<16)];
|
||||
}
|
||||
|
||||
free(R);
|
||||
free(L);
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
//*********************************************************************
|
||||
|
||||
int *high;
|
||||
int *low;
|
||||
int *prod;
|
||||
int *enc_fft;
|
||||
int *rev_fft;
|
||||
int *mid_fft;
|
||||
int *prod_enc;
|
||||
|
||||
void init_code(int n)
|
||||
{
|
||||
low = (int *) malloc(sizeof(int) * n);
|
||||
high = (int *) malloc(sizeof(int) * n);
|
||||
prod = (int *) malloc(sizeof(int) * n);
|
||||
prod_enc = (int *) malloc(sizeof(int) * n);
|
||||
|
||||
enc_fft = (int *) malloc(sizeof(int) * n);
|
||||
rev_fft = (int *) malloc(sizeof(int) * n);
|
||||
mid_fft = (int *) malloc(sizeof(int) * n);
|
||||
|
||||
int x;
|
||||
for (x=0; x<n; x++) {
|
||||
enc_fft[x] = inv[x];
|
||||
rev_fft[n - x - 1] = inv[GF - x - 1];
|
||||
if (x<n/2) {
|
||||
mid_fft[x] = inv[x];
|
||||
} else {
|
||||
mid_fft[x] = inv[GF - n + x];
|
||||
}
|
||||
}
|
||||
fft(enc_fft,n);
|
||||
fft(rev_fft,n);
|
||||
fft(mid_fft,n);
|
||||
// already divide by the correct value, so we
|
||||
// will not have to do it after the inverse fft.
|
||||
for (x=0; x<n; x++) {
|
||||
enc_fft[x] = field_mult(enc_fft[x], inv[n]);
|
||||
rev_fft[x] = field_mult(rev_fft[x], inv[n]);
|
||||
mid_fft[x] = field_mult(mid_fft[x], inv[n]);
|
||||
}
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
//*********************************************************************
|
||||
|
||||
void convolution(int *dst, int *src, int n)
|
||||
{
|
||||
int x,y;
|
||||
for (x=0; x<n; x++) {
|
||||
int t=0;
|
||||
for (y=0; y<n; y++) {
|
||||
t = (t + field_mult(src[y], inv[(x + GF - y)%GF])) % GF;
|
||||
}
|
||||
dst[x]= t;
|
||||
}
|
||||
}
|
||||
|
||||
//*********************************************************************
|
||||
//*********************************************************************
|
||||
|
||||
void encode(int *dst, int *src, int k, int n)
|
||||
{
|
||||
int x,i;
|
||||
|
||||
// put received packet in place
|
||||
// divide by prod[pos[i]]
|
||||
for (x=k; x<n; x++) dst[x] = 0;
|
||||
for (i=0; i<k; i++) dst[i] = field_mult(src[i], inv[prod_enc[i]]);
|
||||
|
||||
// convolve with inverse function
|
||||
// TODO: depending on k we can gain a little because
|
||||
// either k<n/2 and the second half of the input is 0
|
||||
// either k>=n/2 and we don't need the fist half of the output
|
||||
fft(dst, n);
|
||||
for (x=0; x<n; x++)
|
||||
dst[x] = field_mult(dst[x], enc_fft[x]);
|
||||
ifft(dst,n);
|
||||
|
||||
// multiply by prod[x] the parity positions
|
||||
for (x=k; x<n; x++) {
|
||||
dst[x] = field_mult(dst[x], prod_enc[x]);
|
||||
}
|
||||
|
||||
// put systematic symbol in place
|
||||
for (i=0; i<k; i++) dst[i]=src[i];
|
||||
}
|
||||
|
||||
// This work like encode except that now, we cannot just
|
||||
// compute the convolution with one fft since the src position
|
||||
// are all over the codeword and we need the first k output position.
|
||||
void decode(int *dst, int *src, int *pos, int k, int n)
|
||||
{
|
||||
int i;
|
||||
|
||||
// put received packet in place and divide by prod[pos[i]]
|
||||
// low contains the first half and then is null,
|
||||
// high is null and then contains the second half.
|
||||
// since we need to take the fft of both, I did some optimisations.
|
||||
|
||||
memset(high, 0, n * sizeof(int));
|
||||
memset(low, 0, n * sizeof(int));
|
||||
|
||||
// needed for the first fft pass done here
|
||||
int mult = 16 - get_log(n);
|
||||
int *root = GF_exp + (1<<16);
|
||||
|
||||
for (i=0; i<k; i++) {
|
||||
int v = src[i];
|
||||
if (v == 0) continue;
|
||||
int x = pos[i];
|
||||
v = field_mult(v, inv[prod[x]]);
|
||||
// remark that v is non-zero since prod is never 0
|
||||
// and taking the inverse will not change this.
|
||||
if (x < n/2) {
|
||||
low[x] = v;
|
||||
low[n/2 + x] = field_mult_no(v, GF_exp[x << mult]);
|
||||
} else {
|
||||
high[x - n/2] = v;
|
||||
high[x] = field_mult_no(GF - v, GF_exp[(x - n/2) << mult]);
|
||||
}
|
||||
}
|
||||
fft(low, n/2);
|
||||
fft(low + n/2, n/2);
|
||||
fft(high, n/2);
|
||||
fft(high + n/2, n/2);
|
||||
|
||||
// compute low part of the convolution
|
||||
for (i=0; i<n; i++) {
|
||||
dst[i] = field_sum(field_mult(low[i], mid_fft[i]),
|
||||
field_mult(high[i], rev_fft[i]));
|
||||
}
|
||||
// ifft(dst, n);
|
||||
// small optimisation since second part is not needed
|
||||
ifft(dst, n/2);
|
||||
ifft(dst + n/2, n/2);
|
||||
for (i=0; i<n/2; i++) {
|
||||
int v = field_mult_no(dst[i + n/2], *(root - (i<<mult)));
|
||||
v = field_sum(dst[i], v);
|
||||
dst[i] = field_mult(v, prod[i]);
|
||||
}
|
||||
|
||||
// compute high part of the convolution
|
||||
// only needed if k > n/2
|
||||
if (k > n/2) {
|
||||
for (i=0; i<n; i++) {
|
||||
// we can reuse high as it is no longer needed.
|
||||
high[i] = field_sum(field_mult(low[i], enc_fft[i]),
|
||||
field_mult(high[i], mid_fft[i]));
|
||||
}
|
||||
// small optimisation since first part is not needed
|
||||
ifft(high, n/2);
|
||||
ifft(high + n/2, n/2);
|
||||
for (i=n/2; i<k; i++) {
|
||||
int v = field_mult_no(high[i], *(root - ((i-n/2)<<mult)));
|
||||
v = field_diff(high[i - n/2], v);
|
||||
dst[i] = field_mult(v, prod[i]);
|
||||
}
|
||||
}
|
||||
|
||||
// replace received positions by the correct symbol
|
||||
for (i=0; i<k; i++)
|
||||
if (pos[i]<k)
|
||||
dst[pos[i]]=src[i];
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int i,j,n;
|
||||
clock_t tick;
|
||||
|
||||
// get parameters
|
||||
int N, K, S, nb_bloc;
|
||||
|
||||
// help message
|
||||
if (argc<=3) {
|
||||
printf("usage: %s K N S\n",argv[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
K = atoi(argv[1]);
|
||||
N = atoi(argv[2]);
|
||||
nb_bloc = atoi(argv[3]);
|
||||
S = 2;
|
||||
|
||||
// power of two just greater or equal to N
|
||||
int n_walsh=1;
|
||||
while ((1<<n_walsh) < N) n_walsh++;
|
||||
N = 1<<n_walsh;
|
||||
|
||||
printf("GF(%d)\n", GF);
|
||||
printf("K=%d\n",K);
|
||||
printf("N=%d\n",N);
|
||||
printf("nb_bloc=%d\n", nb_bloc);
|
||||
printf("message size = %f KB\n", get_KB(S*K*nb_bloc));
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[initialisation (memory + randomness)]\n");
|
||||
tick = clock();
|
||||
|
||||
// code init
|
||||
init_field();
|
||||
init_code(N);
|
||||
|
||||
// memory for the full message
|
||||
int *positions = (int *)malloc(sizeof(int)*K*nb_bloc);
|
||||
int *message = (int *)malloc(sizeof(int)*K*nb_bloc);
|
||||
int *received = (int *)malloc(sizeof(int)*K*nb_bloc);
|
||||
|
||||
|
||||
// init random number generator
|
||||
sgenrand(time(NULL));
|
||||
// sgenrand(123);
|
||||
// sgenrand(321);
|
||||
|
||||
// Generate the random message
|
||||
for (i=0; i<K*nb_bloc; i++) {
|
||||
message[i] = genrand() % GF;
|
||||
}
|
||||
|
||||
// Generate the random positions
|
||||
// for (n=0; n<nb_bloc; n++) {
|
||||
// generate_positions(N, K, positions + n*K);
|
||||
// }
|
||||
generate_positions(N, K, positions);
|
||||
|
||||
// memory for encoding/decoding one bloc
|
||||
int *codeword = (int *)malloc(sizeof(int)*N);
|
||||
|
||||
// for encoding
|
||||
int *kpos=(int *)malloc(sizeof(int)*K);
|
||||
for(i=0; i<K; i++) kpos[i] = i;
|
||||
compute_prod_fast(prod_enc, kpos, K, N);
|
||||
|
||||
// end of initialisation
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*K*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[encoding message]\n");
|
||||
tick = clock();
|
||||
|
||||
int *pos = positions;
|
||||
for (n=0; n<nb_bloc; n++)
|
||||
{
|
||||
// int *pos = positions + n*K;
|
||||
int *sys = message + n*K;
|
||||
int *rec = received + n*K;
|
||||
|
||||
encode(codeword, sys, K, N);
|
||||
|
||||
// simulate errors...
|
||||
for (i=0; i<K; i++) rec[i] = codeword[pos[i]];
|
||||
}
|
||||
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*K*nb_bloc));
|
||||
printf("%f MB/s\n", get_rate(tick, S*N*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[decoding]\n");
|
||||
tick = clock();
|
||||
|
||||
double syst=0;
|
||||
|
||||
compute_prod_fast(prod, pos, K, N);
|
||||
for (n=0; n<nb_bloc; n++)
|
||||
{
|
||||
// current bloc
|
||||
int *rec = received + n*K;
|
||||
|
||||
decode(codeword, rec, pos, K, N);
|
||||
|
||||
// put result back into received
|
||||
for (i=0; i<K; i++) {
|
||||
if (pos[i]<K) syst++;
|
||||
rec[i]=codeword[i];
|
||||
}
|
||||
}
|
||||
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*K*nb_bloc));
|
||||
printf("%f percent of systematic packets received\n", syst / (double)(K*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
|
||||
// verify that we recovered the message correctly
|
||||
printf("[errors]\n");
|
||||
int count=0;
|
||||
for (i=0; i<K*nb_bloc; i++) {
|
||||
if (message[i]!=received[i]) count++;
|
||||
}
|
||||
printf("%i\n",count);
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
|
||||
// end;
|
||||
return 0;
|
||||
}
|
||||
|
||||
343
CUETools.CLParity/fastdecode/new/main.c
Normal file
343
CUETools.CLParity/fastdecode/new/main.c
Normal file
@@ -0,0 +1,343 @@
|
||||
// ************************************************
|
||||
// ************************************************
|
||||
|
||||
// Sample program to use reed_solomon.c
|
||||
// (c) 2009 Frederic Didier.
|
||||
|
||||
#include "reed_solomon.h"
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
#include "time.h"
|
||||
|
||||
/************************************************/
|
||||
/** Random number generator -> 32bits **/
|
||||
/** Mersenne twister code **/
|
||||
/************************************************/
|
||||
|
||||
/* A C-program for MT19937: Integer version */
|
||||
/* genrand() generates one pseudorandom unsigned integer (32bit) */
|
||||
/* which is uniformly distributed among 0 to 2^32-1 for each */
|
||||
/* call. sgenrand(seed) set initial values to the working area */
|
||||
/* of 624 words. Before genrand(), sgenrand(seed) must be */
|
||||
/* called once. (seed is any 32-bit integer except for 0). */
|
||||
/* Coded by Takuji Nishimura, considering the suggestions by */
|
||||
/* Topher Cooper and Marc Rieffel in July-Aug. 1997. */
|
||||
|
||||
/* This library is free software; you can redistribute it and/or */
|
||||
/* modify it under the terms of the GNU Library General Public */
|
||||
/* License as published by the Free Software Foundation; either */
|
||||
/* version 2 of the License, or (at your option) any later */
|
||||
/* version. */
|
||||
/* This library is distributed in the hope that it will be useful, */
|
||||
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */
|
||||
/* See the GNU Library General Public License for more details. */
|
||||
/* You should have received a copy of the GNU Library General */
|
||||
/* Public License along with this library; if not, write to the */
|
||||
/* Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA */
|
||||
/* 02111-1307 USA */
|
||||
|
||||
/* Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. */
|
||||
/* Any feedback is very welcome. For any question, comments, */
|
||||
/* see http://www.math.keio.ac.jp/matumoto/emt.html or email */
|
||||
/* matumoto@math.keio.ac.jp */
|
||||
|
||||
/* Period parameters */
|
||||
#define MT_N 624
|
||||
#define MT_M 397
|
||||
#define MATRIX_A 0x9908b0df /* constant vector a */
|
||||
#define UPPER_MASK 0x80000000 /* most significant w-r bits */
|
||||
#define LOWER_MASK 0x7fffffff /* least significant r bits */
|
||||
|
||||
/* Tempering parameters */
|
||||
#define TEMPERING_MASK_B 0x9d2c5680
|
||||
#define TEMPERING_MASK_C 0xefc60000
|
||||
#define TEMPERING_SHIFT_U(y) (y >> 11)
|
||||
#define TEMPERING_SHIFT_S(y) (y << 7)
|
||||
#define TEMPERING_SHIFT_T(y) (y << 15)
|
||||
#define TEMPERING_SHIFT_L(y) (y >> 18)
|
||||
|
||||
static unsigned long mt[MT_N]; /* the table for the state vector */
|
||||
static int mti=MT_N+1; /* mti==MT_N+1 means mt[MT_N] is not initialized */
|
||||
|
||||
/* initializing the table with a NONZERO seed */
|
||||
void sgenrand(unsigned long seed)
|
||||
{
|
||||
/* setting initial seeds to mt[MT_N] using */
|
||||
/* the generator Line 25 of Table 1 in */
|
||||
/* [KNUTH 1981, The Art of Computer Programming */
|
||||
/* Vol. 2 (2nd Ed.), pp102] */
|
||||
mt[0]= seed & 0xffffffff;
|
||||
for (mti=1; mti<MT_N; mti++)
|
||||
mt[mti] = (69069 * mt[mti-1]) & 0xffffffff;
|
||||
}
|
||||
|
||||
unsigned int genrand()
|
||||
{
|
||||
unsigned int y;
|
||||
static unsigned long mag01[2]={0x0, MATRIX_A};
|
||||
/* mag01[x] = x * MATRIX_A for x=0,1 */
|
||||
|
||||
if (mti >= MT_N) { /* generate MT_N words at one time */
|
||||
int kk;
|
||||
|
||||
if (mti == MT_N+1) /* if sgenrand() has not been called, */
|
||||
sgenrand(4357); /* a default initial seed is used */
|
||||
|
||||
for (kk=0;kk<MT_N-MT_M;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+MT_M] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
for (;kk<MT_N-1;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+(MT_M-MT_N)] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
y = (mt[MT_N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
|
||||
mt[MT_N-1] = mt[MT_M-1] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
|
||||
mti = 0;
|
||||
}
|
||||
|
||||
y = mt[mti++];
|
||||
y ^= TEMPERING_SHIFT_U(y);
|
||||
y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
|
||||
y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C;
|
||||
y ^= TEMPERING_SHIFT_L(y);
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
double double_genrand() {
|
||||
return genrand() * (1.0/4294967295.0);
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
// The Art of Computer programming - Knuth
|
||||
// vol 2 - section 3.4.2 page 137
|
||||
// Algorithm S (Selection sampling technique)
|
||||
|
||||
void generate_positions(int N, int K, int *pos)
|
||||
{
|
||||
int size=N;
|
||||
int w=K;
|
||||
do {
|
||||
if (double_genrand()*size <= w) {
|
||||
pos[K-w] = N-size;
|
||||
w--;
|
||||
}
|
||||
size--;
|
||||
} while (size);
|
||||
}
|
||||
|
||||
void generate_message(byte *data, int size)
|
||||
{
|
||||
int *p = (int *)data;
|
||||
size >>=2;
|
||||
int i;
|
||||
for (i=0; i<size; i++) {
|
||||
*p++ = genrand();
|
||||
}
|
||||
}
|
||||
|
||||
int compare_message(byte *p, byte *q, int size)
|
||||
{
|
||||
int *pi = (int *)p;
|
||||
int *qi = (int *)q;
|
||||
size >>=2;
|
||||
int res=0;
|
||||
int i;
|
||||
for (i=0; i<size; i++) {
|
||||
if (pi[i]!=qi[i]) {
|
||||
res++;
|
||||
if (res<100) {
|
||||
printf("%d ",i*4);
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
return res;
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
double get_sec(clock_t diff)
|
||||
{
|
||||
return (double)diff / (double)CLOCKS_PER_SEC;
|
||||
}
|
||||
|
||||
double get_rate(clock_t diff, int byte)
|
||||
{
|
||||
return (double)(byte)/((double)(1<<20) * get_sec(diff));
|
||||
}
|
||||
|
||||
double get_KB(int byte)
|
||||
{
|
||||
return (double)byte/(double)(1<<10);
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int i,j,n;
|
||||
clock_t tick;
|
||||
|
||||
// get parameters
|
||||
int n_field,K,N,S,m_size;
|
||||
|
||||
// default ones
|
||||
n_field = 16;
|
||||
m_size = 1<<26;
|
||||
S = 1<<10;
|
||||
|
||||
// help message
|
||||
if (argc<=2) {
|
||||
printf("usage: %s K N S [message size in MB]\n",argv[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// read parameters
|
||||
K = atoi(argv[1]);
|
||||
N = atoi(argv[2]);
|
||||
if (argc>3) S = atoi(argv[3]);
|
||||
if (argc>4) m_size = atoi(argv[4]) << 20;
|
||||
|
||||
// number of field elements per packets.
|
||||
int nb_elt = (S * 8) / n_field;
|
||||
|
||||
// compute number of blocs
|
||||
int nb_bloc = m_size / (K*S);
|
||||
if (nb_bloc==0) nb_bloc=1;
|
||||
|
||||
// power of two just greater than N
|
||||
int n_walsh=1;
|
||||
while ((1<<n_walsh) < N) n_walsh++;
|
||||
|
||||
// print parameters
|
||||
printf("[parameters]\n");
|
||||
printf("GF 2^%d\n", n_field);
|
||||
printf("n = %d (n_walsh = %d)\n", N, n_walsh);
|
||||
printf("k = %d\n", K);
|
||||
printf("s = %d (bytes per packet)\n", S);
|
||||
|
||||
printf("field elements per packet = %d\n", nb_elt);
|
||||
printf("number of bloc = %d\n", nb_bloc);
|
||||
printf("bloc size = %f KB\n", get_KB(K*S));
|
||||
printf("message size = %f KB\n", get_KB(K*S*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// code init
|
||||
code_init(n_field, n_walsh);
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[initialisation (memory + randomness)]\n");
|
||||
tick = clock();
|
||||
|
||||
// memory for the full message
|
||||
int *positions = (int *)malloc(sizeof(int)*K*nb_bloc);
|
||||
byte *message = (byte *)malloc(sizeof(byte)*S*K*nb_bloc);
|
||||
byte *received = (byte *)malloc(sizeof(byte)*S*K*nb_bloc);
|
||||
|
||||
// memory for encoding/decoding one bloc
|
||||
byte *codeword = (byte *)malloc(sizeof(byte)*S*N);
|
||||
|
||||
// init random number generator
|
||||
sgenrand(time(NULL));
|
||||
// sgenrand(123);
|
||||
// sgenrand(321);
|
||||
|
||||
// Generate the random message
|
||||
generate_message(message, S*K*nb_bloc);
|
||||
|
||||
// Generate the random positions
|
||||
for (n=0; n<nb_bloc; n++) {
|
||||
generate_positions(N, K, positions + n*K);
|
||||
}
|
||||
|
||||
// end of initialisation
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*K*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[encoding message]\n");
|
||||
tick = clock();
|
||||
|
||||
encode_init(K);
|
||||
|
||||
byte *dst=received;
|
||||
for (n=0; n<nb_bloc; n++)
|
||||
{
|
||||
int *pos = positions + n*K;
|
||||
byte *systematic = message + n*K*S;
|
||||
|
||||
fast_encode(N, K, S/2, (symbol *)systematic, (symbol *)codeword);
|
||||
|
||||
// simulate errors...
|
||||
for (i=0; i<K; i++)
|
||||
{
|
||||
byte *src;
|
||||
if (pos[i]<K) src = systematic + pos[i] * S;
|
||||
else src = codeword + (pos[i]-K) * S;
|
||||
|
||||
__builtin_memcpy(dst, src, S);
|
||||
dst += S;
|
||||
}
|
||||
}
|
||||
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*K*nb_bloc));
|
||||
printf("%f MB/s\n", get_rate(tick, S*N*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[decoding]\n");
|
||||
tick = clock();
|
||||
|
||||
double syst=0;
|
||||
for (n=0; n<nb_bloc; n++)
|
||||
{
|
||||
// current bloc
|
||||
int *pos = positions + n*K;
|
||||
byte *rec = received + n*S*K;
|
||||
|
||||
// stat for systematic packet
|
||||
for (i=0; i<K; i++) {
|
||||
if (pos[i]<K) syst++;
|
||||
}
|
||||
|
||||
fast_decode(K, S/2, pos, (symbol *)rec, (symbol *)codeword);
|
||||
|
||||
// put result back into received
|
||||
__builtin_memcpy(rec, codeword, S*K);
|
||||
}
|
||||
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*K*nb_bloc));
|
||||
printf("%f percent of systematic packets received\n", syst / (double)(K*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
|
||||
// verify that we recovered the message correctly
|
||||
printf("[errors]\n");
|
||||
printf("%d\n\n", compare_message(message, received, S*K*nb_bloc));
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
|
||||
// clear code
|
||||
code_clear();
|
||||
|
||||
// end;
|
||||
return 0;
|
||||
}
|
||||
|
||||
1083
CUETools.CLParity/fastdecode/new/reed_solomon.c
Normal file
1083
CUETools.CLParity/fastdecode/new/reed_solomon.c
Normal file
File diff suppressed because it is too large
Load Diff
49
CUETools.CLParity/fastdecode/new/reed_solomon.h
Normal file
49
CUETools.CLParity/fastdecode/new/reed_solomon.h
Normal file
@@ -0,0 +1,49 @@
|
||||
// Reed-Solomon encoding/erasure decoding
|
||||
|
||||
// Implementation of the algorithms described in
|
||||
// Efficient erasure decoding of Reed-Solomon codes
|
||||
// http://arxiv.org/abs/0901.1886v1
|
||||
|
||||
// (c) 2009 Frederic didier.
|
||||
// Any feedback is very welcome. For any question, comments,
|
||||
// see http://algo.epfl.ch/~didier/reed_solomon.html or email
|
||||
// frederic.didier@epfl.ch
|
||||
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following
|
||||
// disclaimer in the documentation and/or other materials
|
||||
// provided with the distribution.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS
|
||||
// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||||
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
// TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
// OF SUCH DAMAGE.
|
||||
|
||||
// type used to store one field symbol
|
||||
// With short int, we can work up to GF(16)
|
||||
// If one wants to work on bigger fied, replace this by int.
|
||||
typedef unsigned short symbol;
|
||||
typedef unsigned char byte;
|
||||
|
||||
// Common initialisation functions
|
||||
extern void code_init(int n_field, int n_walsh);
|
||||
extern void code_clear();
|
||||
|
||||
extern void encode_init(int K);
|
||||
extern void fast_encode(int N, int K, int S, symbol *data, symbol *packets);
|
||||
extern void fast_decode(int K, int S, int *positions, symbol *data, symbol *packets);
|
||||
|
||||
1073
CUETools.CLParity/fastdecode/reed_solomon.c
Normal file
1073
CUETools.CLParity/fastdecode/reed_solomon.c
Normal file
File diff suppressed because it is too large
Load Diff
72
CUETools.CLParity/fastdecode/reed_solomon.h
Normal file
72
CUETools.CLParity/fastdecode/reed_solomon.h
Normal file
@@ -0,0 +1,72 @@
|
||||
// Reed-Solomon encoding/erasure decoding
|
||||
|
||||
// Implementation of the algorithms described in
|
||||
// Efficient erasure decoding of Reed-Solomon codes
|
||||
// http://arxiv.org/abs/0901.1886v1
|
||||
|
||||
// (c) 2009 Frederic didier.
|
||||
// Any feedback is very welcome. For any question, comments,
|
||||
// see http://algo.epfl.ch/~didier/reed_solomon.html or email
|
||||
// frederic.didier@epfl.ch
|
||||
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. Redistributions in binary form must reproduce the above
|
||||
// copyright notice, this list of conditions and the following
|
||||
// disclaimer in the documentation and/or other materials
|
||||
// provided with the distribution.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS
|
||||
// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
// OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||||
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
// TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
// OF SUCH DAMAGE.
|
||||
|
||||
|
||||
#include "stdlib.h"
|
||||
#include "string.h"
|
||||
#include "stdint.h"
|
||||
#include "stdio.h"
|
||||
|
||||
// type used to store one field symbol
|
||||
// With short int, we can work up to GF(16)
|
||||
// and we can apply the fast algo up to N_walsh=15
|
||||
// If one wants to work on bigger fied, replace this by int.
|
||||
typedef uint16_t symbol;
|
||||
typedef uint8_t byte;
|
||||
|
||||
// Common initialisation functions
|
||||
extern void fill_table(int n_field);
|
||||
extern void code_init(int n_walsh);
|
||||
extern void code_clear();
|
||||
|
||||
// quadratic algo
|
||||
extern void encode_init(int N, int K);
|
||||
|
||||
extern void (*process)(int, void *, void *, int);
|
||||
extern void (*process_eq)(int, void *, void *, int);
|
||||
|
||||
extern void use_xor();
|
||||
extern void use_xor2();
|
||||
extern void use_table();
|
||||
extern void use_direct();
|
||||
|
||||
extern void use_quadratic();
|
||||
extern void use_incremental();
|
||||
extern void use_karatsuba();
|
||||
extern void use_special();
|
||||
|
||||
extern void (*RS_encode)(int N, int K, int S, void *info, void *output);
|
||||
extern void (*RS_decode)(int N, int K, int S, int *pos, void *received, void *output);
|
||||
|
||||
302
CUETools.CLParity/fastdecode/speed.c
Normal file
302
CUETools.CLParity/fastdecode/speed.c
Normal file
@@ -0,0 +1,302 @@
|
||||
// ************************************************
|
||||
// ************************************************
|
||||
|
||||
// Sample program to use reed_solomon.c
|
||||
// (c) 2009 Frederic Didier.
|
||||
|
||||
#include "reed_solomon.h"
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
#include "time.h"
|
||||
|
||||
/************************************************/
|
||||
/** Random number generator -> 32bits **/
|
||||
/** Mersenne twister code **/
|
||||
/************************************************/
|
||||
|
||||
/* A C-program for MT19937: Integer version */
|
||||
/* genrand() generates one pseudorandom unsigned integer (32bit) */
|
||||
/* which is uniformly distributed among 0 to 2^32-1 for each */
|
||||
/* call. sgenrand(seed) set initial values to the working area */
|
||||
/* of 624 words. Before genrand(), sgenrand(seed) must be */
|
||||
/* called once. (seed is any 32-bit integer except for 0). */
|
||||
/* Coded by Takuji Nishimura, considering the suggestions by */
|
||||
/* Topher Cooper and Marc Rieffel in July-Aug. 1997. */
|
||||
|
||||
/* This library is free software; you can redistribute it and/or */
|
||||
/* modify it under the terms of the GNU Library General Public */
|
||||
/* License as published by the Free Software Foundation; either */
|
||||
/* version 2 of the License, or (at your option) any later */
|
||||
/* version. */
|
||||
/* This library is distributed in the hope that it will be useful, */
|
||||
/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
|
||||
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */
|
||||
/* See the GNU Library General Public License for more details. */
|
||||
/* You should have received a copy of the GNU Library General */
|
||||
/* Public License along with this library; if not, write to the */
|
||||
/* Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA */
|
||||
/* 02111-1307 USA */
|
||||
|
||||
/* Copyright (C) 1997 Makoto Matsumoto and Takuji Nishimura. */
|
||||
/* Any feedback is very welcome. For any question, comments, */
|
||||
/* see http://www.math.keio.ac.jp/matumoto/emt.html or email */
|
||||
/* matumoto@math.keio.ac.jp */
|
||||
|
||||
/* Period parameters */
|
||||
#define MT_N 624
|
||||
#define MT_M 397
|
||||
#define MATRIX_A 0x9908b0df /* constant vector a */
|
||||
#define UPPER_MASK 0x80000000 /* most significant w-r bits */
|
||||
#define LOWER_MASK 0x7fffffff /* least significant r bits */
|
||||
|
||||
/* Tempering parameters */
|
||||
#define TEMPERING_MASK_B 0x9d2c5680
|
||||
#define TEMPERING_MASK_C 0xefc60000
|
||||
#define TEMPERING_SHIFT_U(y) (y >> 11)
|
||||
#define TEMPERING_SHIFT_S(y) (y << 7)
|
||||
#define TEMPERING_SHIFT_T(y) (y << 15)
|
||||
#define TEMPERING_SHIFT_L(y) (y >> 18)
|
||||
|
||||
static unsigned long mt[MT_N]; /* the table for the state vector */
|
||||
static int mti=MT_N+1; /* mti==MT_N+1 means mt[MT_N] is not initialized */
|
||||
|
||||
/* initializing the table with a NONZERO seed */
|
||||
void sgenrand(unsigned long seed)
|
||||
{
|
||||
/* setting initial seeds to mt[MT_N] using */
|
||||
/* the generator Line 25 of Table 1 in */
|
||||
/* [KNUTH 1981, The Art of Computer Programming */
|
||||
/* Vol. 2 (2nd Ed.), pp102] */
|
||||
mt[0]= seed & 0xffffffff;
|
||||
for (mti=1; mti<MT_N; mti++)
|
||||
mt[mti] = (69069 * mt[mti-1]) & 0xffffffff;
|
||||
}
|
||||
|
||||
unsigned int genrand()
|
||||
{
|
||||
unsigned int y;
|
||||
static unsigned long mag01[2]={0x0, MATRIX_A};
|
||||
/* mag01[x] = x * MATRIX_A for x=0,1 */
|
||||
|
||||
if (mti >= MT_N) { /* generate MT_N words at one time */
|
||||
int kk;
|
||||
|
||||
if (mti == MT_N+1) /* if sgenrand() has not been called, */
|
||||
sgenrand(4357); /* a default initial seed is used */
|
||||
|
||||
for (kk=0;kk<MT_N-MT_M;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+MT_M] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
for (;kk<MT_N-1;kk++) {
|
||||
y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
|
||||
mt[kk] = mt[kk+(MT_M-MT_N)] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
}
|
||||
y = (mt[MT_N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
|
||||
mt[MT_N-1] = mt[MT_M-1] ^ (y >> 1) ^ mag01[y & 0x1];
|
||||
|
||||
mti = 0;
|
||||
}
|
||||
|
||||
y = mt[mti++];
|
||||
y ^= TEMPERING_SHIFT_U(y);
|
||||
y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
|
||||
y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C;
|
||||
y ^= TEMPERING_SHIFT_L(y);
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
double double_genrand() {
|
||||
return genrand() * (1.0/4294967295.0);
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
void generate_message(void *data, int size, int n_field)
|
||||
{
|
||||
if (n_field==8 || n_field==16) {
|
||||
int *p = (int *)data;
|
||||
size >>=2;
|
||||
int i;
|
||||
for (i=0; i<size; i++) {
|
||||
*p++ = genrand();
|
||||
}
|
||||
} else {
|
||||
unsigned short int *p = (unsigned short int *)data;
|
||||
size>>=1;
|
||||
int i;
|
||||
for (i=0; i<size; i++) {
|
||||
*p++ = genrand() & ((1<<n_field)-1);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int compare_message(void *p, void *q, int size)
|
||||
{
|
||||
int *pi = p;
|
||||
int *qi = q;
|
||||
size >>=2;
|
||||
int res=0;
|
||||
int i;
|
||||
for (i=0; i<size; i++) {
|
||||
if (pi[i]!=qi[i]) res++;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
double get_sec(clock_t diff)
|
||||
{
|
||||
return (double)diff / (double)CLOCKS_PER_SEC;
|
||||
}
|
||||
|
||||
double get_rate(clock_t diff, long long byte)
|
||||
{
|
||||
return (double)(byte)/((double)(1<<20) * get_sec(diff));
|
||||
}
|
||||
|
||||
double get_KB(long long byte)
|
||||
{
|
||||
return (double)byte/(double)(1<<10);
|
||||
}
|
||||
|
||||
// *******************************************************
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int i,j,b;
|
||||
clock_t tick;
|
||||
|
||||
// get parameters
|
||||
long long S;
|
||||
int n_field,nb_bloc,nb_time;
|
||||
|
||||
// default ones
|
||||
S = 1<<10;
|
||||
nb_bloc = 1<<14;
|
||||
nb_time = 100;
|
||||
|
||||
// help message
|
||||
if (argc<=1) {
|
||||
printf("usage: %s n_field [S in Byte] [nb bloc] [nb time]\n", argv[0]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// read parameters
|
||||
n_field = atoi(argv[1]);
|
||||
if (argc>2) S = atoi(argv[2])*n_field*4;
|
||||
if (argc>3) nb_bloc = atoi(argv[3]);
|
||||
if (argc>4) nb_time = atoi(argv[4]);
|
||||
|
||||
// print parameters
|
||||
printf("[parameters]\n");
|
||||
printf("GF 2^%d\n", n_field);
|
||||
|
||||
printf("packet size = %d Byte\n", S);
|
||||
printf("number of packets = %d (%f KB)\n", nb_bloc, get_KB(nb_bloc * S));
|
||||
printf("number of time = %d\n", nb_time);
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[initialisation (memory + randomness)]\n");
|
||||
tick = clock();
|
||||
|
||||
// init field
|
||||
fill_table(n_field);
|
||||
|
||||
// this is the memory for the packet and their positions
|
||||
void *source;
|
||||
void *destination;
|
||||
int *coeff;
|
||||
|
||||
source = malloc(S*nb_bloc);
|
||||
destination = malloc(S*nb_bloc);
|
||||
coeff = malloc(nb_bloc*sizeof(int));
|
||||
|
||||
// init random number generator
|
||||
// sgenrand(time(NULL));
|
||||
sgenrand(123);
|
||||
|
||||
// Generate the random message
|
||||
generate_message(source, S*nb_bloc, n_field);
|
||||
for (i=0; i<nb_bloc; i++)
|
||||
coeff[i]= genrand() & ((1<<n_field)-1);
|
||||
|
||||
// end of initialisation
|
||||
tick = clock() - tick;
|
||||
printf("%f s\n", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S*nb_bloc));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[builtin memcpy]\n");
|
||||
tick = clock();
|
||||
|
||||
for (j=0; j<nb_time; j++)
|
||||
for (i=0; i<nb_bloc; i++)
|
||||
{
|
||||
__builtin_memcpy(destination+i*S, source+i*S, S);
|
||||
}
|
||||
|
||||
tick = clock() - tick;
|
||||
printf("%f s\t", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S * nb_bloc * nb_time));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[my memxor]\n");
|
||||
tick = clock();
|
||||
|
||||
for (j=0; j<nb_time; j++)
|
||||
for (i=0; i<nb_bloc; i++)
|
||||
{
|
||||
memxor(destination+i*S, source+i*S, S);
|
||||
}
|
||||
|
||||
tick = clock() - tick;
|
||||
printf("%f s\t", get_sec(tick));
|
||||
printf("%f MB/s\n", get_rate(tick, S * nb_bloc * nb_time));
|
||||
printf("\n");
|
||||
|
||||
// ****************************************
|
||||
// ****************************************
|
||||
printf("[packet xor/mult]\n\n");
|
||||
|
||||
long long memory = S * nb_bloc * nb_time;
|
||||
double multiplicator;
|
||||
|
||||
int test;
|
||||
for (test=0; test<5; test++) {
|
||||
switch (test) {
|
||||
case 0 : use_xor();multiplicator=1;break;
|
||||
case 1 : use_xor2();multiplicator=1;break;
|
||||
case 2 : use_special();multiplicator=(double)n_field/16.0;break;
|
||||
case 3 : use_table();multiplicator=(double)n_field/16.0;break;
|
||||
case 4 : use_direct();multiplicator=(double)n_field/16.0;break;
|
||||
}
|
||||
if (n_field==8) multiplicator=1;
|
||||
|
||||
tick = clock();
|
||||
|
||||
for (j=0; j<nb_time; j++)
|
||||
for (i=0; i<nb_bloc; i++)
|
||||
{
|
||||
process(coeff[i], destination+i*S, source+i*S, S);
|
||||
}
|
||||
|
||||
tick = clock() - tick;
|
||||
printf("%f s\t", get_sec(tick));
|
||||
printf("%f MB/s\n", multiplicator * get_rate(tick, memory));
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
// end
|
||||
return 0;
|
||||
}
|
||||
|
||||
247
CUETools.CLParity/fastdecode/stdint.h
Normal file
247
CUETools.CLParity/fastdecode/stdint.h
Normal file
@@ -0,0 +1,247 @@
|
||||
// ISO C9x compliant stdint.h for Microsoft Visual Studio
|
||||
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
||||
//
|
||||
// Copyright (c) 2006-2008 Alexander Chemeris
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright notice,
|
||||
// this list of conditions and the following disclaimer.
|
||||
//
|
||||
// 2. Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
//
|
||||
// 3. The name of the author may be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _MSC_VER // [
|
||||
#error "Use this header only with Microsoft Visual C++ compilers!"
|
||||
#endif // _MSC_VER ]
|
||||
|
||||
#ifndef _MSC_STDINT_H_ // [
|
||||
#define _MSC_STDINT_H_
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
|
||||
// compiling for ARM we should wrap <wchar.h> include with 'extern "C++" {}'
|
||||
// or compiler give many errors like this:
|
||||
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
# include <wchar.h>
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
// Define _W64 macros to mark types changing their size, like intptr_t.
|
||||
#ifndef _W64
|
||||
# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
|
||||
# define _W64 __w64
|
||||
# else
|
||||
# define _W64
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
// 7.18.1 Integer types
|
||||
|
||||
// 7.18.1.1 Exact-width integer types
|
||||
|
||||
// Visual Studio 6 and Embedded Visual C++ 4 doesn't
|
||||
// realize that, e.g. char has the same size as __int8
|
||||
// so we give up on __intX for them.
|
||||
#if (_MSC_VER < 1300)
|
||||
typedef signed char int8_t;
|
||||
typedef signed short int16_t;
|
||||
typedef signed int int32_t;
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef unsigned int uint32_t;
|
||||
#else
|
||||
typedef signed __int8 int8_t;
|
||||
typedef signed __int16 int16_t;
|
||||
typedef signed __int32 int32_t;
|
||||
typedef unsigned __int8 uint8_t;
|
||||
typedef unsigned __int16 uint16_t;
|
||||
typedef unsigned __int32 uint32_t;
|
||||
#endif
|
||||
typedef signed __int64 int64_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
|
||||
|
||||
// 7.18.1.2 Minimum-width integer types
|
||||
typedef int8_t int_least8_t;
|
||||
typedef int16_t int_least16_t;
|
||||
typedef int32_t int_least32_t;
|
||||
typedef int64_t int_least64_t;
|
||||
typedef uint8_t uint_least8_t;
|
||||
typedef uint16_t uint_least16_t;
|
||||
typedef uint32_t uint_least32_t;
|
||||
typedef uint64_t uint_least64_t;
|
||||
|
||||
// 7.18.1.3 Fastest minimum-width integer types
|
||||
typedef int8_t int_fast8_t;
|
||||
typedef int16_t int_fast16_t;
|
||||
typedef int32_t int_fast32_t;
|
||||
typedef int64_t int_fast64_t;
|
||||
typedef uint8_t uint_fast8_t;
|
||||
typedef uint16_t uint_fast16_t;
|
||||
typedef uint32_t uint_fast32_t;
|
||||
typedef uint64_t uint_fast64_t;
|
||||
|
||||
// 7.18.1.4 Integer types capable of holding object pointers
|
||||
#ifdef _WIN64 // [
|
||||
typedef signed __int64 intptr_t;
|
||||
typedef unsigned __int64 uintptr_t;
|
||||
#else // _WIN64 ][
|
||||
typedef _W64 signed int intptr_t;
|
||||
typedef _W64 unsigned int uintptr_t;
|
||||
#endif // _WIN64 ]
|
||||
|
||||
// 7.18.1.5 Greatest-width integer types
|
||||
typedef int64_t intmax_t;
|
||||
typedef uint64_t uintmax_t;
|
||||
|
||||
|
||||
// 7.18.2 Limits of specified-width integer types
|
||||
|
||||
#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
|
||||
|
||||
// 7.18.2.1 Limits of exact-width integer types
|
||||
#define INT8_MIN ((int8_t)_I8_MIN)
|
||||
#define INT8_MAX _I8_MAX
|
||||
#define INT16_MIN ((int16_t)_I16_MIN)
|
||||
#define INT16_MAX _I16_MAX
|
||||
#define INT32_MIN ((int32_t)_I32_MIN)
|
||||
#define INT32_MAX _I32_MAX
|
||||
#define INT64_MIN ((int64_t)_I64_MIN)
|
||||
#define INT64_MAX _I64_MAX
|
||||
#define UINT8_MAX _UI8_MAX
|
||||
#define UINT16_MAX _UI16_MAX
|
||||
#define UINT32_MAX _UI32_MAX
|
||||
#define UINT64_MAX _UI64_MAX
|
||||
|
||||
// 7.18.2.2 Limits of minimum-width integer types
|
||||
#define INT_LEAST8_MIN INT8_MIN
|
||||
#define INT_LEAST8_MAX INT8_MAX
|
||||
#define INT_LEAST16_MIN INT16_MIN
|
||||
#define INT_LEAST16_MAX INT16_MAX
|
||||
#define INT_LEAST32_MIN INT32_MIN
|
||||
#define INT_LEAST32_MAX INT32_MAX
|
||||
#define INT_LEAST64_MIN INT64_MIN
|
||||
#define INT_LEAST64_MAX INT64_MAX
|
||||
#define UINT_LEAST8_MAX UINT8_MAX
|
||||
#define UINT_LEAST16_MAX UINT16_MAX
|
||||
#define UINT_LEAST32_MAX UINT32_MAX
|
||||
#define UINT_LEAST64_MAX UINT64_MAX
|
||||
|
||||
// 7.18.2.3 Limits of fastest minimum-width integer types
|
||||
#define INT_FAST8_MIN INT8_MIN
|
||||
#define INT_FAST8_MAX INT8_MAX
|
||||
#define INT_FAST16_MIN INT16_MIN
|
||||
#define INT_FAST16_MAX INT16_MAX
|
||||
#define INT_FAST32_MIN INT32_MIN
|
||||
#define INT_FAST32_MAX INT32_MAX
|
||||
#define INT_FAST64_MIN INT64_MIN
|
||||
#define INT_FAST64_MAX INT64_MAX
|
||||
#define UINT_FAST8_MAX UINT8_MAX
|
||||
#define UINT_FAST16_MAX UINT16_MAX
|
||||
#define UINT_FAST32_MAX UINT32_MAX
|
||||
#define UINT_FAST64_MAX UINT64_MAX
|
||||
|
||||
// 7.18.2.4 Limits of integer types capable of holding object pointers
|
||||
#ifdef _WIN64 // [
|
||||
# define INTPTR_MIN INT64_MIN
|
||||
# define INTPTR_MAX INT64_MAX
|
||||
# define UINTPTR_MAX UINT64_MAX
|
||||
#else // _WIN64 ][
|
||||
# define INTPTR_MIN INT32_MIN
|
||||
# define INTPTR_MAX INT32_MAX
|
||||
# define UINTPTR_MAX UINT32_MAX
|
||||
#endif // _WIN64 ]
|
||||
|
||||
// 7.18.2.5 Limits of greatest-width integer types
|
||||
#define INTMAX_MIN INT64_MIN
|
||||
#define INTMAX_MAX INT64_MAX
|
||||
#define UINTMAX_MAX UINT64_MAX
|
||||
|
||||
// 7.18.3 Limits of other integer types
|
||||
|
||||
#ifdef _WIN64 // [
|
||||
# define PTRDIFF_MIN _I64_MIN
|
||||
# define PTRDIFF_MAX _I64_MAX
|
||||
#else // _WIN64 ][
|
||||
# define PTRDIFF_MIN _I32_MIN
|
||||
# define PTRDIFF_MAX _I32_MAX
|
||||
#endif // _WIN64 ]
|
||||
|
||||
#define SIG_ATOMIC_MIN INT_MIN
|
||||
#define SIG_ATOMIC_MAX INT_MAX
|
||||
|
||||
#ifndef SIZE_MAX // [
|
||||
# ifdef _WIN64 // [
|
||||
# define SIZE_MAX _UI64_MAX
|
||||
# else // _WIN64 ][
|
||||
# define SIZE_MAX _UI32_MAX
|
||||
# endif // _WIN64 ]
|
||||
#endif // SIZE_MAX ]
|
||||
|
||||
// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
|
||||
#ifndef WCHAR_MIN // [
|
||||
# define WCHAR_MIN 0
|
||||
#endif // WCHAR_MIN ]
|
||||
#ifndef WCHAR_MAX // [
|
||||
# define WCHAR_MAX _UI16_MAX
|
||||
#endif // WCHAR_MAX ]
|
||||
|
||||
#define WINT_MIN 0
|
||||
#define WINT_MAX _UI16_MAX
|
||||
|
||||
#endif // __STDC_LIMIT_MACROS ]
|
||||
|
||||
|
||||
// 7.18.4 Limits of other integer types
|
||||
|
||||
#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
|
||||
|
||||
// 7.18.4.1 Macros for minimum-width integer constants
|
||||
|
||||
#define INT8_C(val) val##i8
|
||||
#define INT16_C(val) val##i16
|
||||
#define INT32_C(val) val##i32
|
||||
#define INT64_C(val) val##i64
|
||||
|
||||
#define UINT8_C(val) val##ui8
|
||||
#define UINT16_C(val) val##ui16
|
||||
#define UINT32_C(val) val##ui32
|
||||
#define UINT64_C(val) val##ui64
|
||||
|
||||
// 7.18.4.2 Macros for greatest-width integer constants
|
||||
#define INTMAX_C INT64_C
|
||||
#define UINTMAX_C UINT64_C
|
||||
|
||||
#endif // __STDC_CONSTANT_MACROS ]
|
||||
|
||||
|
||||
#endif // _MSC_STDINT_H_ ]
|
||||
1228
CUETools.CLParity/fastdecode/test_rs.c
Normal file
1228
CUETools.CLParity/fastdecode/test_rs.c
Normal file
File diff suppressed because it is too large
Load Diff
105
CUETools.CLParity/matlab/Errors_And_Erasures_Test.m
Normal file
105
CUETools.CLParity/matlab/Errors_And_Erasures_Test.m
Normal file
@@ -0,0 +1,105 @@
|
||||
% Reed-Solomon Errors and Erasures Decoding
|
||||
% Decoding is based on the Massey-Berlekamp decoder. Based on the notes of Adina Matache: http://www.ee.ucla.edu/~matache/rsc/slide.html
|
||||
% This program was written by Jaco Versfeld. For any questions or remarks email Jaco at jaco.versfeld@gmail.com.
|
||||
% This code is provided as is and Jaco Versfeld accepts no liability what so ever.
|
||||
% Feel free to use and modify this code for whatever purpose.
|
||||
|
||||
clear
|
||||
clc
|
||||
|
||||
|
||||
%**************************
|
||||
%*** RS code Parameters ***
|
||||
%**************************
|
||||
|
||||
% Here we specify the parameters of the (n,k) Reed-Solomon code
|
||||
|
||||
|
||||
m = 4 %Determine the Galois Field, GF(2^m)
|
||||
n = 2^m - 1 %This is fixed for a Reed-Solomon, the length of the codeword
|
||||
k = 3 %The number of data symbols, can be anything between 1 to n - 1
|
||||
h = n-k
|
||||
t = h/2
|
||||
|
||||
%**************************
|
||||
|
||||
|
||||
|
||||
|
||||
%*** Generate the Galois Field and Generator polynomial ***
|
||||
|
||||
% This step is neccessary for Matlab. Here we create the Galois Field which is used for
|
||||
% computations of the Reed-Solomon code
|
||||
|
||||
|
||||
field = gftuple([-1:2^m-2]', m, 2);
|
||||
|
||||
|
||||
%Generator Polynomial:
|
||||
%Lin + Costello, p.171
|
||||
%The Generator polynomial is one way of encoding Reed-Solomon codes
|
||||
|
||||
%Construct the generator polynomial
|
||||
c = [1 0];
|
||||
p(1) = c(1);
|
||||
|
||||
for i = 1:h-1
|
||||
p(1) = gfmul(p(1),1,field);
|
||||
p(2) = 0;
|
||||
c = gfconv(c,p,field);
|
||||
end
|
||||
g = c;
|
||||
|
||||
%**************************
|
||||
|
||||
|
||||
|
||||
%*** RS Encode ***
|
||||
|
||||
%Generate Random Data
|
||||
DATA_IN = randint(1,k,[-1 n-1]);
|
||||
|
||||
%RS encoding
|
||||
parity = RS_ENC4(DATA_IN,n,k,g,field);
|
||||
RS_CODE = [parity DATA_IN];
|
||||
|
||||
%********************************
|
||||
|
||||
|
||||
|
||||
|
||||
%*** Channel ***
|
||||
RECEIVED = RS_CODE
|
||||
|
||||
|
||||
%I introduce the errors manually here, but any channel can be used here, like an AWGN.
|
||||
% A maximum of 2*t + e <= (n-k) errors and erasures can be corrected, where t is the number of
|
||||
% errors and e the number of erasures
|
||||
|
||||
%Introduce some errors
|
||||
RECEIVED(3) = gfadd(RECEIVED(3),randint(1,1,[-1 n-1]),field);
|
||||
RECEIVED(5) = gfadd(RECEIVED(3),randint(1,1,[-1 n-1]),field);
|
||||
|
||||
|
||||
%Introduce some erasures
|
||||
erasures = [1 7 9]; %This polynomial contains the positions of the erasures
|
||||
|
||||
RECEIVED(1) = -2
|
||||
RECEIVED(7) = -2
|
||||
RECEIVED(9) = -2
|
||||
|
||||
%****************
|
||||
|
||||
|
||||
|
||||
%*** Decoding ***
|
||||
|
||||
DECODED = RS_E_E_DEC(RECEIVED, erasures,n,k,t,h,g,field);
|
||||
|
||||
%****************
|
||||
|
||||
if all(DECODED == RS_CODE)
|
||||
disp('Decoding Success')
|
||||
else
|
||||
disp('Decoding Failure')
|
||||
end
|
||||
51
CUETools.CLParity/matlab/RS_ENC4.m
Normal file
51
CUETools.CLParity/matlab/RS_ENC4.m
Normal file
@@ -0,0 +1,51 @@
|
||||
function R = RS_ENC4(code,n,k,g,field)
|
||||
|
||||
%R = RS_ENC4(code,n,k,g,field)
|
||||
|
||||
%R is the parity block that is included
|
||||
|
||||
% m is the number of bits of each symbol
|
||||
% n = 2^m-1 => the number of symbols transmitted
|
||||
% k = the number of code symbols that is going to be codes to a n symbol message
|
||||
% t = the number of errors that can be found + corrected
|
||||
|
||||
%Tripple-error-correcting Reed-Solomon code with symbols from GF(2^4)
|
||||
% Lin & Costello p.175 and article: Reed_Solomon Codes by Joel Sylvester
|
||||
|
||||
%generator polynomial
|
||||
|
||||
%field = gftuple([-1:2^m-2]', m, 2);
|
||||
|
||||
%p = 2; m = 4;
|
||||
%primpoly = [0 0 -Inf -Inf 0];
|
||||
%field = gftuple([-1:p^m-2]',primpoly,p);
|
||||
|
||||
|
||||
%Lin + Costello, p.171
|
||||
|
||||
|
||||
%Encoder (Article)
|
||||
%shift codeword by X^(n-k)
|
||||
for ii = 1:n-k
|
||||
shiftpol(ii) = -Inf;
|
||||
end
|
||||
shiftpol(n-k+1) = 0;
|
||||
shiftcode = gfconv(code,shiftpol,field);
|
||||
|
||||
|
||||
%divide shifted codeword by g(x)
|
||||
[Q, R] = GFDECONV(shiftcode, g, field);
|
||||
|
||||
while length(R) < n-k
|
||||
R = [R -inf];
|
||||
end
|
||||
|
||||
%for ii = 1:n-k
|
||||
% CON(ii) = -Inf;
|
||||
% if length(R) >= ii
|
||||
% CON(ii) = gfadd(R(ii),CON(ii),field);
|
||||
% end
|
||||
%end
|
||||
|
||||
%%concatenate the parity to the data
|
||||
%message = [CON code];
|
||||
229
CUETools.CLParity/matlab/RS_E_E_DEC.m
Normal file
229
CUETools.CLParity/matlab/RS_E_E_DEC.m
Normal file
@@ -0,0 +1,229 @@
|
||||
%h = n - k = npar
|
||||
%t = h / 2
|
||||
|
||||
function DECODED = RS_E_E_DEC(received, erasures,n,k,t,h,g,field);
|
||||
|
||||
%Check for decoding failures
|
||||
%Previous decoder RS_E_E_DEC4
|
||||
|
||||
%****************
|
||||
%*** Decoding ***
|
||||
%****************
|
||||
|
||||
%syndrome calculation
|
||||
S = [];
|
||||
%Subtitute alpha^i in received polynomial - Lin + Costello p.152 eq. 6.13
|
||||
for ii = 1:2*t
|
||||
S(ii)= -Inf;
|
||||
for cc = 1:n
|
||||
S(ii) = gfadd(S(ii),gfmul(received(cc),gfpow(ii,cc-1,n),field),field); %Sum all the terms
|
||||
end
|
||||
end
|
||||
%S
|
||||
|
||||
%Test if syndrome = 0, if syndrome equals 0, assume that no errors occured
|
||||
for i = 1:2*t
|
||||
test_pol(i) = -Inf;
|
||||
end
|
||||
|
||||
if all (S == test_pol)
|
||||
|
||||
message = received;
|
||||
|
||||
for i = 1:n
|
||||
if message(i) < 0
|
||||
message(i) = -Inf;
|
||||
end
|
||||
end
|
||||
|
||||
else
|
||||
|
||||
|
||||
%Compute the erasure locator polynomial:
|
||||
erasures_pos = erasures - 1;
|
||||
num_erasures = length(erasures);
|
||||
|
||||
%Compute the erasure-locator polynomial
|
||||
erasure_loc_pol = 0;
|
||||
for i = 1:length(erasures_pos)
|
||||
erasure_loc_pol = gfconv(erasure_loc_pol, [0 erasures_pos(i)],field);
|
||||
end
|
||||
|
||||
%Compute modified syndrome polynomial:
|
||||
S_pol = [-inf S];
|
||||
dividend = gfconv(erasure_loc_pol,gfadd(0,S_pol,field),field);
|
||||
dividend = gfadd(dividend,0,field);
|
||||
|
||||
|
||||
divisor = [];
|
||||
for i = 1:2*t+2
|
||||
divisor(i) = -Inf;
|
||||
end
|
||||
divisor(2*t+2) = 0;
|
||||
|
||||
[q,mod_syn] = gfdeconv(dividend,divisor,field);
|
||||
|
||||
while length(mod_syn) < h+1
|
||||
mod_syn = [mod_syn -Inf];
|
||||
end
|
||||
|
||||
S_M = [];
|
||||
for i = 1:h - num_erasures
|
||||
S_M(i) = mod_syn(i + num_erasures + 1);
|
||||
end
|
||||
|
||||
flag = 0;
|
||||
if isempty(S_M) == 1
|
||||
flag = 0;
|
||||
else
|
||||
for i = 1:length(S_M)
|
||||
if (S_M(i) ~= -Inf)
|
||||
flag = 1; %Other errors occured in conjunction with erasures
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
%Find error-location polynomial sigma (Berlekamp's iterative algorithm -
|
||||
%sigma = [0 7 4 6]
|
||||
if (flag == 1)
|
||||
%sigma = M_B2(n,k,length(S_M) - 1,S_M,field);
|
||||
|
||||
|
||||
num_iter = t - num_erasures/2;
|
||||
|
||||
|
||||
sigma = massey_berlekamp_M3(n,k,num_iter,S_M,field);
|
||||
|
||||
%Chien search
|
||||
%step 3 from Lin + Costello p.175
|
||||
%the error locating polynomial have a maximum of t entries
|
||||
error_loc = [];
|
||||
kk = 0;
|
||||
|
||||
for ii = 0:n-1
|
||||
error_r = -Inf;
|
||||
for cc = 1:length(sigma)
|
||||
error_r = gfadd(error_r,gfmul(sigma(cc),gfpow(ii,cc-1,n),field),field); %Sum all the terms
|
||||
end
|
||||
if error_r == -Inf
|
||||
kk = kk + 1;
|
||||
error_loc(kk) = ii;
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
% Test if the roots are distinct
|
||||
% Form a test polynomial by multiplying the roots of error_loc with each other
|
||||
% Divide the error_loc pol by test pol
|
||||
% if the degree of the quotient exceeds a constant, then the roots are
|
||||
% not distinct
|
||||
|
||||
test_pol = 0;
|
||||
for ii = 1:length(error_loc)
|
||||
test_pol = gfconv(test_pol,[error_loc(ii) 0],field);
|
||||
end
|
||||
|
||||
%test_pol
|
||||
%error_loc
|
||||
%sigma
|
||||
|
||||
[QQ,RR] = gfdeconv(sigma,test_pol,field);
|
||||
if length(QQ) > 1
|
||||
DECODED = received;
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
comp_error_locs = [];
|
||||
%Take reciprocals of elements in error_loc - error location numbers
|
||||
for ii = 1:length(error_loc)
|
||||
comp_error_locs(ii) = gfdiv(0,error_loc(ii),field);
|
||||
end
|
||||
%error_loc_p %places where errors occur
|
||||
else
|
||||
sigma = 0;
|
||||
comp_error_locs = [];
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
%Calculate error magnitudes - Forney algorithm?
|
||||
%Step 4. Lin and Costello - This program uses another algorithm from:
|
||||
% drake.ee.washington.edu/~adina/rsc/slide/node9.html
|
||||
% http://www.ee.ucla.edu/~matache/rsc/slide.html
|
||||
%Compute the error magnitude polynomial:
|
||||
%1. Form the function [1 + S(x)]
|
||||
|
||||
SS(1) = 0;
|
||||
for ii = 1: 2*t
|
||||
SS(ii+1) = S(ii);
|
||||
end
|
||||
|
||||
%SS
|
||||
|
||||
|
||||
%2. form the product of SS and the KEY Equation
|
||||
%OMEGA = gfconv(SS,sigma,field);
|
||||
OMEGA = gfconv(sigma,gfadd(0,mod_syn,field),field);
|
||||
|
||||
|
||||
|
||||
%3. OMEGA = (SS * sigma)mod(x^(2t+1))
|
||||
%3.1. Form a function := x^(2t+1)
|
||||
for ii = 1: (2*t)
|
||||
DIV(ii)= -Inf;
|
||||
end
|
||||
DIV(2*t+1) = 0;
|
||||
|
||||
|
||||
%3.2. OMEGA = (SS * sigma)mod(x^(2t+1))
|
||||
[DUMMY, OMEGA] = gfdeconv(OMEGA,DIV,field);
|
||||
%OMEGA
|
||||
|
||||
%4. Differentiate the key equation with respect to x
|
||||
%sigma_diff = gfdiff(sigma);
|
||||
tsi = gfconv(sigma,erasure_loc_pol,field);
|
||||
tsi_diff = gfdiff(tsi);
|
||||
|
||||
e_e_places = [erasures_pos comp_error_locs];
|
||||
|
||||
%Calculate the error magnitudes
|
||||
%Substitute the inverse into sigma_diff
|
||||
for ii = 1:length(e_e_places)
|
||||
%error_loc_p(ii)
|
||||
ERR_DEN = gfsubstitute(tsi_diff,gfdiv(0,e_e_places(ii),field),length(tsi_diff),n,field);
|
||||
ERR_NUM = gfsubstitute(OMEGA,gfdiv(0,e_e_places(ii),field),length(OMEGA),n,field);
|
||||
ERR_NUM = gfmul(ERR_NUM,e_e_places(ii),field);
|
||||
ERR(ii) = gfmul(ERR_NUM,gfdiv(0,ERR_DEN,field),field);
|
||||
end
|
||||
|
||||
%error_loc_p
|
||||
%ERR
|
||||
|
||||
%Determine introduced error
|
||||
for ii = 1:n
|
||||
ERR_p(ii) = -Inf;
|
||||
end
|
||||
|
||||
%Error - t must be substituted by amount of errors
|
||||
for ii = 1:length(e_e_places)
|
||||
pp = e_e_places(ii);
|
||||
ERR_p(pp+1) = ERR(ii);
|
||||
end
|
||||
|
||||
%ERR_p
|
||||
|
||||
message = gfadd(received,ERR_p,field);
|
||||
|
||||
end
|
||||
|
||||
DECODED = message;
|
||||
14
CUETools.CLParity/matlab/gfdiff.m
Normal file
14
CUETools.CLParity/matlab/gfdiff.m
Normal file
@@ -0,0 +1,14 @@
|
||||
function diff = gfdiff(polynomial)
|
||||
|
||||
%use: diff = gfdiff(polynomial)
|
||||
%Differentiate polynomial with respect to x
|
||||
l = length(polynomial);
|
||||
|
||||
for cc = 2:l
|
||||
%cc-1 represents the power of x
|
||||
if mod(cc-1,2) == 0 %all the even powers are zero because of GF(2)
|
||||
diff(cc-1) = -Inf;
|
||||
else
|
||||
diff(cc-1) = polynomial(cc);
|
||||
end
|
||||
end
|
||||
4
CUETools.CLParity/matlab/gfpow.m
Normal file
4
CUETools.CLParity/matlab/gfpow.m
Normal file
@@ -0,0 +1,4 @@
|
||||
function a = gfpow(value,p,n)
|
||||
%a = gfpow(alpha,p,n)
|
||||
%alpha^value, (alpha^value)^p and n = 2^m- in Galois field
|
||||
a = mod(value*p,n);
|
||||
11
CUETools.CLParity/matlab/gfsubstitute.m
Normal file
11
CUETools.CLParity/matlab/gfsubstitute.m
Normal file
@@ -0,0 +1,11 @@
|
||||
function sum = gfsubstitute(polynomial,value,terms,n,field)
|
||||
|
||||
%use: gfsubstitute(polynomial,value,terms,n,field)
|
||||
%Subtitute i^value in polynomial
|
||||
%the number of terms in polynomial
|
||||
%n = n of the decoder
|
||||
|
||||
sum = polynomial(1);
|
||||
for cc = 2:terms
|
||||
sum = gfadd(sum,gfmul(polynomial(cc),gfpow(value,cc-1,n),field),field); %Sum all the terms
|
||||
end
|
||||
106
CUETools.CLParity/matlab/massey_berlekamp_M3.m
Normal file
106
CUETools.CLParity/matlab/massey_berlekamp_M3.m
Normal file
@@ -0,0 +1,106 @@
|
||||
function sigma = massey_berlekamp_M2(n,k,t,S,field)
|
||||
|
||||
%http://www.ee.ucla.edu/~matache/rsc/node8.html#SECTION00051000000000000000
|
||||
|
||||
%Step 2: Initialize variables
|
||||
kk = 0;
|
||||
|
||||
|
||||
|
||||
for i = 1:n
|
||||
Kappa(1,i) = -Inf;
|
||||
end
|
||||
Kappa(1,1) = 0;
|
||||
|
||||
%Kappa
|
||||
|
||||
|
||||
|
||||
LAMBDA = 0;
|
||||
Tau = [-inf 0];
|
||||
|
||||
done = 0;
|
||||
|
||||
%Step 3:
|
||||
while (done ~= 1)
|
||||
%disp('K');
|
||||
|
||||
kk = kk + 1;
|
||||
|
||||
%disp('S(kk)');
|
||||
%S(kk)
|
||||
|
||||
%disp('LAMBDA')
|
||||
%LAMBDA
|
||||
|
||||
sum = -Inf;
|
||||
for i = 1:LAMBDA
|
||||
%Kappa(kk,i+1)
|
||||
%S(kk-i)
|
||||
sum = gfadd(sum,gfmul(Kappa(kk,i+1),S(kk-i),field),field);
|
||||
end
|
||||
|
||||
%disp('Delta - sum')
|
||||
%sum
|
||||
|
||||
delta(kk) = gfadd(S(kk),sum,field);
|
||||
|
||||
%disp('delta');
|
||||
%delta
|
||||
|
||||
%Step 4:
|
||||
if (delta(kk) == -Inf)
|
||||
for i = 1:n
|
||||
Kappa(kk+1,i) = Kappa(kk,i);
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if (delta(kk) ~= -Inf)
|
||||
|
||||
for i = 1:n
|
||||
Kappa_i(i) = Kappa(kk-1+1,i);
|
||||
end
|
||||
|
||||
Kappa_k = gfadd(Kappa_i,gfconv(delta(kk),Tau,field),field);
|
||||
|
||||
while length(Kappa_k) < n
|
||||
Kappa_k = [Kappa_k -Inf];
|
||||
end
|
||||
|
||||
for i = 1:length(Kappa_k)
|
||||
Kappa(kk+1,i) = Kappa_k(i);
|
||||
end
|
||||
|
||||
|
||||
%Step 7:
|
||||
if (2*LAMBDA < kk)
|
||||
LAMBDA = kk - LAMBDA;
|
||||
|
||||
for i = 1:n
|
||||
Kappa_k(i) = Kappa(kk+1-1,i);
|
||||
end
|
||||
|
||||
Tau = gfconv(Kappa_k,gfdiv(0,delta(kk),field),field);
|
||||
end
|
||||
end
|
||||
|
||||
%Step 8:
|
||||
Tau = gfconv([-Inf 0],Tau,field);
|
||||
|
||||
%step 9:
|
||||
if kk >= 2*t
|
||||
done = 1;
|
||||
end
|
||||
|
||||
%Kappa
|
||||
%LAMBDA
|
||||
%Tau
|
||||
|
||||
|
||||
end
|
||||
|
||||
|
||||
for i = 1:n
|
||||
sigma(i) = Kappa(kk+1,i);
|
||||
end
|
||||
199
CUETools.CLParity/parity.cl
Normal file
199
CUETools.CLParity/parity.cl
Normal file
@@ -0,0 +1,199 @@
|
||||
/**
|
||||
* CUETools.CLParity: Reed-Solomon (32 bit) using OpenCL
|
||||
* Copyright (c) 2010 Gregory S. Chudov
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#define WARP_SIZE 32
|
||||
|
||||
int
|
||||
galois_mul(int x, int y)
|
||||
{
|
||||
const int poly = 00020000007;
|
||||
int prod = 0;
|
||||
|
||||
//#pragma unroll 0
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
if (x & 1) prod ^= y;
|
||||
y = (y << 1) ^ ((y >> 31) ? poly : 0);
|
||||
if (x & 2) prod ^= y;
|
||||
y = (y << 1) ^ ((y >> 31) ? poly : 0);
|
||||
if (x & 4) prod ^= y;
|
||||
y = (y << 1) ^ ((y >> 31) ? poly : 0);
|
||||
if (x & 8) prod ^= y;
|
||||
y = (y << 1) ^ ((y >> 31) ? poly : 0);
|
||||
if (x & 16) prod ^= y;
|
||||
y = (y << 1) ^ ((y >> 31) ? poly : 0);
|
||||
if (x & 32) prod ^= y;
|
||||
y = (y << 1) ^ ((y >> 31) ? poly : 0);
|
||||
if (x & 64) prod ^= y;
|
||||
y = (y << 1) ^ ((y >> 31) ? poly : 0);
|
||||
if (x & 128) prod ^= y;
|
||||
y = (y << 1) ^ ((y >> 31) ? poly : 0);
|
||||
x >>= 8;
|
||||
}
|
||||
return prod;
|
||||
}
|
||||
|
||||
__kernel __attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
|
||||
void reedSolomonInit(__global int *encodeGx0, __global int *encodeGx1, __global int *parity0, __global int *parity1, int npar)
|
||||
{
|
||||
int i = get_group_id(0) * GROUP_SIZE + get_local_id(0);
|
||||
parity0[i] = parity1[i] = 0;
|
||||
encodeGx0[i] = encodeGx1[i] = (i == npar - 1 ? 1 : 0);
|
||||
if (i < GROUP_SIZE) encodeGx0[npar + i] = encodeGx1[npar + i] = 0;
|
||||
if (i == 0) parity0[npar] = parity1[npar] = 0;
|
||||
}
|
||||
|
||||
__kernel __attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
|
||||
void reedSolomonInitGx(__global int *exp, __global int *old_encodeGx, __global int *new_encodeGx, int npar, int step)
|
||||
{
|
||||
int tid = get_local_id(0);
|
||||
int i = get_group_id(0) * (GROUP_SIZE / 2) + tid;
|
||||
__local int gx[GROUP_SIZE];
|
||||
__local int ex[GROUP_SIZE / 2];
|
||||
|
||||
gx[tid] = old_encodeGx[i];
|
||||
if (tid < GROUP_SIZE / 2) ex[tid] = exp[step * (GROUP_SIZE / 2) + tid];
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
for (int s = 0; s < GROUP_SIZE / 2; s++)
|
||||
{
|
||||
int p = tid + s < (GROUP_SIZE - 1) ? galois_mul(gx[tid], ex[s]) ^ gx[tid + 1] : 0;
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
gx[tid] = p;
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
}
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
if (tid < GROUP_SIZE / 2) new_encodeGx[i] = gx[tid];
|
||||
}
|
||||
|
||||
__kernel __attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
|
||||
void reedSolomonA(__global int* data, __global int*encodeGx, __global int*old_parity, int npar, int offset)
|
||||
{
|
||||
int tid = get_local_id(0);
|
||||
__local int ib[GROUP_SIZE];
|
||||
__local int gx[GROUP_SIZE];
|
||||
|
||||
ib[tid] = data[offset + tid] ^ old_parity[tid];
|
||||
gx[tid] = encodeGx[tid];
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
|
||||
for (int s = 0; s < GROUP_SIZE; s++)
|
||||
{
|
||||
if (tid > s)
|
||||
ib[tid] ^= galois_mul(ib[s], gx[tid - 1 - s]);
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
}
|
||||
|
||||
data[offset + tid] = ib[tid];
|
||||
}
|
||||
|
||||
__kernel __attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
|
||||
void reedSolomonB(__global int* data, __global int* encodeGx, __global int* parity, int npar, int offset)
|
||||
{
|
||||
__local int ib[GROUP_SIZE];
|
||||
__local int gx[GROUP_SIZE * 2];
|
||||
int tid = get_local_id(0);
|
||||
int i = (get_group_id(0) * GROUP_SIZE) + get_local_id(0);
|
||||
ib[tid] = data[offset + tid];
|
||||
gx[tid] = encodeGx[i];
|
||||
gx[tid + GROUP_SIZE] = i + GROUP_SIZE >= npar ? 0 : encodeGx[i + GROUP_SIZE];
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
|
||||
int p = i + GROUP_SIZE >= npar ? 0 : parity[i + GROUP_SIZE];
|
||||
for (int s = 0; s < GROUP_SIZE; s++)
|
||||
p ^= galois_mul(ib[s], gx[tid + GROUP_SIZE - 1 - s]);
|
||||
parity[i] = p;
|
||||
}
|
||||
|
||||
__kernel __attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
|
||||
void reedSolomon(__global int*data, __global int*encodeGx, __global int*old_parity, __global int *new_parity, int npar, int offset)
|
||||
{
|
||||
int tid = get_local_id(0);
|
||||
int i = (get_group_id(0) * GROUP_SIZE) + get_local_id(0);
|
||||
__local int old[GROUP_SIZE];
|
||||
__local int ib;
|
||||
if (tid == 0)
|
||||
ib = old_parity[0] ^ data[offset];
|
||||
if (tid == 0)
|
||||
old[GROUP_SIZE - 1] = old_parity[i + GROUP_SIZE];
|
||||
else
|
||||
old[tid - 1] = old_parity[i];
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
new_parity[i] = old[tid] ^ galois_mul(ib, encodeGx[i]);
|
||||
//new_parity[i] = old_parity[i + 1] ^ galois_mul(ib, encodeGx[i]);
|
||||
}
|
||||
|
||||
__kernel __attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
|
||||
void reedSolomonDecodeInit(__global int* data, int dataLen, __global int*expTbl, __global int*syn, int npar)
|
||||
{
|
||||
int i = (get_group_id(0) * GROUP_SIZE) + get_local_id(0);
|
||||
syn[i] = 0;
|
||||
}
|
||||
|
||||
__kernel __attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
|
||||
void reedSolomonDecode(__global int* data, int dataLen, __global int*expTbl, __global int*syn, int npar)
|
||||
{
|
||||
int tid = get_local_id(0);
|
||||
int i = (get_group_id(0) * GROUP_SIZE) + get_local_id(0);
|
||||
__local int ds[GROUP_SIZE];
|
||||
|
||||
ds[tid] = data[tid];
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
|
||||
int wk = syn[i];
|
||||
int ai = expTbl[i];
|
||||
|
||||
for (int s = 0; s < GROUP_SIZE; s++)
|
||||
wk = ds[s] ^ galois_mul(wk, ai);
|
||||
|
||||
syn[i] = wk;
|
||||
}
|
||||
|
||||
int galois_exp(int t, int n)
|
||||
{
|
||||
int e = 1;
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
if ((n >> i) & 1) e = galois_mul(e, t);
|
||||
t = galois_mul(t, t);
|
||||
}
|
||||
return e;
|
||||
}
|
||||
|
||||
__kernel __attribute__((reqd_work_group_size(GROUP_SIZE, 1, 1)))
|
||||
void chienSearch(__global int *wk_out, int pos, __global int *sigma, int jisu, int n)
|
||||
{
|
||||
const int poly = 00020000007;
|
||||
const int oneByTwo = (poly >> 1) | (1 << 31);
|
||||
int tid = get_local_id(0);
|
||||
int i = (get_group_id(0) * GROUP_SIZE) + get_local_id(0);
|
||||
int zexp = galois_exp(oneByTwo, i + pos);
|
||||
int wk = 1;
|
||||
int jzexp = 1;
|
||||
__local int sj;
|
||||
|
||||
for (int j = 1; j <= jisu; j++)
|
||||
{
|
||||
jzexp = galois_mul(jzexp, zexp);
|
||||
if (tid == 0) sj = sigma[j];
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
wk ^= galois_mul(sj, jzexp); // wk ^= sigma[j] / 2^(ij);
|
||||
barrier(CLK_LOCAL_MEM_FENCE);
|
||||
}
|
||||
wk_out[i] = wk;
|
||||
}
|
||||
@@ -1,73 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{F8C29953-A697-4462-82DC-DA7146654A64}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUETools.CTDB.Converter</RootNamespace>
|
||||
<TargetFrameworks>net40;net20;netcoreapp2.0</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUETools.CTDB.Converter</AssemblyName>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<RootNamespace>CUETools.CTDB.Converter</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<OutputType>Exe</OutputType>
|
||||
<Description>A tool for CTDB database files conversion.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisLogFile>bin\Debug\CUETools.CTDB.Converter.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
|
||||
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
|
||||
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'">
|
||||
<OutputPath>..\bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<CodeAnalysisLogFile>bin\Release\CUETools.CTDB.Converter.exe.CodeAnalysisLog.xml</CodeAnalysisLogFile>
|
||||
<CodeAnalysisUseTypeNameInSuppression>true</CodeAnalysisUseTypeNameInSuppression>
|
||||
<CodeAnalysisModuleSuppressionsFile>GlobalSuppressions.cs</CodeAnalysisModuleSuppressionsFile>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
<CodeAnalysisRuleSetDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets</CodeAnalysisRuleSetDirectories>
|
||||
<CodeAnalysisIgnoreBuiltInRuleSets>false</CodeAnalysisIgnoreBuiltInRuleSets>
|
||||
<CodeAnalysisRuleDirectories>;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules</CodeAnalysisRuleDirectories>
|
||||
<CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj">
|
||||
<Project>{ECEB839C-171B-4535-958F-9899310A0342}</Project>
|
||||
<Name>CUETools.Parity</Name>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ProjectReference>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CUETools.CTDB.Converter")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CUETools.CTDB.Converter")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2011")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("b6155a69-7207-4214-ad24-7737b8b1868a")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -51,18 +51,6 @@
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Interop.HelperFunctionsLib, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>.\Interop.HelperFunctionsLib.dll</HintPath>
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="FormSubmitParity.cs">
|
||||
<SubType>Form</SubType>
|
||||
@@ -116,24 +104,6 @@
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.AccurateRip\CUETools.AccurateRip.csproj">
|
||||
<Project>{5802C7E9-157E-4124-946D-70B5AE48A5A1}</Project>
|
||||
<Name>CUETools.AccurateRip</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
|
||||
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
|
||||
<Name>CUETools.CDImage</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||
<Name>CUETools.Codecs</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CTDB\CUETools.CTDB.csproj">
|
||||
<Project>{AA2A9A7E-45FB-4632-AD85-85B0E556F818}</Project>
|
||||
<Name>CUETools.CTDB</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="app.config" />
|
||||
</ItemGroup>
|
||||
@@ -163,6 +133,42 @@
|
||||
<ItemGroup>
|
||||
<None Include="Resources\document-save_12.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Interop.HelperFunctionsLib">
|
||||
<HintPath>.\Interop.HelperFunctionsLib.dll</HintPath>
|
||||
<EmbedInteropTypes>True</EmbedInteropTypes>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.AccurateRip\CUETools.AccurateRip.csproj">
|
||||
<Project>{5802c7e9-157e-4124-946d-70b5ae48a5a1}</Project>
|
||||
<Name>CUETools.AccurateRip</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
|
||||
<Project>{1dd41038-d885-46c5-8dde-e0b82f066584}</Project>
|
||||
<Name>CUETools.CDImage</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
||||
<Project>{6458a13a-30ef-45a9-9d58-e5031b17bee2}</Project>
|
||||
<Name>CUETools.Codecs</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CTDB.Types\CUETools.CTDB.Types.csproj">
|
||||
<Project>{c36efaa5-4f81-4a29-800d-ba866ff13bc8}</Project>
|
||||
<Name>CUETools.CTDB.Types</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CTDB\CUETools.CTDB.csproj">
|
||||
<Project>{aa2a9a7e-45fb-4632-ad85-85b0e556f818}</Project>
|
||||
<Name>CUETools.CTDB</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj">
|
||||
<Project>{eceb839c-171b-4535-958f-9899310a0342}</Project>
|
||||
<Name>CUETools.Parity</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Data;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -1,40 +1,40 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
[XmlRoot(ElementName = "ctdb", Namespace = "http://db.cuetools.net/ns/mmd-1.0#")]
|
||||
public class CTDBResponse
|
||||
{
|
||||
[XmlIgnore]
|
||||
public bool ParityNeeded
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.status == "parity needed";
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string status { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public string updateurl { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public string updatemsg { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public string message { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public int npar { get; set; }
|
||||
|
||||
[XmlElement]
|
||||
public CTDBResponseEntry[] entry;
|
||||
|
||||
[XmlElement]
|
||||
public CTDBResponseMeta[] metadata;
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
[XmlRoot(ElementName = "ctdb", Namespace = "http://db.cuetools.net/ns/mmd-1.0#")]
|
||||
public class CTDBResponse
|
||||
{
|
||||
[XmlIgnore]
|
||||
public bool ParityNeeded
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.status == "parity needed";
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string status { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public string updateurl { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public string updatemsg { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public string message { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public int npar { get; set; }
|
||||
|
||||
[XmlElement]
|
||||
public CTDBResponseEntry[] entry;
|
||||
|
||||
[XmlElement]
|
||||
public CTDBResponseMeta[] metadata;
|
||||
}
|
||||
}
|
||||
@@ -1,30 +1,30 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseEntry
|
||||
{
|
||||
[XmlAttribute]
|
||||
public long id { get; set; }
|
||||
[XmlAttribute]
|
||||
public string crc32 { get; set; }
|
||||
[XmlAttribute]
|
||||
public int confidence { get; set; }
|
||||
[XmlAttribute]
|
||||
public int npar { get; set; }
|
||||
[XmlAttribute]
|
||||
public int stride { get; set; }
|
||||
[XmlAttribute]
|
||||
public string hasparity { get; set; }
|
||||
[XmlAttribute]
|
||||
public string parity { get; set; }
|
||||
[XmlAttribute]
|
||||
public string syndrome { get; set; }
|
||||
[XmlAttribute]
|
||||
public string trackcrcs { get; set; }
|
||||
[XmlAttribute]
|
||||
public string toc { get; set; }
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseEntry
|
||||
{
|
||||
[XmlAttribute]
|
||||
public long id { get; set; }
|
||||
[XmlAttribute]
|
||||
public string crc32 { get; set; }
|
||||
[XmlAttribute]
|
||||
public int confidence { get; set; }
|
||||
[XmlAttribute]
|
||||
public int npar { get; set; }
|
||||
[XmlAttribute]
|
||||
public int stride { get; set; }
|
||||
[XmlAttribute]
|
||||
public string hasparity { get; set; }
|
||||
[XmlAttribute]
|
||||
public string parity { get; set; }
|
||||
[XmlAttribute]
|
||||
public string syndrome { get; set; }
|
||||
[XmlAttribute]
|
||||
public string trackcrcs { get; set; }
|
||||
[XmlAttribute]
|
||||
public string toc { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,89 +1,89 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMeta
|
||||
{
|
||||
public CTDBResponseMeta()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMeta(CTDBResponseMeta src)
|
||||
{
|
||||
this.source = src.source;
|
||||
this.id = src.id;
|
||||
this.artist = src.artist;
|
||||
this.album = src.album;
|
||||
this.year = src.year;
|
||||
this.genre = src.genre;
|
||||
this.extra = src.extra;
|
||||
this.discnumber = src.discnumber;
|
||||
this.disccount = src.disccount;
|
||||
this.discname = src.discname;
|
||||
this.infourl = src.infourl;
|
||||
this.barcode = src.barcode;
|
||||
if (src.coverart != null)
|
||||
{
|
||||
this.coverart = new CTDBResponseMetaImage[src.coverart.Length];
|
||||
for (int i = 0; i < src.coverart.Length; i++)
|
||||
this.coverart[i] = new CTDBResponseMetaImage(src.coverart[i]);
|
||||
}
|
||||
|
||||
if (src.track != null)
|
||||
{
|
||||
this.track = new CTDBResponseMetaTrack[src.track.Length];
|
||||
for (int i = 0; i < src.track.Length; i++)
|
||||
this.track[i] = new CTDBResponseMetaTrack(src.track[i]);
|
||||
}
|
||||
|
||||
if (src.label != null)
|
||||
{
|
||||
this.label = new CTDBResponseMetaLabel[src.label.Length];
|
||||
for (int i = 0; i < src.label.Length; i++)
|
||||
this.label[i] = new CTDBResponseMetaLabel(src.label[i]);
|
||||
}
|
||||
|
||||
if (src.release != null)
|
||||
{
|
||||
this.release = new CTDBResponseMetaRelease[src.release.Length];
|
||||
for (int i = 0; i < src.release.Length; i++)
|
||||
this.release[i] = new CTDBResponseMetaRelease(src.release[i]);
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string source { get; set; }
|
||||
[XmlAttribute]
|
||||
public string id { get; set; }
|
||||
[XmlAttribute]
|
||||
public string artist { get; set; }
|
||||
[XmlAttribute]
|
||||
public string album { get; set; }
|
||||
[XmlAttribute]
|
||||
public string year { get; set; }
|
||||
[XmlAttribute]
|
||||
public string genre { get; set; }
|
||||
[XmlElement]
|
||||
public string extra { get; set; }
|
||||
[XmlAttribute]
|
||||
public string discnumber { get; set; }
|
||||
[XmlAttribute]
|
||||
public string disccount { get; set; }
|
||||
[XmlAttribute]
|
||||
public string discname { get; set; }
|
||||
[XmlAttribute]
|
||||
public string infourl { get; set; }
|
||||
[XmlAttribute]
|
||||
public string barcode { get; set; }
|
||||
[XmlElement]
|
||||
public CTDBResponseMetaImage[] coverart;
|
||||
[XmlElement]
|
||||
public CTDBResponseMetaTrack[] track;
|
||||
[XmlElement]
|
||||
public CTDBResponseMetaLabel[] label;
|
||||
[XmlElement]
|
||||
public CTDBResponseMetaRelease[] release;
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMeta
|
||||
{
|
||||
public CTDBResponseMeta()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMeta(CTDBResponseMeta src)
|
||||
{
|
||||
this.source = src.source;
|
||||
this.id = src.id;
|
||||
this.artist = src.artist;
|
||||
this.album = src.album;
|
||||
this.year = src.year;
|
||||
this.genre = src.genre;
|
||||
this.extra = src.extra;
|
||||
this.discnumber = src.discnumber;
|
||||
this.disccount = src.disccount;
|
||||
this.discname = src.discname;
|
||||
this.infourl = src.infourl;
|
||||
this.barcode = src.barcode;
|
||||
if (src.coverart != null)
|
||||
{
|
||||
this.coverart = new CTDBResponseMetaImage[src.coverart.Length];
|
||||
for (int i = 0; i < src.coverart.Length; i++)
|
||||
this.coverart[i] = new CTDBResponseMetaImage(src.coverart[i]);
|
||||
}
|
||||
|
||||
if (src.track != null)
|
||||
{
|
||||
this.track = new CTDBResponseMetaTrack[src.track.Length];
|
||||
for (int i = 0; i < src.track.Length; i++)
|
||||
this.track[i] = new CTDBResponseMetaTrack(src.track[i]);
|
||||
}
|
||||
|
||||
if (src.label != null)
|
||||
{
|
||||
this.label = new CTDBResponseMetaLabel[src.label.Length];
|
||||
for (int i = 0; i < src.label.Length; i++)
|
||||
this.label[i] = new CTDBResponseMetaLabel(src.label[i]);
|
||||
}
|
||||
|
||||
if (src.release != null)
|
||||
{
|
||||
this.release = new CTDBResponseMetaRelease[src.release.Length];
|
||||
for (int i = 0; i < src.release.Length; i++)
|
||||
this.release[i] = new CTDBResponseMetaRelease(src.release[i]);
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string source { get; set; }
|
||||
[XmlAttribute]
|
||||
public string id { get; set; }
|
||||
[XmlAttribute]
|
||||
public string artist { get; set; }
|
||||
[XmlAttribute]
|
||||
public string album { get; set; }
|
||||
[XmlAttribute]
|
||||
public string year { get; set; }
|
||||
[XmlAttribute]
|
||||
public string genre { get; set; }
|
||||
[XmlElement]
|
||||
public string extra { get; set; }
|
||||
[XmlAttribute]
|
||||
public string discnumber { get; set; }
|
||||
[XmlAttribute]
|
||||
public string disccount { get; set; }
|
||||
[XmlAttribute]
|
||||
public string discname { get; set; }
|
||||
[XmlAttribute]
|
||||
public string infourl { get; set; }
|
||||
[XmlAttribute]
|
||||
public string barcode { get; set; }
|
||||
[XmlElement]
|
||||
public CTDBResponseMetaImage[] coverart;
|
||||
[XmlElement]
|
||||
public CTDBResponseMetaTrack[] track;
|
||||
[XmlElement]
|
||||
public CTDBResponseMetaLabel[] label;
|
||||
[XmlElement]
|
||||
public CTDBResponseMetaRelease[] release;
|
||||
}
|
||||
}
|
||||
@@ -1,33 +1,33 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaImage
|
||||
{
|
||||
public CTDBResponseMetaImage()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaImage(CTDBResponseMetaImage src)
|
||||
{
|
||||
this.uri = src.uri;
|
||||
this.uri150 = src.uri150;
|
||||
this.height = src.height;
|
||||
this.width = src.width;
|
||||
this.primary = src.primary;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string uri { get; set; }
|
||||
[XmlAttribute]
|
||||
public string uri150 { get; set; }
|
||||
[XmlAttribute]
|
||||
public int height { get; set; }
|
||||
[XmlAttribute]
|
||||
public int width { get; set; }
|
||||
[XmlAttribute]
|
||||
public bool primary { get; set; }
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaImage
|
||||
{
|
||||
public CTDBResponseMetaImage()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaImage(CTDBResponseMetaImage src)
|
||||
{
|
||||
this.uri = src.uri;
|
||||
this.uri150 = src.uri150;
|
||||
this.height = src.height;
|
||||
this.width = src.width;
|
||||
this.primary = src.primary;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string uri { get; set; }
|
||||
[XmlAttribute]
|
||||
public string uri150 { get; set; }
|
||||
[XmlAttribute]
|
||||
public int height { get; set; }
|
||||
[XmlAttribute]
|
||||
public int width { get; set; }
|
||||
[XmlAttribute]
|
||||
public bool primary { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,24 +1,24 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaLabel
|
||||
{
|
||||
public CTDBResponseMetaLabel()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaLabel(CTDBResponseMetaLabel src)
|
||||
{
|
||||
this.name = src.name;
|
||||
this.catno = src.catno;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string name { get; set; }
|
||||
[XmlAttribute]
|
||||
public string catno { get; set; }
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaLabel
|
||||
{
|
||||
public CTDBResponseMetaLabel()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaLabel(CTDBResponseMetaLabel src)
|
||||
{
|
||||
this.name = src.name;
|
||||
this.catno = src.catno;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string name { get; set; }
|
||||
[XmlAttribute]
|
||||
public string catno { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,24 +1,24 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaRelease
|
||||
{
|
||||
public CTDBResponseMetaRelease()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaRelease(CTDBResponseMetaRelease src)
|
||||
{
|
||||
this.date = src.date;
|
||||
this.country = src.country;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string date { get; set; }
|
||||
[XmlAttribute]
|
||||
public string country { get; set; }
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaRelease
|
||||
{
|
||||
public CTDBResponseMetaRelease()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaRelease(CTDBResponseMetaRelease src)
|
||||
{
|
||||
this.date = src.date;
|
||||
this.country = src.country;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string date { get; set; }
|
||||
[XmlAttribute]
|
||||
public string country { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,27 +1,27 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaTrack
|
||||
{
|
||||
public CTDBResponseMetaTrack()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaTrack(CTDBResponseMetaTrack src)
|
||||
{
|
||||
this.name = src.name;
|
||||
this.artist = src.artist;
|
||||
this.extra = src.extra;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string name { get; set; }
|
||||
[XmlAttribute]
|
||||
public string artist { get; set; }
|
||||
[XmlElement]
|
||||
public string extra { get; set; }
|
||||
}
|
||||
}
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
public class CTDBResponseMetaTrack
|
||||
{
|
||||
public CTDBResponseMetaTrack()
|
||||
{
|
||||
}
|
||||
|
||||
public CTDBResponseMetaTrack(CTDBResponseMetaTrack src)
|
||||
{
|
||||
this.name = src.name;
|
||||
this.artist = src.artist;
|
||||
this.extra = src.extra;
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string name { get; set; }
|
||||
[XmlAttribute]
|
||||
public string artist { get; set; }
|
||||
[XmlElement]
|
||||
public string extra { get; set; }
|
||||
}
|
||||
}
|
||||
25
CUETools.CTDB.Types/CUETools.CTDB.Types.csproj
Normal file
25
CUETools.CTDB.Types/CUETools.CTDB.Types.csproj
Normal file
@@ -0,0 +1,25 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net40;net20;netstandard2.0</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUETools.CTDB.Types</AssemblyName>
|
||||
<RootNamespace>CUETools.CTDB</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<Description>A library containing serializable types for accessing CUETools Database.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ProjectReference>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
</Project>
|
||||
41
CUETools.CTDB.Types/CUETools.CTDB.Types.csproj.bak
Normal file
41
CUETools.CTDB.Types/CUETools.CTDB.Types.csproj.bak
Normal file
@@ -0,0 +1,41 @@
|
||||
"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.1 Tools\sgen.exe" C:\Users\Grigory\source\repos\cuetools.net\bin\Release\net20\CUETools.CTDB.Types.dll /keep
|
||||
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net40;net20;netstandard2.0</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUETools.CTDB.Types</AssemblyName>
|
||||
<RootNamespace>CUETools.CTDB</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<Description>A library containing serializable types for accessing CUETools Database.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='netstandard2.0'">
|
||||
<PackageReference Include="Microsoft.XmlSerializer.Generator" Version="1.0.0" />
|
||||
<DotNetCliToolReference Include="Microsoft.XmlSerializer.Generator" Version="1.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(TargetFramework)'=='net20'">
|
||||
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
|
||||
<SGenUseProxyTypes>false</SGenUseProxyTypes>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(TargetFramework)'=='net40'">
|
||||
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
|
||||
<SGenUseProxyTypes>false</SGenUseProxyTypes>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ProjectReference>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
</Project>
|
||||
@@ -1,34 +0,0 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
{
|
||||
[Serializable]
|
||||
[XmlRoot(ElementName = "ctdb", Namespace = "http://db.cuetools.net/ns/mmd-1.0#")]
|
||||
public class CTDBSubmitResponse
|
||||
{
|
||||
[XmlIgnore]
|
||||
public bool ParityNeeded
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.status == "parity needed";
|
||||
}
|
||||
}
|
||||
|
||||
[XmlAttribute]
|
||||
public string status { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public string updateurl { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public string updatemsg { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public string message { get; set; }
|
||||
|
||||
[XmlAttribute]
|
||||
public int npar { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,129 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{AA2A9A7E-45FB-4632-AD85-85B0E556F818}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CUETools.CTDB</RootNamespace>
|
||||
<TargetFrameworks>net40;net20;netstandard2.0</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUETools.CTDB</AssemblyName>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<FileUpgradeFlags>
|
||||
</FileUpgradeFlags>
|
||||
<OldToolsVersion>3.5</OldToolsVersion>
|
||||
<UpgradeBackupLocation />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
<SGenUseProxyTypes>false</SGenUseProxyTypes>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<RootNamespace>CUETools.CTDB</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<Description>A library for accessing CUETools Database.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>..\bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="CUETools.CTDB.XmlSerializers, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\bin\Release\interop\EAC\CUETools.CTDB.XmlSerializers.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ProjectReference>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='net20'">
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='net40'">
|
||||
<PackageReference Include="DeviceId" Version="4.0.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='netstandard2.0'">
|
||||
<PackageReference Include="DeviceId" Version="4.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="CTDBResponseMetaRelease.cs" />
|
||||
<Compile Include="CTDBResponseMetaImage.cs" />
|
||||
<Compile Include="CTDBMetadataSearch.cs" />
|
||||
<Compile Include="CTDBResponse.cs" />
|
||||
<Compile Include="CTDBResponseEntry.cs" />
|
||||
<Compile Include="CTDBResponseMeta.cs" />
|
||||
<Compile Include="CTDBResponseMetaLabel.cs" />
|
||||
<Compile Include="CTDBResponseMetaTrack.cs" />
|
||||
<Compile Include="CUEToolsDB.cs" />
|
||||
<Compile Include="DBEntry.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="UploadHelper\HttpUploadHelper.cs" />
|
||||
<Compile Include="UploadHelper\MimePart.cs" />
|
||||
<Compile Include="UploadHelper\StreamMimePart.cs" />
|
||||
<Compile Include="UploadHelper\StringMimePart.cs" />
|
||||
<Compile Include="UploadHelper\UploadFile.cs" />
|
||||
<ProjectReference Include="..\CUETools.AccurateRip\CUETools.AccurateRip.csproj" />
|
||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj" />
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj" />
|
||||
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj" />
|
||||
<ProjectReference Include="..\CUETools.CTDB.Types\CUETools.CTDB.Types.csproj" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.AccurateRip\CUETools.AccurateRip.csproj">
|
||||
<Project>{5802C7E9-157E-4124-946D-70B5AE48A5A1}</Project>
|
||||
<Name>CUETools.AccurateRip</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
|
||||
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
|
||||
<Name>CUETools.CDImage</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||
<Name>CUETools.Codecs</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj">
|
||||
<Project>{ECEB839C-171B-4535-958F-9899310A0342}</Project>
|
||||
<Name>CUETools.Parity</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Windows Installer 3.1</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
|
||||
</Project>
|
||||
|
||||
50
CUETools.CTDB/CUETools.CTDB.csproj.bak
Normal file
50
CUETools.CTDB/CUETools.CTDB.csproj.bak
Normal file
@@ -0,0 +1,50 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net40;net20;netstandard2.0</TargetFrameworks>
|
||||
<Version>2.1.6.0</Version>
|
||||
<AssemblyName>CUETools.CTDB</AssemblyName>
|
||||
<RootNamespace>CUETools.CTDB</RootNamespace>
|
||||
<Product>CUETools</Product>
|
||||
<Description>A library for accessing CUETools Database.</Description>
|
||||
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||
<Authors>Grigory Chudov</Authors>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||
<RepositoryType>git</RepositoryType>
|
||||
<Company />
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemDefinitionGroup>
|
||||
<ProjectReference>
|
||||
<Private>False</Private>
|
||||
</ProjectReference>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='net20'">
|
||||
<Reference Include="System.Management" />
|
||||
<ProjectReference Include="..\CUETools.CTDB.Types\CUETools.CTDB.Types.csproj" />
|
||||
<Reference Include="CUETools.CTDB.Types.XmlSerializers">
|
||||
<HintPath>..\bin\Release\net20\CUETools.CTDB.Types.XmlSerializers.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='net40'">
|
||||
<PackageReference Include="DeviceId" Version="4.0.0" />
|
||||
<ProjectReference Include="..\CUETools.CTDB.Types\CUETools.CTDB.Types.csproj" />
|
||||
<Reference Include="CUETools.CTDB.Types.XmlSerializers">
|
||||
<HintPath>..\bin\Release\net40\CUETools.CTDB.Types.XmlSerializers.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(TargetFramework)'=='netstandard2.0'">
|
||||
<PackageReference Include="DeviceId" Version="4.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\CUETools.AccurateRip\CUETools.AccurateRip.csproj" />
|
||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj" />
|
||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj" />
|
||||
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Management;
|
||||
using System.Net;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
@@ -11,6 +10,13 @@ using System.Xml.Serialization;
|
||||
using CUETools.AccurateRip;
|
||||
using CUETools.CDImage;
|
||||
using CUETools.Parity;
|
||||
#if NET20
|
||||
using System.Management;
|
||||
#else
|
||||
using DeviceId;
|
||||
using DeviceId.Encoders;
|
||||
using DeviceId.Formatters;
|
||||
#endif
|
||||
using Krystalware.UploadHelper;
|
||||
|
||||
namespace CUETools.CTDB
|
||||
@@ -98,9 +104,9 @@ namespace CUETools.CTDB
|
||||
this.QueryExceptionMessage = resp.StatusDescription;
|
||||
if (this.QueryResponseStatus == HttpStatusCode.OK)
|
||||
{
|
||||
//XmlSerializer serializer = new XmlSerializer(typeof(CTDBResponse));
|
||||
XmlSerializer serializer = new Microsoft.Xml.Serialization.GeneratedAssembly.CTDBResponseSerializer();
|
||||
this.total = 0;
|
||||
//var serializer = new XmlSerializer(typeof(CTDBResponse));
|
||||
var serializer = new Microsoft.Xml.Serialization.GeneratedAssembly.CTDBResponseSerializer();
|
||||
this.total = 0;
|
||||
using (Stream responseStream = resp.GetResponseStream())
|
||||
{
|
||||
CTDBResponse ctdbResp = serializer.Deserialize(responseStream) as CTDBResponse;
|
||||
@@ -277,16 +283,27 @@ namespace CUETools.CTDB
|
||||
{
|
||||
if (uuidInfo == null)
|
||||
{
|
||||
#if NET20
|
||||
string id = "CTDB userid";
|
||||
using (ManagementClass mc = new ManagementClass("Win32_ComputerSystemProduct"))
|
||||
foreach (ManagementObject mo in mc.GetInstances())
|
||||
{
|
||||
id = id + mo.Properties["UUID"].Value.ToString();
|
||||
break;
|
||||
}
|
||||
byte[] hashBytes = (new SHA1CryptoServiceProvider()).ComputeHash(Encoding.ASCII.GetBytes(id));
|
||||
uuidInfo = Convert.ToBase64String(hashBytes).Replace('+', '.').Replace('/', '_').Replace('=', '-');
|
||||
}
|
||||
id = id + mo.Properties["UUID"].Value.ToString();
|
||||
break;
|
||||
}
|
||||
byte[] hashBytes = (new SHA1CryptoServiceProvider()).ComputeHash(Encoding.ASCII.GetBytes(id));
|
||||
uuidInfo = Convert.ToBase64String(hashBytes).Replace('+', '.').Replace('/', '_').Replace('=', '-');
|
||||
#else
|
||||
uuidInfo = new DeviceIdBuilder()
|
||||
.AddMachineName()
|
||||
#if NET40
|
||||
.AddProcessorId()
|
||||
.AddMotherboardSerialNumber()
|
||||
#endif
|
||||
.UseFormatter(new HashDeviceIdFormatter(() => SHA256.Create(), new Base64UrlByteArrayEncoder()))
|
||||
.ToString();
|
||||
#endif
|
||||
}
|
||||
return uuidInfo;
|
||||
}
|
||||
|
||||
@@ -391,7 +408,8 @@ namespace CUETools.CTDB
|
||||
{
|
||||
using (Stream s = resp.GetResponseStream())
|
||||
{
|
||||
var serializer = new XmlSerializer(typeof(CTDBResponse));
|
||||
//var serializer = new XmlSerializer(typeof(CTDBResponse));
|
||||
var serializer = new Microsoft.Xml.Serialization.GeneratedAssembly.CTDBResponseSerializer();
|
||||
return serializer.Deserialize(s) as CTDBResponse;
|
||||
}
|
||||
}
|
||||
|
||||
1810
CUETools.CTDB/GeneratedAssembly.cs
Normal file
1810
CUETools.CTDB/GeneratedAssembly.cs
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,35 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("UploadHelper")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("UploadHelper")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2009")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("13eac2b4-c1d5-4317-a17a-5389ad4c6005")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user