* ALAC decoding length mismatches fixed

* Problem with single-track albums fixed
* Added an option to disable assembler optimizations in flac
This commit is contained in:
chudov
2009-03-04 21:30:56 +00:00
parent 5deeb6ad57
commit c91f19e2a9
26 changed files with 2276 additions and 2259 deletions

View File

@@ -154,6 +154,9 @@
<ItemGroup>
<None Include="freedb.gif" />
</ItemGroup>
<ItemGroup>
<Content Include="arok.ico" />
</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.

View File

@@ -60,6 +60,13 @@ namespace CUERipper.Properties {
}
}
internal static System.Drawing.Bitmap arok {
get {
object obj = ResourceManager.GetObject("arok", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
internal static System.Drawing.Bitmap cddb {
get {
object obj = ResourceManager.GetObject("cddb", resourceCulture);

View File

@@ -127,4 +127,10 @@
<data name="freedb" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\freedb.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arok" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\arok.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="arok" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\arok.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -35,6 +35,8 @@ namespace CUERipper
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
this.toolStripProgressBar2 = new System.Windows.Forms.ToolStripProgressBar();
this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusAr = new System.Windows.Forms.ToolStripStatusLabel();
this.listTracks = new System.Windows.Forms.ListView();
this.Title = new System.Windows.Forms.ColumnHeader();
this.TrackNo = new System.Windows.Forms.ColumnHeader();
@@ -71,7 +73,9 @@ namespace CUERipper
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabel1,
this.toolStripProgressBar1,
this.toolStripProgressBar2});
this.toolStripProgressBar2,
this.toolStripStatusLabel2,
this.toolStripStatusAr});
resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.SizingGrip = false;
@@ -97,6 +101,19 @@ namespace CUERipper
resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2");
this.toolStripProgressBar2.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// toolStripStatusLabel2
//
this.toolStripStatusLabel2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripStatusLabel2.Name = "toolStripStatusLabel2";
resources.ApplyResources(this.toolStripStatusLabel2, "toolStripStatusLabel2");
//
// toolStripStatusAr
//
this.toolStripStatusAr.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.toolStripStatusAr.Image = global::CUERipper.Properties.Resources.arok;
this.toolStripStatusAr.Name = "toolStripStatusAr";
resources.ApplyResources(this.toolStripStatusAr, "toolStripStatusAr");
//
// listTracks
//
resources.ApplyResources(this.listTracks, "listTracks");
@@ -114,6 +131,7 @@ namespace CUERipper
this.listTracks.AfterLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.listTracks_AfterLabelEdit);
this.listTracks.DoubleClick += new System.EventHandler(this.listTracks_DoubleClick);
this.listTracks.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.listTracks_PreviewKeyDown);
this.listTracks.BeforeLabelEdit += new System.Windows.Forms.LabelEditEventHandler(this.listTracks_BeforeLabelEdit);
this.listTracks.KeyDown += new System.Windows.Forms.KeyEventHandler(this.listTracks_KeyDown);
//
// Title
@@ -242,6 +260,7 @@ namespace CUERipper
this.Name = "frmCUERipper";
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
this.Load += new System.EventHandler(this.frmCUERipper_Load);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUERipper_FormClosed);
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.contextMenuStripRelease.ResumeLayout(false);
@@ -274,6 +293,8 @@ namespace CUERipper
private System.Windows.Forms.ContextMenuStrip contextMenuStripRelease;
private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2;
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusAr;
}
}

View File

@@ -29,6 +29,7 @@ namespace CUERipper
private CUEStyle _style;
private CUESheet _cueSheet;
private string _pathOut;
private string _pathFormat;
public frmCUERipper()
{
@@ -66,10 +67,15 @@ namespace CUERipper
//{
//}
SettingsReader sr = new SettingsReader("CUERipper", "settings.txt");
_config.createEACLOG = sr.LoadBoolean("CreateEACLOG") ?? false;
_config.preserveHTOA = sr.LoadBoolean("PreserveHTOA") ?? false;
_config.createM3U = sr.LoadBoolean("CreateM3U") ?? true;
_pathFormat = sr.Load("PathFormat") ?? "%D\\%Y - %C\\%D - %C.cue";
comboLossless.SelectedIndex = sr.LoadInt32("ComboLossless", 0, comboLossless.Items.Count - 1) ?? 0;
comboCodec.SelectedIndex = sr.LoadInt32("ComboCodec", 0, comboCodec.Items.Count - 1) ?? 0;
comboImage.SelectedIndex = sr.LoadInt32("ComboImage", 0, comboImage.Items.Count - 1) ?? 0;
UpdateDrives();
comboLossless.SelectedIndex = 0;
comboCodec.SelectedIndex = 0;
comboImage.SelectedIndex = 0;
}
#region private constants
@@ -117,19 +123,20 @@ namespace CUERipper
try
{
reader.Open(drive);
}
catch
{
}
try
{
arName = reader.ARName;
}
catch (Exception ex)
{
try
{
arName = reader.ARName;
}
catch
{
comboDrives.Items.Add(drive + ": " + ex.Message);
continue;
}
}
if (!AccurateRipVerify.FindDriveReadOffset(arName, out driveOffset))
; //throw new Exception("Failed to find drive read offset for drive" + _ripper.ARName);
reader.DriveOffset = driveOffset;
@@ -205,13 +212,15 @@ namespace CUERipper
try
{
_cueSheet.WriteAudioFiles(".", _style);
string outDir = Path.GetDirectoryName(_pathOut);
_cueSheet.WriteAudioFiles(outDir == "" ? "." : outDir, _style);
//CUESheet.WriteText(_pathOut, _cueSheet.CUESheetContents(_style));
//CUESheet.WriteText(Path.ChangeExtension(_pathOut, ".log"), _cueSheet.LOGContents());
}
catch (StopException)
{
}
#if !DEBUG
catch (Exception ex)
{
this.Invoke((MethodInvoker)delegate()
@@ -222,6 +231,7 @@ namespace CUERipper
DialogResult dlgRes = MessageBox.Show(this, message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
});
}
#endif
audioSource.ReadProgress -= new EventHandler<ReadProgressArgs>(CDReadProgress);
_workThread = null;
this.BeginInvoke((MethodInvoker)delegate()
@@ -230,6 +240,20 @@ namespace CUERipper
});
}
private string GenerateOutputPath()
{
List<string> find = new List<string>();
find.Add("%D");
find.Add("%C");
find.Add("%Y");
List<string> replace = new List<string>();
replace.Add(General.EmptyStringToNull(_config.CleanseString(_cueSheet.Artist)));
replace.Add(General.EmptyStringToNull(_config.CleanseString(_cueSheet.Title)));
replace.Add(_cueSheet.Year);
return Path.ChangeExtension(General.ReplaceMultiple(_pathFormat, find, replace) ?? "image.cue", ".cue");
}
private void buttonGo_Click(object sender, EventArgs e)
{
if (_reader == null)
@@ -237,8 +261,7 @@ namespace CUERipper
_style = comboImage.SelectedIndex == 0 ? CUEStyle.SingleFileWithCUE :
CUEStyle.GapsAppended;
_pathOut = _config.CleanseString(_cueSheet.Artist) + " - " +
_config.CleanseString(_cueSheet.Title) + ".cue";
_pathOut = GenerateOutputPath();
_config.lossyWAVHybrid = comboLossless.SelectedIndex == 1; // _cueSheet.Config?
if (_style == CUEStyle.SingleFileWithCUE)
_cueSheet.SingleFilename = Path.GetFileName(_pathOut);
@@ -281,13 +304,15 @@ namespace CUERipper
if (comboRelease.SelectedItem == null || comboRelease.SelectedItem is string)
return;
_cueSheet = ((ReleaseInfo)comboRelease.SelectedItem).cueSheet;
for (int i = 1; i <= _reader.TOC.AudioTracks; i++)
for (int i = 1; i <= _reader.TOC.TrackCount; i++)
{
listTracks.Items.Add(new ListViewItem(new string[] {
_cueSheet.Tracks[i-1].Title,
_reader.TOC[i].IsAudio ? _cueSheet.Tracks[i - _reader.TOC.FirstAudio].Title : "Data track",
_reader.TOC[i].Number.ToString(),
_reader.TOC[i].StartMSF,
_reader.TOC[i].LengthMSF }));
}
}
private void comboRelease_SelectedIndexChanged(object sender, EventArgs e)
{
@@ -445,24 +470,26 @@ namespace CUERipper
{
}
this.BeginInvoke((MethodInvoker)delegate()
{
if (comboRelease.Items.Count == 0)
{
ReleaseInfo r = CreateCUESheet(audioSource, null, null);
this.BeginInvoke((MethodInvoker)delegate()
{
comboRelease.Items.Add(r);
}
});
}
_workThread = null;
this.BeginInvoke((MethodInvoker)delegate()
{
SetupControls();
comboRelease.SelectedIndex = 0;
toolStripStatusAr.Visible = ((ReleaseInfo) comboRelease.SelectedItem).cueSheet.ArVerify.ARStatus == null;
});
}
private void UpdateDrive()
{
toolStripStatusAr.Visible = false;
buttonGo.Enabled = false;
comboRelease.Items.Clear();
listTracks.Items.Clear();
@@ -532,8 +559,10 @@ namespace CUERipper
private void listTracks_AfterLabelEdit(object sender, LabelEditEventArgs e)
{
CUESheet cueSheet = ((ReleaseInfo)comboRelease.SelectedItem).cueSheet;
if (e.Label != null)
if (e.Label != null && _reader.TOC[e.Item + 1].IsAudio)
cueSheet.Tracks[e.Item].Title = e.Label;
else
e.CancelEdit = true;
}
private void editToolStripMenuItem_Click(object sender, EventArgs e)
@@ -564,6 +593,25 @@ namespace CUERipper
}
e.DrawFocusRectangle();
}
private void frmCUERipper_FormClosed(object sender, FormClosedEventArgs e)
{
SettingsWriter sw = new SettingsWriter("CUERipper", "settings.txt");
if (_config.createEACLOG) sw.Save("CreateEACLOG", _config.createEACLOG);
sw.Save("PreserveHTOA", _config.preserveHTOA);
sw.Save("CreateM3U", _config.createM3U);
sw.Save("ComboLossless", comboLossless.SelectedIndex);
sw.Save("ComboCodec", comboCodec.SelectedIndex);
sw.Save("ComboImage", comboImage.SelectedIndex);
sw.Save("PathFormat", _pathFormat);
sw.Close();
}
private void listTracks_BeforeLabelEdit(object sender, LabelEditEventArgs e)
{
if (!_reader.TOC[e.Item + 1].IsAudio)
e.CancelEdit = true;
}
}
public class StartStop

View File

@@ -147,6 +147,33 @@
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>0, 371</value>
</metadata>
<data name="toolStripStatusLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>254, 17</value>
</data>
<data name="toolStripStatusLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="toolStripProgressBar1.Size" type="System.Drawing.Size, System.Drawing">
<value>70, 16</value>
</data>
<data name="toolStripProgressBar1.ToolTipText" xml:space="preserve">
<value>Track progress</value>
</data>
<data name="toolStripProgressBar2.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 16</value>
</data>
<data name="toolStripProgressBar2.ToolTipText" xml:space="preserve">
<value>Disk progress</value>
</data>
<data name="toolStripStatusLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>0, 17</value>
</data>
<data name="toolStripStatusLabel2.Text" xml:space="preserve">
<value>toolStripStatusAr</value>
</data>
<data name="toolStripStatusAr.Size" type="System.Drawing.Size, System.Drawing">
<value>16, 17</value>
</data>
<data name="statusStrip1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 371</value>
</data>
@@ -171,48 +198,9 @@
<data name="&gt;&gt;statusStrip1.ZOrder" xml:space="preserve">
<value>9</value>
</data>
<data name="toolStripStatusLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>200, 17</value>
</data>
<data name="toolStripStatusLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="toolStripProgressBar1.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 16</value>
</data>
<data name="toolStripProgressBar1.ToolTipText" xml:space="preserve">
<value>Track progress</value>
</data>
<data name="toolStripProgressBar2.Size" type="System.Drawing.Size, System.Drawing">
<value>140, 16</value>
</data>
<data name="toolStripProgressBar2.ToolTipText" xml:space="preserve">
<value>Disk progress</value>
</data>
<data name="listTracks.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="listTracks.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 60</value>
</data>
<data name="listTracks.Size" type="System.Drawing.Size, System.Drawing">
<value>481, 269</value>
</data>
<data name="listTracks.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;listTracks.Name" xml:space="preserve">
<value>listTracks</value>
</data>
<data name="&gt;&gt;listTracks.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;listTracks.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;listTracks.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="Title.DisplayIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
@@ -243,6 +231,27 @@
<data name="Length.Width" type="System.Int32, mscorlib">
<value>70</value>
</data>
<data name="listTracks.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 60</value>
</data>
<data name="listTracks.Size" type="System.Drawing.Size, System.Drawing">
<value>481, 269</value>
</data>
<data name="listTracks.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="&gt;&gt;listTracks.Name" xml:space="preserve">
<value>listTracks</value>
</data>
<data name="&gt;&gt;listTracks.Type" xml:space="preserve">
<value>System.Windows.Forms.ListView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;listTracks.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;listTracks.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="buttonGo.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
@@ -438,6 +447,12 @@
<metadata name="contextMenuStripRelease.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>285, 58</value>
</metadata>
<data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 22</value>
</data>
<data name="editToolStripMenuItem.Text" xml:space="preserve">
<value>Edit</value>
</data>
<data name="contextMenuStripRelease.Size" type="System.Drawing.Size, System.Drawing">
<value>95, 26</value>
</data>
@@ -468,12 +483,6 @@
<data name="&gt;&gt;comboRelease.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="editToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>94, 22</value>
</data>
<data name="editToolStripMenuItem.Text" xml:space="preserve">
<value>Edit</value>
</data>
<data name="toolStripMenuItem1.Size" type="System.Drawing.Size, System.Drawing">
<value>181, 22</value>
</data>
@@ -524,7 +533,7 @@
<value>CenterScreen</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>CUERipper 1.9.5</value>
<value>CUERipper 1.9.5a</value>
</data>
<data name="&gt;&gt;toolStripStatusLabel1.Name" xml:space="preserve">
<value>toolStripStatusLabel1</value>
@@ -544,6 +553,18 @@
<data name="&gt;&gt;toolStripProgressBar2.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripProgressBar, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripStatusLabel2.Name" xml:space="preserve">
<value>toolStripStatusLabel2</value>
</data>
<data name="&gt;&gt;toolStripStatusLabel2.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;toolStripStatusAr.Name" xml:space="preserve">
<value>toolStripStatusAr</value>
</data>
<data name="&gt;&gt;toolStripStatusAr.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;Title.Name" xml:space="preserve">
<value>Title</value>
</data>

