mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +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/
|
bin/
|
||||||
lib/
|
lib/
|
||||||
Release/
|
Release/
|
||||||
|
Debug/
|
||||||
*.vcxproj.user
|
*.vcxproj.user
|
||||||
*.csproj.user
|
*.csproj.user
|
||||||
*.sdf
|
*.sdf
|
||||||
*.suo
|
*.suo
|
||||||
*.opensdf
|
*.opensdf
|
||||||
Win32/
|
a32/
|
||||||
x64/
|
launchSettings.json
|
||||||
ia32/
|
/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 Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;net20</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Version>0.0.7.1</Version>
|
||||||
<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>
|
|
||||||
<AssemblyName>Bwg.Hardware</AssemblyName>
|
<AssemblyName>Bwg.Hardware</AssemblyName>
|
||||||
<SccProjectName>
|
<RootNamespace>Bwg.Hardware</RootNamespace>
|
||||||
</SccProjectName>
|
<Product>BwgBurn</Product>
|
||||||
<SccLocalPath>
|
<Description>CD-R/CD-RW/DVD-R/DVD-RW burning program for Windows XP: devices.</Description>
|
||||||
</SccLocalPath>
|
<Copyright>Copyright © 2006 by Jack W. Griffin, Jr.</Copyright>
|
||||||
<SccAuxPath>
|
<Authors>Jack W. Griffin, Jr</Authors>
|
||||||
</SccAuxPath>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<SccProvider>
|
<OutputPath>..\bin\$(Configuration)\plugins</OutputPath>
|
||||||
</SccProvider>
|
<RepositoryUrl>https://svn.code.sf.net/p/bwgburn/code/</RepositoryUrl>
|
||||||
<FileUpgradeFlags>
|
<RepositoryType>svn</RepositoryType>
|
||||||
</FileUpgradeFlags>
|
<Company>BwgSoftware</Company>
|
||||||
<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>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
</Project>
|
||||||
<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>
|
|
||||||
|
|||||||
@@ -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 Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;net20</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Version>0.0.7.1</Version>
|
||||||
<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>
|
|
||||||
<AssemblyName>Bwg.Logging</AssemblyName>
|
<AssemblyName>Bwg.Logging</AssemblyName>
|
||||||
<SccProjectName>
|
<RootNamespace>Bwg.Logging</RootNamespace>
|
||||||
</SccProjectName>
|
<Product>BwgBurn</Product>
|
||||||
<SccLocalPath>
|
<Description>CD-R/CD-RW/DVD-R/DVD-RW burning program for Windows XP: logging.</Description>
|
||||||
</SccLocalPath>
|
<Copyright>Copyright © 2006 by Jack W. Griffin, Jr.</Copyright>
|
||||||
<SccAuxPath>
|
<Authors>Jack W. Griffin, Jr</Authors>
|
||||||
</SccAuxPath>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<SccProvider>
|
<OutputPath>..\bin\$(Configuration)\plugins</OutputPath>
|
||||||
</SccProvider>
|
<RepositoryUrl>https://svn.code.sf.net/p/bwgburn/code/</RepositoryUrl>
|
||||||
<FileUpgradeFlags>
|
<RepositoryType>svn</RepositoryType>
|
||||||
</FileUpgradeFlags>
|
<Company>BwgSoftware</Company>
|
||||||
<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>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
</Project>
|
||||||
<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>
|
|
||||||
|
|||||||
@@ -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 Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;net20</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Version>0.0.7.1</Version>
|
||||||
<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>
|
|
||||||
<AssemblyName>Bwg.Scsi</AssemblyName>
|
<AssemblyName>Bwg.Scsi</AssemblyName>
|
||||||
<SccProjectName>
|
<RootNamespace>Bwg.Scsi</RootNamespace>
|
||||||
</SccProjectName>
|
<Product>BwgBurn</Product>
|
||||||
<SccLocalPath>
|
<Description>CD-R/CD-RW/DVD-R/DVD-RW burning program for Windows XP: Windows SCSI interface.</Description>
|
||||||
</SccLocalPath>
|
<Copyright>Copyright © 2006 by Jack W. Griffin, Jr.</Copyright>
|
||||||
<SccAuxPath>
|
<Authors>Jack W. Griffin, Jr</Authors>
|
||||||
</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>
|
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<DocumentationFile>bin\Debug\Bwg.Scsi.XML</DocumentationFile>
|
<OutputPath>..\bin\$(Configuration)\plugins</OutputPath>
|
||||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
<RepositoryUrl>https://svn.code.sf.net/p/bwgburn/code/</RepositoryUrl>
|
||||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
<RepositoryType>svn</RepositoryType>
|
||||||
|
<Company>BwgSoftware</Company>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
<ItemDefinitionGroup>
|
||||||
<Optimize>true</Optimize>
|
<ProjectReference>
|
||||||
<OutputPath>..\bin\Release\plugins\</OutputPath>
|
<Private>False</Private>
|
||||||
<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>
|
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
<ProjectReference Include="..\Bwg.Logging\Bwg.Logging.csproj" />
|
||||||
<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>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<EmbeddedResource Include="Messages.resx">
|
</Project>
|
||||||
</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>
|
|
||||||
|
|||||||
@@ -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 Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;net20</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Version>2.1.6.0</Version>
|
||||||
<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>
|
|
||||||
<AssemblyName>CUEControls</AssemblyName>
|
<AssemblyName>CUEControls</AssemblyName>
|
||||||
<FileUpgradeFlags>
|
<RootNamespace>CUEControls</RootNamespace>
|
||||||
</FileUpgradeFlags>
|
<Product>CUETools</Product>
|
||||||
<OldToolsVersion>3.5</OldToolsVersion>
|
<Description>Library containing windows GUI controls for CUETools.</Description>
|
||||||
<UpgradeBackupLocation>
|
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||||
</UpgradeBackupLocation>
|
<Authors>Grigory Chudov</Authors>
|
||||||
<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>
|
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||||
</PropertyGroup>
|
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<RepositoryType>git</RepositoryType>
|
||||||
<DebugType>pdbonly</DebugType>
|
<Company />
|
||||||
<Optimize>true</Optimize>
|
|
||||||
<OutputPath>..\bin\Release\</OutputPath>
|
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
|
||||||
<ErrorReport>prompt</ErrorReport>
|
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
|
||||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
|
||||||
<Reference Include="System.Data" />
|
|
||||||
<Reference Include="System.Drawing" />
|
|
||||||
<Reference Include="System.Windows.Forms" />
|
<Reference Include="System.Windows.Forms" />
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<Compile Include="FileSystemTreeView.cs">
|
</Project>
|
||||||
<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>
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>CUEPlayer</RootNamespace>
|
<RootNamespace>CUEPlayer</RootNamespace>
|
||||||
<AssemblyName>CUEPlayer</AssemblyName>
|
<AssemblyName>CUEPlayer</AssemblyName>
|
||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
<FileUpgradeFlags>
|
<FileUpgradeFlags>
|
||||||
@@ -31,12 +31,13 @@
|
|||||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>..\bin\Debug\</OutputPath>
|
<OutputPath>..\bin\Debug\net40\</OutputPath>
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
@@ -45,7 +46,7 @@
|
|||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>..\bin\Release\</OutputPath>
|
<OutputPath>..\bin\Release\net40\</OutputPath>
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
@@ -71,12 +72,6 @@
|
|||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="DataSet1.cs">
|
<Compile Include="DataSet1.cs">
|
||||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
<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>
|
||||||
<Compile Include="Deck.cs">
|
<Compile Include="Deck.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
@@ -162,10 +157,12 @@
|
|||||||
<ProjectReference Include="..\CUEControls\CUEControls.csproj">
|
<ProjectReference Include="..\CUEControls\CUEControls.csproj">
|
||||||
<Project>{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}</Project>
|
<Project>{CA4D64E6-6544-4A29-8BA5-7DB08D50D072}</Project>
|
||||||
<Name>CUEControls</Name>
|
<Name>CUEControls</Name>
|
||||||
|
<Private>False</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
|
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
|
||||||
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
|
<Project>{1DD41038-D885-46C5-8DDE-E0B82F066584}</Project>
|
||||||
<Name>CUETools.CDImage</Name>
|
<Name>CUETools.CDImage</Name>
|
||||||
|
<Private>False</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\CUETools.Codecs.CoreAudio\CUETools.Codecs.CoreAudio.csproj">
|
<ProjectReference Include="..\CUETools.Codecs.CoreAudio\CUETools.Codecs.CoreAudio.csproj">
|
||||||
<Project>{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}</Project>
|
<Project>{FAD09EE2-D6B2-4A8E-9F1C-2A9FB293661A}</Project>
|
||||||
@@ -178,6 +175,7 @@
|
|||||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
||||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||||
<Name>CUETools.Codecs</Name>
|
<Name>CUETools.Codecs</Name>
|
||||||
|
<Private>False</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\CUETools.DSP.Mixer\CUETools.DSP.Mixer.csproj">
|
<ProjectReference Include="..\CUETools.DSP.Mixer\CUETools.DSP.Mixer.csproj">
|
||||||
<Project>{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}</Project>
|
<Project>{AFF1AFF9-839D-4892-88CD-8BD09BAFC1D2}</Project>
|
||||||
@@ -190,6 +188,7 @@
|
|||||||
<ProjectReference Include="..\CUETools.Processor\CUETools.Processor.csproj">
|
<ProjectReference Include="..\CUETools.Processor\CUETools.Processor.csproj">
|
||||||
<Project>{4911BD82-49EF-4858-8B51-5394F86739A4}</Project>
|
<Project>{4911BD82-49EF-4858-8B51-5394F86739A4}</Project>
|
||||||
<Name>CUETools.Processor</Name>
|
<Name>CUETools.Processor</Name>
|
||||||
|
<Private>False</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\ProgressODoom\ProgressODoom.csproj">
|
<ProjectReference Include="..\ProgressODoom\ProgressODoom.csproj">
|
||||||
<Project>{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}</Project>
|
<Project>{8DD1E84B-0B03-4C0B-9B42-1E49F75E7CB1}</Project>
|
||||||
@@ -234,7 +233,6 @@
|
|||||||
<None Include="DataSet1.xsd">
|
<None Include="DataSet1.xsd">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSDataSetGenerator</Generator>
|
<Generator>MSDataSetGenerator</Generator>
|
||||||
<LastGenOutput>DataSet1.Designer.cs</LastGenOutput>
|
|
||||||
</None>
|
</None>
|
||||||
<None Include="DataSet1.xss">
|
<None Include="DataSet1.xss">
|
||||||
<DependentUpon>DataSet1.xsd</DependentUpon>
|
<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
|
public partial class Output : Form
|
||||||
{
|
{
|
||||||
private IWavePlayer _player;
|
private CUETools.Codecs.CoreAudio.IWavePlayer _player;
|
||||||
private AudioBuffer resampled;
|
private AudioBuffer resampled;
|
||||||
private SOXResampler _resampler;
|
private SOXResampler _resampler;
|
||||||
private MMDevice _device;
|
private MMDevice _device;
|
||||||
|
|||||||
52
CUEPlayer/Properties/Resources.Designer.cs
generated
52
CUEPlayer/Properties/Resources.Designer.cs
generated
@@ -1,7 +1,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// 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
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
@@ -19,7 +19,7 @@ namespace CUEPlayer.Properties {
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// 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.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources {
|
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 {
|
internal static System.Drawing.Bitmap cog {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("cog", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_eject {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_eject", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_eject_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_eject_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_end_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_end_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_equalizer_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_equalizer_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_fastforward_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_fastforward_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_pause_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_pause_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_play_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_play_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_repeat_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_repeat_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_rewind_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_rewind_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_start_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_start_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap control_stop_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("control_stop_blue", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap ctdb {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("ctdb", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap sound {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("sound", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap sound_mute {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("sound_mute", resourceCulture);
|
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 {
|
internal static System.Drawing.Bitmap transmit_blue {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("transmit_blue", resourceCulture);
|
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>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// 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
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
@@ -12,7 +12,7 @@ namespace CUEPlayer.Properties {
|
|||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[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 {
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
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>
|
<configuration>
|
||||||
<configSections>
|
<configSections>
|
||||||
</configSections>
|
</configSections>
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<add name="CUEPlayer.Properties.Settings.CUEPlayerConnectionString"
|
<add name="CUEPlayer.Properties.Settings.CUEPlayerConnectionString" connectionString="Data Source=|DataDirectory|\CUEPlayer.sdf" providerName="Microsoft.SqlServerCe.Client.3.5"/>
|
||||||
connectionString="Data Source=|DataDirectory|\CUEPlayer.sdf"
|
|
||||||
providerName="Microsoft.SqlServerCe.Client.3.5" />
|
|
||||||
</connectionStrings>
|
</connectionStrings>
|
||||||
<runtime>
|
<runtime>
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<probing privatePath="plugins (x64)"/>
|
<probing privatePath="plugins (x64)"/>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</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.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Resources;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.CompilerServices;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
// General Information about an assembly is controlled through the following
|
using System.Windows;
|
||||||
// set of attributes. Change these attribute values to modify the information
|
|
||||||
// associated with an assembly.
|
// General Information about an assembly is controlled through the following
|
||||||
[assembly: AssemblyTitle("CUETools.Codecs.CoreAudio")]
|
// set of attributes. Change these attribute values to modify the information
|
||||||
[assembly: AssemblyDescription("")]
|
// associated with an assembly.
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyTitle("CUERipper.WPF")]
|
||||||
[assembly: AssemblyCompany("Microsoft")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyProduct("CUETools.Codecs.CoreAudio")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
|
[assembly: AssemblyCompany("Microsoft")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyProduct("CUERipper.WPF")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
|
||||||
|
[assembly: AssemblyTrademark("")]
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
[assembly: AssemblyCulture("")]
|
||||||
// to COM components. If you need to access a type in this assembly from
|
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// Setting ComVisible to false makes the types in this assembly not visible
|
||||||
[assembly: ComVisible(false)]
|
// to COM components. If you need to access a type in this assembly from
|
||||||
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
[assembly: ComVisible(false)]
|
||||||
[assembly: Guid("f597837f-dd1c-4e0f-b915-0e929bf0dd35")]
|
|
||||||
|
//In order to begin building localizable applications, set
|
||||||
// Version information for an assembly consists of the following four values:
|
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||||
//
|
//inside a <PropertyGroup>. For example, if you are using US english
|
||||||
// Major Version
|
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||||
// Minor Version
|
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
||||||
// Build Number
|
//the line below to match the UICulture setting in the project file.
|
||||||
// Revision
|
|
||||||
//
|
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||||
// 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: ThemeInfo(
|
||||||
[assembly: AssemblyVersion("1.0.0.0")]
|
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
//(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>
|
</AssemblyOriginatorKeyFile>
|
||||||
<TargetZone>LocalIntranet</TargetZone>
|
<TargetZone>LocalIntranet</TargetZone>
|
||||||
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
|
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
|
||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
<PublishUrl>publish\</PublishUrl>
|
<PublishUrl>publish\</PublishUrl>
|
||||||
<Install>true</Install>
|
<Install>true</Install>
|
||||||
<InstallFrom>Web</InstallFrom>
|
<InstallFrom>Web</InstallFrom>
|
||||||
@@ -48,12 +48,13 @@
|
|||||||
<UseApplicationTrust>false</UseApplicationTrust>
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
<PublishWizardCompleted>true</PublishWizardCompleted>
|
<PublishWizardCompleted>true</PublishWizardCompleted>
|
||||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
|
<TargetFrameworkProfile />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
<OutputPath>..\bin\Debug\</OutputPath>
|
<OutputPath>..\bin\Debug\net40\</OutputPath>
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
@@ -63,7 +64,7 @@
|
|||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
<Optimize>true</Optimize>
|
<Optimize>true</Optimize>
|
||||||
<OutputPath>..\bin\Release\</OutputPath>
|
<OutputPath>..\bin\Release\net40\</OutputPath>
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
@@ -156,6 +157,10 @@
|
|||||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
||||||
<Name>CUETools.Codecs</Name>
|
<Name>CUETools.Codecs</Name>
|
||||||
</ProjectReference>
|
</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">
|
<ProjectReference Include="..\CUETools.CTDB\CUETools.CTDB.csproj">
|
||||||
<Project>{AA2A9A7E-45FB-4632-AD85-85B0E556F818}</Project>
|
<Project>{AA2A9A7E-45FB-4632-AD85-85B0E556F818}</Project>
|
||||||
<Name>CUETools.CTDB</Name>
|
<Name>CUETools.CTDB</Name>
|
||||||
|
|||||||
4
CUERipper/Properties/Resources.Designer.cs
generated
4
CUERipper/Properties/Resources.Designer.cs
generated
@@ -1,7 +1,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// 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
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
@@ -19,7 +19,7 @@ namespace CUERipper.Properties {
|
|||||||
// class via a tool like ResGen or Visual Studio.
|
// class via a tool like ResGen or Visual Studio.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// 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.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources {
|
internal class Resources {
|
||||||
|
|||||||
4
CUERipper/Properties/Settings.Designer.cs
generated
4
CUERipper/Properties/Settings.Designer.cs
generated
@@ -1,7 +1,7 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// 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
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
@@ -12,7 +12,7 @@ namespace CUERipper.Properties {
|
|||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[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 {
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
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>
|
<configuration>
|
||||||
<configSections>
|
<configSections>
|
||||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
<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" />
|
<section name="CUERipper.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
|
||||||
</sectionGroup>
|
</sectionGroup>
|
||||||
</configSections>
|
</configSections>
|
||||||
<userSettings>
|
<userSettings>
|
||||||
@@ -17,4 +17,4 @@
|
|||||||
<probing privatePath="plugins"/>
|
<probing privatePath="plugins"/>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</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>
|
<configuration>
|
||||||
<runtime>
|
<runtime>
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
<probing privatePath="plugins"/>
|
<probing privatePath="plugins"/>
|
||||||
</assemblyBinding>
|
</assemblyBinding>
|
||||||
</runtime>
|
</runtime>
|
||||||
</configuration>
|
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
|
||||||
|
|||||||
@@ -1,102 +1,31 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;net20;netcoreapp2.0</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Version>2.1.6.0</Version>
|
||||||
<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>
|
|
||||||
<AssemblyName>CUETools.ALACEnc</AssemblyName>
|
<AssemblyName>CUETools.ALACEnc</AssemblyName>
|
||||||
<FileUpgradeFlags>
|
<RootNamespace>CUETools.ALACEnc</RootNamespace>
|
||||||
</FileUpgradeFlags>
|
<Product>CUETools</Product>
|
||||||
<OldToolsVersion>3.5</OldToolsVersion>
|
<OutputType>Exe</OutputType>
|
||||||
<UpgradeBackupLocation>
|
<Description>A tool for encoding and decoding ALAC.</Description>
|
||||||
</UpgradeBackupLocation>
|
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<Authors>Grigory Chudov</Authors>
|
||||||
<PublishUrl>publish\</PublishUrl>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<Install>true</Install>
|
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||||
<InstallFrom>Disk</InstallFrom>
|
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||||
<UpdateEnabled>false</UpdateEnabled>
|
<RepositoryType>git</RepositoryType>
|
||||||
<UpdateMode>Foreground</UpdateMode>
|
<Company />
|
||||||
<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>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<ItemDefinitionGroup>
|
||||||
<DebugType>full</DebugType>
|
<ProjectReference>
|
||||||
<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>
|
|
||||||
<Private>False</Private>
|
<Private>False</Private>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj">
|
</ItemDefinitionGroup>
|
||||||
<Project>{6458A13A-30EF-45A9-9D58-E5031B17BEE2}</Project>
|
|
||||||
<Name>CUETools.Codecs</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
<ProjectReference Include="..\CUETools.Codecs.ALAC\CUETools.Codecs.ALAC.csproj" />
|
||||||
<Visible>False</Visible>
|
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj" />
|
||||||
<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>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Include="App.config" />
|
</Project>
|
||||||
</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>
|
|
||||||
|
|||||||
@@ -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 Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;netcoreapp2.0</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Version>2.1.6.0</Version>
|
||||||
<ProductVersion>8.0.50727</ProductVersion>
|
<AssemblyName>CUETools.ARCUE</AssemblyName>
|
||||||
<SchemaVersion>2.0</SchemaVersion>
|
<RootNamespace>CUETools.ARCUE</RootNamespace>
|
||||||
<ProjectGuid>{A5A8D8FA-9E32-4010-8AAF-AE580C5AF728}</ProjectGuid>
|
<Product>CUETools</Product>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
<Description>A tool for CD image verification against AccurateRip.</Description>
|
||||||
<RootNamespace>ArCueDotNet</RootNamespace>
|
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||||
<AssemblyName>ArCueDotNet</AssemblyName>
|
<Authors>Grigory Chudov</Authors>
|
||||||
<FileUpgradeFlags>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
</FileUpgradeFlags>
|
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||||
<OldToolsVersion>3.5</OldToolsVersion>
|
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||||
<UpgradeBackupLocation>
|
<RepositoryType>git</RepositoryType>
|
||||||
</UpgradeBackupLocation>
|
<Company />
|
||||||
<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>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<ItemDefinitionGroup>
|
||||||
<DebugType>full</DebugType>
|
<ProjectReference>
|
||||||
<Optimize>false</Optimize>
|
<Private>False</Private>
|
||||||
<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>
|
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\CUETools.CTDB\CUETools.CTDB.csproj">
|
</ItemDefinitionGroup>
|
||||||
<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>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj" />
|
||||||
<Visible>False</Visible>
|
<ProjectReference Include="..\CUETools.CTDB.Types\CUETools.CTDB.Types.csproj" />
|
||||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
<ProjectReference Include="..\CUETools.CTDB\CUETools.CTDB.csproj" />
|
||||||
<Install>false</Install>
|
<ProjectReference Include="..\CUETools.Processor\CUETools.Processor.csproj" />
|
||||||
</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>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
</Project>
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
</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 Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;net20;netstandard2.0</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Version>2.1.6.0</Version>
|
||||||
<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>
|
|
||||||
<AssemblyName>CUETools.AccurateRip</AssemblyName>
|
<AssemblyName>CUETools.AccurateRip</AssemblyName>
|
||||||
<FileUpgradeFlags>
|
<RootNamespace>CUETools.AccurateRip</RootNamespace>
|
||||||
</FileUpgradeFlags>
|
<Product>CUETools</Product>
|
||||||
<OldToolsVersion>3.5</OldToolsVersion>
|
<Description>A library for calculating AccurateRip checksums, CRC32 and Reed-solomon codes of CD audio.</Description>
|
||||||
<UpgradeBackupLocation>
|
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||||
</UpgradeBackupLocation>
|
<Authors>Grigory Chudov</Authors>
|
||||||
<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>
|
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<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>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
<ItemDefinitionGroup>
|
||||||
<Optimize>true</Optimize>
|
<ProjectReference>
|
||||||
<OutputPath>..\bin\Release\</OutputPath>
|
<Private>False</Private>
|
||||||
<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>
|
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj">
|
</ItemDefinitionGroup>
|
||||||
<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>
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
|
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj" />
|
||||||
<Visible>False</Visible>
|
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj" />
|
||||||
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
|
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj" />
|
||||||
<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>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
</Project>
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
</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 Sdk="Microsoft.NET.Sdk">
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;net20;netstandard2.0</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Version>2.1.6.0</Version>
|
||||||
<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>
|
|
||||||
<AssemblyName>CUETools.CDImage</AssemblyName>
|
<AssemblyName>CUETools.CDImage</AssemblyName>
|
||||||
<FileUpgradeFlags>
|
<RootNamespace>CUETools.CDImage</RootNamespace>
|
||||||
</FileUpgradeFlags>
|
<Product>CUETools</Product>
|
||||||
<OldToolsVersion>3.5</OldToolsVersion>
|
<Description>A library for working with CD TOC.</Description>
|
||||||
<UpgradeBackupLocation>
|
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||||
</UpgradeBackupLocation>
|
<Authors>Grigory Chudov</Authors>
|
||||||
<SignAssembly>false</SignAssembly>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<AssemblyOriginatorKeyFile>
|
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||||
</AssemblyOriginatorKeyFile>
|
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<RepositoryType>git</RepositoryType>
|
||||||
<PublishUrl>publish\</PublishUrl>
|
<Company />
|
||||||
<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>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
</Project>
|
||||||
<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>
|
|
||||||
|
|||||||
@@ -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>
|
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||||
<RootNamespace>CUETools.CDRepair</RootNamespace>
|
<RootNamespace>CUETools.CDRepair</RootNamespace>
|
||||||
<AssemblyName>CUETools.CDRepair</AssemblyName>
|
<AssemblyName>CUETools.CDRepair</AssemblyName>
|
||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<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.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
// associated with an assembly.
|
// associated with an assembly.
|
||||||
[assembly: AssemblyTitle("CUEControls")]
|
[assembly: AssemblyTitle("CUETools.CLParity")]
|
||||||
[assembly: AssemblyDescription("")]
|
[assembly: AssemblyDescription("")]
|
||||||
[assembly: AssemblyConfiguration("")]
|
[assembly: AssemblyConfiguration("")]
|
||||||
[assembly: AssemblyCompany("")]
|
[assembly: AssemblyCompany("")]
|
||||||
[assembly: AssemblyProduct("CUEControls")]
|
[assembly: AssemblyProduct("CUETools.CLParity")]
|
||||||
[assembly: AssemblyCopyright("Copyright © 2008-2010 Grigory Chudov")]
|
[assembly: AssemblyCopyright("Copyright © 2011 Gregory S. Chudov")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
// Setting ComVisible to false makes the types in this assembly not visible
|
// 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
|
// to COM components. If you need to access a type in this assembly from
|
||||||
// COM, set the ComVisible attribute to true on that type.
|
// COM, set the ComVisible attribute to true on that type.
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
||||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||||
[assembly: Guid("3c6acc24-0c31-4ad1-8856-218877a987fd")]
|
[assembly: Guid("b28ffece-6c89-426b-b227-e647b435cc3d")]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
// Major Version
|
// Major Version
|
||||||
// Minor Version
|
// Minor Version
|
||||||
// Build Number
|
// Build Number
|
||||||
// Revision
|
// Revision
|
||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Revision and Build Numbers
|
// You can specify all the values or you can default the Revision and Build Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("2.1.6.0")]
|
[assembly: AssemblyVersion("2.1.6.0")]
|
||||||
[assembly: AssemblyFileVersion("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"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="8.00"
|
Version="9,00"
|
||||||
Name="flac_ren"
|
Name="fastdecode"
|
||||||
ProjectGUID="{4cefbc7f-c215-11db-8314-0800200c9a66}"
|
ProjectGUID="{32B8B6B7-FAED-4D9D-B90D-7E5C1E392DD8}"
|
||||||
RootNamespace="flac_ren"
|
Keyword="Win32Proj"
|
||||||
Keyword="Win32Proj"
|
TargetFrameworkVersion="0"
|
||||||
>
|
>
|
||||||
<Platforms>
|
<Platforms>
|
||||||
<Platform
|
<Platform
|
||||||
Name="Win32"
|
Name="Win32"
|
||||||
/>
|
/>
|
||||||
</Platforms>
|
</Platforms>
|
||||||
<ToolFiles>
|
<ToolFiles>
|
||||||
</ToolFiles>
|
</ToolFiles>
|
||||||
<Configurations>
|
<Configurations>
|
||||||
<Configuration
|
<Configuration
|
||||||
Name="Debug|Win32"
|
Name="Debug|Win32"
|
||||||
OutputDirectory="..\..\..\objs\debug\bin"
|
OutputDirectory="Debug"
|
||||||
IntermediateDirectory="Debug"
|
IntermediateDirectory="Debug"
|
||||||
ConfigurationType="1"
|
ConfigurationType="1"
|
||||||
>
|
>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCPreBuildEventTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCXMLDataGeneratorTool"
|
Name="VCXMLDataGeneratorTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCMIDLTool"
|
Name="VCMIDLTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
|
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="3"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
Detect64BitPortabilityProblems="true"
|
||||||
DebugInformationFormat="4"
|
DebugInformationFormat="4"
|
||||||
CompileAs="0"
|
/>
|
||||||
DisableSpecificWarnings="4267;4996"
|
<Tool
|
||||||
/>
|
Name="VCManagedResourceCompilerTool"
|
||||||
<Tool
|
/>
|
||||||
Name="VCManagedResourceCompilerTool"
|
<Tool
|
||||||
/>
|
Name="VCResourceCompilerTool"
|
||||||
<Tool
|
/>
|
||||||
Name="VCResourceCompilerTool"
|
<Tool
|
||||||
/>
|
Name="VCPreLinkEventTool"
|
||||||
<Tool
|
/>
|
||||||
Name="VCPreLinkEventTool"
|
<Tool
|
||||||
/>
|
Name="VCLinkerTool"
|
||||||
<Tool
|
LinkIncremental="2"
|
||||||
Name="VCLinkerTool"
|
GenerateDebugInformation="true"
|
||||||
LinkIncremental="2"
|
SubSystem="1"
|
||||||
IgnoreDefaultLibraryNames="uuid.lib"
|
TargetMachine="1"
|
||||||
GenerateDebugInformation="true"
|
/>
|
||||||
SubSystem="1"
|
<Tool
|
||||||
TargetMachine="1"
|
Name="VCALinkTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCALinkTool"
|
Name="VCManifestTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManifestTool"
|
Name="VCXDCMakeTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCXDCMakeTool"
|
Name="VCBscMakeTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCBscMakeTool"
|
Name="VCFxCopTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCFxCopTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCAppVerifierTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
</Configuration>
|
||||||
Name="VCPostBuildEventTool"
|
<Configuration
|
||||||
/>
|
Name="Release|Win32"
|
||||||
</Configuration>
|
OutputDirectory="Release"
|
||||||
<Configuration
|
IntermediateDirectory="Release"
|
||||||
Name="Release|Win32"
|
ConfigurationType="1"
|
||||||
OutputDirectory="..\..\..\objs\release\bin"
|
>
|
||||||
IntermediateDirectory="Release"
|
<Tool
|
||||||
ConfigurationType="1"
|
Name="VCPreBuildEventTool"
|
||||||
>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCPreBuildEventTool"
|
Name="VCCustomBuildTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCustomBuildTool"
|
Name="VCXMLDataGeneratorTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCXMLDataGeneratorTool"
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
Name="VCMIDLTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCMIDLTool"
|
Name="VCCLCompilerTool"
|
||||||
/>
|
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
|
||||||
<Tool
|
RuntimeLibrary="2"
|
||||||
Name="VCCLCompilerTool"
|
UsePrecompiledHeader="0"
|
||||||
EnableIntrinsicFunctions="true"
|
WarningLevel="3"
|
||||||
FavorSizeOrSpeed="1"
|
Detect64BitPortabilityProblems="true"
|
||||||
OmitFramePointers="true"
|
DebugInformationFormat="3"
|
||||||
WholeProgramOptimization="true"
|
/>
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;"
|
<Tool
|
||||||
RuntimeLibrary="0"
|
Name="VCManagedResourceCompilerTool"
|
||||||
BufferSecurityCheck="false"
|
/>
|
||||||
UsePrecompiledHeader="0"
|
<Tool
|
||||||
WarningLevel="3"
|
Name="VCResourceCompilerTool"
|
||||||
Detect64BitPortabilityProblems="true"
|
/>
|
||||||
DebugInformationFormat="3"
|
<Tool
|
||||||
CompileAs="0"
|
Name="VCPreLinkEventTool"
|
||||||
DisableSpecificWarnings="4267;4996"
|
/>
|
||||||
/>
|
<Tool
|
||||||
<Tool
|
Name="VCLinkerTool"
|
||||||
Name="VCManagedResourceCompilerTool"
|
LinkIncremental="2"
|
||||||
/>
|
GenerateDebugInformation="true"
|
||||||
<Tool
|
SubSystem="1"
|
||||||
Name="VCResourceCompilerTool"
|
OptimizeReferences="2"
|
||||||
/>
|
EnableCOMDATFolding="2"
|
||||||
<Tool
|
TargetMachine="1"
|
||||||
Name="VCPreLinkEventTool"
|
/>
|
||||||
/>
|
<Tool
|
||||||
<Tool
|
Name="VCALinkTool"
|
||||||
Name="VCLinkerTool"
|
/>
|
||||||
LinkIncremental="1"
|
<Tool
|
||||||
IgnoreDefaultLibraryNames="uuid.lib"
|
Name="VCManifestTool"
|
||||||
GenerateDebugInformation="true"
|
/>
|
||||||
SubSystem="1"
|
<Tool
|
||||||
OptimizeReferences="2"
|
Name="VCXDCMakeTool"
|
||||||
EnableCOMDATFolding="2"
|
/>
|
||||||
LinkTimeCodeGeneration="1"
|
<Tool
|
||||||
TargetMachine="1"
|
Name="VCBscMakeTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCALinkTool"
|
Name="VCFxCopTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManifestTool"
|
Name="VCAppVerifierTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCXDCMakeTool"
|
Name="VCPostBuildEventTool"
|
||||||
/>
|
/>
|
||||||
<Tool
|
</Configuration>
|
||||||
Name="VCBscMakeTool"
|
</Configurations>
|
||||||
/>
|
<References>
|
||||||
<Tool
|
</References>
|
||||||
Name="VCFxCopTool"
|
<Files>
|
||||||
/>
|
<Filter
|
||||||
<Tool
|
Name="Header Files"
|
||||||
Name="VCAppVerifierTool"
|
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
||||||
/>
|
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
||||||
<Tool
|
>
|
||||||
Name="VCPostBuildEventTool"
|
<File
|
||||||
/>
|
RelativePath=".\reed_solomon.h"
|
||||||
</Configuration>
|
>
|
||||||
</Configurations>
|
</File>
|
||||||
<References>
|
</Filter>
|
||||||
</References>
|
<Filter
|
||||||
<Files>
|
Name="Resource Files"
|
||||||
<Filter
|
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
|
||||||
Name="Header Files"
|
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
>
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
</Filter>
|
||||||
>
|
<Filter
|
||||||
</Filter>
|
Name="Source Files"
|
||||||
<Filter
|
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
||||||
Name="Source Files"
|
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
>
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
<File
|
||||||
>
|
RelativePath=".\main.c"
|
||||||
<File
|
>
|
||||||
RelativePath=".\main.c"
|
</File>
|
||||||
>
|
<File
|
||||||
</File>
|
RelativePath=".\reed_solomon.c"
|
||||||
</Filter>
|
>
|
||||||
</Files>
|
</File>
|
||||||
<Globals>
|
<File
|
||||||
</Globals>
|
RelativePath=".\speed.c"
|
||||||
</VisualStudioProject>
|
>
|
||||||
|
</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 Sdk="Microsoft.NET.Sdk">
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;net20;netcoreapp2.0</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
<Version>2.1.6.0</Version>
|
||||||
<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>
|
|
||||||
<AssemblyName>CUETools.CTDB.Converter</AssemblyName>
|
<AssemblyName>CUETools.CTDB.Converter</AssemblyName>
|
||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<RootNamespace>CUETools.CTDB.Converter</RootNamespace>
|
||||||
<TargetFrameworkProfile>
|
<Product>CUETools</Product>
|
||||||
</TargetFrameworkProfile>
|
<OutputType>Exe</OutputType>
|
||||||
<FileAlignment>512</FileAlignment>
|
<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>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<ItemDefinitionGroup>
|
||||||
<OutputPath>bin\Debug\</OutputPath>
|
<ProjectReference>
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<Private>False</Private>
|
||||||
<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>
|
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
</Project>
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
|
||||||
<Target Name="BeforeBuild">
|
|
||||||
</Target>
|
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
|
||||||
</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>
|
<WarningLevel>4</WarningLevel>
|
||||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||||
</PropertyGroup>
|
</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>
|
<ItemGroup>
|
||||||
<Compile Include="FormSubmitParity.cs">
|
<Compile Include="FormSubmitParity.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
@@ -116,24 +104,6 @@
|
|||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
</ItemGroup>
|
</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>
|
<ItemGroup>
|
||||||
<None Include="app.config" />
|
<None Include="app.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@@ -163,6 +133,42 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Resources\document-save_12.png" />
|
<None Include="Resources\document-save_12.png" />
|
||||||
</ItemGroup>
|
</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" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- 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.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Data;
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|||||||
@@ -1,40 +1,40 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
namespace CUETools.CTDB
|
namespace CUETools.CTDB
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
[XmlRoot(ElementName = "ctdb", Namespace = "http://db.cuetools.net/ns/mmd-1.0#")]
|
[XmlRoot(ElementName = "ctdb", Namespace = "http://db.cuetools.net/ns/mmd-1.0#")]
|
||||||
public class CTDBResponse
|
public class CTDBResponse
|
||||||
{
|
{
|
||||||
[XmlIgnore]
|
[XmlIgnore]
|
||||||
public bool ParityNeeded
|
public bool ParityNeeded
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return this.status == "parity needed";
|
return this.status == "parity needed";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string status { get; set; }
|
public string status { get; set; }
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string updateurl { get; set; }
|
public string updateurl { get; set; }
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string updatemsg { get; set; }
|
public string updatemsg { get; set; }
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string message { get; set; }
|
public string message { get; set; }
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public int npar { get; set; }
|
public int npar { get; set; }
|
||||||
|
|
||||||
[XmlElement]
|
[XmlElement]
|
||||||
public CTDBResponseEntry[] entry;
|
public CTDBResponseEntry[] entry;
|
||||||
|
|
||||||
[XmlElement]
|
[XmlElement]
|
||||||
public CTDBResponseMeta[] metadata;
|
public CTDBResponseMeta[] metadata;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,30 +1,30 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
namespace CUETools.CTDB
|
namespace CUETools.CTDB
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class CTDBResponseEntry
|
public class CTDBResponseEntry
|
||||||
{
|
{
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public long id { get; set; }
|
public long id { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string crc32 { get; set; }
|
public string crc32 { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public int confidence { get; set; }
|
public int confidence { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public int npar { get; set; }
|
public int npar { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public int stride { get; set; }
|
public int stride { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string hasparity { get; set; }
|
public string hasparity { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string parity { get; set; }
|
public string parity { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string syndrome { get; set; }
|
public string syndrome { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string trackcrcs { get; set; }
|
public string trackcrcs { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string toc { get; set; }
|
public string toc { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,89 +1,89 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
namespace CUETools.CTDB
|
namespace CUETools.CTDB
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class CTDBResponseMeta
|
public class CTDBResponseMeta
|
||||||
{
|
{
|
||||||
public CTDBResponseMeta()
|
public CTDBResponseMeta()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public CTDBResponseMeta(CTDBResponseMeta src)
|
public CTDBResponseMeta(CTDBResponseMeta src)
|
||||||
{
|
{
|
||||||
this.source = src.source;
|
this.source = src.source;
|
||||||
this.id = src.id;
|
this.id = src.id;
|
||||||
this.artist = src.artist;
|
this.artist = src.artist;
|
||||||
this.album = src.album;
|
this.album = src.album;
|
||||||
this.year = src.year;
|
this.year = src.year;
|
||||||
this.genre = src.genre;
|
this.genre = src.genre;
|
||||||
this.extra = src.extra;
|
this.extra = src.extra;
|
||||||
this.discnumber = src.discnumber;
|
this.discnumber = src.discnumber;
|
||||||
this.disccount = src.disccount;
|
this.disccount = src.disccount;
|
||||||
this.discname = src.discname;
|
this.discname = src.discname;
|
||||||
this.infourl = src.infourl;
|
this.infourl = src.infourl;
|
||||||
this.barcode = src.barcode;
|
this.barcode = src.barcode;
|
||||||
if (src.coverart != null)
|
if (src.coverart != null)
|
||||||
{
|
{
|
||||||
this.coverart = new CTDBResponseMetaImage[src.coverart.Length];
|
this.coverart = new CTDBResponseMetaImage[src.coverart.Length];
|
||||||
for (int i = 0; i < src.coverart.Length; i++)
|
for (int i = 0; i < src.coverart.Length; i++)
|
||||||
this.coverart[i] = new CTDBResponseMetaImage(src.coverart[i]);
|
this.coverart[i] = new CTDBResponseMetaImage(src.coverart[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src.track != null)
|
if (src.track != null)
|
||||||
{
|
{
|
||||||
this.track = new CTDBResponseMetaTrack[src.track.Length];
|
this.track = new CTDBResponseMetaTrack[src.track.Length];
|
||||||
for (int i = 0; i < src.track.Length; i++)
|
for (int i = 0; i < src.track.Length; i++)
|
||||||
this.track[i] = new CTDBResponseMetaTrack(src.track[i]);
|
this.track[i] = new CTDBResponseMetaTrack(src.track[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src.label != null)
|
if (src.label != null)
|
||||||
{
|
{
|
||||||
this.label = new CTDBResponseMetaLabel[src.label.Length];
|
this.label = new CTDBResponseMetaLabel[src.label.Length];
|
||||||
for (int i = 0; i < src.label.Length; i++)
|
for (int i = 0; i < src.label.Length; i++)
|
||||||
this.label[i] = new CTDBResponseMetaLabel(src.label[i]);
|
this.label[i] = new CTDBResponseMetaLabel(src.label[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (src.release != null)
|
if (src.release != null)
|
||||||
{
|
{
|
||||||
this.release = new CTDBResponseMetaRelease[src.release.Length];
|
this.release = new CTDBResponseMetaRelease[src.release.Length];
|
||||||
for (int i = 0; i < src.release.Length; i++)
|
for (int i = 0; i < src.release.Length; i++)
|
||||||
this.release[i] = new CTDBResponseMetaRelease(src.release[i]);
|
this.release[i] = new CTDBResponseMetaRelease(src.release[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string source { get; set; }
|
public string source { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string id { get; set; }
|
public string id { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string artist { get; set; }
|
public string artist { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string album { get; set; }
|
public string album { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string year { get; set; }
|
public string year { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string genre { get; set; }
|
public string genre { get; set; }
|
||||||
[XmlElement]
|
[XmlElement]
|
||||||
public string extra { get; set; }
|
public string extra { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string discnumber { get; set; }
|
public string discnumber { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string disccount { get; set; }
|
public string disccount { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string discname { get; set; }
|
public string discname { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string infourl { get; set; }
|
public string infourl { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string barcode { get; set; }
|
public string barcode { get; set; }
|
||||||
[XmlElement]
|
[XmlElement]
|
||||||
public CTDBResponseMetaImage[] coverart;
|
public CTDBResponseMetaImage[] coverart;
|
||||||
[XmlElement]
|
[XmlElement]
|
||||||
public CTDBResponseMetaTrack[] track;
|
public CTDBResponseMetaTrack[] track;
|
||||||
[XmlElement]
|
[XmlElement]
|
||||||
public CTDBResponseMetaLabel[] label;
|
public CTDBResponseMetaLabel[] label;
|
||||||
[XmlElement]
|
[XmlElement]
|
||||||
public CTDBResponseMetaRelease[] release;
|
public CTDBResponseMetaRelease[] release;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,33 +1,33 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
namespace CUETools.CTDB
|
namespace CUETools.CTDB
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class CTDBResponseMetaImage
|
public class CTDBResponseMetaImage
|
||||||
{
|
{
|
||||||
public CTDBResponseMetaImage()
|
public CTDBResponseMetaImage()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public CTDBResponseMetaImage(CTDBResponseMetaImage src)
|
public CTDBResponseMetaImage(CTDBResponseMetaImage src)
|
||||||
{
|
{
|
||||||
this.uri = src.uri;
|
this.uri = src.uri;
|
||||||
this.uri150 = src.uri150;
|
this.uri150 = src.uri150;
|
||||||
this.height = src.height;
|
this.height = src.height;
|
||||||
this.width = src.width;
|
this.width = src.width;
|
||||||
this.primary = src.primary;
|
this.primary = src.primary;
|
||||||
}
|
}
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string uri { get; set; }
|
public string uri { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string uri150 { get; set; }
|
public string uri150 { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public int height { get; set; }
|
public int height { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public int width { get; set; }
|
public int width { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public bool primary { get; set; }
|
public bool primary { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,24 +1,24 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
namespace CUETools.CTDB
|
namespace CUETools.CTDB
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class CTDBResponseMetaLabel
|
public class CTDBResponseMetaLabel
|
||||||
{
|
{
|
||||||
public CTDBResponseMetaLabel()
|
public CTDBResponseMetaLabel()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public CTDBResponseMetaLabel(CTDBResponseMetaLabel src)
|
public CTDBResponseMetaLabel(CTDBResponseMetaLabel src)
|
||||||
{
|
{
|
||||||
this.name = src.name;
|
this.name = src.name;
|
||||||
this.catno = src.catno;
|
this.catno = src.catno;
|
||||||
}
|
}
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string name { get; set; }
|
public string name { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string catno { get; set; }
|
public string catno { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,24 +1,24 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
namespace CUETools.CTDB
|
namespace CUETools.CTDB
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class CTDBResponseMetaRelease
|
public class CTDBResponseMetaRelease
|
||||||
{
|
{
|
||||||
public CTDBResponseMetaRelease()
|
public CTDBResponseMetaRelease()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public CTDBResponseMetaRelease(CTDBResponseMetaRelease src)
|
public CTDBResponseMetaRelease(CTDBResponseMetaRelease src)
|
||||||
{
|
{
|
||||||
this.date = src.date;
|
this.date = src.date;
|
||||||
this.country = src.country;
|
this.country = src.country;
|
||||||
}
|
}
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string date { get; set; }
|
public string date { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string country { get; set; }
|
public string country { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,27 +1,27 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
namespace CUETools.CTDB
|
namespace CUETools.CTDB
|
||||||
{
|
{
|
||||||
[Serializable]
|
[Serializable]
|
||||||
public class CTDBResponseMetaTrack
|
public class CTDBResponseMetaTrack
|
||||||
{
|
{
|
||||||
public CTDBResponseMetaTrack()
|
public CTDBResponseMetaTrack()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public CTDBResponseMetaTrack(CTDBResponseMetaTrack src)
|
public CTDBResponseMetaTrack(CTDBResponseMetaTrack src)
|
||||||
{
|
{
|
||||||
this.name = src.name;
|
this.name = src.name;
|
||||||
this.artist = src.artist;
|
this.artist = src.artist;
|
||||||
this.extra = src.extra;
|
this.extra = src.extra;
|
||||||
}
|
}
|
||||||
|
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string name { get; set; }
|
public string name { get; set; }
|
||||||
[XmlAttribute]
|
[XmlAttribute]
|
||||||
public string artist { get; set; }
|
public string artist { get; set; }
|
||||||
[XmlElement]
|
[XmlElement]
|
||||||
public string extra { get; set; }
|
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 Sdk="Microsoft.NET.Sdk">
|
||||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
<TargetFrameworks>net40;net20;netstandard2.0</TargetFrameworks>
|
||||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
<Version>2.1.6.0</Version>
|
||||||
<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>
|
|
||||||
<AssemblyName>CUETools.CTDB</AssemblyName>
|
<AssemblyName>CUETools.CTDB</AssemblyName>
|
||||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
<RootNamespace>CUETools.CTDB</RootNamespace>
|
||||||
<FileAlignment>512</FileAlignment>
|
<Product>CUETools</Product>
|
||||||
<FileUpgradeFlags>
|
<Description>A library for accessing CUETools Database.</Description>
|
||||||
</FileUpgradeFlags>
|
<Copyright>Copyright (c) 2008-2018 Grigory Chudov</Copyright>
|
||||||
<OldToolsVersion>3.5</OldToolsVersion>
|
<Authors>Grigory Chudov</Authors>
|
||||||
<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>
|
|
||||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
<OutputPath>..\bin\$(Configuration)\</OutputPath>
|
||||||
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
|
<RepositoryUrl>https://github.com/gchudov/cuetools.net</RepositoryUrl>
|
||||||
|
<RepositoryType>git</RepositoryType>
|
||||||
|
<Company />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
|
||||||
<DebugType>pdbonly</DebugType>
|
<ItemDefinitionGroup>
|
||||||
<Optimize>true</Optimize>
|
<ProjectReference>
|
||||||
<OutputPath>..\bin\Release\</OutputPath>
|
<Private>False</Private>
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
</ProjectReference>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
</ItemDefinitionGroup>
|
||||||
<WarningLevel>4</WarningLevel>
|
|
||||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
<ItemGroup Condition="'$(TargetFramework)'=='net20'">
|
||||||
<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" />
|
|
||||||
<Reference Include="System.Management" />
|
<Reference Include="System.Management" />
|
||||||
<Reference Include="System.Xml" />
|
|
||||||
</ItemGroup>
|
</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>
|
<ItemGroup>
|
||||||
<Compile Include="CTDBResponseMetaRelease.cs" />
|
<ProjectReference Include="..\CUETools.AccurateRip\CUETools.AccurateRip.csproj" />
|
||||||
<Compile Include="CTDBResponseMetaImage.cs" />
|
<ProjectReference Include="..\CUETools.CDImage\CUETools.CDImage.csproj" />
|
||||||
<Compile Include="CTDBMetadataSearch.cs" />
|
<ProjectReference Include="..\CUETools.Codecs\CUETools.Codecs.csproj" />
|
||||||
<Compile Include="CTDBResponse.cs" />
|
<ProjectReference Include="..\CUETools.Parity\CUETools.Parity.csproj" />
|
||||||
<Compile Include="CTDBResponseEntry.cs" />
|
<ProjectReference Include="..\CUETools.CTDB.Types\CUETools.CTDB.Types.csproj" />
|
||||||
<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" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\CUETools.AccurateRip\CUETools.AccurateRip.csproj">
|
</Project>
|
||||||
<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>
|
|
||||||
|
|||||||
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.Collections.Specialized;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Management;
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Security.Cryptography;
|
using System.Security.Cryptography;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@@ -11,6 +10,13 @@ using System.Xml.Serialization;
|
|||||||
using CUETools.AccurateRip;
|
using CUETools.AccurateRip;
|
||||||
using CUETools.CDImage;
|
using CUETools.CDImage;
|
||||||
using CUETools.Parity;
|
using CUETools.Parity;
|
||||||
|
#if NET20
|
||||||
|
using System.Management;
|
||||||
|
#else
|
||||||
|
using DeviceId;
|
||||||
|
using DeviceId.Encoders;
|
||||||
|
using DeviceId.Formatters;
|
||||||
|
#endif
|
||||||
using Krystalware.UploadHelper;
|
using Krystalware.UploadHelper;
|
||||||
|
|
||||||
namespace CUETools.CTDB
|
namespace CUETools.CTDB
|
||||||
@@ -98,9 +104,9 @@ namespace CUETools.CTDB
|
|||||||
this.QueryExceptionMessage = resp.StatusDescription;
|
this.QueryExceptionMessage = resp.StatusDescription;
|
||||||
if (this.QueryResponseStatus == HttpStatusCode.OK)
|
if (this.QueryResponseStatus == HttpStatusCode.OK)
|
||||||
{
|
{
|
||||||
//XmlSerializer serializer = new XmlSerializer(typeof(CTDBResponse));
|
//var serializer = new XmlSerializer(typeof(CTDBResponse));
|
||||||
XmlSerializer serializer = new Microsoft.Xml.Serialization.GeneratedAssembly.CTDBResponseSerializer();
|
var serializer = new Microsoft.Xml.Serialization.GeneratedAssembly.CTDBResponseSerializer();
|
||||||
this.total = 0;
|
this.total = 0;
|
||||||
using (Stream responseStream = resp.GetResponseStream())
|
using (Stream responseStream = resp.GetResponseStream())
|
||||||
{
|
{
|
||||||
CTDBResponse ctdbResp = serializer.Deserialize(responseStream) as CTDBResponse;
|
CTDBResponse ctdbResp = serializer.Deserialize(responseStream) as CTDBResponse;
|
||||||
@@ -277,16 +283,27 @@ namespace CUETools.CTDB
|
|||||||
{
|
{
|
||||||
if (uuidInfo == null)
|
if (uuidInfo == null)
|
||||||
{
|
{
|
||||||
|
#if NET20
|
||||||
string id = "CTDB userid";
|
string id = "CTDB userid";
|
||||||
using (ManagementClass mc = new ManagementClass("Win32_ComputerSystemProduct"))
|
using (ManagementClass mc = new ManagementClass("Win32_ComputerSystemProduct"))
|
||||||
foreach (ManagementObject mo in mc.GetInstances())
|
foreach (ManagementObject mo in mc.GetInstances())
|
||||||
{
|
{
|
||||||
id = id + mo.Properties["UUID"].Value.ToString();
|
id = id + mo.Properties["UUID"].Value.ToString();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
byte[] hashBytes = (new SHA1CryptoServiceProvider()).ComputeHash(Encoding.ASCII.GetBytes(id));
|
byte[] hashBytes = (new SHA1CryptoServiceProvider()).ComputeHash(Encoding.ASCII.GetBytes(id));
|
||||||
uuidInfo = Convert.ToBase64String(hashBytes).Replace('+', '.').Replace('/', '_').Replace('=', '-');
|
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;
|
return uuidInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -391,7 +408,8 @@ namespace CUETools.CTDB
|
|||||||
{
|
{
|
||||||
using (Stream s = resp.GetResponseStream())
|
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;
|
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