diff --git a/CUERipper/frmCUERipper.cs b/CUERipper/frmCUERipper.cs index d49bdde..d625d14 100644 --- a/CUERipper/frmCUERipper.cs +++ b/CUERipper/frmCUERipper.cs @@ -381,8 +381,7 @@ namespace CUERipper toolStripStatusLabel1.Text = status; toolStripProgressBar1.Value = Math.Max(0, Math.Min(100, (int)(percentTrck * 100))); - progressBarErrors.Maximum = (int)(Math.Log(e.PassEnd - e.PassStart + 1) * 10); - progressBarErrors.Value = Math.Min(progressBarErrors.Maximum, (int)(Math.Log(e.ErrorsCount + 1) * 10)); + progressBarErrors.Value = Math.Min(progressBarErrors.Maximum, (int)(100 * Math.Log(e.ErrorsCount / 10.0 + 1) / Math.Log((e.PassEnd - e.PassStart) / 10.0 + 1))); progressBarErrors.Enabled = e.Pass >= audioSource.CorrectionQuality; progressBarCD.Maximum = (int) audioSource.TOC.AudioLength; @@ -408,7 +407,7 @@ namespace CUERipper cueSheet.CTDB.Submit( (int)cueSheet.ArVerify.WorstConfidence() + 1, audioSource.CorrectionQuality == 0 ? 0 : - 100 - (int)(7 * Math.Log(audioSource.ErrorsCount + 1)), // ErrorsCount==1 ~= 95, ErrorsCount==max ~= 5; + (int)(100 * (1.0 - Math.Log(audioSource.ErrorsCount + 1) / Math.Log(audioSource.TOC.AudioLength + 1))), cueSheet.Metadata.Artist, cueSheet.Metadata.Title, cueSheet.TOC.Barcode); @@ -1376,17 +1375,6 @@ namespace CUERipper tt.FrameOffset = 150 + (int)selectedDriveInfo.drive.TOC[i].Start; entry.Tracks.Add(tt); } - /* - foreach (CUETrackMetadata t in data.selectedRelease.metadata.Tracks) - { - Freedb.Track tt = new Freedb.Track(); - if (t.Artist != "" && t.Artist != entry.Artist) - tt.Title = t.Artist + " / " + t.Title; - else - tt.Title = t.Title; - tt.FrameOffset = 150 + (int)selectedDriveInfo.drive.TOC[i++].Start; - entry.Tracks.Add(tt); - }*/ FreedbHelper m_freedb = new FreedbHelper(); diff --git a/CUETools.Processor/CUESheetLogWriter.cs b/CUETools.Processor/CUESheetLogWriter.cs index 1bb4570..4f49de2 100644 --- a/CUETools.Processor/CUESheetLogWriter.cs +++ b/CUETools.Processor/CUESheetLogWriter.cs @@ -83,6 +83,15 @@ namespace CUETools.Processor #region EAC + private static double GetRangeQuality(CUESheet sheet, uint start, uint length) + { + int errCount = 0; + for (uint iSector = start; iSector < start + length; iSector++) + if (sheet.CDRipper.Errors[(int)iSector - (int)sheet.TOC[sheet.TOC.FirstAudio][0].Start]) + errCount++; + return 100 * (1.0 - Math.Log(errCount / 5.0 + 1) / Math.Log(length / 5.0 + 1)); + } + public static string GetExactAudioCopyLog(CUESheet sheet) { StringWriter logWriter = new StringWriter(CultureInfo.InvariantCulture); @@ -149,7 +158,7 @@ namespace CUETools.Processor logWriter.WriteLine(); logWriter.WriteLine(" Peak level {0:F1} %", (sheet.ArVerify.PeakLevel(track + 1) * 1000 / 65534) * 0.1); - logWriter.WriteLine(" Track quality 100.0 %"); + logWriter.WriteLine(" Track quality {0:F1} %", GetRangeQuality(sheet, sheet.TOC[track + sheet.TOC.FirstAudio].Start, sheet.TOC[track + sheet.TOC.FirstAudio].Length)); if (sheet.ArTestVerify != null) logWriter.WriteLine(" Test CRC {0:X8}", sheet.ArTestVerify.CRC32(track + 1)); logWriter.WriteLine(" Copy CRC {0:X8}", sheet.ArVerify.CRC32(track + 1)); @@ -181,7 +190,7 @@ namespace CUETools.Processor wereErrors = sheet.PrintErrors(logWriter, sheet.TOC[sheet.TOC.FirstAudio][0].Start, sheet.TOC.AudioLength); logWriter.WriteLine(); logWriter.WriteLine(" Peak level {0:F1} %", (sheet.ArVerify.PeakLevel() * 1000 / 65535) * 0.1); - logWriter.WriteLine(" Range quality 100.0 %"); + logWriter.WriteLine(" Range quality {0:F1} %", GetRangeQuality(sheet, sheet.TOC[sheet.TOC.FirstAudio][0].Start, sheet.TOC.AudioLength)); if (sheet.ArTestVerify != null) logWriter.WriteLine(" Test CRC {0:X8}", sheet.ArTestVerify.CRC32(0)); logWriter.WriteLine(" Copy CRC {0:X8}", sheet.ArVerify.CRC32(0));