View File

@@ -144,6 +144,32 @@ namespace CUETools.AccurateRip
return _offsetedCRC[iTrack, _arOffsetRange];
}
public uint Confidence(int iTrack)
{
if (ARStatus != null)
return 0U;
uint conf = 0;
for (int di = 0; di < (int)AccDisks.Count; di++)
if (CRC(iTrack) == AccDisks[di].tracks[iTrack].CRC)
conf += AccDisks[di].tracks[iTrack].count;
return conf;
}
public uint Total(int iTrack)
{
if (ARStatus != null)
return 0U;
uint total = 0;
for (int di = 0; di < (int)AccDisks.Count; di++)
total += AccDisks[di].tracks[iTrack].count;
return total;
}
public uint DBCRC(int iTrack)
{
return ARStatus == null ? AccDisks[0].tracks[iTrack].CRC : 0U;
}
public uint BackupCRC(int iTrack)
{
return _backupCRC[iTrack];

View File

@@ -71,6 +71,8 @@ namespace CUETools.CDImage
_length = src._length;
_isAudio = src._isAudio;
_preEmphasis = src._preEmphasis;
_dcp = src._dcp;
_isrc = src._isrc;
_indexes = new List<CDTrackIndex>();
for (int i = 0; i < src._indexes.Count; i++)
_indexes.Add(new CDTrackIndex(src._indexes[i]));
@@ -370,7 +372,7 @@ namespace CUETools.CDImage
return frame + (sec * 75) + (min * 60 * 75);
}
public static string TimeToString(uint t)
public static string TimeToString(string format, uint t)
{
uint min, sec, frame;
@@ -380,7 +382,12 @@ namespace CUETools.CDImage
t /= 60;
min = t;
return String.Format("{0:00}:{1:00}:{2:00}", min, sec, frame);
return String.Format(format, min, sec, frame);
}
public static string TimeToString(uint t)
{
return TimeToString("{0:00}:{1:00}:{2:00}", t);
}
string _catalog;

View File

