bug 13: CUERipper didn't report track quality

This commit is contained in:
Grigory Chudov
2013-04-20 20:16:23 -04:00
parent 81cf366faa
commit 8e3cd95cf8
2 changed files with 13 additions and 16 deletions

View File

@@ -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();

View File

@@ -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));