diff --git a/CUEControls/Properties/AssemblyInfo.cs b/CUEControls/Properties/AssemblyInfo.cs
index 154dee1..f4273f5 100644
--- a/CUEControls/Properties/AssemblyInfo.cs
+++ b/CUEControls/Properties/AssemblyInfo.cs
@@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("2.0.7.0")]
-[assembly: AssemblyFileVersion("2.0.7.0")]
+[assembly: AssemblyVersion("2.0.8.0")]
+[assembly: AssemblyFileVersion("2.0.8.0")]
diff --git a/CUEPlayer/Properties/AssemblyInfo.cs b/CUEPlayer/Properties/AssemblyInfo.cs
index 8a33b29..33de2e5 100644
--- a/CUEPlayer/Properties/AssemblyInfo.cs
+++ b/CUEPlayer/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// 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("2.0.7.0")]
-[assembly: AssemblyFileVersion("2.0.7.0")]
+[assembly: AssemblyVersion("2.0.8.0")]
+[assembly: AssemblyFileVersion("2.0.8.0")]
diff --git a/CUEPlayer/frmCUEPlayer.Designer.cs b/CUEPlayer/frmCUEPlayer.Designer.cs
index 3df6216..1ca0a2b 100644
--- a/CUEPlayer/frmCUEPlayer.Designer.cs
+++ b/CUEPlayer/frmCUEPlayer.Designer.cs
@@ -68,7 +68,7 @@
this.IsMdiContainer = true;
this.MainMenuStrip = this.menuStrip1;
this.Name = "frmCUEPlayer";
- this.Text = "CUEPlayer 2.0.7";
+ this.Text = "CUEPlayer 2.0.8";
this.Load += new System.EventHandler(this.frmCUEPlayer_Load);
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmCUEPlayer_FormClosing);
this.menuStrip1.ResumeLayout(false);
diff --git a/CUERipper/CUERipper.csproj b/CUERipper/CUERipper.csproj
index 1fb40ee..cca603b 100644
--- a/CUERipper/CUERipper.csproj
+++ b/CUERipper/CUERipper.csproj
@@ -40,7 +40,7 @@
true
index.html
2
- 2.0.7.2
+ 2.0.8.0
false
true
true
@@ -87,6 +87,9 @@
+
+ frmCUERipper.cs
+
Designer
frmCUERipper.cs
diff --git a/CUERipper/Program.cs b/CUERipper/Program.cs
index ed9ef23..9591669 100644
--- a/CUERipper/Program.cs
+++ b/CUERipper/Program.cs
@@ -1,8 +1,11 @@
using System;
using System.Collections.Generic;
using System.Deployment.Application;
+using System.Globalization;
using System.Runtime.InteropServices;
+using System.Threading;
using System.Windows.Forms;
+using CUETools.Processor;
namespace CUERipper
{
@@ -20,6 +23,11 @@ namespace CUERipper
string arch = Marshal.SizeOf(typeof(IntPtr)) == 8 ? "x64" : "Win32";
GetSatelliteAssemblies("Plugins (" + arch + ")");
+ CUEConfig config = new CUEConfig();
+ config.Load(new SettingsReader("CUERipper", "settings.txt", Application.ExecutablePath));
+ try { Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(config.language); }
+ catch { }
+
Application.Run(new frmCUERipper());
}
diff --git a/CUERipper/frmCUERipper.Designer.cs b/CUERipper/frmCUERipper.Designer.cs
index 5d50782..fad2f36 100644
--- a/CUERipper/frmCUERipper.Designer.cs
+++ b/CUERipper/frmCUERipper.Designer.cs
@@ -100,6 +100,11 @@ namespace CUERipper
//
// statusStrip1
//
+ this.statusStrip1.AccessibleDescription = null;
+ this.statusStrip1.AccessibleName = null;
+ resources.ApplyResources(this.statusStrip1, "statusStrip1");
+ this.statusStrip1.BackgroundImage = null;
+ this.statusStrip1.Font = null;
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1,
this.toolStripStatusLabelMusicBrainz,
@@ -107,69 +112,90 @@ namespace CUERipper
this.toolStripStatusAr,
this.toolStripProgressBar1,
this.toolStripStatusLabel2});
- resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.ShowItemToolTips = true;
this.statusStrip1.SizingGrip = false;
+ this.toolTip1.SetToolTip(this.statusStrip1, resources.GetString("statusStrip1.ToolTip"));
//
// toolStripStatusLabel1
//
- this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
+ this.toolStripStatusLabel1.AccessibleDescription = null;
+ this.toolStripStatusLabel1.AccessibleName = null;
resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1");
+ this.toolStripStatusLabel1.BackgroundImage = null;
+ this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
this.toolStripStatusLabel1.Spring = true;
//
// toolStripStatusLabelMusicBrainz
//
+ this.toolStripStatusLabelMusicBrainz.AccessibleDescription = null;
+ this.toolStripStatusLabelMusicBrainz.AccessibleName = null;
+ resources.ApplyResources(this.toolStripStatusLabelMusicBrainz, "toolStripStatusLabelMusicBrainz");
+ this.toolStripStatusLabelMusicBrainz.BackgroundImage = null;
this.toolStripStatusLabelMusicBrainz.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.toolStripStatusLabelMusicBrainz.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
this.toolStripStatusLabelMusicBrainz.Image = global::CUERipper.Properties.Resources.musicbrainz;
this.toolStripStatusLabelMusicBrainz.Name = "toolStripStatusLabelMusicBrainz";
- resources.ApplyResources(this.toolStripStatusLabelMusicBrainz, "toolStripStatusLabelMusicBrainz");
this.toolStripStatusLabelMusicBrainz.Click += new System.EventHandler(this.toolStripStatusLabelMusicBrainz_Click);
//
// toolStripStatusCTDB
//
+ this.toolStripStatusCTDB.AccessibleDescription = null;
+ this.toolStripStatusCTDB.AccessibleName = null;
+ resources.ApplyResources(this.toolStripStatusCTDB, "toolStripStatusCTDB");
+ this.toolStripStatusCTDB.BackgroundImage = null;
this.toolStripStatusCTDB.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.toolStripStatusCTDB.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
this.toolStripStatusCTDB.Image = global::CUERipper.Properties.Resources.cdrepair;
this.toolStripStatusCTDB.Name = "toolStripStatusCTDB";
- resources.ApplyResources(this.toolStripStatusCTDB, "toolStripStatusCTDB");
//
// toolStripStatusAr
//
+ this.toolStripStatusAr.AccessibleDescription = null;
+ this.toolStripStatusAr.AccessibleName = null;
+ resources.ApplyResources(this.toolStripStatusAr, "toolStripStatusAr");
+ this.toolStripStatusAr.BackgroundImage = null;
this.toolStripStatusAr.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
this.toolStripStatusAr.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
- resources.ApplyResources(this.toolStripStatusAr, "toolStripStatusAr");
this.toolStripStatusAr.Name = "toolStripStatusAr";
//
// toolStripProgressBar1
//
+ this.toolStripProgressBar1.AccessibleDescription = null;
+ this.toolStripProgressBar1.AccessibleName = null;
+ resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.AutoToolTip = true;
this.toolStripProgressBar1.MarqueeAnimationSpeed = 500;
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
- resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// toolStripStatusLabel2
//
+ this.toolStripStatusLabel2.AccessibleDescription = null;
+ this.toolStripStatusLabel2.AccessibleName = null;
+ resources.ApplyResources(this.toolStripStatusLabel2, "toolStripStatusLabel2");
+ this.toolStripStatusLabel2.BackgroundImage = null;
this.toolStripStatusLabel2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
- resources.ApplyResources(this.toolStripStatusLabel2, "toolStripStatusLabel2");
//
// listTracks
//
+ this.listTracks.AccessibleDescription = null;
+ this.listTracks.AccessibleName = null;
resources.ApplyResources(this.listTracks, "listTracks");
+ this.listTracks.BackgroundImage = null;
this.listTracks.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.Title,
this.TrackNo,
this.Start,
this.Length});
+ this.listTracks.Font = null;
this.listTracks.FullRowSelect = true;
this.listTracks.GridLines = true;
this.listTracks.LabelEdit = true;
@@ -201,42 +227,69 @@ namespace CUERipper
//
// buttonGo
//
+ this.buttonGo.AccessibleDescription = null;
+ this.buttonGo.AccessibleName = null;
resources.ApplyResources(this.buttonGo, "buttonGo");
this.buttonGo.BackColor = System.Drawing.Color.Transparent;
+ this.buttonGo.BackgroundImage = null;
+ this.buttonGo.Font = null;
this.buttonGo.Name = "buttonGo";
+ this.toolTip1.SetToolTip(this.buttonGo, resources.GetString("buttonGo.ToolTip"));
this.buttonGo.UseVisualStyleBackColor = false;
this.buttonGo.Click += new System.EventHandler(this.buttonGo_Click);
//
// buttonAbort
//
+ this.buttonAbort.AccessibleDescription = null;
+ this.buttonAbort.AccessibleName = null;
resources.ApplyResources(this.buttonAbort, "buttonAbort");
+ this.buttonAbort.BackgroundImage = null;
+ this.buttonAbort.Font = null;
this.buttonAbort.Name = "buttonAbort";
+ this.toolTip1.SetToolTip(this.buttonAbort, resources.GetString("buttonAbort.ToolTip"));
this.buttonAbort.UseVisualStyleBackColor = true;
this.buttonAbort.Click += new System.EventHandler(this.buttonAbort_Click);
//
// buttonPause
//
+ this.buttonPause.AccessibleDescription = null;
+ this.buttonPause.AccessibleName = null;
resources.ApplyResources(this.buttonPause, "buttonPause");
+ this.buttonPause.BackgroundImage = null;
+ this.buttonPause.Font = null;
this.buttonPause.Name = "buttonPause";
+ this.toolTip1.SetToolTip(this.buttonPause, resources.GetString("buttonPause.ToolTip"));
this.buttonPause.UseVisualStyleBackColor = true;
this.buttonPause.Click += new System.EventHandler(this.buttonPause_Click);
//
// contextMenuStripRelease
//
+ this.contextMenuStripRelease.AccessibleDescription = null;
+ this.contextMenuStripRelease.AccessibleName = null;
+ resources.ApplyResources(this.contextMenuStripRelease, "contextMenuStripRelease");
+ this.contextMenuStripRelease.BackgroundImage = null;
+ this.contextMenuStripRelease.Font = null;
this.contextMenuStripRelease.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.editToolStripMenuItem});
this.contextMenuStripRelease.Name = "contextMenuStripRelease";
- resources.ApplyResources(this.contextMenuStripRelease, "contextMenuStripRelease");
+ this.toolTip1.SetToolTip(this.contextMenuStripRelease, resources.GetString("contextMenuStripRelease.ToolTip"));
//
// editToolStripMenuItem
//
- this.editToolStripMenuItem.Name = "editToolStripMenuItem";
+ this.editToolStripMenuItem.AccessibleDescription = null;
+ this.editToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.editToolStripMenuItem, "editToolStripMenuItem");
+ this.editToolStripMenuItem.BackgroundImage = null;
+ this.editToolStripMenuItem.Name = "editToolStripMenuItem";
+ this.editToolStripMenuItem.ShortcutKeyDisplayString = null;
this.editToolStripMenuItem.Click += new System.EventHandler(this.editToolStripMenuItem_Click);
//
// numericWriteOffset
//
+ this.numericWriteOffset.AccessibleDescription = null;
+ this.numericWriteOffset.AccessibleName = null;
resources.ApplyResources(this.numericWriteOffset, "numericWriteOffset");
+ this.numericWriteOffset.Font = null;
this.numericWriteOffset.Maximum = new decimal(new int[] {
99999,
0,
@@ -248,21 +301,35 @@ namespace CUERipper
0,
-2147483648});
this.numericWriteOffset.Name = "numericWriteOffset";
+ this.toolTip1.SetToolTip(this.numericWriteOffset, resources.GetString("numericWriteOffset.ToolTip"));
//
// lblWriteOffset
//
+ this.lblWriteOffset.AccessibleDescription = null;
+ this.lblWriteOffset.AccessibleName = null;
resources.ApplyResources(this.lblWriteOffset, "lblWriteOffset");
+ this.lblWriteOffset.Font = null;
this.lblWriteOffset.Name = "lblWriteOffset";
+ this.toolTip1.SetToolTip(this.lblWriteOffset, resources.GetString("lblWriteOffset.ToolTip"));
//
// checkBoxEACMode
//
+ this.checkBoxEACMode.AccessibleDescription = null;
+ this.checkBoxEACMode.AccessibleName = null;
resources.ApplyResources(this.checkBoxEACMode, "checkBoxEACMode");
+ this.checkBoxEACMode.BackgroundImage = null;
+ this.checkBoxEACMode.Font = null;
this.checkBoxEACMode.Name = "checkBoxEACMode";
+ this.toolTip1.SetToolTip(this.checkBoxEACMode, resources.GetString("checkBoxEACMode.ToolTip"));
this.checkBoxEACMode.UseVisualStyleBackColor = true;
this.checkBoxEACMode.CheckedChanged += new System.EventHandler(this.checkBoxEACMode_CheckedChanged);
//
// groupBoxSettings
//
+ this.groupBoxSettings.AccessibleDescription = null;
+ this.groupBoxSettings.AccessibleName = null;
+ resources.ApplyResources(this.groupBoxSettings, "groupBoxSettings");
+ this.groupBoxSettings.BackgroundImage = null;
this.groupBoxSettings.Controls.Add(this.bnComboBoxLosslessOrNot);
this.groupBoxSettings.Controls.Add(this.bnComboBoxEncoder);
this.groupBoxSettings.Controls.Add(this.labelSecureMode);
@@ -276,22 +343,27 @@ namespace CUERipper
this.groupBoxSettings.Controls.Add(this.lblWriteOffset);
this.groupBoxSettings.Controls.Add(this.checkBoxEACMode);
this.groupBoxSettings.Controls.Add(this.numericWriteOffset);
- resources.ApplyResources(this.groupBoxSettings, "groupBoxSettings");
+ this.groupBoxSettings.Font = null;
this.groupBoxSettings.Name = "groupBoxSettings";
this.groupBoxSettings.TabStop = false;
+ this.toolTip1.SetToolTip(this.groupBoxSettings, resources.GetString("groupBoxSettings.ToolTip"));
//
// bnComboBoxLosslessOrNot
//
+ this.bnComboBoxLosslessOrNot.AccessibleDescription = null;
+ this.bnComboBoxLosslessOrNot.AccessibleName = null;
+ resources.ApplyResources(this.bnComboBoxLosslessOrNot, "bnComboBoxLosslessOrNot");
this.bnComboBoxLosslessOrNot.BackColor = System.Drawing.Color.White;
+ this.bnComboBoxLosslessOrNot.BackgroundImage = null;
this.bnComboBoxLosslessOrNot.DataSource = this.losslessOrNotBindingSource;
this.bnComboBoxLosslessOrNot.DropDownHeight = 200;
this.bnComboBoxLosslessOrNot.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxLosslessOrNot.DropDownWidth = 80;
+ this.bnComboBoxLosslessOrNot.Font = null;
this.bnComboBoxLosslessOrNot.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxLosslessOrNot.ImageKeyMember = "ImageKey";
this.bnComboBoxLosslessOrNot.ImageList = null;
this.bnComboBoxLosslessOrNot.IsDroppedDown = false;
- resources.ApplyResources(this.bnComboBoxLosslessOrNot, "bnComboBoxLosslessOrNot");
this.bnComboBoxLosslessOrNot.MaxDropDownItems = 8;
this.bnComboBoxLosslessOrNot.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxLosslessOrNot.Name = "bnComboBoxLosslessOrNot";
@@ -299,6 +371,7 @@ namespace CUERipper
this.bnComboBoxLosslessOrNot.SelectedIndex = -1;
this.bnComboBoxLosslessOrNot.SelectedItem = null;
this.bnComboBoxLosslessOrNot.Sorted = false;
+ this.toolTip1.SetToolTip(this.bnComboBoxLosslessOrNot, resources.GetString("bnComboBoxLosslessOrNot.ToolTip"));
this.bnComboBoxLosslessOrNot.SelectedIndexChanged += new System.EventHandler(this.bnComboBoxLosslessOrNot_SelectedIndexChanged);
//
// losslessOrNotBindingSource
@@ -312,15 +385,19 @@ namespace CUERipper
//
// bnComboBoxEncoder
//
+ this.bnComboBoxEncoder.AccessibleDescription = null;
+ this.bnComboBoxEncoder.AccessibleName = null;
+ resources.ApplyResources(this.bnComboBoxEncoder, "bnComboBoxEncoder");
this.bnComboBoxEncoder.BackColor = System.Drawing.Color.White;
+ this.bnComboBoxEncoder.BackgroundImage = null;
this.bnComboBoxEncoder.DataSource = this.encodersBindingSource;
this.bnComboBoxEncoder.DropDownHeight = 200;
this.bnComboBoxEncoder.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxEncoder.DropDownWidth = 80;
+ this.bnComboBoxEncoder.Font = null;
this.bnComboBoxEncoder.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxEncoder.ImageList = null;
this.bnComboBoxEncoder.IsDroppedDown = false;
- resources.ApplyResources(this.bnComboBoxEncoder, "bnComboBoxEncoder");
this.bnComboBoxEncoder.MaxDropDownItems = 8;
this.bnComboBoxEncoder.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxEncoder.Name = "bnComboBoxEncoder";
@@ -328,6 +405,7 @@ namespace CUERipper
this.bnComboBoxEncoder.SelectedIndex = -1;
this.bnComboBoxEncoder.SelectedItem = null;
this.bnComboBoxEncoder.Sorted = false;
+ this.toolTip1.SetToolTip(this.bnComboBoxEncoder, resources.GetString("bnComboBoxEncoder.ToolTip"));
this.bnComboBoxEncoder.SelectedIndexChanged += new System.EventHandler(this.comboBoxEncoder_SelectedIndexChanged);
//
// encodersBindingSource
@@ -337,21 +415,29 @@ namespace CUERipper
//
// labelSecureMode
//
+ this.labelSecureMode.AccessibleDescription = null;
+ this.labelSecureMode.AccessibleName = null;
resources.ApplyResources(this.labelSecureMode, "labelSecureMode");
+ this.labelSecureMode.Font = null;
this.labelSecureMode.Name = "labelSecureMode";
+ this.toolTip1.SetToolTip(this.labelSecureMode, resources.GetString("labelSecureMode.ToolTip"));
//
// bnComboBoxFormat
//
+ this.bnComboBoxFormat.AccessibleDescription = null;
+ this.bnComboBoxFormat.AccessibleName = null;
+ resources.ApplyResources(this.bnComboBoxFormat, "bnComboBoxFormat");
this.bnComboBoxFormat.BackColor = System.Drawing.Color.White;
+ this.bnComboBoxFormat.BackgroundImage = null;
this.bnComboBoxFormat.DataSource = this.formatsBindingSource;
this.bnComboBoxFormat.DropDownHeight = 200;
this.bnComboBoxFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxFormat.DropDownWidth = 80;
+ this.bnComboBoxFormat.Font = null;
this.bnComboBoxFormat.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxFormat.ImageKeyMember = "DotExtension";
this.bnComboBoxFormat.ImageList = null;
this.bnComboBoxFormat.IsDroppedDown = false;
- resources.ApplyResources(this.bnComboBoxFormat, "bnComboBoxFormat");
this.bnComboBoxFormat.MaxDropDownItems = 8;
this.bnComboBoxFormat.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxFormat.Name = "bnComboBoxFormat";
@@ -359,6 +445,7 @@ namespace CUERipper
this.bnComboBoxFormat.SelectedIndex = -1;
this.bnComboBoxFormat.SelectedItem = null;
this.bnComboBoxFormat.Sorted = false;
+ this.toolTip1.SetToolTip(this.bnComboBoxFormat, resources.GetString("bnComboBoxFormat.ToolTip"));
this.bnComboBoxFormat.SelectedIndexChanged += new System.EventHandler(this.bnComboBoxFormat_SelectedIndexChanged);
//
// formatsBindingSource
@@ -368,20 +455,27 @@ namespace CUERipper
//
// labelEncoderMinMode
//
+ this.labelEncoderMinMode.AccessibleDescription = null;
+ this.labelEncoderMinMode.AccessibleName = null;
resources.ApplyResources(this.labelEncoderMinMode, "labelEncoderMinMode");
this.labelEncoderMinMode.Name = "labelEncoderMinMode";
+ this.toolTip1.SetToolTip(this.labelEncoderMinMode, resources.GetString("labelEncoderMinMode.ToolTip"));
//
// bnComboBoxImage
//
+ this.bnComboBoxImage.AccessibleDescription = null;
+ this.bnComboBoxImage.AccessibleName = null;
+ resources.ApplyResources(this.bnComboBoxImage, "bnComboBoxImage");
this.bnComboBoxImage.BackColor = System.Drawing.Color.White;
+ this.bnComboBoxImage.BackgroundImage = null;
this.bnComboBoxImage.DataSource = this.cUEStylesBindingSource;
this.bnComboBoxImage.DropDownHeight = 200;
this.bnComboBoxImage.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxImage.DropDownWidth = 80;
+ this.bnComboBoxImage.Font = null;
this.bnComboBoxImage.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxImage.ImageList = null;
this.bnComboBoxImage.IsDroppedDown = false;
- resources.ApplyResources(this.bnComboBoxImage, "bnComboBoxImage");
this.bnComboBoxImage.MaxDropDownItems = 8;
this.bnComboBoxImage.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxImage.Name = "bnComboBoxImage";
@@ -389,6 +483,7 @@ namespace CUERipper
this.bnComboBoxImage.SelectedIndex = -1;
this.bnComboBoxImage.SelectedItem = null;
this.bnComboBoxImage.Sorted = false;
+ this.toolTip1.SetToolTip(this.bnComboBoxImage, resources.GetString("bnComboBoxImage.ToolTip"));
//
// cUEStylesBindingSource
//
@@ -397,27 +492,43 @@ namespace CUERipper
//
// labelEncoderMaxMode
//
+ this.labelEncoderMaxMode.AccessibleDescription = null;
+ this.labelEncoderMaxMode.AccessibleName = null;
resources.ApplyResources(this.labelEncoderMaxMode, "labelEncoderMaxMode");
this.labelEncoderMaxMode.Name = "labelEncoderMaxMode";
+ this.toolTip1.SetToolTip(this.labelEncoderMaxMode, resources.GetString("labelEncoderMaxMode.ToolTip"));
//
// labelEncoderMode
//
+ this.labelEncoderMode.AccessibleDescription = null;
+ this.labelEncoderMode.AccessibleName = null;
resources.ApplyResources(this.labelEncoderMode, "labelEncoderMode");
this.labelEncoderMode.Name = "labelEncoderMode";
+ this.toolTip1.SetToolTip(this.labelEncoderMode, resources.GetString("labelEncoderMode.ToolTip"));
//
// trackBarEncoderMode
//
+ this.trackBarEncoderMode.AccessibleDescription = null;
+ this.trackBarEncoderMode.AccessibleName = null;
resources.ApplyResources(this.trackBarEncoderMode, "trackBarEncoderMode");
+ this.trackBarEncoderMode.BackgroundImage = null;
+ this.trackBarEncoderMode.Font = null;
this.trackBarEncoderMode.LargeChange = 1;
this.trackBarEncoderMode.Name = "trackBarEncoderMode";
+ this.toolTip1.SetToolTip(this.trackBarEncoderMode, resources.GetString("trackBarEncoderMode.ToolTip"));
this.trackBarEncoderMode.Scroll += new System.EventHandler(this.trackBarEncoderMode_Scroll);
//
// trackBarSecureMode
//
+ this.trackBarSecureMode.AccessibleDescription = null;
+ this.trackBarSecureMode.AccessibleName = null;
resources.ApplyResources(this.trackBarSecureMode, "trackBarSecureMode");
+ this.trackBarSecureMode.BackgroundImage = null;
+ this.trackBarSecureMode.Font = null;
this.trackBarSecureMode.LargeChange = 3;
this.trackBarSecureMode.Maximum = 2;
this.trackBarSecureMode.Name = "trackBarSecureMode";
+ this.toolTip1.SetToolTip(this.trackBarSecureMode, resources.GetString("trackBarSecureMode.ToolTip"));
this.trackBarSecureMode.Scroll += new System.EventHandler(this.trackBarSecureMode_Scroll);
//
// imageListChecked
@@ -431,15 +542,23 @@ namespace CUERipper
//
// toolStripMenuItem1
//
+ this.toolStripMenuItem1.AccessibleDescription = null;
+ this.toolStripMenuItem1.AccessibleName = null;
+ resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
+ this.toolStripMenuItem1.BackgroundImage = null;
this.toolStripMenuItem1.Image = global::CUERipper.Properties.Resources.cddb;
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
- resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
+ this.toolStripMenuItem1.ShortcutKeyDisplayString = null;
//
// progressBarErrors
//
+ this.progressBarErrors.AccessibleDescription = null;
+ this.progressBarErrors.AccessibleName = null;
+ resources.ApplyResources(this.progressBarErrors, "progressBarErrors");
+ this.progressBarErrors.BackgroundImage = null;
this.progressBarErrors.BackgroundPainter = this.plainBackgroundPainter1;
this.progressBarErrors.BorderPainter = this.styledBorderPainter1;
- resources.ApplyResources(this.progressBarErrors, "progressBarErrors");
+ this.progressBarErrors.Font = null;
this.progressBarErrors.MarqueePercentage = 25;
this.progressBarErrors.MarqueeSpeed = 30;
this.progressBarErrors.MarqueeStep = 1;
@@ -450,6 +569,7 @@ namespace CUERipper
this.progressBarErrors.ProgressPainter = this.plainProgressPainter1;
this.progressBarErrors.ProgressType = ProgressODoom.ProgressType.Smooth;
this.progressBarErrors.ShowPercentage = false;
+ this.toolTip1.SetToolTip(this.progressBarErrors, resources.GetString("progressBarErrors.ToolTip"));
this.progressBarErrors.Value = 10;
//
// plainBackgroundPainter1
@@ -480,9 +600,13 @@ namespace CUERipper
//
// progressBarCD
//
+ this.progressBarCD.AccessibleDescription = null;
+ this.progressBarCD.AccessibleName = null;
+ resources.ApplyResources(this.progressBarCD, "progressBarCD");
+ this.progressBarCD.BackgroundImage = null;
this.progressBarCD.BackgroundPainter = this.plainBackgroundPainter1;
this.progressBarCD.BorderPainter = this.styledBorderPainter1;
- resources.ApplyResources(this.progressBarCD, "progressBarCD");
+ this.progressBarCD.Font = null;
this.progressBarCD.MarqueePercentage = 25;
this.progressBarCD.MarqueeSpeed = 30;
this.progressBarCD.MarqueeStep = 1;
@@ -493,6 +617,7 @@ namespace CUERipper
this.progressBarCD.ProgressPainter = this.plainProgressPainter2;
this.progressBarCD.ProgressType = ProgressODoom.ProgressType.Smooth;
this.progressBarCD.ShowPercentage = true;
+ this.toolTip1.SetToolTip(this.progressBarCD, resources.GetString("progressBarCD.ToolTip"));
this.progressBarCD.Value = 10;
//
// plainProgressPainter2
@@ -504,7 +629,11 @@ namespace CUERipper
//
// txtOutputPath
//
+ this.txtOutputPath.AccessibleDescription = null;
+ this.txtOutputPath.AccessibleName = null;
resources.ApplyResources(this.txtOutputPath, "txtOutputPath");
+ this.txtOutputPath.BackgroundImage = null;
+ this.txtOutputPath.Font = null;
this.txtOutputPath.Name = "txtOutputPath";
this.txtOutputPath.ReadOnly = true;
this.toolTip1.SetToolTip(this.txtOutputPath, resources.GetString("txtOutputPath.ToolTip"));
@@ -512,17 +641,21 @@ namespace CUERipper
//
// bnComboBoxRelease
//
+ this.bnComboBoxRelease.AccessibleDescription = null;
+ this.bnComboBoxRelease.AccessibleName = null;
+ resources.ApplyResources(this.bnComboBoxRelease, "bnComboBoxRelease");
this.bnComboBoxRelease.BackColor = System.Drawing.SystemColors.ControlLightLight;
+ this.bnComboBoxRelease.BackgroundImage = null;
this.bnComboBoxRelease.ContextMenuStrip = this.contextMenuStripRelease;
this.bnComboBoxRelease.DataSource = this.releasesBindingSource;
this.bnComboBoxRelease.DropDownHeight = 200;
this.bnComboBoxRelease.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxRelease.DropDownWidth = 552;
+ this.bnComboBoxRelease.Font = null;
this.bnComboBoxRelease.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxRelease.ImageKeyMember = "ImageKey";
this.bnComboBoxRelease.ImageList = this.imageListMetadataSource;
this.bnComboBoxRelease.IsDroppedDown = false;
- resources.ApplyResources(this.bnComboBoxRelease, "bnComboBoxRelease");
this.bnComboBoxRelease.MaxDropDownItems = 8;
this.bnComboBoxRelease.MinimumSize = new System.Drawing.Size(61, 21);
this.bnComboBoxRelease.Name = "bnComboBoxRelease";
@@ -547,16 +680,20 @@ namespace CUERipper
//
// bnComboBoxDrives
//
+ this.bnComboBoxDrives.AccessibleDescription = null;
+ this.bnComboBoxDrives.AccessibleName = null;
+ resources.ApplyResources(this.bnComboBoxDrives, "bnComboBoxDrives");
this.bnComboBoxDrives.BackColor = System.Drawing.SystemColors.ControlLightLight;
+ this.bnComboBoxDrives.BackgroundImage = null;
this.bnComboBoxDrives.DataSource = this.drivesBindingSource;
this.bnComboBoxDrives.DropDownHeight = 200;
this.bnComboBoxDrives.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.bnComboBoxDrives.DropDownWidth = 552;
+ this.bnComboBoxDrives.Font = null;
this.bnComboBoxDrives.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxDrives.ImageKeyMember = "ImageKey";
this.bnComboBoxDrives.ImageList = this.imageListMetadataSource;
this.bnComboBoxDrives.IsDroppedDown = false;
- resources.ApplyResources(this.bnComboBoxDrives, "bnComboBoxDrives");
this.bnComboBoxDrives.MaxDropDownItems = 8;
this.bnComboBoxDrives.MinimumSize = new System.Drawing.Size(61, 21);
this.bnComboBoxDrives.Name = "bnComboBoxDrives";
@@ -564,6 +701,7 @@ namespace CUERipper
this.bnComboBoxDrives.SelectedIndex = -1;
this.bnComboBoxDrives.SelectedItem = null;
this.bnComboBoxDrives.Sorted = false;
+ this.toolTip1.SetToolTip(this.bnComboBoxDrives, resources.GetString("bnComboBoxDrives.ToolTip"));
this.bnComboBoxDrives.SelectedIndexChanged += new System.EventHandler(this.bnComboBoxDrives_SelectedIndexChanged);
//
// drivesBindingSource
@@ -573,14 +711,18 @@ namespace CUERipper
//
// bnComboBoxOutputFormat
//
+ this.bnComboBoxOutputFormat.AccessibleDescription = null;
+ this.bnComboBoxOutputFormat.AccessibleName = null;
+ resources.ApplyResources(this.bnComboBoxOutputFormat, "bnComboBoxOutputFormat");
this.bnComboBoxOutputFormat.BackColor = System.Drawing.SystemColors.ControlLightLight;
+ this.bnComboBoxOutputFormat.BackgroundImage = null;
this.bnComboBoxOutputFormat.DropDownHeight = 200;
this.bnComboBoxOutputFormat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDown;
this.bnComboBoxOutputFormat.DropDownWidth = 552;
+ this.bnComboBoxOutputFormat.Font = null;
this.bnComboBoxOutputFormat.ForeColor = System.Drawing.SystemColors.ControlText;
this.bnComboBoxOutputFormat.ImageList = null;
this.bnComboBoxOutputFormat.IsDroppedDown = false;
- resources.ApplyResources(this.bnComboBoxOutputFormat, "bnComboBoxOutputFormat");
this.bnComboBoxOutputFormat.MaxDropDownItems = 8;
this.bnComboBoxOutputFormat.MinimumSize = new System.Drawing.Size(40, 21);
this.bnComboBoxOutputFormat.Name = "bnComboBoxOutputFormat";
@@ -588,6 +730,7 @@ namespace CUERipper
this.bnComboBoxOutputFormat.SelectedIndex = -1;
this.bnComboBoxOutputFormat.SelectedItem = null;
this.bnComboBoxOutputFormat.Sorted = false;
+ this.toolTip1.SetToolTip(this.bnComboBoxOutputFormat, resources.GetString("bnComboBoxOutputFormat.ToolTip"));
this.bnComboBoxOutputFormat.DroppedDown += new System.EventHandler(this.bnComboBoxOutputFormat_DroppedDown);
this.bnComboBoxOutputFormat.Leave += new System.EventHandler(this.bnComboBoxOutputFormat_Leave);
this.bnComboBoxOutputFormat.MouseLeave += new System.EventHandler(this.bnComboBoxOutputFormat_MouseLeave);
@@ -595,8 +738,11 @@ namespace CUERipper
//
// frmCUERipper
//
+ this.AccessibleDescription = null;
+ this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.BackgroundImage = null;
this.Controls.Add(this.txtOutputPath);
this.Controls.Add(this.bnComboBoxRelease);
this.Controls.Add(this.bnComboBoxDrives);
@@ -609,11 +755,13 @@ namespace CUERipper
this.Controls.Add(this.statusStrip1);
this.Controls.Add(this.buttonAbort);
this.Controls.Add(this.buttonPause);
+ this.Font = null;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.KeyPreview = true;
this.MaximizeBox = false;
this.Name = "frmCUERipper";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
+ this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip"));
this.Load += new System.EventHandler(this.frmCUERipper_Load);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUERipper_FormClosed);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.frmCUERipper_KeyDown);
diff --git a/CUERipper/frmCUERipper.cs b/CUERipper/frmCUERipper.cs
index f8c0138..ab349ba 100644
--- a/CUERipper/frmCUERipper.cs
+++ b/CUERipper/frmCUERipper.cs
@@ -542,7 +542,7 @@ namespace CUERipper
cueSheet.Action = CUEAction.Encode;
this.BeginInvoke((MethodInvoker)delegate() { toolStripStatusLabel1.Text = Properties.Resources.LookingUpVia + " CTDB..."; });
- cueSheet.UseCUEToolsDB(true, "CUERipper 2.0.7: " + selectedDriveInfo.drive.ARName);
+ cueSheet.UseCUEToolsDB(true, "CUERipper 2.0.8: " + selectedDriveInfo.drive.ARName);
cueSheet.CTDB.UploadHelper.onProgress += new EventHandler(UploadProgress);
this.BeginInvoke((MethodInvoker)delegate() { toolStripStatusLabel1.Text = Properties.Resources.LookingUpVia + " AccurateRip..."; });
cueSheet.UseAccurateRip();
@@ -575,7 +575,7 @@ namespace CUERipper
m_freedb.UserName = "gchudov";
m_freedb.Hostname = "gmail.com";
m_freedb.ClientName = "CUERipper";
- m_freedb.Version = "2.0.7";
+ m_freedb.Version = "2.0.8";
m_freedb.SetDefaultSiteAddress(Properties.Settings.Default.MAIN_FREEDB_SITEADDRESS);
QueryResult queryResult;
@@ -626,6 +626,9 @@ namespace CUERipper
releases.Add(CreateCUESheet(audioSource, null, null));
}
_workThread = null;
+ // have to cache results.Count, because it sometimes hangs in it,
+ // and we don't want UI thread to hang.
+ int mbresults_count = results.Count;
this.BeginInvoke((MethodInvoker)delegate()
{
SetupControls();
@@ -639,9 +642,9 @@ namespace CUERipper
toolStripStatusCTDB.Text = cueSheet.CTDB.DBStatus == null ? cueSheet.CTDB.Total.ToString() : "";
toolStripStatusCTDB.ToolTipText = "CUETools DB: " + (cueSheet.CTDB.DBStatus ?? "found") + ".";
toolStripStatusLabelMusicBrainz.Enabled = true;
- toolStripStatusLabelMusicBrainz.BorderStyle = results.Count > 0 ? Border3DStyle.SunkenInner : Border3DStyle.RaisedInner;
- toolStripStatusLabelMusicBrainz.Text = results.Count > 0 ? results.Count.ToString() : "";
- toolStripStatusLabelMusicBrainz.ToolTipText = "Musicbrainz: " + (results.Count > 0 ? results.Count.ToString() + " entries found." : "click to submit.");
+ toolStripStatusLabelMusicBrainz.BorderStyle = mbresults_count > 0 ? Border3DStyle.SunkenInner : Border3DStyle.RaisedInner;
+ toolStripStatusLabelMusicBrainz.Text = mbresults_count > 0 ? mbresults_count.ToString() : "";
+ toolStripStatusLabelMusicBrainz.ToolTipText = "Musicbrainz: " + (mbresults_count > 0 ? mbresults_count.ToString() + " entries found." : "click to submit.");
});
}
diff --git a/CUERipper/frmCUERipper.de-DE.resx b/CUERipper/frmCUERipper.de-DE.resx
index 6dd26e6..363a5b2 100644
--- a/CUERipper/frmCUERipper.de-DE.resx
+++ b/CUERipper/frmCUERipper.de-DE.resx
@@ -187,6 +187,6 @@
Rechtsklick zum Ändern der CD-Informationen
- CUERipper 2.0.7
+ CUERipper 2.0.8
\ No newline at end of file
diff --git a/CUERipper/frmCUERipper.resx b/CUERipper/frmCUERipper.resx
index b28f8cf..f02adbc 100644
--- a/CUERipper/frmCUERipper.resx
+++ b/CUERipper/frmCUERipper.resx
@@ -117,668 +117,60 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 0, 456
-
-
- 394, 20
-
-
- MiddleLeft
-
-
- 20, 20
-
-
- 20, 20
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAyNJREFUOE9tkm1P
- mmcYhh+zbsm+Ntlf2Jd92n/Yx21p1nTZlplZ0mJD2+mYG119AakITi2tmoK0a33p1BL7MtcpXRCrKNbK
- EEOd1qLYCigSERB5e4BjxGVZSLyTM3dyJcdx3cl9lglHHKcTHO43wk76XSH/Tl44/t4x4cP3jwsfffBW
- mUiOt8uOlR3FCaN9KWplSaq+F5FehnItVN4ooOgroLpfoHM0i9WVoATOkz0cPP8DVBUxaiRFqAq+VqSR
- NoPcAOqBAi0PChif5Lg3LeLeyJRKujQrKC9uFeEEZ8rTVFQWOCsv8OMVaOwW6TCDaQyGpvJYnDEW18J4
- Vjf+lyh++JsL8g0qZLuclojITmdRSEGnBP3tPHeKr7tvh8kXB2zuwU40SjwRIp2KI1y7NcUFtQtJ4yLl
- dUFkNVHqzqeplwRwTsKzheLWmQzLfgjs5wgn4wR3XrIbWSAVW0D4rvURZ7SzSLQuzuq8KDTb6BpizD/N
- 4VsPsvxqle2oSHBfJJTe5/XeCpGEm+TBHLmkFUF6/S6SjlFknRMoutzo9D6M19cJBGL8aRs/vCOJOP5M
- Ar+4TlR0I+bsFMTHxZgRKnXdVGsHUGofoGmyYaybpafGw4zZR+YgSTy6j3fJy5u1ZWKBv8juPoHoCLno
- EOz1Igyaf6OpsQtDm5mJu4sMVlmY7VwibAsRdAcITqwSsT4jNW0ns/wYvEMUXv8CwQ5S4YcIfr+f2+0G
- luweVu2+oqCHTdsa4flNkk4/3t4xEiOjYC3C8wPklwzkvXrwtUHK8+9XGi/V011ZzYbVwda4h9BTF5HZ
- l2z3PiRuNJIe7EIc0ZO36SjMFtvl+Yn4ytXSMjlu9WD56hzZkXESjjkyUzOE1LWk26pJ3ZRz8Gsxjy6S
- GJcQc5tK4f+6/fxeH2MVnzMnPcmr8yfZrvmErYZPCbR+zGbHCXx3vsAx3HI0PDw8jMlkor9Zze9VUqbP
- fckL+Slc9Z/hVJ9iUvsNN9Xf8vPVdgyG7lKJxWKhv78fvV5Pi6YZtVqFUnUZTcMltLW1qBqU1Deqi2lC
- c6WZ9vZWbhgNh5J/AJcIo/TEh255AAAAAElFTkSuQmCC
-
-
-
- White
-
-
- 20, 20
-
-
- Album found in AccurateRip database.
-
-
- 100, 19
-
-
- Read progress
-
-
- 0, 20
-
-
- toolStripStatusAr
-
-
- 0, 456
-
-
- 571, 25
-
-
-
- 12
-
-
- statusStrip1
-
-
- statusStrip1
-
-
- System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 10
-
-
-
- Top, Left, Right
-
-
- 1
-
-
- Title
-
-
- 355
-
-
- 0
-
-
- #
-
-
- 30
-
-
- Start
-
-
- 70
-
-
- Length
-
-
- 70
-
-
- 6, 87
-
-
- 553, 245
-
-
- 2
-
-
- 357, 17
-
-
- Double-click to edit track names
-
-
- listTracks
-
-
- System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 8
-
-
- Top, Left, Right
-
-
- NoControl
-
-
- 382, 343
-
-
- 177, 33
-
-
- 13
-
-
- Go
-
-
- buttonGo
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 9
-
-
- Top, Left, Right
-
-
- NoControl
-
-
- 474, 343
-
-
- 85, 33
-
-
- 19
-
-
- Abort
-
-
- False
-
-
- buttonAbort
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 11
-
-
- Top, Left, Right
-
-
- NoControl
-
-
- 383, 343
-
-
- 85, 33
-
-
- 20
-
-
- Pause
-
-
- False
-
-
- buttonPause
-
-
- System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 12
-
-
- 17, 17
-
-
- 94, 22
-
-
- Edit
-
-
- 95, 26
-
-
- contextMenuStripRelease
-
-
- System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- 310, 15
-
-
- 54, 20
-
-
- 7
-
-
- Right
-
-
- numericWriteOffset
-
-
- System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBoxSettings
-
-
- 12
-
-
- True
-
-
- NoControl
-
-
- 242, 19
-
-
- 62, 13
-
-
- 23
-
-
- Read offset
-
-
- lblWriteOffset
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBoxSettings
-
-
- 10
-
-
- True
-
-
- NoControl
-
-
- 245, 44
-
-
- 64, 17
-
-
- 3
-
-
- EAC log
-
-
- checkBoxEACMode
-
-
- System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBoxSettings
-
-
- 11
-
-
- 369, 95
-
-
- 210, 56
-
-
- 6, 19
-
-
- 80, 21
-
-
- 39
-
-
- bnComboBoxLosslessOrNot
-
-
- CUEControls.BNComboBox, CUEControls, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null
-
-
- groupBoxSettings
-
-
- 0
-
-
- 189, 95
-
-
- 92, 46
-
-
- 80, 21
-
-
- 38
-
-
- bnComboBoxEncoder
-
-
- CUEControls.BNComboBox, CUEControls, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null
-
-
- groupBoxSettings
-
-
- 1
-
-
- NoControl
-
-
- 248, 98
-
-
- 109, 18
-
-
- 33
-
-
- TopCenter
-
-
- labelSecureMode
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBoxSettings
-
-
- 2
-
-
- 17, 95
-
-
- 92, 19
-
-
- 80, 21
-
-
- 37
-
-
- bnComboBoxFormat
-
-
- CUEControls.BNComboBox, CUEControls, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null
-
-
- groupBoxSettings
-
-
- 3
-
-
- True
-
-
- False
-
-
- Tahoma, 8.25pt
-
-
- NoControl
-
-
- 12, 106
-
-
- 0, 0, 0, 0
-
-
- 25, 13
-
-
- 30
-
-
- 128
-
-
- labelEncoderMinMode
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBoxSettings
-
-
- 4
-
-
- 526, 56
-
-
- 6, 46
-
-
- 80, 21
-
-
- 34
-
-
- bnComboBoxImage
-
-
- CUEControls.BNComboBox, CUEControls, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null
-
-
- groupBoxSettings
-
-
- 5
-
-
- False
-
-
- Tahoma, 8.25pt
-
-
- NoControl
-
-
- 143, 106
-
-
- 0, 0, 0, 0
-
-
- 29, 13
-
-
- 32
-
-
- 320
+
+ 237, 71
TopRight
-
- labelEncoderMaxMode
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBoxSettings
-
-
- 6
-
-
- Tahoma, 8.25pt
-
-
- NoControl
-
-
- 12, 106
-
-
- 0, 0, 0, 0
-
-
- 167, 15
-
-
- 31
-
-
- 256
-
-
- TopCenter
-
-
- labelEncoderMode
-
-
- System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBoxSettings
-
-
+
+
7
-
+
+ imageListMetadataSource
+
+
+
NoControl
-
- 6, 76
+
+ System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 0, 0, 0, 0
+
+ False
-
- 166, 45
+
+ 1
8
-
- trackBarEncoderMode
+
+ 0
-
- System.Windows.Forms.TrackBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ labelSecureMode
-
- groupBoxSettings
+
+
-
- 8
+
+ 6, 13
-
- NoControl
+
+ System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 237, 71
+
+ 0, 20
-
- 127, 45
-
-
- 30
-
-
- trackBarSecureMode
-
-
- System.Windows.Forms.TrackBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- groupBoxSettings
-
-
- 9
-
-
- 6, 332
-
-
- 370, 121
-
-
- 29
-
-
- groupBoxSettings
-
-
- System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- $this
-
-
- 7
-
-
- 207, 17
-
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
- ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACK
- CQAAAk1TRnQBSQFMAgEBBAEAAQwBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACM
+ CQAAAk1TRnQBSQFMAgEBBAEAAQwBAAEEAQABEAEAARABAAT/AQkBEAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAASADAAEBAQABCAYAAQgYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -818,111 +210,83 @@
AfMG8gHzAf8GAAH/AfMG8gHzAf/DAAFCAU0BPgcAAT4DAAEoAwABQAMAASADAAEBAQABAQYAAQEWAAP/
gQAY/wHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcB4AEH
AeABBwHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcB4AEH
- AeABBwHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcY/ws=
+ AeABBwHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcB4AEHAeABBwHgAQcY/xYACw==
-
- 181, 22
+
+ CUEControls.BNComboBox, CUEControls, Version=2.0.8.0, Culture=neutral, PublicKeyToken=null
-
- toolStripMenuItem1
+
+ NoControl
-
- 960, 17
-
-
- 624, 17
-
-
- 382, 421
-
-
- 454, 17
-
-
- 789, 17
-
-
- 177, 23
-
-
- 30
-
-
- progressBarErrors
-
-
- ProgressODoom.ProgressBarEx, ProgressODoom, Version=1.0.3732.11482, Culture=neutral, PublicKeyToken=null
-
-
+
$this
-
- 5
+
+ 80, 21
-
- 382, 392
+
+ 0, 0, 0, 0
-
- 356, 56
-
-
- 176, 23
+
+ 62, 13
-
- 31
+
+ NoControl
-
- 10%
+
+ False
-
- progressBarCD
+
+ Right
-
- ProgressODoom.ProgressBarEx, ProgressODoom, Version=1.0.3732.11482, Culture=neutral, PublicKeyToken=null
+
+ Double-click to edit track names
-
+
+ 20
+
+
+ 94, 22
+
+
+ 571, 25
+
+
$this
-
- 6
+
+ 0, 0, 0, 0
-
- 7, 61
+
+ 3
-
- 552, 20
+
+ Top, Left, Right
-
- 33
-
-
- Click to edit output path template
-
-
- txtOutputPath
-
-
- System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
+
$this
-
- 1
+
+ MiddleLeft
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAEJDVUVDb250cm9scywgVmVyc2lvbj0yLjAuOC4wLCBDdWx0dXJl
+ PW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABRDVUVDb250cm9scy5CTlJhZGl1cwQAAAAI
+ X3RvcExlZnQJX3RvcFJpZ2h0C19ib3R0b21MZWZ0DF9ib3R0b21SaWdodAAAAAAICAgIAgAAAAIAAAAG
+ AAAAAgAAAAIAAAAL
+
+
+
+ 9
-
- 708, 56
-
-
- 17, 56
-
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAa
- CQAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ CQAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABEAEAARABAAT/AQkBEAj/AUIBTQE2AQQGAAE2AQQCAAEo
AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -960,89 +324,278 @@
AewgAASuAQABBwP/AbwB6gEAAf8BAAKuAf8BogL/AQQC/wQEAf8DBAEKIAAErgERARMBBwb/AQACrgH/
AaIBBAH/AQQC/wEEAv8BBAH/AQQB9AHzAQogAAWuAREBAAERAZIE/wEAAq4B/wGGAv8CBAL/AgQD/wIE
AewgAAeuAREBAAEPAesBvAH/AQACrgH/AYYL/wH0AfMB7CEACa4BDwEAARMBEQGuAQAC/wG1C/8B9AEH
- IAABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAYABAXYAAYABAQYACw==
+ IAABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/wEAAYABAXYAAYABARwACw==
-
- 6, 33
+
+ 128
-
- 552, 21
+
+ groupBoxSettings
+
+
+
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 0, 456
+
+
+ 474, 343
+
+
+ 166, 45
+
+
+ cUEStylesBindingSource
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ True
+
+
+ 33
35
-
- Right-lick to edit release info
-
-
- bnComboBoxRelease
-
-
- CUEControls.BNComboBox, CUEControls, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null
-
-
- $this
-
-
- 2
-
-
- 998, 56
-
-
- 6, 6
-
-
- 552, 21
-
-
- 36
-
-
- bnComboBoxDrives
-
-
- CUEControls.BNComboBox, CUEControls, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null
-
-
- $this
-
-
- 3
-
-
- 6, 60
-
-
- 552, 21
-
-
- 37
-
-
- bnComboBoxOutputFormat
-
-
- CUEControls.BNComboBox, CUEControls, Version=2.0.7.0, Culture=neutral, PublicKeyToken=null
-
-
- $this
+
+ 0, 0, 0, 0
4
-
- True
-
-
- 50
-
-
- 6, 13
+
+ 6, 76
-
- 571, 481
+
+ System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 7, 61
+
+
+ CUEControls.BNComboBox, CUEControls, Version=2.0.8.0, Culture=neutral, PublicKeyToken=null
+
+
+ bnComboBoxImage
+
+
+ 1
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAEJDVUVDb250cm9scywgVmVyc2lvbj0yLjAuOC4wLCBDdWx0dXJl
+ PW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABRDVUVDb250cm9scy5CTlJhZGl1cwQAAAAI
+ X3RvcExlZnQJX3RvcFJpZ2h0C19ib3R0b21MZWZ0DF9ib3R0b21SaWdodAAAAAAICAgIAgAAAAIAAAAG
+ AAAAAgAAAAIAAAAL
+
+
+
+ 109, 18
+
+
+ 12, 106
+
+
+ 177, 23
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAEJDVUVDb250cm9scywgVmVyc2lvbj0yLjAuOC4wLCBDdWx0dXJl
+ PW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABRDVUVDb250cm9scy5CTlJhZGl1cwQAAAAI
+ X3RvcExlZnQJX3RvcFJpZ2h0C19ib3R0b21MZWZ0DF9ib3R0b21SaWdodAAAAAAICAgIAgAAAAIAAAAG
+ AAAAAgAAAAIAAAAL
+
+
+
+ System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripStatusAr
+
+
+ groupBoxSettings
+
+
+ losslessOrNotBindingSource
+
+
+ bnComboBoxRelease
+
+
+ editToolStripMenuItem
+
+
+ Tahoma, 8.25pt
+
+
+ ProgressODoom.StyledBorderPainter, ProgressODoom, Version=1.0.3766.36510, Culture=neutral, PublicKeyToken=null
+
+
+ labelEncoderMaxMode
+
+
+ toolStripStatusLabelMusicBrainz
+
+
+ 2
+
+
+ 95, 26
+
+
+
+
+
+ 3
+
+
+ 20, 20
+
+
+ System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 0
+
+
+ System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 37
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 176, 23
+
+
+ CUERipper 2.0.8
+
+
+ 38
+
+
+ 85, 33
+
+
+
+
+
+ labelEncoderMinMode
+
+
+ 2
+
+
+ 355
+
+
+ 6, 87
+
+
+
+
+
+ TrackNo
+
+
+ 382, 392
+
+
+ 85, 33
+
+
+ NoControl
+
+
+ toolStripStatusLabel1
+
+
+ System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 552, 21
+
+
+ System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+
+ 30
+
+
+ Read offset
+
+
+ TopCenter
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAyNJREFUOE9tkm1P
+ mmcYhh+zbsm+Ntlf2Jd92n/Yx21p1nTZlplZ0mJD2+mYG119AakITi2tmoK0a33p1BL7MtcpXRCrKNbK
+ EEOd1qLYCigSERB5e4BjxGVZSLyTM3dyJcdx3cl9lglHHKcTHO43wk76XSH/Tl44/t4x4cP3jwsfffBW
+ mUiOt8uOlR3FCaN9KWplSaq+F5FehnItVN4ooOgroLpfoHM0i9WVoATOkz0cPP8DVBUxaiRFqAq+VqSR
+ NoPcAOqBAi0PChif5Lg3LeLeyJRKujQrKC9uFeEEZ8rTVFQWOCsv8OMVaOwW6TCDaQyGpvJYnDEW18J4
+ Vjf+lyh++JsL8g0qZLuclojITmdRSEGnBP3tPHeKr7tvh8kXB2zuwU40SjwRIp2KI1y7NcUFtQtJ4yLl
+ dUFkNVHqzqeplwRwTsKzheLWmQzLfgjs5wgn4wR3XrIbWSAVW0D4rvURZ7SzSLQuzuq8KDTb6BpizD/N
+ 4VsPsvxqle2oSHBfJJTe5/XeCpGEm+TBHLmkFUF6/S6SjlFknRMoutzo9D6M19cJBGL8aRs/vCOJOP5M
+ Ar+4TlR0I+bsFMTHxZgRKnXdVGsHUGofoGmyYaybpafGw4zZR+YgSTy6j3fJy5u1ZWKBv8juPoHoCLno
+ EOz1Igyaf6OpsQtDm5mJu4sMVlmY7VwibAsRdAcITqwSsT4jNW0ns/wYvEMUXv8CwQ5S4YcIfr+f2+0G
+ luweVu2+oqCHTdsa4flNkk4/3t4xEiOjYC3C8wPklwzkvXrwtUHK8+9XGi/V011ZzYbVwda4h9BTF5HZ
+ l2z3PiRuNJIe7EIc0ZO36SjMFtvl+Yn4ytXSMjlu9WD56hzZkXESjjkyUzOE1LWk26pJ3ZRz8Gsxjy6S
+ GJcQc5tK4f+6/fxeH2MVnzMnPcmr8yfZrvmErYZPCbR+zGbHCXx3vsAx3HI0PDw8jMlkor9Zze9VUqbP
+ fckL+Slc9Z/hVJ9iUvsNN9Xf8vPVdgyG7lKJxWKhv78fvV5Pi6YZtVqFUnUZTcMltLW1qBqU1Deqi2lC
+ c6WZ9vZWbhgNh5J/AJcIo/TEh255AAAAAElFTkSuQmCC
+
+
+
+ 29
+
+
+ NoControl
+
+
+ $this
+
+
+ toolStripStatusAr
+
+
+
+
+
+
+
+
+ 70
+
+
+ CUEControls.BNComboBox, CUEControls, Version=2.0.8.0, Culture=neutral, PublicKeyToken=null
+
+
+ System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 181, 22
+
+
+
+
+
+ $this
@@ -1441,178 +994,753 @@
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAACAAQAAwAMAAPAPAAA=
-
- CenterScreen
+
+ 100, 19
-
- CUERipper 2.0.7
+
+ buttonPause
-
- toolStripStatusLabel1
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 25, 13
-
- toolStripStatusLabelMusicBrainz
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- toolStripStatusCTDB
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- toolStripStatusAr
-
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ NoControl
toolStripProgressBar1
-
- System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- toolStripStatusLabel2
+
+ 29, 13
-
- System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ bnComboBoxOutputFormat
-
- Title
+
+ CenterScreen
-
- System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- TrackNo
-
-
- System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Start
-
-
- System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- Length
-
-
- System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- editToolStripMenuItem
-
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- losslessOrNotBindingSource
-
-
- System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- bindingSourceCR
-
-
- System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- encodersBindingSource
-
-
- System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- formatsBindingSource
-
-
- System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- cUEStylesBindingSource
+
+ 382, 421
System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- imageListChecked
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ progressBarCD
-
- toolStripMenuItem1
+
+ 6, 46
-
- System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Click to edit output path template
-
- plainBackgroundPainter1
+
+ groupBoxSettings
-
- ProgressODoom.PlainBackgroundPainter, ProgressODoom, Version=1.0.3732.11482, Culture=neutral, PublicKeyToken=null
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAEJDVUVDb250cm9scywgVmVyc2lvbj0yLjAuOC4wLCBDdWx0dXJl
+ PW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABRDVUVDb250cm9scy5CTlJhZGl1cwQAAAAI
+ X3RvcExlZnQJX3RvcFJpZ2h0C19ib3R0b21MZWZ0DF9ib3R0b21SaWdodAAAAAAICAgIAgAAAAIAAAAG
+ AAAAAgAAAAIAAAAL
+
-
- styledBorderPainter1
+
+ 13
-
- ProgressODoom.StyledBorderPainter, ProgressODoom, Version=1.0.3732.11482, Culture=neutral, PublicKeyToken=null
-
-
- plainProgressPainter1
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
- ProgressODoom.PlainProgressPainter, ProgressODoom, Version=1.0.3732.11482, Culture=neutral, PublicKeyToken=null
+ ProgressODoom.PlainProgressPainter, ProgressODoom, Version=1.0.3766.36510, Culture=neutral, PublicKeyToken=null
-
- gradientGlossPainter1
+
+ listTracks
-
- ProgressODoom.GradientGlossPainter, ProgressODoom, Version=1.0.3732.11482, Culture=neutral, PublicKeyToken=null
+
+ 6, 19
-
- plainProgressPainter2
+
+ lblWriteOffset
-
- ProgressODoom.PlainProgressPainter, ProgressODoom, Version=1.0.3732.11482, Culture=neutral, PublicKeyToken=null
+
+ 6
-
- toolTip1
+
+ 248, 98
-
- System.Windows.Forms.ToolTip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ NoControl
-
- releasesBindingSource
+
+
-
- System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 23
-
- imageListMetadataSource
+
+ formatsBindingSource
-
- System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ 80, 21
+
+
+ Top, Left, Right
+
+
+ System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAEJDVUVDb250cm9scywgVmVyc2lvbj0yLjAuOC4wLCBDdWx0dXJl
+ PW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABRDVUVDb250cm9scy5CTlJhZGl1cwQAAAAI
+ X3RvcExlZnQJX3RvcFJpZ2h0C19ib3R0b21MZWZ0DF9ib3R0b21SaWdodAAAAAAICAgIAgAAAAIAAAAG
+ AAAAAgAAAAIAAAAL
+
+
+
+ Tahoma, 8.25pt
+
+
+ groupBoxSettings
+
+
+ groupBoxSettings
+
+
+ 11
drivesBindingSource
-
+
+ toolStripStatusCTDB
+
+
+ groupBoxSettings
+
+
+ NoControl
+
+
+ True
+
+
+ 12
+
+
+ Edit
+
+
+
+
+
+ 552, 21
+
+
+ $this
+
+
+ groupBoxSettings
+
+
+ 320
+
+
+ 34
+
+
+ Title
+
+
+ ProgressODoom.PlainBackgroundPainter, ProgressODoom, Version=1.0.3766.36510, Culture=neutral, PublicKeyToken=null
+
+
+ 256
+
+
+ bindingSourceCR
+
+
+ 382, 343
+
+
+ NoControl
+
+
+ 80, 21
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ labelEncoderMode
+
+
+ 10
+
+
+ $this
+
+
+ Length
+
+
+ System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ bnComboBoxDrives
+
+
+ Title
+
+
+ Album found in AccurateRip database.
+
+
+ 2
+
+
+ CUEControls.BNComboBox, CUEControls, Version=2.0.8.0, Culture=neutral, PublicKeyToken=null
+
+
+ 310, 15
+
+
+ Top, Left, Right
+
+
+ 92, 19
+
+
+ 245, 44
+
+
+ System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ contextMenuStripRelease
+
+
+ 54, 20
+
+
+ groupBoxSettings
+
+
System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ NoControl
+
+
+ plainProgressPainter1
+
+
+ 4
+
frmCUERipper
-
- System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ buttonGo
+
+ 64, 17
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAEJDVUVDb250cm9scywgVmVyc2lvbj0yLjAuOC4wLCBDdWx0dXJl
+ PW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABRDVUVDb250cm9scy5CTlJhZGl1cwQAAAAI
+ X3RvcExlZnQJX3RvcFJpZ2h0C19ib3R0b21MZWZ0DF9ib3R0b21SaWdodAAAAAAICAgIAgAAAAIAAAAG
+ AAAAAgAAAAIAAAAL
+
+
+
+ trackBarEncoderMode
+
+
+ 553, 245
+
+
+ 70
+
+
+ ProgressODoom.GradientGlossPainter, ProgressODoom, Version=1.0.3766.36510, Culture=neutral, PublicKeyToken=null
+
+
+ 30
+
+
+ Top, Left, Right
+
+
+ styledBorderPainter1
+
+
+ Pause
+
+
+ System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ toolStripStatusLabel2
+
+
+ bnComboBoxFormat
+
+
+ 39
+
+
+
+
+
+ groupBoxSettings
+
+
+ groupBoxSettings
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 30
+
+
+ 6, 332
+
+
+ groupBoxSettings
+
+
+ $this
+
+
+ System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 33
+
+
+ 19
+
+
+ groupBoxSettings
+
+
+ EAC log
+
+
+ groupBoxSettings
+
+
+ txtOutputPath
+
+
+ 12
+
+
+ 5
+
+
+ 5
+
+
+
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 32
+
+
+ #
+
+
+ encodersBindingSource
+
+
+ toolStripMenuItem1
+
+
+ 20, 20
+
+
+ Read progress
+
+
+ bnComboBoxLosslessOrNot
+
+
+ 167, 15
+
+
+ NoControl
+
+
+ System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 8
+
+
+ 37
+
+
+ 31
+
+
+ System.Windows.Forms.TrackBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 10
+
+
+ Right-lick to edit release info
+
+
+ 9
+
+
+ plainProgressPainter2
+
+
+
+
+
+ toolStripMenuItem1
+
+
+ imageListChecked
+
+
+ White
+
+
+
+
+
+
+
+
+ 3
+
+
+ False
+
+
+ 31
+
+
+ 10%
+
+
+ statusStrip1
+
+
+ ProgressODoom.ProgressBarEx, ProgressODoom, Version=1.0.3766.36510, Culture=neutral, PublicKeyToken=null
+
+
+ numericWriteOffset
+
+
+ CUEControls.BNComboBox, CUEControls, Version=2.0.8.0, Culture=neutral, PublicKeyToken=null
+
+
+ Abort
+
+
+ $this
+
+
+ 6, 60
+
+
+ CUEControls.BNComboBox, CUEControls, Version=2.0.8.0, Culture=neutral, PublicKeyToken=null
+
+
+ 12
+
+
+ Start
+
+
+
+
+
+ $this
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 6
+
+
+ 8
+
+
+ 127, 45
+
+
+ plainBackgroundPainter1
+
+
+ progressBarErrors
+
+
+ 7
+
+
+
+
+
+ Go
+
+
+ 242, 19
+
+
+ System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ Length
+
+
+ CUEControls.BNComboBox, CUEControls, Version=2.0.8.0, Culture=neutral, PublicKeyToken=null
+
+
+ ProgressODoom.ProgressBarEx, ProgressODoom, Version=1.0.3766.36510, Culture=neutral, PublicKeyToken=null
+
+
+
+
+
+ 552, 20
+
+
+ 0, 0, 0, 0
+
+
+ TopCenter
+
+
+ checkBoxEACMode
+
+
+ True
+
+
+ buttonAbort
+
+
+ $this
+
+
+ System.Windows.Forms.TrackBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.BindingSource, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 92, 46
+
+
+ releasesBindingSource
+
+
+ False
+
+
+ System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ trackBarSecureMode
+
+
+
+
+
+ System.Windows.Forms.ColumnHeader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 571, 481
+
+
+
+
+
+ statusStrip1
+
+
+ System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAEJDVUVDb250cm9scywgVmVyc2lvbj0yLjAuOC4wLCBDdWx0dXJl
+ PW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPW51bGwFAQAAABRDVUVDb250cm9scy5CTlJhZGl1cwQAAAAI
+ X3RvcExlZnQJX3RvcFJpZ2h0C19ib3R0b21MZWZ0DF9ib3R0b21SaWdodAAAAAAICAgIAgAAAAIAAAAG
+ AAAAAgAAAAIAAAAL
+
+
+
+ Start
+
+
+ System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 143, 106
+
+
+ toolTip1
+
+
+ 370, 121
+
+
+ groupBoxSettings
+
+
+ 12, 106
+
+
+ 1
+
+
+ 11
+
+
+ 20, 20
+
+
+ $this
+
+
+
+
+
+ 552, 21
+
+
+ 6, 6
+
+
+ ProgressODoom.PlainProgressPainter, ProgressODoom, Version=1.0.3766.36510, Culture=neutral, PublicKeyToken=null
+
+
+ gradientGlossPainter1
+
+
+ 383, 343
+
+
+ bnComboBoxEncoder
+
+
+ 36
+
+
+ 30
+
+
+ System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 394, 20
+
+
+ Tahoma, 8.25pt
+
+
+ 177, 33
+
+
+ 6, 33
+
+
+ 80, 21
+
+
+ 7
+
+
+
+
+
+ 526, 56
+
+
+ True
+
+
+ 708, 56
+
+
+ 17, 17
+
+
+ 356, 56
+
+
+ 210, 56
+
+
+ 960, 17
+
+
+ 369, 95
+
+
+ 17, 56
+
+
+ 189, 95
+
+
+ 789, 17
+
+
+ 17, 95
+
+
+ 0, 456
+
+
+ 624, 17
+
+
+ 998, 56
+
+
+ 50
+
+
+ 357, 17
+
+
+ 454, 17
+
+
+ 207, 17
+
\ No newline at end of file
diff --git a/CUERipper/frmCUERipper.ru-RU.resx b/CUERipper/frmCUERipper.ru-RU.resx
index 7ae3baa..c500d6e 100644
--- a/CUERipper/frmCUERipper.ru-RU.resx
+++ b/CUERipper/frmCUERipper.ru-RU.resx
@@ -118,9 +118,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Редактирование названий треков начинается двойным кликом мыши
-
Название
@@ -130,6 +127,9 @@
Длина
+
+ Редактирование названий треков начинается двойным кликом мыши
+
Поехали
diff --git a/CUETools.ARCUE/Properties/AssemblyInfo.cs b/CUETools.ARCUE/Properties/AssemblyInfo.cs
index 8d4ae5d..1f56ed1 100644
--- a/CUETools.ARCUE/Properties/AssemblyInfo.cs
+++ b/CUETools.ARCUE/Properties/AssemblyInfo.cs
@@ -29,5 +29,5 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
-[assembly: AssemblyVersion("2.0.7.0")]
-[assembly: AssemblyFileVersion("2.0.7.0")]
+[assembly: AssemblyVersion("2.0.8.0")]
+[assembly: AssemblyFileVersion("2.0.8.0")]
diff --git a/CUETools.AccurateRip/AccurateRip.cs b/CUETools.AccurateRip/AccurateRip.cs
index bf9931e..25f294a 100644
--- a/CUETools.AccurateRip/AccurateRip.cs
+++ b/CUETools.AccurateRip/AccurateRip.cs
@@ -4,6 +4,7 @@ using System.Globalization;
using System.IO;
using System.Net;
using System.Text;
+using CUETools.Parity;
using CUETools.CDImage;
using CUETools.Codecs;
@@ -18,9 +19,10 @@ namespace CUETools.AccurateRip
_accDisks = new List();
//_crc32 = new Crc32();
_hasLogCRC = false;
+ _finalSampleCount = _toc.AudioLength * 588;
_CRCLOG = new uint[_toc.AudioTracks + 1];
_CRCMASK = new uint[_toc.AudioTracks + 1];
- _CRCMASK[0] = 0xffffffff ^ Crc32.Combine(0xffffffff, 0, (int)_toc.AudioLength * 588 * 4);
+ _CRCMASK[0] = 0xffffffff ^ Crc32.Combine(0xffffffff, 0, (int)_finalSampleCount * 4);
for (int iTrack = 1; iTrack <= _toc.AudioTracks; iTrack++)
_CRCMASK[iTrack] = 0xffffffff ^ Crc32.Combine(0xffffffff, 0, (int)_toc[iTrack + _toc.FirstAudio - 1].Length * 588 * 4);
Init();
@@ -316,30 +318,53 @@ namespace CUETools.AccurateRip
_CRCLOG[iTrack] = value;
}
- private ushort[,] syndrome = new ushort[1,1];
- private byte[] parity = new byte[1];
- private ushort[] expTbl = new ushort[1];
- private ushort[] logTbl = new ushort[1];
- private int stride = 1, stridecount, npar;
+ internal ushort[,] syndrome;
+ internal byte[] parity;
+ internal ushort[] leadin;
+ internal ushort[] leadout;
+ private int stride = 1, laststride = 1, stridecount = 1, npar = 1;
private bool calcSyn = false;
private bool calcParity = false;
- public void CalcSyndrome(ushort[] expTbl, ushort[] logTbl, ushort[,] syndrome, byte[] parity, int stride, int stridecount, int npar, bool calcParity, bool calcSyn)
+ internal void InitCDRepair(int stride, int laststride, int stridecount, int npar, bool calcSyn, bool calcParity)
{
if (npar != 8)
- throw new NotSupportedException();
- this.syndrome = syndrome;
- this.parity = parity;
- this.logTbl = logTbl;
- this.expTbl = expTbl;
+ throw new NotSupportedException("npar != 8");
this.stride = stride;
+ this.laststride = laststride;
this.stridecount = stridecount;
this.npar = npar;
this.calcSyn = calcSyn;
this.calcParity = calcParity;
+ Init();
}
- private unsafe static void CalcSyn8(ushort* exp, ushort* log, ushort* syn, uint lo, uint n)
+ internal unsafe uint CTDBCRC(int actualOffset)
+ {
+ fixed (uint* crct = Crc32.table)
+ {
+ // calculate leadin CRC
+ uint crc0 = 0;
+ for (int off = 0; off < stride - 2 * actualOffset; off++)
+ {
+ ushort dd = leadin[off];
+ crc0 = (crc0 >> 8) ^ crct[(byte)(crc0 ^ dd)];
+ crc0 = (crc0 >> 8) ^ crct[(byte)(crc0 ^ (dd >> 8))];
+ }
+ // calculate leadout CRC
+ uint crc2 = 0;
+ for (int off = laststride + 2 * actualOffset - 1; off >= 0; off--)
+ {
+ ushort dd = leadout[off];
+ crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ dd)];
+ crc2 = (crc2 >> 8) ^ crct[(byte)(crc2 ^ (dd >> 8))];
+ }
+
+ return GetCRC32(crc0, (stride - 2 * actualOffset) * 2, crc2, (laststride + 2 * actualOffset) * 2);
+ }
+ }
+
+ private unsafe static void CalcSyn8(ushort* exp, ushort* log, ushort* syn, uint lo, uint n, int npar)
{
syn[0] ^= (ushort)lo;
uint idx = log[lo] + n; syn[1] ^= exp[(idx & 0xffff) + (idx >> 16)];
@@ -349,6 +374,17 @@ namespace CUETools.AccurateRip
idx += n; syn[5] ^= exp[(idx & 0xffff) + (idx >> 16)];
idx += n; syn[6] ^= exp[(idx & 0xffff) + (idx >> 16)];
idx += n; syn[7] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ //for (int i = 8; i < npar; i += 8)
+ //{
+ // idx += n; syn[i] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[i + 1] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[i + 2] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[i + 3] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[i + 4] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[i + 5] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[i + 6] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[i + 7] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ //}
}
#if alternateSynCalc
@@ -452,7 +488,7 @@ namespace CUETools.AccurateRip
int pk = ((int)(lo << 16)) >> 16;
peak = Math.Max(peak, (pk << 1) ^ (pk >> 31));
- if (doSyn && lo != 0) CalcSyn8(exp, log, syn + i * 16, lo, n);
+ if (doSyn && lo != 0) CalcSyn8(exp, log, syn + i * 16, lo, n, npar);
if (doPar) CalcPar8(exp, log, wr + i * 16, lo);
uint hi = sample >> 16;
@@ -468,7 +504,7 @@ namespace CUETools.AccurateRip
pk = ((int)(hi << 16)) >> 16;
peak = Math.Max(peak, (pk << 1) ^ (pk >> 31));
- if (doSyn && hi != 0) CalcSyn8(exp, log, syn + i * 16 + 8, hi, n);
+ if (doSyn && hi != 0) CalcSyn8(exp, log, syn + i * 16 + 8, hi, n, npar);
if (doPar) CalcPar8(exp, log, wr + i * 16 + 8, hi);
}
@@ -513,7 +549,7 @@ namespace CUETools.AccurateRip
int pos = 0;
fixed (uint* t = Crc32.table)
- fixed (ushort* exp = expTbl, log = logTbl, synptr1 = syndrome)
+ fixed (ushort* exp = Galois16.instance.ExpTbl, log = Galois16.instance.LogTbl, synptr1 = syndrome)
fixed (byte* pSampleBuff = &sampleBuffer.Bytes[0], bpar = parity)
while (pos < sampleBuffer.Length)
{
@@ -527,6 +563,19 @@ namespace CUETools.AccurateRip
int currentPart = ((int)_sampleCount * 2) % stride;
ushort* synptr = synptr1 + npar * currentPart;
ushort* wr = ((ushort*)bpar) + npar * currentPart;
+ int currentStride = ((int)_sampleCount * 2) / stride;
+
+ if (currentStride < 2 && leadin != null)
+ for (int i = 0; i < copyCount * 2; i++)
+ leadin[_sampleCount * 2 + i] = ((ushort*)samples)[i];
+
+ if (currentStride >= stridecount && leadout != null)
+ for (int i = 0; i < copyCount * 2; i++)
+ {
+ int remaining = (int)(_finalSampleCount - _sampleCount) * 2 - i - 1;
+ if (remaining < stride + laststride)
+ leadout[remaining] = ((ushort*)samples)[i];
+ }
if (currentSector < 10)
CalculateCRCs(t, exp, log, synptr, wr, samples, copyCount, currentOffset, currentOffset);
@@ -609,6 +658,18 @@ namespace CUETools.AccurateRip
_CacheCRCWN = new uint[_toc.AudioTracks + 1, 31 * 588];
_CRCNL = new int[_toc.AudioTracks + 1, 31 * 588];
_Peak = new int[_toc.AudioTracks + 1];
+ syndrome = new ushort[calcSyn ? stride : 1, npar];
+ parity = new byte[stride * npar * 2];
+ if (calcSyn || calcParity)
+ {
+ leadin = new ushort[stride * 2];
+ leadout = new ushort[stride + laststride];
+ }
+ else
+ {
+ leadin = null;
+ leadout = null;
+ }
_currentTrack = 0;
Position = _toc[_toc.FirstAudio][0].Start * 588;
}
@@ -741,11 +802,14 @@ namespace CUETools.AccurateRip
public long FinalSampleCount
{
+ get
+ {
+ return _finalSampleCount;
+ }
set
{
- if (value < 0) // != _toc.Length?
+ if (value != _finalSampleCount)
throw new Exception("invalid FinalSampleCount");
- _finalSampleCount = value;
}
}
diff --git a/CUETools.AccurateRip/CDRepair.cs b/CUETools.AccurateRip/CDRepair.cs
new file mode 100644
index 0000000..079fb97
--- /dev/null
+++ b/CUETools.AccurateRip/CDRepair.cs
@@ -0,0 +1,642 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Text;
+using CUETools.CDImage;
+using CUETools.Codecs;
+using CUETools.Parity;
+using CUETools.AccurateRip;
+
+namespace CUETools.AccurateRip
+{
+ public class CDRepair
+ {
+ protected int sampleCount;
+ protected int finalSampleCount;
+ internal Galois galois;
+ protected RsDecode rs;
+ //protected uint crc;
+ protected int[] encodeGx;
+ internal int stride;
+ internal int laststride;
+ internal int stridecount;
+ internal int npar;
+
+ public CDRepair(int finalSampleCount, int stride, int npar)
+ {
+ this.npar = npar;
+ this.stride = stride;
+ this.finalSampleCount = finalSampleCount;
+ sampleCount = 0;
+ galois = Galois16.instance;
+ rs = new RsDecode16(npar, galois);
+ //crc32 = new Crc32();
+ //crc = 0xffffffff;
+ encodeGx = galois.makeEncodeGxLog(npar);
+ laststride = stride + (finalSampleCount * 2) % stride;
+ stridecount = (finalSampleCount * 2) / stride - 2; // minus one for leadin and one for leadout
+ if ((finalSampleCount * 2 + stride - 1) / stride + npar > galois.Max)
+ throw new Exception("invalid stride");
+ }
+
+ public CDRepair(CDRepair src)
+ : this(src.finalSampleCount, src.stride, src.npar)
+ {
+ }
+
+ //public unsafe void Write(AudioBuffer sampleBuffer)
+ //{
+ // throw new Exception("unsupported");
+ //}
+
+ //public unsafe void Close()
+ //{
+ // if (sampleCount != finalSampleCount)
+ // throw new Exception("sampleCount != finalSampleCount");
+ //}
+
+ public long FinalSampleCount
+ {
+ set
+ {
+ if (value < 0) // != _toc.Length?
+ throw new Exception("invalid FinalSampleCount");
+ finalSampleCount = (int)value;
+ }
+ }
+
+ public int NPAR
+ {
+ get
+ {
+ return npar;
+ }
+ }
+ }
+
+ public class CDRepairEncode : CDRepair
+ {
+ internal bool verify;
+ internal bool encode;
+ protected AccurateRipVerify ar;
+
+ public CDRepairEncode(AccurateRipVerify ar, int stride, int npar, bool verify, bool encode)
+ : base ((int)ar.FinalSampleCount, stride, npar)
+ {
+ this.ar = ar;
+ this.verify = verify;
+ this.encode = encode;
+
+ ar.InitCDRepair(stride, laststride, stridecount, npar, verify, encode);
+ }
+
+ //private unsafe void ProcessStride(int currentStride, int currentPart, int count, ushort* data)
+ //{
+ // fixed (uint* crct = Crc32.table)
+ // fixed (byte* bpar = parity)
+ // fixed (ushort* exp = galois.ExpTbl, log = galois.LogTbl, synptr = syndrome)
+ // fixed (int* gx = encodeGx)
+ // for (int pos = 0; pos < count; pos++)
+ // {
+ // ushort* par = (ushort*)bpar;
+ // int part = currentPart + pos;
+ // ushort* wr = ((ushort*)par) + part * npar;
+ // ushort dd = data[pos];
+
+ // //crc = (crc >> 8) ^ crct[(byte)(crc ^ dd)];
+ // //crc = (crc >> 8) ^ crct[(byte)(crc ^ (dd >> 8))];
+
+ // if (verify)
+ // {
+ // ushort* syn = synptr + part * npar;
+ // syn[0] ^= dd; // wk += data
+ // for (int i = 1; i < npar; i++)
+ // syn[i] = (ushort)(dd ^ galois.mulExp(syn[i], i)); // wk = data + wk * α^i
+ // }
+
+ // int ib = wr[0] ^ dd;
+ // if (ib != 0)
+ // {
+ // ushort* myexp = exp + log[ib];
+ // for (int i = 0; i < npar - 1; i++)
+ // wr[i] = (ushort)(wr[i + 1] ^ myexp[gx[i]]);
+ // wr[npar - 1] = myexp[gx[npar - 1]];
+ // }
+ // else
+ // {
+ // for (int i = 0; i < npar - 1; i++)
+ // wr[i] = wr[i + 1];
+ // wr[npar - 1] = 0;
+ // }
+ // }
+ //}
+
+ //private unsafe void ProcessStride16(int currentStride, int currentPart, int count, ushort* data)
+ //{
+ // fixed (uint* crct = Crc32.table)
+ // fixed (byte* bpar = parity)
+ // fixed (ushort* exp = galois.ExpTbl, log = galois.LogTbl, synptr = syndrome)
+ // for (int pos = 0; pos < count; pos++)
+ // {
+ // ushort* par = (ushort*)bpar;
+ // int part = currentPart + pos;
+ // ushort* wr = par + part * 16;
+ // ushort dd = data[pos];
+
+ // //crc = (crc >> 8) ^ crct[(byte)(crc ^ dd)];
+ // //crc = (crc >> 8) ^ crct[(byte)(crc ^ (dd >> 8))];
+
+ // int ib = wr[0] ^ dd;
+ // if (ib != 0)
+ // {
+ // ushort* myexp = exp + log[ib];
+ // wr[0] = (ushort)(wr[1] ^ myexp[0x000059f1]);
+ // wr[1] = (ushort)(wr[2] ^ myexp[0x0000608f]);
+ // wr[2] = (ushort)(wr[3] ^ myexp[0x0000918b]);
+ // wr[3] = (ushort)(wr[4] ^ myexp[0x00004487]);
+ // wr[4] = (ushort)(wr[5] ^ myexp[0x0000a151]);
+ // wr[5] = (ushort)(wr[6] ^ myexp[0x0000c074]);
+ // wr[6] = (ushort)(wr[7] ^ myexp[0x00004178]);
+ // wr[7] = (ushort)(wr[8] ^ myexp[0x00004730]);
+ // wr[8] = (ushort)(wr[9] ^ myexp[0x00004187]);
+ // wr[9] = (ushort)(wr[10] ^ myexp[0x0000c092]);
+ // wr[10] = (ushort)(wr[11] ^ myexp[0x0000a17e]);
+ // wr[11] = (ushort)(wr[12] ^ myexp[0x000044c3]);
+ // wr[12] = (ushort)(wr[13] ^ myexp[0x000091d6]);
+ // wr[13] = (ushort)(wr[14] ^ myexp[0x000060e9]);
+ // wr[14] = (ushort)(wr[15] ^ myexp[0x00005a5a]);
+ // wr[15] = myexp[0x00000078];
+ // }
+ // else
+ // {
+ // wr[0] = wr[1];
+ // wr[1] = wr[2];
+ // wr[2] = wr[3];
+ // wr[3] = wr[4];
+ // wr[4] = wr[5];
+ // wr[5] = wr[6];
+ // wr[6] = wr[7];
+ // wr[7] = wr[8];
+ // wr[8] = wr[9];
+ // wr[9] = wr[10];
+ // wr[10] = wr[11];
+ // wr[11] = wr[12];
+ // wr[12] = wr[13];
+ // wr[13] = wr[14];
+ // wr[14] = wr[15];
+ // wr[15] = 0;
+ // }
+
+ // // syn[i] += data[pos] * α^(n*i)
+ // if (verify && dd != 0)
+ // {
+ // int n = stridecount - currentStride;
+ // ushort* syn = synptr + part * 16;
+ // syn[0] ^= dd;
+ // int idx = log[dd];
+ // idx += n; syn[1] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[2] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[3] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[4] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[5] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[6] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[7] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[8] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[9] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[10] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[11] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[12] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[13] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[14] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // idx += n; syn[15] ^= exp[(idx & 0xffff) + (idx >> 16)];
+ // }
+ // }
+ //}
+
+ //new public unsafe void Write(AudioBuffer sampleBuffer)
+ //{
+ // if (!verify && !encode)
+ // return;
+
+ // sampleBuffer.Prepare(this);
+
+ // if ((sampleBuffer.ByteLength & 1) != 0 || sampleCount + sampleBuffer.Length > finalSampleCount)
+ // throw new Exception("sampleCount > finalSampleCount");
+
+ // fixed (byte* bytes = sampleBuffer.Bytes)
+ // {
+ // int offs = 0;
+ // while (offs < sampleBuffer.Length)
+ // {
+ // int currentPart = (sampleCount * 2) % stride;
+ // int currentStride = (sampleCount * 2) / stride;
+ // // Process no more than there is in the buffer, and no more than up to a stride boundary.
+ // int copyCount = Math.Min((sampleBuffer.Length - offs) * 2, stride - currentPart);
+ // ushort* data = ((ushort*)bytes) + offs * 2;
+
+ // if (currentStride < 2)
+ // for (int pos = 0; pos < copyCount; pos++)
+ // leadin[sampleCount * 2 + pos] = data[pos];
+
+ // if (currentStride >= stridecount)
+ // for (int pos = 0; pos < copyCount; pos++)
+ // {
+ // int remaining = (finalSampleCount - sampleCount) * 2 - pos - 1;
+ // if (remaining < stride + laststride)
+ // leadout[remaining] = data[pos];
+ // }
+
+ // if (currentStride >= 1 && currentStride <= stridecount)
+ // {
+ // if (npar == 16)
+ // ProcessStride16(currentStride, currentPart, copyCount, data);
+ // else if (npar != 8)
+ // ProcessStride(currentStride, currentPart, copyCount, data);
+ // }
+
+ // sampleCount += copyCount >> 1;
+ // offs += copyCount >> 1;
+ // }
+ // }
+ //}
+
+ public unsafe CDRepairFix VerifyParity(byte[] parity2, int actualOffset)
+ {
+ return VerifyParity(npar, parity2, 0, parity2.Length, actualOffset);
+ }
+
+ public uint CRC
+ {
+ get
+ {
+ return ar.CTDBCRC(0);
+ }
+ }
+
+ public unsafe bool FindOffset(int npar2, byte[] parity2, int pos, uint expectedCRC, out int actualOffset, out bool hasErrors)
+ {
+ if (npar2 != npar)
+ throw new Exception("npar mismatch");
+ if (!verify)
+ throw new Exception("verify was not enabled");
+ if (ar.Position != ar.FinalSampleCount)
+ throw new Exception("ar.Position != ar.FinalSampleCount");
+
+ // find offset
+ fixed (byte* par2ptr = &parity2[pos])
+ {
+ ushort* par2 = (ushort*)par2ptr;
+ int* _sigma = stackalloc int[npar];
+ int* _errpos = stackalloc int[npar];
+ int* syn = stackalloc int[npar];
+ bool foundOffset = false;
+
+ for (int allowed_errors = 0; allowed_errors < npar / 2 && !foundOffset; allowed_errors++)
+ {
+ int part2 = 0;
+ ushort* wr = par2 + part2 * npar;
+
+ // We can only use offset if Abs(offset * 2) < stride,
+ // else we might need to add/remove more than one sample
+ // from syndrome calculations, and that would be too difficult
+ // and will probably require longer leadin/leadout.
+ for (int offset = 1 - stride / 2; offset < stride / 2; offset++)
+ {
+ int err = 0;
+ int part = (part2 + stride - offset * 2) % stride;
+
+ for (int i = 0; i < npar; i++)
+ {
+ int synI = ar.syndrome[part, i];
+
+ // offset < 0
+ if (part < -offset * 2)
+ {
+ synI ^= galois.mulExp(ar.leadin[stride + part], (i * (stridecount - 1)) % galois.Max);
+ synI = ar.leadout[laststride - part - 1] ^ galois.mulExp(synI, i);
+ }
+ // offset > 0
+ if (part >= stride - offset * 2)
+ {
+ synI = galois.divExp(synI ^ ar.leadout[laststride + stride - part - 1], i);
+ synI ^= galois.mulExp(ar.leadin[part], (i * (stridecount - 1)) % galois.Max);
+ }
+
+ for (int j = 0; j < npar; j++)
+ synI = wr[j] ^ galois.mulExp(synI, i);
+
+ syn[i] = synI;
+ err |= synI;
+ }
+ int err_count = err == 0 ? 0 : rs.calcSigmaMBM(_sigma, syn);
+ if (err_count == allowed_errors && (err_count == 0 || rs.chienSearch(_errpos, stridecount + npar, err_count, _sigma)))
+ {
+ actualOffset = offset;
+ hasErrors = err_count != 0 || ar.CTDBCRC(offset) != expectedCRC;
+ return true;
+ }
+ }
+ }
+ }
+ actualOffset = 0;
+ hasErrors = true;
+ return false;
+ }
+
+ public unsafe CDRepairFix VerifyParity(int npar2, byte[] parity2, int pos, int len, int actualOffset)
+ {
+ if (len != stride * npar * 2)
+ throw new Exception("wrong size");
+
+ CDRepairFix fix = new CDRepairFix(this);
+ fix.actualOffset = actualOffset;
+ fix.correctableErrors = 0;
+ fix.hasErrors = false;
+ fix.canRecover = true;
+
+ fix.sigma = new int[stride, npar / 2 + 2];
+ fix.omega = new int[stride, npar / 2 + 1];
+ fix.errpos = new int[stride, npar / 2];
+ //fix.erroff = new int[stride, npar / 2];
+ fix.errors = new int[stride];
+
+ fixed (byte* par = &parity2[pos])
+ fixed (ushort* exp = galois.ExpTbl, log = galois.LogTbl)
+ {
+ int* syn = stackalloc int[npar];
+ int offset = fix.actualOffset;
+
+ for (int part = 0; part < stride; part++)
+ {
+ int part2 = (part + offset * 2 + stride) % stride;
+ ushort* wr = (ushort*)par + part2 * npar;
+ int err = 0;
+
+ for (int i = 0; i < npar; i++)
+ {
+ syn[i] = ar.syndrome[part, i];
+
+ // offset < 0
+ if (part < -offset * 2)
+ {
+ syn[i] ^= galois.mulExp(ar.leadin[stride + part], (i * (stridecount - 1)) % galois.Max);
+ syn[i] = ar.leadout[laststride - part - 1] ^ galois.mulExp(syn[i], i);
+ }
+ // offset > 0
+ if (part >= stride - offset * 2)
+ {
+ syn[i] = galois.divExp(syn[i] ^ ar.leadout[laststride + stride - part - 1], i);
+ syn[i] ^= galois.mulExp(ar.leadin[part], (i * (stridecount - 1)) % galois.Max);
+ }
+
+ //syn[i] = galois.mulExp(syn[i], i * npar);
+
+ for (int j = 0; j < npar; j++)
+ syn[i] = wr[j] ^ galois.mulExp(syn[i], i); // wk = data + wk * α^i
+
+ err |= syn[i];
+ }
+
+ //for (int j = 0; j < npar; j++)
+ // if (wr[j] != 0)
+ // {
+ // ushort* myexp = exp + log[wr[j]];
+ // syn[0] ^= wr[j];
+ // for (int i = 1; i < npar; i++)
+ // syn[i] ^= myexp[(npar - j - 1) * i];
+ // }
+
+ //for (int i = 0; i < npar; i++)
+ // err |= syn[i];
+
+ if (err != 0)
+ {
+ fixed (int* s = &fix.sigma[part, 0], o = &fix.omega[part, 0], e = &fix.errpos[part, 0])
+ {
+ fix.errors[part] = rs.calcSigmaMBM(s, syn);
+ fix.hasErrors = true;
+ fix.correctableErrors += fix.errors[part];
+ if (fix.errors[part] <= 0 || !rs.chienSearch(e, stridecount + npar, fix.errors[part], s))
+ fix.canRecover = false;
+ else
+ galois.mulPoly(o, s, syn, npar / 2 + 1, npar, npar);
+ }
+ }
+ else
+ fix.errors[part] = 0;
+ }
+ }
+
+ return fix;
+ }
+
+ public byte[] Parity
+ {
+ get
+ {
+ return ar.parity;
+ }
+ }
+ }
+
+ public class CDRepairFix : CDRepair, IAudioDest
+ {
+ internal bool hasErrors = false, canRecover = true;
+ internal int actualOffset = 0;
+ internal int correctableErrors = 0;
+ internal int[,] sigma;
+ internal int[,] omega;
+ internal int[,] errpos;
+ internal int[] erroffsorted;
+ internal ushort[] forneysorted;
+ internal int erroffcount;
+ internal int[] errors;
+ private BitArray affectedSectorArray;
+ private int nexterroff;
+ uint crc = 0;
+
+ internal CDRepairFix(CDRepairEncode decode)
+ : base(decode)
+ {
+ }
+
+ public string AffectedSectors
+ {
+ get
+ {
+ StringBuilder sb = new StringBuilder();
+ SortErrors();
+ for (int i = 0; i < erroffcount; i++)
+ {
+ int j;
+ for (j = i + 1; j < erroffcount; j++)
+ if (erroffsorted[j] - erroffsorted[j - 1] > 2 * 588 * 5)
+ break;
+ uint sec1 = (uint)erroffsorted[i] / 2 / 588;
+ uint sec2 = (uint)erroffsorted[j - 1] / 2 / 588;
+ if (sb.Length != 0) sb.Append(",");
+ sb.Append(CDImageLayout.TimeToString(sec1));
+ if (sec1 != sec2) sb.Append("-");
+ if (sec1 != sec2) sb.Append(CDImageLayout.TimeToString(sec2));
+ i = j - 1;
+ }
+ return sb.ToString();
+ }
+ }
+
+ public BitArray AffectedSectorArray
+ {
+ get
+ {
+ if (affectedSectorArray == null)
+ {
+ affectedSectorArray = new BitArray(finalSampleCount / 588 + 1);
+ SortErrors();
+ for (int i = 0; i < erroffcount; i++)
+ affectedSectorArray[erroffsorted[i] / 2 / 588] = true;
+ }
+ return affectedSectorArray;
+ }
+ }
+
+ private int GetErrOff(int part, int i)
+ {
+ return (2 + galois.toPos(stridecount + npar, errpos[part, i]) - (stride + part + ActualOffset * 2) / stride) * stride + part;
+ }
+
+ private unsafe void SortErrors()
+ {
+ if (erroffsorted != null)
+ return;
+ erroffcount = 0;
+ erroffsorted = new int[errpos.GetLength(0) * errpos.GetLength(1)];
+ forneysorted = new ushort[errpos.GetLength(0) * errpos.GetLength(1)];
+ for (int part = 0; part < stride; part++)
+ {
+ fixed (int* s = &sigma[part, 0], o = &omega[part, 0])
+ for (int i = 0; i < errors[part]; i++)
+ {
+ erroffsorted[erroffcount] = GetErrOff(part, i);
+ if (erroffsorted[erroffcount] >= 0 && erroffsorted[erroffcount] < finalSampleCount * 2)
+ {
+ forneysorted[erroffcount] = (ushort)rs.doForney(errors[part], errpos[part, i], s, o);
+ erroffcount++;
+ }
+ }
+ }
+ Array.Sort(erroffsorted, forneysorted, 0, erroffcount);
+ // assert erroffcount == CorrectableErrors
+ nexterroff = 0;
+ }
+
+ public unsafe void Write(AudioBuffer sampleBuffer)
+ {
+ sampleBuffer.Prepare(this);
+
+ if ((sampleBuffer.ByteLength & 1) != 0)
+ throw new Exception("never happens");
+
+ int firstPos = Math.Max(0, stride - sampleCount * 2 - ActualOffset * 2);
+ int lastPos = Math.Min(sampleBuffer.ByteLength >> 1, (finalSampleCount - sampleCount) * 2 - laststride - ActualOffset * 2);
+
+ SortErrors();
+
+ fixed (byte* bytes = sampleBuffer.Bytes)
+ fixed (uint* t = Crc32.table)
+ {
+ ushort* data = (ushort*)bytes;
+ for (int pos = firstPos; pos < lastPos; pos++)
+ {
+ if (sampleCount * 2 + pos == erroffsorted[nexterroff] && nexterroff < erroffsorted.Length)
+ data[pos] ^= forneysorted[nexterroff++];
+
+ ushort dd = data[pos];
+ crc = (crc >> 8) ^ t[(byte)(crc ^ dd)];
+ crc = (crc >> 8) ^ t[(byte)(crc ^ (dd >> 8))];
+ }
+ }
+ sampleCount += sampleBuffer.Length;
+ }
+
+ public unsafe void Close()
+ {
+ if (sampleCount != finalSampleCount)
+ throw new Exception("sampleCount != finalSampleCount");
+ }
+
+ public bool HasErrors
+ {
+ get
+ {
+ return hasErrors;
+ }
+ }
+
+ public bool CanRecover
+ {
+ get
+ {
+ return canRecover;
+ }
+ }
+
+ public int CorrectableErrors
+ {
+ get
+ {
+ return correctableErrors;
+ }
+ }
+
+ public int ActualOffset
+ {
+ get
+ {
+ return actualOffset;
+ }
+ }
+
+ public uint CRC
+ {
+ get
+ {
+ return 0xffffffff ^ Crc32.Combine(0xffffffff, crc, stride * stridecount * 2);
+ }
+ }
+
+ public void Delete()
+ {
+ throw new Exception("unsupported");
+ }
+
+ public int CompressionLevel
+ {
+ get { return 0; }
+ set { }
+ }
+
+ public string Options
+ {
+ set
+ {
+ if (value == null || value == "") return;
+ throw new Exception("Unsupported options " + value);
+ }
+ }
+
+ public AudioPCMConfig PCM
+ {
+ get { return AudioPCMConfig.RedBook; }
+ }
+
+ public long BlockSize
+ {
+ set { throw new Exception("unsupported"); }
+ }
+
+ public string Path
+ {
+ get { throw new Exception("unsupported"); }
+ }
+ }
+}
diff --git a/CUETools.AccurateRip/CUETools.AccurateRip.csproj b/CUETools.AccurateRip/CUETools.AccurateRip.csproj
index 3e7f423..f925b74 100644
--- a/CUETools.AccurateRip/CUETools.AccurateRip.csproj
+++ b/CUETools.AccurateRip/CUETools.AccurateRip.csproj
@@ -44,6 +44,7 @@
+
@@ -55,6 +56,10 @@
{1DD41038-D885-46C5-8DDE-E0B82F066584}
CUETools.CDImage
+
+ {ECEB839C-171B-4535-958F-9899310A0342}
+ CUETools.Parity
+