@@ -39,6 +39,7 @@ namespace CUETools.Codecs.ALAC
if (!_formatRead || _bitsPerSample != 16 || _channelCount != 2 || _sampleRate != 44100)
throw new Exception("Invalid ALAC file.");
_saved_mdat_pos = _IO.Position;
calculate_length();
}
public int[,] Read(int[,] buff)
@@ -58,9 +59,9 @@ namespace CUETools.Codecs.ALAC
setinfo_rice_kmodifier = read_uint8(_codecData, 32);
byte setinfo_7f = read_uint8(_codecData, 33);
ushort setinfo_80 = read_uint16(_codecData, 34);
uint setinfo_82 = read_uint32(_codecData, 38);
uint setinfo_86 = read_uint32(_codecData, 42);
uint setinfo_8a_rate = read_uint32(_codecData, 44);
uint setinfo_82 = read_uint32(_codecData, 36); // maxframesize
uint setinfo_86 = read_uint32(_codecData, 40); // bitrate
uint setinfo_8a_rate = read_uint32(_codecData, 44); // samplerate
_predicterror_buffer_a = new int[setinfo_max_samples_per_frame];
_predicterror_buffer_b = new int[setinfo_max_samples_per_frame];
@@ -225,6 +226,14 @@ namespace CUETools.Codecs.ALAC
sampleSize = _sample_byte_size[iSample];
}
private void calculate_length()
{
_sampleCount = 0;
uint duration_cur_index = 0;
for (duration_cur_index = 0; duration_cur_index < _time_to_sample_count.Length; duration_cur_index++)
_sampleCount += _time_to_sample_count[duration_cur_index] * _time_to_sample_duration[duration_cur_index];
}
private byte [] stream_read_bytes(int len)
{
if (len > 512)

View File

@@ -70,7 +70,7 @@ namespace CUETools { namespace Codecs { namespace FLAC {
public ref class FLACReader : public IAudioSource
{
public:
FLACReader(String^ path, Stream^ IO)
FLACReader(String^ path, Stream^ IO, bool disableAsm)
{
_writeDel = gcnew DecoderWriteDelegate(this, &FLACReader::WriteCallback);
_metadataDel = gcnew DecoderMetadataDelegate(this, &FLACReader::MetadataCallback);
@@ -96,6 +96,9 @@ namespace CUETools { namespace Codecs { namespace FLAC {
if (!FLAC__stream_decoder_set_metadata_respond (_decoder, FLAC__METADATA_TYPE_VORBIS_COMMENT))
throw gcnew Exception("Unable to setup the decoder.");
if (!FLAC__stream_decoder_set_disable_asm(_decoder, disableAsm))
throw gcnew Exception("Unable to setup the decoder.");
if (FLAC__stream_decoder_init_stream(_decoder,
(FLAC__StreamDecoderReadCallback)Marshal::GetFunctionPointerForDelegate(_readDel).ToPointer(),
_IO->CanSeek?(FLAC__StreamDecoderSeekCallback)Marshal::GetFunctionPointerForDelegate(_seekDel).ToPointer():NULL,
@@ -451,6 +454,7 @@ namespace CUETools { namespace Codecs { namespace FLAC {
throw gcnew Exception("Bits per sample must be 16..24.");
_initialized = false;
_disableAsm = false;
_path = path;
_finalSampleCount = 0;
_samplesWritten = 0;
@@ -571,6 +575,15 @@ namespace CUETools { namespace Codecs { namespace FLAC {
}
}
property Boolean DisableAsm {
Boolean get() {
return _disableAsm;
}
void set(Boolean value) {
_disableAsm = value;
}
}
property Int32 PaddingLength {
Int32 get() {
return _paddingLength;
@@ -594,6 +607,7 @@ namespace CUETools { namespace Codecs { namespace FLAC {
Boolean _verify;
FLAC__StreamMetadata **_metadataList;
int _metadataCount;
bool _disableAsm;
void Initialize() {
FLAC__StreamMetadata *padding, *seektable, *vorbiscomment;
@@ -656,6 +670,8 @@ namespace CUETools { namespace Codecs { namespace FLAC {
FLAC__stream_encoder_set_verify(_encoder, _verify);
FLAC__stream_encoder_set_disable_asm(_encoder, _disableAsm);
if (_finalSampleCount != 0) {
FLAC__stream_encoder_set_total_samples_estimate(_encoder, _finalSampleCount);
}

View File

@@ -25,7 +25,7 @@ namespace CUETools.Processor
return new ALACReader(path, IO);
#if !MONO
case ".flac":
return new FLACReader(path, IO);
return new FLACReader(path, IO, config.disableAsm);
case ".wv":
return new WavPackReader(path, IO, null);
case ".ape":
@@ -74,6 +74,7 @@ namespace CUETools.Processor
dest = new FLACWriter(path, bitsPerSample, channelCount, sampleRate);
((FLACWriter)dest).CompressionLevel = (int)config.flacCompressionLevel;
((FLACWriter)dest).Verify = config.flacVerify;
((FLACWriter)dest).DisableAsm = config.disableAsm;
break;
case ".wv":
dest = new WavPackWriter(path, bitsPerSample, channelCount, sampleRate);

View File

@@ -262,6 +262,7 @@ namespace CUETools.Processor
public bool overwriteCUEData;
public bool filenamesANSISafe;
public bool bruteForceDTL;
public bool createEACLOG;
public bool detectHDCD;
public bool decodeHDCD;
public bool wait750FramesForHDCD;
@@ -275,6 +276,7 @@ namespace CUETools.Processor
public bool decodeHDCDto24bit;
public string udc1Extension, udc1Decoder, udc1Params, udc1Encoder, udc1EncParams;
public bool udc1APEv2, udc1ID3v2;
public bool disableAsm;
public CUEConfig()
{
@@ -299,7 +301,7 @@ namespace CUETools.Processor
wvExtraMode = 0;
wvStoreMD5 = false;
keepOriginalFilenames = true;
trackFilenameFormat = "%N-%A-%T";
trackFilenameFormat = "%N. %T";
singleFilenameFormat = "%F";
removeSpecial = false;
specialExceptions = "-()";
@@ -310,6 +312,7 @@ namespace CUETools.Processor
overwriteCUEData = false;
filenamesANSISafe = true;
bruteForceDTL = false;
createEACLOG = false;
detectHDCD = true;
wait750FramesForHDCD = true;
decodeHDCD = false;
@@ -324,6 +327,8 @@ namespace CUETools.Processor
udc1Extension = udc1Decoder = udc1Params = udc1Encoder = udc1EncParams = "";
udc1ID3v2 = udc1APEv2 = false;
disableAsm = false;
}
public void Save (SettingsWriter sw)
@@ -359,7 +364,8 @@ namespace CUETools.Processor
sw.Save("FillUpCUE", fillUpCUE);
sw.Save("OverwriteCUEData", overwriteCUEData);
sw.Save("FilenamesANSISafe", filenamesANSISafe);
sw.Save("BruteForceDTL", bruteForceDTL);
if (bruteForceDTL) sw.Save("BruteForceDTL", bruteForceDTL);
if (createEACLOG) sw.Save("CreateEACLOG", createEACLOG);
sw.Save("DetectHDCD", detectHDCD);
sw.Save("Wait750FramesForHDCD", wait750FramesForHDCD);
sw.Save("DecodeHDCD", decodeHDCD);
@@ -371,6 +377,7 @@ namespace CUETools.Processor
sw.Save("LossyWAVHybrid", lossyWAVHybrid);
sw.Save("DecodeHDCDToLossyWAV16", decodeHDCDtoLW16);
sw.Save("DecodeHDCDTo24bit", decodeHDCDto24bit);
sw.Save("DisableAsm", disableAsm);
if (udc1Extension != "")
{
sw.Save("UDC1Extension", udc1Extension);
@@ -407,7 +414,7 @@ namespace CUETools.Processor
wvStoreMD5 = sr.LoadBoolean("WVStoreMD5") ?? false;
keepOriginalFilenames = sr.LoadBoolean("KeepOriginalFilenames") ?? true;
singleFilenameFormat = sr.Load("SingleFilenameFormat") ?? "%F";
trackFilenameFormat = sr.Load("TrackFilenameFormat") ?? "%N-%A-%T";
trackFilenameFormat = sr.Load("TrackFilenameFormat") ?? "%N. %T";
removeSpecial = sr.LoadBoolean("RemoveSpecialCharacters") ?? false;
specialExceptions = sr.Load("SpecialCharactersExceptions") ?? "-()";
replaceSpaces = sr.LoadBoolean("ReplaceSpaces") ?? false;
@@ -417,6 +424,7 @@ namespace CUETools.Processor
overwriteCUEData = sr.LoadBoolean("OverwriteCUEData") ?? false;
filenamesANSISafe = sr.LoadBoolean("FilenamesANSISafe") ?? true;
bruteForceDTL = sr.LoadBoolean("BruteForceDTL") ?? false;
createEACLOG = sr.LoadBoolean("createEACLOG") ?? false;
detectHDCD = sr.LoadBoolean("DetectHDCD") ?? true;
wait750FramesForHDCD = sr.LoadBoolean("Wait750FramesForHDCD") ?? true;
decodeHDCD = sr.LoadBoolean("DecodeHDCD") ?? false;
@@ -429,6 +437,8 @@ namespace CUETools.Processor
decodeHDCDtoLW16 = sr.LoadBoolean("DecodeHDCDToLossyWAV16") ?? false;
decodeHDCDto24bit = sr.LoadBoolean("DecodeHDCDTo24bit") ?? true;
disableAsm = sr.LoadBoolean("DisableAsm") ?? false;
udc1Extension = sr.Load("UDC1Extension") ?? "";
udc1Decoder = sr.Load("UDC1Decoder") ?? "";
udc1Params = sr.Load("UDC1Params") ?? "";
@@ -520,8 +530,6 @@ namespace CUETools.Processor
private uint? _minDataTrackLength;
private string _accurateRipId;
private string _accurateRipIdActual;
private string _mbDiscId;
private string _mbReleaseId;
private string _eacLog;
private string _cuePath;
private TagLib.File _fileInfo;
@@ -532,6 +540,7 @@ namespace CUETools.Processor
private CUEConfig _config;
private string _cddbDiscIdTag;
private bool _isCD;
private string _ripperLog;
private CDDriveReader _ripper;
private bool _isArchive;
private List<string> _archiveContents;
@@ -628,19 +637,24 @@ namespace CUETools.Processor
Artist = cdEntry.Artist;
Title = cdEntry.Title;
for (int i = 0; i < _toc.AudioTracks; i++)
{
Tracks[i].Title = cdEntry.Tracks[i].Title;
Tracks[i].Artist = cdEntry.Artist;
}
}
public List<object> LookupAlbumInfo()
{
List<object> Releases = new List<object>();
ShowProgress("Looking up album via freedb...", 0.0, 0.0, null, null);
FreedbHelper m_freedb = new FreedbHelper();
m_freedb.UserName = "gchudov";
m_freedb.Hostname = "gmail.com";
m_freedb.ClientName = "CUETools";
m_freedb.Version = "1.9.4";
m_freedb.Version = "1.9.5";
m_freedb.SetDefaultSiteAddress("freedb.org");
QueryResult queryResult;
@@ -660,16 +674,21 @@ namespace CUETools.Processor
if (code == FreedbHelper.ResponseCodes.CODE_210 ||
code == FreedbHelper.ResponseCodes.CODE_211)
{
int i = 0;
foreach (QueryResult qr in coll)
{
ShowProgress("Looking up album via freedb...", 0.0, (++i + 0.0) / coll.Count, null, null);
CheckStop();
code = m_freedb.Read(qr, out cdEntry);
if (code == FreedbHelper.ResponseCodes.CODE_210)
Releases.Add(cdEntry);
}
}
}
catch (Exception)
catch (Exception ex)
{
if (ex is StopException)
throw ex;
}
StringCollection DiscIds = new StringCollection();
@@ -801,7 +820,8 @@ namespace CUETools.Processor
iscdda2wavlog = true;
}
}
if (tocFromLog.TrackCount > 0 && tocFromLog[1].IsAudio)
if (tocFromLog.TrackCount == 0)
return null;
tocFromLog[1][0].Start = 0;
return tocFromLog;
}
@@ -1181,14 +1201,14 @@ namespace CUETools.Processor
}
// Store the audio filenames, generating generic names if necessary
_hasSingleFilename = (_sourcePaths.Count == 1);
_hasSingleFilename = _sourcePaths.Count == 1;
_singleFilename = _hasSingleFilename ? Path.GetFileName(_sourcePaths[0]) :
"Range.wav";
_hasHTOAFilename = (_sourcePaths.Count == (TrackCount + 1));
_htoaFilename = _hasHTOAFilename ? Path.GetFileName(_sourcePaths[0]) : "01.00.wav";
_hasTrackFilenames = (_sourcePaths.Count == TrackCount) || _hasHTOAFilename;
_hasTrackFilenames = !_hasEmbeddedCUESheet && !_hasSingleFilename && (_sourcePaths.Count == TrackCount || _hasHTOAFilename);
for (i = 0; i < TrackCount; i++) {
_trackFilenames.Add( _hasTrackFilenames ? Path.GetFileName(
_sourcePaths[i + (_hasHTOAFilename ? 1 : 0)]) : String.Format("{0:00}.wav", i + 1) );
@@ -1713,19 +1733,191 @@ namespace CUETools.Processor
return (int)audioSource.Length;
}
public static void WriteText(string path, string text)
public static void WriteText(string path, string text, Encoding encoding)
{
bool utf8Required = CUESheet.Encoding.GetString(CUESheet.Encoding.GetBytes(text)) != text;
StreamWriter sw1 = new StreamWriter(path, false, utf8Required ? Encoding.UTF8 : CUESheet.Encoding);
StreamWriter sw1 = new StreamWriter(path, false, encoding);
sw1.Write(text);
sw1.Close();
}
public string LOGContents()
public static void WriteText(string path, string text)
{
if (!_isCD || _ripper == null)
return null;
bool utf8Required = CUESheet.Encoding.GetString(CUESheet.Encoding.GetBytes(text)) != text;
WriteText(path, text, utf8Required ? Encoding.UTF8 : CUESheet.Encoding);
}
public string LOGContents
{
get
{
return _ripperLog;
}
}
#if !MONO
public void CreateExactAudioCopyLOG(string[] destPaths, CUEStyle style)
{
StringWriter logWriter = new StringWriter(CultureInfo.InvariantCulture);
string eacHeader = "Exact Audio Copy V0.99 prebeta 4 from 23. January 2008\r\n" +
"\r\n" +
"EAC extraction logfile from {0:d'.' MMMM yyyy', 'H':'mm}\r\n" +
"\r\n" +
"{1} / {2}\r\n" +
"\r\n" +
"Used drive : {3} Adapter: 1 ID: 0\r\n" +
"\r\n" +
"Read mode : {4}\r\n" +
"Utilize accurate stream : Yes\r\n" +
"Defeat audio cache : Yes\r\n" +
"Make use of C2 pointers : No\r\n" +
"\r\n" +
"Read offset correction : {5}\r\n" +
"Overread into Lead-In and Lead-Out : No\r\n" +
"Fill up missing offset samples with silence : Yes\r\n" +
"Delete leading and trailing silent blocks : No\r\n" +
"Null samples used in CRC calculations : Yes\r\n" +
"Used interface : Native Win32 interface for Win NT & 2000\r\n" +
"Gap handling : Appended to previous track\r\n" +
"\r\n" +
"Used output format : User Defined Encoder\r\n" +
"Selected bitrate : 768 kBit/s\r\n" +
"Quality : High\r\n" +
"Add ID3 tag : No\r\n" +
"Command line compressor : C:\\Program Files (x86)\\EAC\\FLAC\\FLAC.EXE\r\n" +
"Additional command line options : -8 -V -T \"ARTIST=%a\" -T \"TITLE=%t\" -T \"ALBUM=%g\" -T \"DATE=%y\" -T \"TRACKNUMBER=%n\" -T \"GENRE=%m\" %s -o %d\r\n";
logWriter.WriteLine(eacHeader,
DateTime.Now,
Artist, Title,
_ripper.EACName,
_ripper.CorrectionQuality > 0 ? "Secure" : "Burst",
_ripper.DriveOffset);
logWriter.WriteLine();
logWriter.WriteLine("TOC of the extracted CD");
logWriter.WriteLine();
logWriter.WriteLine(" Track | Start | Length | Start sector | End sector ");
logWriter.WriteLine(" ---------------------------------------------------------");
for (int track = 1; track <= _toc.TrackCount; track++)
logWriter.WriteLine("{0,9} | {1,8} | {2,8} | {3,8} | {4,8} ",
_toc[track].Number,
CDImageLayout.TimeToString("{0,2}:{1:00}.{2:00}", _toc[track].Start),
CDImageLayout.TimeToString("{0,2}:{1:00}.{2:00}", _toc[track].Length),
_toc[track].Start,
_toc[track].End);
logWriter.WriteLine();
bool htoaToFile = ((style == CUEStyle.GapsAppended) && _config.preserveHTOA &&
(_toc.Pregap != 0));
int accurateTracks = 0, knownTracks = 0;
if (style != CUEStyle.SingleFile && style != CUEStyle.SingleFileWithCUE)
{
logWriter.WriteLine();
for (int track = 0; track < _toc.AudioTracks; track++)
{
logWriter.WriteLine("Track {0,2}", track + 1);
logWriter.WriteLine();
logWriter.WriteLine(" Filename {0}", Path.ChangeExtension(Path.GetFullPath(destPaths[track + (htoaToFile ? 1 : 0)]), ".wav"));
if (_toc[track + _toc.FirstAudio].Pregap > 0 || track + _toc.FirstAudio == 1)
{
logWriter.WriteLine();
logWriter.WriteLine(" Pre-gap length {0}", CDImageLayout.TimeToString("0:{0:00}:{1:00}.{2:00}", _toc[track + _toc.FirstAudio].Pregap + (track + _toc.FirstAudio == 1 ? 150U : 0U)));
}
logWriter.WriteLine();
logWriter.WriteLine(" Peak level {0:F1} %", Tracks[track].PeakLevel / 327.68);
logWriter.WriteLine(" Track quality 100.0 %");
logWriter.WriteLine(" Test CRC {0:X8}", _arVerify.CRC32(track + 1));
logWriter.WriteLine(" Copy CRC {0:X8}", _arVerify.CRC32(track + 1));
if (_arVerify.Total(track) == 0)
logWriter.WriteLine(" Track not present in AccurateRip database");
else
{
knownTracks++;
if (_arVerify.Confidence(track) == 0)
logWriter.WriteLine(" Track cannot be verified as accurate (confidence {0}) [{1:X8}], AccurateRip returned [{2:X8}]", _arVerify.Total(track), _arVerify.CRC(track), _arVerify.DBCRC(track));
else
{
logWriter.WriteLine(" Accurately ripped (confidence {0}) [{1:X8}]", _arVerify.Confidence(track), _arVerify.CRC(track));
accurateTracks++;
}
}
logWriter.WriteLine(" Copy OK");
logWriter.WriteLine();
}
}
else
{
logWriter.WriteLine();
logWriter.WriteLine("Range status and errors");
logWriter.WriteLine();
logWriter.WriteLine("Selected range");
logWriter.WriteLine();
logWriter.WriteLine(" Filename {0}", Path.ChangeExtension(Path.GetFullPath(destPaths[0]), ".wav"));
logWriter.WriteLine();
logWriter.WriteLine(" Peak level {0:F1} %", Tracks[0].PeakLevel / 327.68); // TODO: max(tracks)
logWriter.WriteLine(" Range quality 100.0 %");
logWriter.WriteLine(" Test CRC {0:X8}", _arVerify.CRC32(0));
logWriter.WriteLine(" Copy CRC {0:X8}", _arVerify.CRC32(0));
logWriter.WriteLine(" Copy OK");
logWriter.WriteLine();
logWriter.WriteLine("No errors occurred");
logWriter.WriteLine();
logWriter.WriteLine();
logWriter.WriteLine("AccurateRip summary");
for (int track = 1; track <= _toc.TrackCount; track++)
{
if (_arVerify.Total(track - 1) == 0)
logWriter.WriteLine("Track {0,2} not present in AccurateRip database", track + 1);
else
{
knownTracks++;
if (_arVerify.Confidence(track - 1) == 0)
logWriter.WriteLine("Track {3,2} cannot be verified as accurate (confidence {0}) [{1:X8}], AccurateRip returned [{2:X8}]", _arVerify.Total(track - 1), _arVerify.CRC(track - 1), _arVerify.DBCRC(track - 1), track + 1);
else
{
logWriter.WriteLine("Track {2,2} Accurately ripped (confidence {0}) [{1:X8}]", _arVerify.Confidence(track - 1), _arVerify.CRC(track - 1), track + 1);
accurateTracks++;
}
}
}
}
logWriter.WriteLine();
if (knownTracks == 0)
logWriter.WriteLine("None of the tracks are present in the AccurateRip database");
else if (accurateTracks == 0)
logWriter.WriteLine("No tracks could be verified as accurate\r\nYou may have a different pressing from the one(s) in the database\r\n");
else if (accurateTracks == TrackCount)
logWriter.WriteLine("All tracks accurately ripped");
else
{
logWriter.WriteLine("{0,2} track(s) accurately ripped", accurateTracks);
if (TrackCount - knownTracks > 0)
logWriter.WriteLine("{0,2} track(s) not present in the AccurateRip database", TrackCount - knownTracks);
logWriter.WriteLine();
logWriter.WriteLine("Some tracks could not be verified as accurate");
}
logWriter.WriteLine();
if (style != CUEStyle.SingleFile && style != CUEStyle.SingleFileWithCUE)
{
logWriter.WriteLine("No errors occurred");
logWriter.WriteLine();
}
logWriter.WriteLine("End of status report");
logWriter.Close();
_ripperLog = logWriter.ToString();
}
#endif
public void CreateRipperLOG(string[] destPaths, CUEStyle style)
{
if (!_isCD || _ripper == null || _ripperLog != null)
return;
#if !MONO
if (_config.createEACLOG)
{
CreateExactAudioCopyLOG(destPaths, style);
return;
}
StringWriter logWriter = new StringWriter();
logWriter.WriteLine("{0}", CDDriveReader.RipperVersion());
logWriter.WriteLine("Extraction logfile from : {0}", DateTime.Now);
@@ -1754,12 +1946,24 @@ namespace CUETools.Processor
logWriter.WriteLine(" Track | Start | Length | Start sector | End sector");
logWriter.WriteLine(" ---------------------------------------------------------");
for (int track = 1; track <= _toc.TrackCount; track++)
logWriter.WriteLine("{0,9} | {1,8} | {2,8} | {3,9} | {4,9}",
logWriter.WriteLine("{0,9} | {1,8} | {2,8} | {3,8} | {4,8}",
_toc[track].Number,
_toc[track].StartMSF,
_toc[track].LengthMSF,
_toc[track].Start,
_toc[track].End);
logWriter.WriteLine();
logWriter.WriteLine(" Track | Pregap | Indexes");
logWriter.WriteLine(" ---------------------------------------------------------");
for (int track = 1; track <= _toc.TrackCount; track++)
logWriter.WriteLine("{0,9} | {1,8} | {2,2}",
_toc[track].Number,
CDImageLayout.TimeToString(_toc[track].Pregap + (track == 1 ? 150U : 0U)),
_toc[track].LastIndex);
logWriter.WriteLine();
logWriter.WriteLine("Destination files");
foreach (string path in destPaths)
logWriter.WriteLine(" {0}", path);
bool wereErrors = false;
for (int iTrack = 0; iTrack < _toc.AudioTracks; iTrack++)
{
@@ -1795,9 +1999,7 @@ namespace CUETools.Processor
logWriter.WriteLine();
logWriter.WriteLine("End of status report");
logWriter.Close();
return logWriter.ToString();
#else
return null;
_ripperLog = logWriter.ToString();
#endif
}
@@ -2085,7 +2287,27 @@ namespace CUETools.Processor
}
}
else
{
//CDImageLayout toc2 = new CDImageLayout(_toc);
//bool found = false;
//for (uint len = 0; len < 150; len++)
//{
// toc2[toc2.TrackCount].Length = _toc[_toc.TrackCount].Length + len;
// string id = AccurateRipVerify.CalculateAccurateRipId(toc2);
// _arVerify.ContactAccurateRip(id);
// if (_arVerify.AccResult != HttpStatusCode.NotFound)
// {
// _accurateRipId = id;
// found = true;
// break;
// }
// ShowProgress((string)"Contacting AccurateRip database...", 0, len / 150.0, null, null);
// CheckStop();
// lock (this) { Monitor.Wait(this, 1000); }
//}
//if (!found)
_arVerify.ContactAccurateRip(_accurateRipId);
}
if (_accurateRipMode == AccurateRipMode.Verify)
{
@@ -2167,9 +2389,9 @@ namespace CUETools.Processor
destLengths = CalculateAudioFileLengths(style); // need to recalc, might have changed after scanning the CD
if (_outputFormat != OutputAudioFormat.NoAudio || _accurateRipMode == AccurateRipMode.Verify || _accurateRipMode == AccurateRipMode.VerifyPlusCRCs)
WriteAudioFilesPass(dir, style, destPaths, destLengths, htoaToFile, _accurateRipMode == AccurateRipMode.Verify || _accurateRipMode == AccurateRipMode.VerifyPlusCRCs);
CreateRipperLOG(destPaths, style);
if (_accurateRipMode != AccurateRipMode.Verify && _accurateRipMode != AccurateRipMode.VerifyPlusCRCs)
{
string logContents = LOGContents();
string cueContents = CUESheetContents(style);
uint tracksMatch = 0;
int bestOffset = 0;
@@ -2179,8 +2401,8 @@ namespace CUETools.Processor
_arVerify.AccResult == HttpStatusCode.OK)
FindBestOffset(1, true, out tracksMatch, out bestOffset);
if (logContents != null)
WriteText(Path.ChangeExtension(_cuePath, ".log"), logContents);
if (_ripperLog != null)
WriteText(Path.ChangeExtension(_cuePath, ".log"), _ripperLog, _config.createEACLOG ? CUESheet.Encoding : Encoding.UTF8);
else
if (_eacLog != null && _config.extractLog)
WriteText(Path.ChangeExtension(_cuePath, ".log"), _eacLog);
@@ -2193,24 +2415,30 @@ namespace CUETools.Processor
WriteText(_cuePath, cueContents);
if (_outputFormat != OutputAudioFormat.NoAudio)
{
NameValueCollection tags = GenerateAlbumTags(bestOffset, style == CUEStyle.SingleFileWithCUE);
NameValueCollection tags = GenerateAlbumTags(bestOffset, style == CUEStyle.SingleFileWithCUE, _ripperLog ?? _eacLog);
TagLib.UserDefined.AdditionalFileTypes.Config = _config;
TagLib.File fileInfo = TagLib.File.Create(new TagLib.File.LocalFileAbstraction(destPaths[0]));
if (Tagging.UpdateTags(fileInfo, tags, _config))
{
uint year;
if (_tracks[0]._fileInfo != null || _fileInfo != null)
{
fileInfo.Tag.DiscCount = (_tracks[0]._fileInfo ?? _fileInfo).Tag.DiscCount; // TODO: GetCommonTag?
fileInfo.Tag.Disc = (_tracks[0]._fileInfo ?? _fileInfo).Tag.Disc;
//fileInfo.Tag.Title = null;
//fileInfo.Tag.Performers = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.Performers;
//if (fileInfo.Tag.Performers.Length == 0) fileInfo.Tag.Performers = new string[] { _tracks[iTrack].Artist != "" ? _tracks[iTrack].Artist : Artist };
fileInfo.Tag.AlbumArtists = (_tracks[0]._fileInfo ?? _fileInfo).Tag.AlbumArtists;
if (fileInfo.Tag.AlbumArtists.Length == 0) fileInfo.Tag.AlbumArtists = new string[] { Artist };
fileInfo.Tag.Album = (_tracks[0]._fileInfo ?? _fileInfo).Tag.Album ?? Title;
uint year = (_tracks[0]._fileInfo ?? _fileInfo).Tag.Year;
fileInfo.Tag.Year = year != 0 ? year : ("" != Year && uint.TryParse(Year, out year)) ? year : 0;
fileInfo.Tag.Album = (_tracks[0]._fileInfo ?? _fileInfo).Tag.Album;
fileInfo.Tag.Year = (_tracks[0]._fileInfo ?? _fileInfo).Tag.Year;
fileInfo.Tag.Genres = (_tracks[0]._fileInfo ?? _fileInfo).Tag.Genres;
if (fileInfo.Tag.Genres.Length == 0) fileInfo.Tag.Genres = new string[] { Genre };
fileInfo.Tag.Pictures = (_tracks[0]._fileInfo ?? _fileInfo).Tag.Pictures;
}
if (fileInfo.Tag.Album == null && Title != "") fileInfo.Tag.Album = Title;
//fileInfo.Tag.Title = null;
//if (fileInfo.Tag.Performers.Length == 0) fileInfo.Tag.Performers = new string[] { _tracks[iTrack].Artist != "" ? _tracks[iTrack].Artist : Artist };
if (fileInfo.Tag.AlbumArtists.Length == 0 && Artist != "") fileInfo.Tag.AlbumArtists = new string[] { Artist };
if (fileInfo.Tag.Genres.Length == 0 && Genre != "") fileInfo.Tag.Genres = new string[] { Genre };
if (fileInfo.Tag.Year == 0 && Year != "" && uint.TryParse(Year, out year))
fileInfo.Tag.Year = year;
fileInfo.Save();
}
}
@@ -2229,21 +2457,28 @@ namespace CUETools.Processor
TagLib.File fileInfo = TagLib.File.Create(new TagLib.File.LocalFileAbstraction(path));
if (Tagging.UpdateTags(fileInfo, tags, _config))
{
fileInfo.Tag.TrackCount = (uint) TrackCount;
fileInfo.Tag.Track = (uint) iTrack + 1;
uint year;
if (_tracks[iTrack]._fileInfo != null || _fileInfo != null)
{
fileInfo.Tag.DiscCount = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.DiscCount;
fileInfo.Tag.Disc = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.Disc;
fileInfo.Tag.Title = _tracks[iTrack]._fileInfo != null ? _tracks[iTrack]._fileInfo.Tag.Title : _tracks[iTrack].Title;
fileInfo.Tag.Performers = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.Performers;
if (fileInfo.Tag.Performers.Length == 0) fileInfo.Tag.Performers = new string[] { _tracks[iTrack].Artist != "" ? _tracks[iTrack].Artist : Artist };
fileInfo.Tag.AlbumArtists = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.AlbumArtists;
if (fileInfo.Tag.AlbumArtists.Length == 0) fileInfo.Tag.AlbumArtists = new string[] { Artist };
fileInfo.Tag.Album = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.Album ?? Title;
uint year = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.Year;
fileInfo.Tag.Year = year != 0 ? year : ("" != Year && uint.TryParse(Year, out year)) ? year : 0;
fileInfo.Tag.Album = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.Album;
fileInfo.Tag.Year = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.Year;
fileInfo.Tag.Genres = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.Genres;
if (fileInfo.Tag.Genres.Length == 0) fileInfo.Tag.Genres = new string[] { Genre };
fileInfo.Tag.Pictures = (_tracks[iTrack]._fileInfo ?? _fileInfo).Tag.Pictures;
}
fileInfo.Tag.TrackCount = (uint)TrackCount;
fileInfo.Tag.Track = (uint)iTrack + 1;
fileInfo.Tag.Title = _tracks[iTrack]._fileInfo != null ? _tracks[iTrack]._fileInfo.Tag.Title : _tracks[iTrack].Title;
if (fileInfo.Tag.Album == null && Title != "") fileInfo.Tag.Album = Title;
if (fileInfo.Tag.Performers.Length == 0 && _tracks[iTrack].Artist != "") fileInfo.Tag.Performers = new string[] { _tracks[iTrack].Artist };
if (fileInfo.Tag.Performers.Length == 0 && Artist != "") fileInfo.Tag.Performers = new string[] { Artist };
if (fileInfo.Tag.AlbumArtists.Length == 0 && Artist != "") fileInfo.Tag.AlbumArtists = new string[] { Artist };
if (fileInfo.Tag.Genres.Length == 0 && Genre != "") fileInfo.Tag.Genres = new string[] { Genre };
if (fileInfo.Tag.Year == 0 && Year != "" && uint.TryParse(Year, out year))
fileInfo.Tag.Year = year;
fileInfo.Save();
}
}
@@ -2366,7 +2601,7 @@ namespace CUETools.Processor
return destTags;
}
private NameValueCollection GenerateAlbumTags(int bestOffset, bool fWithCUE)
private NameValueCollection GenerateAlbumTags(int bestOffset, bool fWithCUE, string logContents)
{
NameValueCollection destTags = new NameValueCollection();
@@ -2426,11 +2661,8 @@ namespace CUETools.Processor
destTags.Remove("LOG");
destTags.Remove("LOGFILE");
destTags.Remove("EACLOG");
string logContents = LOGContents();
if (logContents != null)
destTags.Add("LOG", logContents);
else if (_eacLog != null)
destTags.Add("LOG", _eacLog);
}
if (_config.writeArTagsOnConvert)
@@ -2631,6 +2863,8 @@ namespace CUETools.Processor
}
if (_accurateRipMode != AccurateRipMode.None)
_arVerify.Write(sampleBuffer, copyCount);
if (iTrack > 0 || iIndex > 0)
Tracks[iTrack + (iIndex == 0 ? -1 : 0)].MeasurePeakLevel(sampleBuffer, copyCount);
currentOffset += copyCount;
diskOffset += copyCount;
@@ -2670,12 +2904,8 @@ namespace CUETools.Processor
{
if (_toc[_toc.FirstAudio + iTrack].ISRC != null)
General.SetCUELine(_tracks[iTrack].Attributes, "ISRC", _toc[_toc.FirstAudio + iTrack].ISRC, false);
//if (_toc[_toc.FirstAudio + iTrack].DCP || _toc[_toc.FirstAudio + iTrack].PreEmphasis)
//cueWriter.WriteLine(" FLAGS{0}{1}", audioSource.TOC[track].PreEmphasis ? " PRE" : "", audioSource.TOC[track].DCP ? " DCP" : "");
if (_toc[_toc.FirstAudio + iTrack].DCP)
General.SetCUELine(_tracks[iTrack].Attributes, "FLAGS", "DCP", false);
if (_toc[_toc.FirstAudio + iTrack].PreEmphasis)
General.SetCUELine(_tracks[iTrack].Attributes, "FLAGS", "PRE", false);
if (_toc[_toc.FirstAudio + iTrack].DCP || _toc[_toc.FirstAudio + iTrack].PreEmphasis)
General.SetCUELine(_tracks[iTrack].Attributes, "FLAGS", (_toc[_toc.FirstAudio + iTrack].PreEmphasis ? " PRE" : "") + (_toc[_toc.FirstAudio + iTrack].DCP ? " DCP" : ""), false);
}
}
#endif
@@ -3303,11 +3533,29 @@ namespace CUETools.Processor
public class TrackInfo {
private List<CUELine> _attributes;
private int _peakLevel;
public TagLib.File _fileInfo;
public TrackInfo() {
_attributes = new List<CUELine>();
_fileInfo = null;
_peakLevel = 0;
}
public void MeasurePeakLevel(int[,] samplesBuffer, uint sampleCount)
{
for (uint i = 0; i < sampleCount; i++)
for (uint j = 0; j < 2; j++)
if (_peakLevel < Math.Abs(samplesBuffer[i, j]))
_peakLevel = Math.Abs(samplesBuffer[i, j]);
}
public int PeakLevel
{
get
{
return _peakLevel;
}
}
public List<CUELine> Attributes {

View File

@@ -201,10 +201,7 @@ namespace CUETools.Ripper.SCSI
m_device = new Device(m_logger);
if (!m_device.Open(m_device_letter))
{
m_device = null;
throw new Exception("Open failed: SCSI error");
}
throw new Exception("Open failed: " + WinDev.Win32ErrorToString(m_device.LastError));
// Get device info
st = m_device.Inquiry(out m_inqury_result);
@@ -1088,6 +1085,14 @@ namespace CUETools.Ripper.SCSI
}
}
public string EACName
{
get
{
return m_inqury_result.VendorIdentification.TrimEnd(' ', '\0') + " " + m_inqury_result.ProductIdentification.TrimEnd(' ', '\0');
}
}
public ulong Position
{
get

View File

@@ -481,6 +481,7 @@ Global
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|x64.ActiveCfg = Release|x64
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|x64.Build.0 = Release|x64
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|x86.ActiveCfg = Release|Any CPU
{5ADCFD6D-BFEA-4B10-BB45-9083BBB56AF4}.Release|x86.Build.0 = Release|Any CPU
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Any CPU.ActiveCfg = Debug|Win32
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Mixed Platforms.ActiveCfg = Debug|x64
{B3DF599C-1C8F-451D-91E4-DD766210DA1F}.Debug|Mixed Platforms.Build.0 = Debug|x64

View File

@@ -12,12 +12,13 @@ namespace JDP {
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (args.Length > 1 && (args[0] == "/verify" || args[0] == "/convert" || args[0] == "/fix"))
if (args.Length > 1 && (args[0] == "/verify" || args[0] == "/crc" || args[0] == "/convert" || args[0] == "/fix"))
{
frmBatch batch = new frmBatch();
batch.AccurateRip =
args[0] == "/convert" ? AccurateRipMode.VerifyAndConvert :
args[0] == "/fix" ? AccurateRipMode.VerifyThenConvert :
args[0] == "/crc" ? AccurateRipMode.VerifyPlusCRCs :
AccurateRipMode.Verify;
if (args.Length == 2 && args[1][0] != '@')

View File

@@ -37,62 +37,43 @@ namespace JDP
//
// linkLabel1
//
this.linkLabel1.AccessibleDescription = null;
this.linkLabel1.AccessibleName = null;
resources.ApplyResources(this.linkLabel1, "linkLabel1");
this.linkLabel1.Font = null;
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true;
this.linkLabel1.UseCompatibleTextRendering = true;
//
// textBox1
//
this.textBox1.AccessibleDescription = null;
this.textBox1.AccessibleName = null;
resources.ApplyResources(this.textBox1, "textBox1");
this.textBox1.BackColor = System.Drawing.SystemColors.Control;
this.textBox1.BackgroundImage = null;
this.textBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.textBox1.Font = null;
resources.ApplyResources(this.textBox1, "textBox1");
this.textBox1.Name = "textBox1";
this.textBox1.ReadOnly = true;
//
// button1
//
this.button1.AccessibleDescription = null;
this.button1.AccessibleName = null;
resources.ApplyResources(this.button1, "button1");
this.button1.BackgroundImage = null;
this.button1.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.button1.Font = null;
resources.ApplyResources(this.button1, "button1");
this.button1.Name = "button1";
this.button1.UseVisualStyleBackColor = true;
//
// linkLabel2
//
this.linkLabel2.AccessibleDescription = null;
this.linkLabel2.AccessibleName = null;
resources.ApplyResources(this.linkLabel2, "linkLabel2");
this.linkLabel2.Font = null;
this.linkLabel2.Name = "linkLabel2";
this.linkLabel2.TabStop = true;
this.linkLabel2.UseCompatibleTextRendering = true;
//
// frmAbout
//
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.CancelButton = this.button1;
this.Controls.Add(this.linkLabel2);
this.Controls.Add(this.button1);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.linkLabel1);
this.Font = null;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.Icon = null;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "frmAbout";

View File

@@ -117,92 +117,53 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 17</value>
</data>
<data name="&gt;&gt;button1.Name" xml:space="preserve">
<value>button1</value>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkLabel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="linkLabel2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>180, 228</value>
</data>
<data name="&gt;&gt;linkLabel1.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="linkLabel2.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms">
<value>36, 28</value>
</data>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
</data>
<data name="linkLabel1.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms">
<value>27, 22</value>
</data>
<data name="linkLabel2.Location" type="System.Drawing.Point, System.Drawing">
<value>46, 195</value>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 10</value>
</data>
<data name="linkLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>346, 17</value>
<data name="linkLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>265, 17</value>
</data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="&gt;&gt;linkLabel2.ZOrder" xml:space="preserve">
<data name="linkLabel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="textBox1.Multiline" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="button1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;textBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button1.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;linkLabel2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="linkLabel2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>415, 151</value>
</data>
<data name="linkLabel2.Text" xml:space="preserve">
<value>Updates and support can be found at http://www.hydrogenaudio.org.</value>
</data>
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>439, 263</value>
</data>
<data name="linkLabel1.Text" xml:space="preserve">
<value>Copyright 2006-2008 Moitah http://www.moitah.net/.</value>
</data>
<data name="&gt;&gt;linkLabel2.Name" xml:space="preserve">
<value>linkLabel2</value>
<data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="button1.Text" xml:space="preserve">
<value>Close</value>
<data name="&gt;&gt;linkLabel1.Name" xml:space="preserve">
<value>linkLabel1</value>
</data>
<data name="&gt;&gt;linkLabel1.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;linkLabel1.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 41</value>
</data>
<data name="textBox1.Multiline" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="textBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>415, 151</value>
</data>
<data name="textBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="textBox1.Text" xml:space="preserve">
<value>AccurateRip, Monkey's Audio, Apple Lossless, RAR archives, tags
@@ -216,61 +177,100 @@ unrar.dll (c) Alexander Roshal
Unrar.cs (c) Michael A. McCloskey
hdcd.dll (c) Christopher Key</value>
</data>
<data name="textBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>12, 41</value>
</data>
<data name="&gt;&gt;linkLabel1.Name" xml:space="preserve">
<value>linkLabel1</value>
</data>
<data name="linkLabel2.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>About CUETools v1.9.5</value>
</data>
<data name="linkLabel1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="&gt;&gt;linkLabel1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="textBox1.TextAlign" type="System.Windows.Forms.HorizontalAlignment, System.Windows.Forms">
<value>Center</value>
</data>
<data name="linkLabel1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
<data name="&gt;&gt;textBox1.Name" xml:space="preserve">
<value>textBox1</value>
</data>
<data name="linkLabel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<data name="&gt;&gt;textBox1.Type" xml:space="preserve">
<value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="&gt;&gt;button1.Parent" xml:space="preserve">
<data name="&gt;&gt;textBox1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="linkLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>87, 10</value>
</data>
<data name="linkLabel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="&gt;&gt;textBox1.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmAbout</value>
<data name="button1.Location" type="System.Drawing.Point, System.Drawing">
<value>180, 228</value>
</data>
<data name="textBox1.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<data name="button1.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
</data>
<data name="button1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="button1.Text" xml:space="preserve">
<value>Close</value>
</data>
<data name="&gt;&gt;button1.Name" xml:space="preserve">
<value>button1</value>
</data>
<data name="&gt;&gt;button1.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;button1.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;button1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="linkLabel2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="linkLabel2.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="linkLabel2.LinkArea" type="System.Windows.Forms.LinkArea, System.Windows.Forms">
<value>36, 28</value>
</data>
<data name="linkLabel2.Location" type="System.Drawing.Point, System.Drawing">
<value>46, 195</value>
</data>
<data name="linkLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>346, 17</value>
</data>
<data name="linkLabel2.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="linkLabel2.Text" xml:space="preserve">
<value>Updates and support can be found at http://www.hydrogenaudio.org.</value>
</data>
<data name="linkLabel2.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="&gt;&gt;linkLabel2.Name" xml:space="preserve">
<value>linkLabel2</value>
</data>
<data name="&gt;&gt;linkLabel2.Type" xml:space="preserve">
<value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;linkLabel2.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;linkLabel2.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
<value>6, 13</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>439, 263</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>About CUETools v1.9.5a</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmAbout</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
</root>

View File

@@ -132,7 +132,7 @@ namespace JDP
else
cueName = Path.GetFileNameWithoutExtension(pathIn) + ".cue";
bool outputAudio = _accurateRip != AccurateRipMode.Verify;
bool outputAudio = _accurateRip != AccurateRipMode.Verify && _accurateRip != AccurateRipMode.VerifyPlusCRCs;
cueSheet.Open(pathIn);
if (outputAudio)
{
@@ -173,7 +173,7 @@ namespace JDP
progressBar2.Value = 0;
if (cueSheet.IsCD)
{
textBox1.Text += cueSheet.LOGContents();
textBox1.Text += cueSheet.LOGContents;
textBox1.Show();
}
else if (cueSheet.AccurateRip != AccurateRipMode.None)
@@ -270,7 +270,7 @@ namespace JDP
if (_reducePriority)
Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.Idle;
if (_accurateRip != AccurateRipMode.Verify)
if (_accurateRip != AccurateRipMode.Verify && _accurateRip != AccurateRipMode.VerifyPlusCRCs)
txtOutputFile.Show();
StartConvert();

View File

@@ -104,125 +104,78 @@ namespace JDP {
//
// btnConvert
//
this.btnConvert.AccessibleDescription = null;
this.btnConvert.AccessibleName = null;
resources.ApplyResources(this.btnConvert, "btnConvert");
this.btnConvert.BackgroundImage = null;
this.btnConvert.Font = null;
this.btnConvert.Name = "btnConvert";
this.toolTip1.SetToolTip(this.btnConvert, resources.GetString("btnConvert.ToolTip"));
this.btnConvert.UseVisualStyleBackColor = true;
this.btnConvert.Click += new System.EventHandler(this.btnConvert_Click);
//
// grpCUEPaths
//
this.grpCUEPaths.AccessibleDescription = null;
this.grpCUEPaths.AccessibleName = null;
resources.ApplyResources(this.grpCUEPaths, "grpCUEPaths");
this.grpCUEPaths.BackgroundImage = null;
this.grpCUEPaths.Controls.Add(this.btnBrowseOutput);
this.grpCUEPaths.Controls.Add(this.btnBrowseInput);
this.grpCUEPaths.Controls.Add(this.lblOutput);
this.grpCUEPaths.Controls.Add(this.lblInput);
this.grpCUEPaths.Controls.Add(this.txtOutputPath);
this.grpCUEPaths.Controls.Add(this.txtInputPath);
this.grpCUEPaths.Font = null;
resources.ApplyResources(this.grpCUEPaths, "grpCUEPaths");
this.grpCUEPaths.Name = "grpCUEPaths";
this.grpCUEPaths.TabStop = false;
this.toolTip1.SetToolTip(this.grpCUEPaths, resources.GetString("grpCUEPaths.ToolTip"));
//
// btnBrowseOutput
//
this.btnBrowseOutput.AccessibleDescription = null;
this.btnBrowseOutput.AccessibleName = null;
resources.ApplyResources(this.btnBrowseOutput, "btnBrowseOutput");
this.btnBrowseOutput.BackgroundImage = null;
this.btnBrowseOutput.Font = null;
this.btnBrowseOutput.Name = "btnBrowseOutput";
this.toolTip1.SetToolTip(this.btnBrowseOutput, resources.GetString("btnBrowseOutput.ToolTip"));
this.btnBrowseOutput.UseVisualStyleBackColor = true;
this.btnBrowseOutput.Click += new System.EventHandler(this.btnBrowseOutput_Click);
//
// btnBrowseInput
//
this.btnBrowseInput.AccessibleDescription = null;
this.btnBrowseInput.AccessibleName = null;
resources.ApplyResources(this.btnBrowseInput, "btnBrowseInput");
this.btnBrowseInput.BackgroundImage = null;
this.btnBrowseInput.Font = null;
this.btnBrowseInput.Name = "btnBrowseInput";
this.toolTip1.SetToolTip(this.btnBrowseInput, resources.GetString("btnBrowseInput.ToolTip"));
this.btnBrowseInput.UseVisualStyleBackColor = true;
this.btnBrowseInput.Click += new System.EventHandler(this.btnBrowseInput_Click);
//
// lblOutput
//
this.lblOutput.AccessibleDescription = null;
this.lblOutput.AccessibleName = null;
resources.ApplyResources(this.lblOutput, "lblOutput");
this.lblOutput.Font = null;
this.lblOutput.Name = "lblOutput";
this.toolTip1.SetToolTip(this.lblOutput, resources.GetString("lblOutput.ToolTip"));
//
// lblInput
//
this.lblInput.AccessibleDescription = null;
this.lblInput.AccessibleName = null;
resources.ApplyResources(this.lblInput, "lblInput");
this.lblInput.Font = null;
this.lblInput.Name = "lblInput";
this.toolTip1.SetToolTip(this.lblInput, resources.GetString("lblInput.ToolTip"));
//
// txtOutputPath
//
this.txtOutputPath.AccessibleDescription = null;
this.txtOutputPath.AccessibleName = null;
this.txtOutputPath.AllowDrop = true;
resources.ApplyResources(this.txtOutputPath, "txtOutputPath");
this.txtOutputPath.BackgroundImage = null;
this.txtOutputPath.Font = null;
this.txtOutputPath.Name = "txtOutputPath";
this.toolTip1.SetToolTip(this.txtOutputPath, resources.GetString("txtOutputPath.ToolTip"));
this.txtOutputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop);
this.txtOutputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter);
//
// txtInputPath
//
this.txtInputPath.AccessibleDescription = null;
this.txtInputPath.AccessibleName = null;
this.txtInputPath.AllowDrop = true;
resources.ApplyResources(this.txtInputPath, "txtInputPath");
this.txtInputPath.BackgroundImage = null;
this.txtInputPath.Font = null;
this.txtInputPath.Name = "txtInputPath";
this.toolTip1.SetToolTip(this.txtInputPath, resources.GetString("txtInputPath.ToolTip"));
this.txtInputPath.TextChanged += new System.EventHandler(this.txtInputPath_TextChanged);
this.txtInputPath.DragDrop += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragDrop);
this.txtInputPath.DragEnter += new System.Windows.Forms.DragEventHandler(this.PathTextBox_DragEnter);
//
// grpOutputStyle
//
this.grpOutputStyle.AccessibleDescription = null;
this.grpOutputStyle.AccessibleName = null;
resources.ApplyResources(this.grpOutputStyle, "grpOutputStyle");
this.grpOutputStyle.BackgroundImage = null;
this.grpOutputStyle.Controls.Add(this.rbEmbedCUE);
this.grpOutputStyle.Controls.Add(this.rbGapsLeftOut);
this.grpOutputStyle.Controls.Add(this.rbGapsPrepended);
this.grpOutputStyle.Controls.Add(this.rbGapsAppended);
this.grpOutputStyle.Controls.Add(this.rbSingleFile);
this.grpOutputStyle.Font = null;
resources.ApplyResources(this.grpOutputStyle, "grpOutputStyle");
this.grpOutputStyle.Name = "grpOutputStyle";
this.grpOutputStyle.TabStop = false;
this.toolTip1.SetToolTip(this.grpOutputStyle, resources.GetString("grpOutputStyle.ToolTip"));
//
// rbEmbedCUE
//
this.rbEmbedCUE.AccessibleDescription = null;
this.rbEmbedCUE.AccessibleName = null;
resources.ApplyResources(this.rbEmbedCUE, "rbEmbedCUE");
this.rbEmbedCUE.BackgroundImage = null;
this.rbEmbedCUE.Font = null;
this.rbEmbedCUE.Name = "rbEmbedCUE";
this.rbEmbedCUE.TabStop = true;
this.toolTip1.SetToolTip(this.rbEmbedCUE, resources.GetString("rbEmbedCUE.ToolTip"));
@@ -231,45 +184,29 @@ namespace JDP {
//
// rbGapsLeftOut
//
this.rbGapsLeftOut.AccessibleDescription = null;
this.rbGapsLeftOut.AccessibleName = null;
resources.ApplyResources(this.rbGapsLeftOut, "rbGapsLeftOut");
this.rbGapsLeftOut.BackgroundImage = null;
this.rbGapsLeftOut.Font = null;
this.rbGapsLeftOut.Name = "rbGapsLeftOut";
this.toolTip1.SetToolTip(this.rbGapsLeftOut, resources.GetString("rbGapsLeftOut.ToolTip"));
this.rbGapsLeftOut.UseVisualStyleBackColor = true;
//
// rbGapsPrepended
//
this.rbGapsPrepended.AccessibleDescription = null;
this.rbGapsPrepended.AccessibleName = null;
resources.ApplyResources(this.rbGapsPrepended, "rbGapsPrepended");
this.rbGapsPrepended.BackgroundImage = null;
this.rbGapsPrepended.Font = null;
this.rbGapsPrepended.Name = "rbGapsPrepended";
this.toolTip1.SetToolTip(this.rbGapsPrepended, resources.GetString("rbGapsPrepended.ToolTip"));
this.rbGapsPrepended.UseVisualStyleBackColor = true;
//
// rbGapsAppended
//
this.rbGapsAppended.AccessibleDescription = null;
this.rbGapsAppended.AccessibleName = null;
resources.ApplyResources(this.rbGapsAppended, "rbGapsAppended");
this.rbGapsAppended.BackgroundImage = null;
this.rbGapsAppended.Font = null;
this.rbGapsAppended.Name = "rbGapsAppended";
this.toolTip1.SetToolTip(this.rbGapsAppended, resources.GetString("rbGapsAppended.ToolTip"));
this.rbGapsAppended.UseVisualStyleBackColor = true;
//
// rbSingleFile
//
this.rbSingleFile.AccessibleDescription = null;
this.rbSingleFile.AccessibleName = null;
resources.ApplyResources(this.rbSingleFile, "rbSingleFile");
this.rbSingleFile.BackgroundImage = null;
this.rbSingleFile.Checked = true;
this.rbSingleFile.Font = null;
this.rbSingleFile.Name = "rbSingleFile";
this.rbSingleFile.TabStop = true;
this.toolTip1.SetToolTip(this.rbSingleFile, resources.GetString("rbSingleFile.ToolTip"));
@@ -277,22 +214,13 @@ namespace JDP {
//
// btnAbout
//
this.btnAbout.AccessibleDescription = null;
this.btnAbout.AccessibleName = null;
resources.ApplyResources(this.btnAbout, "btnAbout");
this.btnAbout.BackgroundImage = null;
this.btnAbout.Font = null;
this.btnAbout.Name = "btnAbout";
this.toolTip1.SetToolTip(this.btnAbout, resources.GetString("btnAbout.ToolTip"));
this.btnAbout.UseVisualStyleBackColor = true;
this.btnAbout.Click += new System.EventHandler(this.btnAbout_Click);
//
// grpOutputPathGeneration
//
this.grpOutputPathGeneration.AccessibleDescription = null;
this.grpOutputPathGeneration.AccessibleName = null;
resources.ApplyResources(this.grpOutputPathGeneration, "grpOutputPathGeneration");
this.grpOutputPathGeneration.BackgroundImage = null;
this.grpOutputPathGeneration.Controls.Add(this.txtCustomFormat);
this.grpOutputPathGeneration.Controls.Add(this.rbCustomFormat);
this.grpOutputPathGeneration.Controls.Add(this.txtCreateSubdirectory);
@@ -300,100 +228,60 @@ namespace JDP {
this.grpOutputPathGeneration.Controls.Add(this.rbCreateSubdirectory);
this.grpOutputPathGeneration.Controls.Add(this.rbAppendFilename);
this.grpOutputPathGeneration.Controls.Add(this.txtAppendFilename);
this.grpOutputPathGeneration.Font = null;
resources.ApplyResources(this.grpOutputPathGeneration, "grpOutputPathGeneration");
this.grpOutputPathGeneration.Name = "grpOutputPathGeneration";
this.grpOutputPathGeneration.TabStop = false;
this.toolTip1.SetToolTip(this.grpOutputPathGeneration, resources.GetString("grpOutputPathGeneration.ToolTip"));
//
// txtCustomFormat
//
this.txtCustomFormat.AccessibleDescription = null;
this.txtCustomFormat.AccessibleName = null;
resources.ApplyResources(this.txtCustomFormat, "txtCustomFormat");
this.txtCustomFormat.BackgroundImage = null;
this.txtCustomFormat.Font = null;
this.txtCustomFormat.Name = "txtCustomFormat";
this.toolTip1.SetToolTip(this.txtCustomFormat, resources.GetString("txtCustomFormat.ToolTip"));
this.txtCustomFormat.TextChanged += new System.EventHandler(this.txtCustomFormat_TextChanged);
//
// rbCustomFormat
//
this.rbCustomFormat.AccessibleDescription = null;
this.rbCustomFormat.AccessibleName = null;
resources.ApplyResources(this.rbCustomFormat, "rbCustomFormat");
this.rbCustomFormat.BackgroundImage = null;
this.rbCustomFormat.Font = null;
this.rbCustomFormat.Name = "rbCustomFormat";
this.rbCustomFormat.TabStop = true;
this.toolTip1.SetToolTip(this.rbCustomFormat, resources.GetString("rbCustomFormat.ToolTip"));
this.rbCustomFormat.UseVisualStyleBackColor = true;
this.rbCustomFormat.CheckedChanged += new System.EventHandler(this.rbCustomFormat_CheckedChanged);
//
// txtCreateSubdirectory
//
this.txtCreateSubdirectory.AccessibleDescription = null;
this.txtCreateSubdirectory.AccessibleName = null;
resources.ApplyResources(this.txtCreateSubdirectory, "txtCreateSubdirectory");
this.txtCreateSubdirectory.BackgroundImage = null;
this.txtCreateSubdirectory.Font = null;
this.txtCreateSubdirectory.Name = "txtCreateSubdirectory";
this.toolTip1.SetToolTip(this.txtCreateSubdirectory, resources.GetString("txtCreateSubdirectory.ToolTip"));
this.txtCreateSubdirectory.TextChanged += new System.EventHandler(this.txtCreateSubdirectory_TextChanged);
//
// rbDontGenerate
//
this.rbDontGenerate.AccessibleDescription = null;
this.rbDontGenerate.AccessibleName = null;
resources.ApplyResources(this.rbDontGenerate, "rbDontGenerate");
this.rbDontGenerate.BackgroundImage = null;
this.rbDontGenerate.Font = null;
this.rbDontGenerate.Name = "rbDontGenerate";
this.toolTip1.SetToolTip(this.rbDontGenerate, resources.GetString("rbDontGenerate.ToolTip"));
this.rbDontGenerate.UseVisualStyleBackColor = true;
//
// rbCreateSubdirectory
//
this.rbCreateSubdirectory.AccessibleDescription = null;
this.rbCreateSubdirectory.AccessibleName = null;
resources.ApplyResources(this.rbCreateSubdirectory, "rbCreateSubdirectory");
this.rbCreateSubdirectory.BackgroundImage = null;
this.rbCreateSubdirectory.Checked = true;
this.rbCreateSubdirectory.Font = null;
this.rbCreateSubdirectory.Name = "rbCreateSubdirectory";
this.rbCreateSubdirectory.TabStop = true;
this.toolTip1.SetToolTip(this.rbCreateSubdirectory, resources.GetString("rbCreateSubdirectory.ToolTip"));
this.rbCreateSubdirectory.UseVisualStyleBackColor = true;
this.rbCreateSubdirectory.CheckedChanged += new System.EventHandler(this.rbCreateSubdirectory_CheckedChanged);
//
// rbAppendFilename
//
this.rbAppendFilename.AccessibleDescription = null;
this.rbAppendFilename.AccessibleName = null;
resources.ApplyResources(this.rbAppendFilename, "rbAppendFilename");
this.rbAppendFilename.BackgroundImage = null;
this.rbAppendFilename.Font = null;
this.rbAppendFilename.Name = "rbAppendFilename";
this.toolTip1.SetToolTip(this.rbAppendFilename, resources.GetString("rbAppendFilename.ToolTip"));
this.rbAppendFilename.UseVisualStyleBackColor = true;
this.rbAppendFilename.CheckedChanged += new System.EventHandler(this.rbAppendFilename_CheckedChanged);
//
// txtAppendFilename
//
this.txtAppendFilename.AccessibleDescription = null;
this.txtAppendFilename.AccessibleName = null;
resources.ApplyResources(this.txtAppendFilename, "txtAppendFilename");
this.txtAppendFilename.BackgroundImage = null;
this.txtAppendFilename.Font = null;
this.txtAppendFilename.Name = "txtAppendFilename";
this.toolTip1.SetToolTip(this.txtAppendFilename, resources.GetString("txtAppendFilename.ToolTip"));
this.txtAppendFilename.TextChanged += new System.EventHandler(this.txtAppendFilename_TextChanged);
//
// grpAudioOutput
//
this.grpAudioOutput.AccessibleDescription = null;
this.grpAudioOutput.AccessibleName = null;
resources.ApplyResources(this.grpAudioOutput, "grpAudioOutput");
this.grpAudioOutput.BackgroundImage = null;
this.grpAudioOutput.Controls.Add(this.btnCodec);
this.grpAudioOutput.Controls.Add(this.rbUDC1);
this.grpAudioOutput.Controls.Add(this.rbTTA);
@@ -403,56 +291,36 @@ namespace JDP {
this.grpAudioOutput.Controls.Add(this.rbWavPack);
this.grpAudioOutput.Controls.Add(this.rbWAV);
this.grpAudioOutput.Controls.Add(this.rbFLAC);
this.grpAudioOutput.Font = null;
resources.ApplyResources(this.grpAudioOutput, "grpAudioOutput");
this.grpAudioOutput.Name = "grpAudioOutput";
this.grpAudioOutput.TabStop = false;
this.toolTip1.SetToolTip(this.grpAudioOutput, resources.GetString("grpAudioOutput.ToolTip"));
//
// btnCodec
//
this.btnCodec.AccessibleDescription = null;
this.btnCodec.AccessibleName = null;
resources.ApplyResources(this.btnCodec, "btnCodec");
this.btnCodec.BackgroundImage = null;
this.btnCodec.Font = null;
this.btnCodec.Name = "btnCodec";
this.toolTip1.SetToolTip(this.btnCodec, resources.GetString("btnCodec.ToolTip"));
this.btnCodec.UseVisualStyleBackColor = true;
this.btnCodec.Click += new System.EventHandler(this.btnCodec_Click);
//
// rbUDC1
//
this.rbUDC1.AccessibleDescription = null;
this.rbUDC1.AccessibleName = null;
resources.ApplyResources(this.rbUDC1, "rbUDC1");
this.rbUDC1.BackgroundImage = null;
this.rbUDC1.Font = null;
this.rbUDC1.Name = "rbUDC1";
this.rbUDC1.TabStop = true;
this.toolTip1.SetToolTip(this.rbUDC1, resources.GetString("rbUDC1.ToolTip"));
this.rbUDC1.UseVisualStyleBackColor = true;
this.rbUDC1.CheckedChanged += new System.EventHandler(this.rbUDC1_CheckedChanged);
//
// rbTTA
//
this.rbTTA.AccessibleDescription = null;
this.rbTTA.AccessibleName = null;
resources.ApplyResources(this.rbTTA, "rbTTA");
this.rbTTA.BackgroundImage = null;
this.rbTTA.Font = null;
this.rbTTA.Name = "rbTTA";
this.rbTTA.TabStop = true;
this.toolTip1.SetToolTip(this.rbTTA, resources.GetString("rbTTA.ToolTip"));
this.rbTTA.UseVisualStyleBackColor = true;
this.rbTTA.CheckedChanged += new System.EventHandler(this.rbTTA_CheckedChanged);
//
// chkLossyWAV
//
this.chkLossyWAV.AccessibleDescription = null;
this.chkLossyWAV.AccessibleName = null;
resources.ApplyResources(this.chkLossyWAV, "chkLossyWAV");
this.chkLossyWAV.BackgroundImage = null;
this.chkLossyWAV.Font = null;
this.chkLossyWAV.Name = "chkLossyWAV";
this.toolTip1.SetToolTip(this.chkLossyWAV, resources.GetString("chkLossyWAV.ToolTip"));
this.chkLossyWAV.UseVisualStyleBackColor = true;
@@ -460,24 +328,15 @@ namespace JDP {
//
// rbAPE
//
this.rbAPE.AccessibleDescription = null;
this.rbAPE.AccessibleName = null;
resources.ApplyResources(this.rbAPE, "rbAPE");
this.rbAPE.BackgroundImage = null;
this.rbAPE.Font = null;
this.rbAPE.Name = "rbAPE";
this.rbAPE.TabStop = true;
this.toolTip1.SetToolTip(this.rbAPE, resources.GetString("rbAPE.ToolTip"));
this.rbAPE.UseVisualStyleBackColor = true;
this.rbAPE.CheckedChanged += new System.EventHandler(this.rbAPE_CheckedChanged);
//
// rbNoAudio
//
this.rbNoAudio.AccessibleDescription = null;
this.rbNoAudio.AccessibleName = null;
resources.ApplyResources(this.rbNoAudio, "rbNoAudio");
this.rbNoAudio.BackgroundImage = null;
this.rbNoAudio.Font = null;
this.rbNoAudio.Name = "rbNoAudio";
this.toolTip1.SetToolTip(this.rbNoAudio, resources.GetString("rbNoAudio.ToolTip"));
this.rbNoAudio.UseVisualStyleBackColor = true;
@@ -485,84 +344,50 @@ namespace JDP {
//
// rbWavPack
//
this.rbWavPack.AccessibleDescription = null;
this.rbWavPack.AccessibleName = null;
resources.ApplyResources(this.rbWavPack, "rbWavPack");
this.rbWavPack.BackgroundImage = null;
this.rbWavPack.Font = null;
this.rbWavPack.Name = "rbWavPack";
this.toolTip1.SetToolTip(this.rbWavPack, resources.GetString("rbWavPack.ToolTip"));
this.rbWavPack.UseVisualStyleBackColor = true;
this.rbWavPack.CheckedChanged += new System.EventHandler(this.rbWavPack_CheckedChanged);
//
// rbWAV
//
this.rbWAV.AccessibleDescription = null;
this.rbWAV.AccessibleName = null;
resources.ApplyResources(this.rbWAV, "rbWAV");
this.rbWAV.BackgroundImage = null;
this.rbWAV.Checked = true;
this.rbWAV.Font = null;
this.rbWAV.Name = "rbWAV";
this.rbWAV.TabStop = true;
this.toolTip1.SetToolTip(this.rbWAV, resources.GetString("rbWAV.ToolTip"));
this.rbWAV.UseVisualStyleBackColor = true;
this.rbWAV.CheckedChanged += new System.EventHandler(this.rbWAV_CheckedChanged);
//
// rbFLAC
//
this.rbFLAC.AccessibleDescription = null;
this.rbFLAC.AccessibleName = null;
resources.ApplyResources(this.rbFLAC, "rbFLAC");
this.rbFLAC.BackgroundImage = null;
this.rbFLAC.Font = null;
this.rbFLAC.Name = "rbFLAC";
this.toolTip1.SetToolTip(this.rbFLAC, resources.GetString("rbFLAC.ToolTip"));
this.rbFLAC.UseVisualStyleBackColor = true;
this.rbFLAC.CheckedChanged += new System.EventHandler(this.rbFLAC_CheckedChanged);
//
// btnBatch
//
this.btnBatch.AccessibleDescription = null;
this.btnBatch.AccessibleName = null;
resources.ApplyResources(this.btnBatch, "btnBatch");
this.btnBatch.BackgroundImage = null;
this.btnBatch.Font = null;
this.btnBatch.Name = "btnBatch";
this.toolTip1.SetToolTip(this.btnBatch, resources.GetString("btnBatch.ToolTip"));
this.btnBatch.UseVisualStyleBackColor = true;
this.btnBatch.Click += new System.EventHandler(this.btnBatch_Click);
//
// btnFilenameCorrector
//
this.btnFilenameCorrector.AccessibleDescription = null;
this.btnFilenameCorrector.AccessibleName = null;
resources.ApplyResources(this.btnFilenameCorrector, "btnFilenameCorrector");
this.btnFilenameCorrector.BackgroundImage = null;
this.btnFilenameCorrector.Font = null;
this.btnFilenameCorrector.Name = "btnFilenameCorrector";
this.toolTip1.SetToolTip(this.btnFilenameCorrector, resources.GetString("btnFilenameCorrector.ToolTip"));
this.btnFilenameCorrector.UseVisualStyleBackColor = true;
this.btnFilenameCorrector.Click += new System.EventHandler(this.btnFilenameCorrector_Click);
//
// btnSettings
//
this.btnSettings.AccessibleDescription = null;
this.btnSettings.AccessibleName = null;
resources.ApplyResources(this.btnSettings, "btnSettings");
this.btnSettings.BackgroundImage = null;
this.btnSettings.Font = null;
this.btnSettings.Name = "btnSettings";
this.toolTip1.SetToolTip(this.btnSettings, resources.GetString("btnSettings.ToolTip"));
this.btnSettings.UseVisualStyleBackColor = true;
this.btnSettings.Click += new System.EventHandler(this.btnSettings_Click);
//
// grpAccurateRip
//
this.grpAccurateRip.AccessibleDescription = null;
this.grpAccurateRip.AccessibleName = null;
resources.ApplyResources(this.grpAccurateRip, "grpAccurateRip");
this.grpAccurateRip.BackgroundImage = null;
this.grpAccurateRip.Controls.Add(this.txtPreGapLength);
this.grpAccurateRip.Controls.Add(this.label2);
this.grpAccurateRip.Controls.Add(this.rbArPlusCRC);
@@ -572,41 +397,28 @@ namespace JDP {
this.grpAccurateRip.Controls.Add(this.rbArApplyOffset);
this.grpAccurateRip.Controls.Add(this.rbArVerify);
this.grpAccurateRip.Controls.Add(this.rbArNone);
this.grpAccurateRip.Font = null;
resources.ApplyResources(this.grpAccurateRip, "grpAccurateRip");
this.grpAccurateRip.Name = "grpAccurateRip";
this.grpAccurateRip.TabStop = false;
this.toolTip1.SetToolTip(this.grpAccurateRip, resources.GetString("grpAccurateRip.ToolTip"));
//
// txtPreGapLength
//
this.txtPreGapLength.AccessibleDescription = null;
this.txtPreGapLength.AccessibleName = null;
resources.ApplyResources(this.txtPreGapLength, "txtPreGapLength");
this.txtPreGapLength.BackgroundImage = null;
this.txtPreGapLength.Culture = new System.Globalization.CultureInfo("");
this.txtPreGapLength.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals;
this.txtPreGapLength.Font = null;
this.txtPreGapLength.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite;
resources.ApplyResources(this.txtPreGapLength, "txtPreGapLength");
this.txtPreGapLength.Name = "txtPreGapLength";
this.txtPreGapLength.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals;
this.toolTip1.SetToolTip(this.txtPreGapLength, resources.GetString("txtPreGapLength.ToolTip"));
//
// label2
//
this.label2.AccessibleDescription = null;
this.label2.AccessibleName = null;
resources.ApplyResources(this.label2, "label2");
this.label2.Font = null;
this.label2.Name = "label2";
this.toolTip1.SetToolTip(this.label2, resources.GetString("label2.ToolTip"));
//
// rbArPlusCRC
//
this.rbArPlusCRC.AccessibleDescription = null;
this.rbArPlusCRC.AccessibleName = null;
resources.ApplyResources(this.rbArPlusCRC, "rbArPlusCRC");
this.rbArPlusCRC.BackgroundImage = null;
this.rbArPlusCRC.Font = null;
this.rbArPlusCRC.Name = "rbArPlusCRC";
this.toolTip1.SetToolTip(this.rbArPlusCRC, resources.GetString("rbArPlusCRC.ToolTip"));
this.rbArPlusCRC.UseVisualStyleBackColor = true;
@@ -614,46 +426,29 @@ namespace JDP {
//
// rbArAndEncode
//
this.rbArAndEncode.AccessibleDescription = null;
this.rbArAndEncode.AccessibleName = null;
resources.ApplyResources(this.rbArAndEncode, "rbArAndEncode");
this.rbArAndEncode.BackgroundImage = null;
this.rbArAndEncode.Font = null;
this.rbArAndEncode.Name = "rbArAndEncode";
this.rbArAndEncode.TabStop = true;
this.toolTip1.SetToolTip(this.rbArAndEncode, resources.GetString("rbArAndEncode.ToolTip"));
this.rbArAndEncode.UseVisualStyleBackColor = true;
//
// label1
//
this.label1.AccessibleDescription = null;
this.label1.AccessibleName = null;
resources.ApplyResources(this.label1, "label1");
this.label1.Font = null;
this.label1.Name = "label1";
this.toolTip1.SetToolTip(this.label1, resources.GetString("label1.ToolTip"));
//
// txtDataTrackLength
//
this.txtDataTrackLength.AccessibleDescription = null;
this.txtDataTrackLength.AccessibleName = null;
resources.ApplyResources(this.txtDataTrackLength, "txtDataTrackLength");
this.txtDataTrackLength.BackgroundImage = null;
this.txtDataTrackLength.Culture = new System.Globalization.CultureInfo("");
this.txtDataTrackLength.CutCopyMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals;
this.txtDataTrackLength.Font = null;
this.txtDataTrackLength.InsertKeyMode = System.Windows.Forms.InsertKeyMode.Overwrite;
resources.ApplyResources(this.txtDataTrackLength, "txtDataTrackLength");
this.txtDataTrackLength.Name = "txtDataTrackLength";
this.txtDataTrackLength.TextMaskFormat = System.Windows.Forms.MaskFormat.IncludePromptAndLiterals;
this.toolTip1.SetToolTip(this.txtDataTrackLength, resources.GetString("txtDataTrackLength.ToolTip"));
//
// rbArApplyOffset
//
this.rbArApplyOffset.AccessibleDescription = null;
this.rbArApplyOffset.AccessibleName = null;
resources.ApplyResources(this.rbArApplyOffset, "rbArApplyOffset");
this.rbArApplyOffset.BackgroundImage = null;
this.rbArApplyOffset.Font = null;
this.rbArApplyOffset.Name = "rbArApplyOffset";
this.toolTip1.SetToolTip(this.rbArApplyOffset, resources.GetString("rbArApplyOffset.ToolTip"));
this.rbArApplyOffset.UseVisualStyleBackColor = true;
@@ -661,11 +456,7 @@ namespace JDP {
//
// rbArVerify
//
this.rbArVerify.AccessibleDescription = null;
this.rbArVerify.AccessibleName = null;
resources.ApplyResources(this.rbArVerify, "rbArVerify");
this.rbArVerify.BackgroundImage = null;
this.rbArVerify.Font = null;
this.rbArVerify.Name = "rbArVerify";
this.toolTip1.SetToolTip(this.rbArVerify, resources.GetString("rbArVerify.ToolTip"));
this.rbArVerify.UseVisualStyleBackColor = true;
@@ -673,12 +464,8 @@ namespace JDP {
//
// rbArNone
//
this.rbArNone.AccessibleDescription = null;
this.rbArNone.AccessibleName = null;
resources.ApplyResources(this.rbArNone, "rbArNone");
this.rbArNone.BackgroundImage = null;
this.rbArNone.Checked = true;
this.rbArNone.Font = null;
this.rbArNone.Name = "rbArNone";
this.rbArNone.TabStop = true;
this.toolTip1.SetToolTip(this.rbArNone, resources.GetString("rbArNone.ToolTip"));
@@ -686,44 +473,32 @@ namespace JDP {
//
// 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.toolStripProgressBar1,
this.toolStripProgressBar2});
resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.SizingGrip = false;
this.toolTip1.SetToolTip(this.statusStrip1, resources.GetString("statusStrip1.ToolTip"));
//
// toolStripStatusLabel1
//
this.toolStripStatusLabel1.AccessibleDescription = null;
this.toolStripStatusLabel1.AccessibleName = null;
resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1");
this.toolStripStatusLabel1.BackgroundImage = null;
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
resources.ApplyResources(this.toolStripStatusLabel1, "toolStripStatusLabel1");
this.toolStripStatusLabel1.Spring = true;
//
// toolStripProgressBar1
//
this.toolStripProgressBar1.AccessibleDescription = null;
this.toolStripProgressBar1.AccessibleName = null;
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.AutoToolTip = true;
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// toolStripProgressBar2
//
this.toolStripProgressBar2.AccessibleDescription = null;
this.toolStripProgressBar2.AccessibleName = null;
resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2");
this.toolStripProgressBar2.AutoToolTip = true;
this.toolStripProgressBar2.Name = "toolStripProgressBar2";
resources.ApplyResources(this.toolStripProgressBar2, "toolStripProgressBar2");
this.toolStripProgressBar2.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
//
// toolTip1
@@ -734,109 +509,64 @@ namespace JDP {
//
// btnCUECreator
//
this.btnCUECreator.AccessibleDescription = null;
this.btnCUECreator.AccessibleName = null;
resources.ApplyResources(this.btnCUECreator, "btnCUECreator");
this.btnCUECreator.BackgroundImage = null;
this.btnCUECreator.Font = null;
this.btnCUECreator.Name = "btnCUECreator";
this.toolTip1.SetToolTip(this.btnCUECreator, resources.GetString("btnCUECreator.ToolTip"));
this.btnCUECreator.UseVisualStyleBackColor = true;
this.btnCUECreator.Click += new System.EventHandler(this.btnCUECreator_Click);
//
// btnStop
//
this.btnStop.AccessibleDescription = null;
this.btnStop.AccessibleName = null;
resources.ApplyResources(this.btnStop, "btnStop");
this.btnStop.BackgroundImage = null;
this.btnStop.Font = null;
this.btnStop.Name = "btnStop";
this.toolTip1.SetToolTip(this.btnStop, resources.GetString("btnStop.ToolTip"));
this.btnStop.UseVisualStyleBackColor = true;
this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
//
// btnPause
//
this.btnPause.AccessibleDescription = null;
this.btnPause.AccessibleName = null;
resources.ApplyResources(this.btnPause, "btnPause");
this.btnPause.BackgroundImage = null;
this.btnPause.Font = null;
this.btnPause.Name = "btnPause";
this.toolTip1.SetToolTip(this.btnPause, resources.GetString("btnPause.ToolTip"));
this.btnPause.UseVisualStyleBackColor = true;
this.btnPause.Click += new System.EventHandler(this.btnPause_Click);
//
// btnResume
//
this.btnResume.AccessibleDescription = null;
this.btnResume.AccessibleName = null;
resources.ApplyResources(this.btnResume, "btnResume");
this.btnResume.BackgroundImage = null;
this.btnResume.Font = null;
this.btnResume.Name = "btnResume";
this.toolTip1.SetToolTip(this.btnResume, resources.GetString("btnResume.ToolTip"));
this.btnResume.UseVisualStyleBackColor = true;
this.btnResume.Click += new System.EventHandler(this.btnPause_Click);
//
// groupBox1
//
this.groupBox1.AccessibleDescription = null;
this.groupBox1.AccessibleName = null;
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.BackgroundImage = null;
this.groupBox1.Controls.Add(this.rbFreedbAlways);
this.groupBox1.Controls.Add(this.rbFreedbIf);
this.groupBox1.Controls.Add(this.rbFreedbNever);
this.groupBox1.Font = null;
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Name = "groupBox1";
this.groupBox1.TabStop = false;
this.toolTip1.SetToolTip(this.groupBox1, resources.GetString("groupBox1.ToolTip"));
//
// rbFreedbAlways
//
this.rbFreedbAlways.AccessibleDescription = null;
this.rbFreedbAlways.AccessibleName = null;
resources.ApplyResources(this.rbFreedbAlways, "rbFreedbAlways");
this.rbFreedbAlways.BackgroundImage = null;
this.rbFreedbAlways.Font = null;
this.rbFreedbAlways.Name = "rbFreedbAlways";
this.rbFreedbAlways.TabStop = true;
this.toolTip1.SetToolTip(this.rbFreedbAlways, resources.GetString("rbFreedbAlways.ToolTip"));
this.rbFreedbAlways.UseVisualStyleBackColor = true;
//
// rbFreedbIf
//
this.rbFreedbIf.AccessibleDescription = null;
this.rbFreedbIf.AccessibleName = null;
resources.ApplyResources(this.rbFreedbIf, "rbFreedbIf");
this.rbFreedbIf.BackgroundImage = null;
this.rbFreedbIf.Font = null;
this.rbFreedbIf.Name = "rbFreedbIf";
this.rbFreedbIf.TabStop = true;
this.toolTip1.SetToolTip(this.rbFreedbIf, resources.GetString("rbFreedbIf.ToolTip"));
this.rbFreedbIf.UseVisualStyleBackColor = true;
//
// rbFreedbNever
//
this.rbFreedbNever.AccessibleDescription = null;
this.rbFreedbNever.AccessibleName = null;
resources.ApplyResources(this.rbFreedbNever, "rbFreedbNever");
this.rbFreedbNever.BackgroundImage = null;
this.rbFreedbNever.Font = null;
this.rbFreedbNever.Name = "rbFreedbNever";
this.rbFreedbNever.TabStop = true;
this.toolTip1.SetToolTip(this.rbFreedbNever, resources.GetString("rbFreedbNever.ToolTip"));
this.rbFreedbNever.UseVisualStyleBackColor = true;
//
// contextMenuStripUDC
//
this.contextMenuStripUDC.AccessibleDescription = null;
this.contextMenuStripUDC.AccessibleName = null;
resources.ApplyResources(this.contextMenuStripUDC, "contextMenuStripUDC");
this.contextMenuStripUDC.BackgroundImage = null;
this.contextMenuStripUDC.Font = null;
this.contextMenuStripUDC.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripMenuItem2,
this.tAKToolStripMenuItem,
@@ -846,77 +576,48 @@ namespace JDP {
this.mP3ToolStripMenuItem,
this.oGGToolStripMenuItem});
this.contextMenuStripUDC.Name = "contextMenuStripUDC";
this.toolTip1.SetToolTip(this.contextMenuStripUDC, resources.GetString("contextMenuStripUDC.ToolTip"));
resources.ApplyResources(this.contextMenuStripUDC, "contextMenuStripUDC");
this.contextMenuStripUDC.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.contextMenuStripUDC_ItemClicked);
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.AccessibleDescription = null;
this.toolStripMenuItem2.AccessibleName = null;
resources.ApplyResources(this.toolStripMenuItem2, "toolStripMenuItem2");
this.toolStripMenuItem2.BackgroundImage = null;
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.ShortcutKeyDisplayString = null;
//
// tAKToolStripMenuItem
//
this.tAKToolStripMenuItem.AccessibleDescription = null;
this.tAKToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.tAKToolStripMenuItem, "tAKToolStripMenuItem");
this.tAKToolStripMenuItem.BackgroundImage = null;
this.tAKToolStripMenuItem.Name = "tAKToolStripMenuItem";
this.tAKToolStripMenuItem.ShortcutKeyDisplayString = null;
resources.ApplyResources(this.tAKToolStripMenuItem, "tAKToolStripMenuItem");
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.AccessibleDescription = null;
this.toolStripMenuItem1.AccessibleName = null;
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
this.toolStripMenuItem1.BackgroundImage = null;
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.ShortcutKeyDisplayString = null;
resources.ApplyResources(this.toolStripMenuItem1, "toolStripMenuItem1");
//
// toolStripSeparator1
//
this.toolStripSeparator1.AccessibleDescription = null;
this.toolStripSeparator1.AccessibleName = null;
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
this.toolStripSeparator1.Name = "toolStripSeparator1";
resources.ApplyResources(this.toolStripSeparator1, "toolStripSeparator1");
//
// toolStripMenuItem3
//
this.toolStripMenuItem3.AccessibleDescription = null;
this.toolStripMenuItem3.AccessibleName = null;
resources.ApplyResources(this.toolStripMenuItem3, "toolStripMenuItem3");
this.toolStripMenuItem3.BackgroundImage = null;
this.toolStripMenuItem3.Name = "toolStripMenuItem3";
this.toolStripMenuItem3.ShortcutKeyDisplayString = null;
//
// mP3ToolStripMenuItem
//
this.mP3ToolStripMenuItem.AccessibleDescription = null;
this.mP3ToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.mP3ToolStripMenuItem, "mP3ToolStripMenuItem");
this.mP3ToolStripMenuItem.BackgroundImage = null;
this.mP3ToolStripMenuItem.Name = "mP3ToolStripMenuItem";
this.mP3ToolStripMenuItem.ShortcutKeyDisplayString = null;
resources.ApplyResources(this.mP3ToolStripMenuItem, "mP3ToolStripMenuItem");
//
// oGGToolStripMenuItem
//
this.oGGToolStripMenuItem.AccessibleDescription = null;
this.oGGToolStripMenuItem.AccessibleName = null;
resources.ApplyResources(this.oGGToolStripMenuItem, "oGGToolStripMenuItem");
this.oGGToolStripMenuItem.BackgroundImage = null;
this.oGGToolStripMenuItem.Name = "oGGToolStripMenuItem";
this.oGGToolStripMenuItem.ShortcutKeyDisplayString = null;
resources.ApplyResources(this.oGGToolStripMenuItem, "oGGToolStripMenuItem");
//
// frmCUETools
//
this.AccessibleDescription = null;
this.AccessibleName = null;
resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = null;
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.btnResume);
this.Controls.Add(this.btnPause);
@@ -936,7 +637,6 @@ namespace JDP {
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.MaximizeBox = false;
this.Name = "frmCUETools";
this.toolTip1.SetToolTip(this, resources.GetString("$this.ToolTip"));
this.Load += new System.EventHandler(this.frmCUETools_Load);
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmCUETools_FormClosed);
this.grpCUEPaths.ResumeLayout(false);

View File

@@ -412,7 +412,7 @@ namespace JDP {
if (cueSheet.IsCD)
{
frmReport reportForm = new frmReport();
reportForm.Message = cueSheet.LOGContents();
reportForm.Message = cueSheet.LOGContents;
CenterSubForm(reportForm);
reportForm.ShowDialog(this);
}

File diff suppressed because it is too large Load Diff

View File

@@ -150,13 +150,14 @@ namespace JDP
CDEntry cdEntry = item as CDEntry;
listTracks.Items.Clear();
foreach (Freedb.Track track in cdEntry.Tracks)
for (int i = 0; i < cdEntry.Tracks.Count; i++)
{
listTracks.Items.Add(new ListViewItem(new string[] {
track.Title,
(listTracks.Items.Count + 1).ToString(),
CDImageLayout.TimeToString((uint)track.FrameOffset - 150),
CUE == null ? "" : CUE.TOC[listTracks.Items.Count + 1].LengthMSF
cdEntry.Tracks[i].Title,
(i + 1).ToString(),
CDImageLayout.TimeToString((uint)cdEntry.Tracks[i].FrameOffset - 150),
CDImageLayout.TimeToString((i + 1 < cdEntry.Tracks.Count) ? (uint) (cdEntry.Tracks[i + 1].FrameOffset - cdEntry.Tracks[i].FrameOffset) :
(CUE == null || i >= CUE.TOC.TrackCount) ? 0 : CUE.TOC[i + 1].Length)
}));
}
AutoResizeTracks();

View File

@@ -796,6 +796,19 @@ FLAC_API FLAC__bool FLAC__stream_decoder_set_ogg_serial_number(FLAC__StreamDecod
*/
FLAC_API FLAC__bool FLAC__stream_decoder_set_md5_checking(FLAC__StreamDecoder *decoder, FLAC__bool value);
/** Set the "disable_asm" flag. If \c true, the decoder will
* not use assembler code.
*
* \default \c false
* \param decoder A decoder instance to set.
* \param value Flag value (see above).
* \assert
* \code decoder != NULL \endcode
* \retval FLAC__bool
* \c false if the decoder is already initialized, else \c true.
*/
FLAC_API FLAC__bool FLAC__stream_decoder_set_disable_asm(FLAC__StreamDecoder *decoder, FLAC__bool value);
/** Direct the decoder to pass on all metadata blocks of type \a type.
*
* \default By default, only the \c STREAMINFO block is returned via the

View File

@@ -742,6 +742,8 @@ FLAC_API FLAC__bool FLAC__stream_encoder_set_ogg_serial_number(FLAC__StreamEncod
*/
FLAC_API FLAC__bool FLAC__stream_encoder_set_verify(FLAC__StreamEncoder *encoder, FLAC__bool value);
FLAC_API FLAC__bool FLAC__stream_encoder_set_disable_asm(FLAC__StreamEncoder *encoder, FLAC__bool value);
/** Set the <A HREF="../format.html#subset">Subset</A> flag. If \c true,
* the encoder will comply with the Subset and will check the
* settings during FLAC__stream_encoder_init_*() to see if all settings

View File

@@ -151,6 +151,7 @@ typedef struct FLAC__StreamDecoderPrivate {
#if FLAC__HAS_OGG
FLAC__bool is_ogg;
#endif
FLAC__bool disable_asm;
FLAC__StreamDecoderReadCallback read_callback;
FLAC__StreamDecoderSeekCallback seek_callback;
FLAC__StreamDecoderTellCallback tell_callback;
@@ -408,6 +409,11 @@ static FLAC__StreamDecoderInitStatus init_stream_internal_(
/*
* get the CPU info and set the function pointers
*/
if (decoder->private_->disable_asm)
{
decoder->private_->cpuinfo.type = FLAC__CPUINFO_TYPE_UNKNOWN;
decoder->private_->cpuinfo.use_asm = false;
} else
FLAC__cpu_info(&decoder->private_->cpuinfo);
/* first default to the non-asm routines */
decoder->private_->local_lpc_restore_signal = FLAC__lpc_restore_signal;
@@ -753,6 +759,16 @@ FLAC_API FLAC__bool FLAC__stream_decoder_set_md5_checking(FLAC__StreamDecoder *d
return true;
}
FLAC_API FLAC__bool FLAC__stream_decoder_set_disable_asm(FLAC__StreamDecoder *decoder, FLAC__bool value)
{
FLAC__ASSERT(0 != decoder);
FLAC__ASSERT(0 != decoder->protected_);
if(decoder->protected_->state != FLAC__STREAM_DECODER_UNINITIALIZED)
return false;
decoder->private_->disable_asm = value;
return true;
}
FLAC_API FLAC__bool FLAC__stream_decoder_set_metadata_respond(FLAC__StreamDecoder *decoder, FLAC__MetadataType type)
{
FLAC__ASSERT(0 != decoder);

View File

@@ -330,6 +330,7 @@ static FILE *get_binary_stdout_(void);
***********************************************************************/
typedef struct FLAC__StreamEncoderPrivate {
FLAC__bool disable_asm;
unsigned input_capacity; /* current size (in samples) of the signal and residual buffers */
FLAC__int32 *integer_signal[FLAC__MAX_CHANNELS]; /* the integer version of the input signal */
FLAC__int32 *integer_signal_mid_side[2]; /* the integer version of the mid-side input signal (stereo only) */
@@ -891,6 +892,11 @@ static FLAC__StreamEncoderInitStatus init_stream_internal_(
/*
* get the CPU info and set the function pointers
*/
if (encoder->private_->disable_asm)
{
encoder->private_->cpuinfo.type = FLAC__CPUINFO_TYPE_UNKNOWN;
encoder->private_->cpuinfo.use_asm = false;
} else
FLAC__cpu_info(&encoder->private_->cpuinfo);
/* first default to the non-asm routines */
#ifndef FLAC__INTEGER_ONLY_LIBRARY
@@ -1431,6 +1437,16 @@ FLAC_API FLAC__bool FLAC__stream_encoder_set_do_md5(FLAC__StreamEncoder *encoder
return true;
}
FLAC_API FLAC__bool FLAC__stream_encoder_set_disable_asm(FLAC__StreamEncoder *encoder, FLAC__bool value)
{
FLAC__ASSERT(0 != encoder);
FLAC__ASSERT(0 != encoder->protected_);
if(encoder->protected_->state != FLAC__STREAM_ENCODER_UNINITIALIZED)
return false;
encoder->private_->disable_asm = value;
return true;
}
FLAC_API FLAC__bool FLAC__stream_encoder_set_channels(FLAC__StreamEncoder *encoder, unsigned value)
{
FLAC__ASSERT(0 != encoder);