mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
initial checkin
This commit is contained in:
79
CUETools/tmp.cs
Normal file
79
CUETools/tmp.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
uint bestTracksMatch = 0;
|
||||
int bestWorstConfidence = 0;
|
||||
int bestOffset = 0;
|
||||
int bestDisk = -1;
|
||||
|
||||
for (int di = 0; di < (int)accDisks.Count; di++)
|
||||
{
|
||||
for (int offset = -_arOffsetRange; offset <= _arOffsetRange; offset++)
|
||||
{
|
||||
uint tracksMatch = 0;
|
||||
int worstConfidence = -1;
|
||||
|
||||
for (int iTrack = 0; iTrack < TrackCount; iTrack++)
|
||||
if (_tracks[iTrack].OffsetedCRC[_arOffsetRange - offset] == accDisks[di].tracks[iTrack].CRC)
|
||||
{
|
||||
tracksMatch++;
|
||||
//confidence += accDisks[di].tracks[iTrack].count;
|
||||
if (accDisks[di].tracks[iTrack].CRC != 0)
|
||||
if (worstConfidence == -1 || worstConfidence > accDisks[di].tracks[iTrack].count)
|
||||
worstConfidence = (int) accDisks[di].tracks[iTrack].count;
|
||||
//if (_config.fixWhenConfidence)
|
||||
//tracksMatchWithConfidence++;
|
||||
}
|
||||
|
||||
if (tracksMatch > bestTracksMatch
|
||||
|| (tracksMatch == bestTracksMatch && worstConfidence > bestWorstConfidence)
|
||||
|| (tracksMatch == bestTracksMatch && worstConfidence == bestWorstConfidence && Math.Abs(offset) < Math.Abs(bestOffset))
|
||||
)
|
||||
{
|
||||
bestTracksMatch = tracksMatch;
|
||||
bestWorstConfidence = worstConfidence;
|
||||
bestOffset = offset;
|
||||
bestDisk = di;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bestWorstConfidence > _config.fixWhenConfidence &&
|
||||
(bestTracksMatch == TrackCount ||
|
||||
(TrackCount > 2 && bestTracksMatch * 100 > TrackCount * _config.fixWhenPercent)))
|
||||
_writeOffset = bestOffset;
|
||||
else
|
||||
if (bestTracksMatch != TrackCount && _config.noUnverifiedOutput)
|
||||
SkipOutput = true;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int s1 = (int) Math.Min(count, Math.Max(0, 450 * 588 - _arOffsetRange - (int)currentOffset));
|
||||
int s2 = (int) Math.Min(count, Math.Max(0, 451 * 588 + _arOffsetRange - (int)currentOffset));
|
||||
if ( s1 < s2 )
|
||||
fixed (uint* FrameCRCs = _tracks[iTrack].OffsetedFrame450CRC)
|
||||
for (int sj = s1; sj < s2; sj++)
|
||||
{
|
||||
int magicFrameOffsetBase = (int)currentOffset + sj - 450 * 588 + 1;
|
||||
for (int oi = -_arOffsetRange; oi <= _arOffsetRange; oi++)
|
||||
{
|
||||
int magicFrameOffset = magicFrameOffsetBase + oi;
|
||||
if (magicFrameOffset > 0 && magicFrameOffset <= 588)
|
||||
FrameCRCs[_arOffsetRange - oi] += (uint)(samples[sj] * magicFrameOffset);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int magicFrameOffset = (int)currentOffset + sj - 450 * 588 + 1;
|
||||
int firstOffset = Math.Max(-_arOffsetRange, 1 - magicFrameOffset);
|
||||
int lastOffset = Math.Min(_arOffsetRange, 588 - magicFrameOffset);
|
||||
for (int oi = firstOffset; oi <= lastOffset; oi++)
|
||||
FrameCRCs[_arOffsetRange - oi] += (uint)(samples[sj] * (magicFrameOffset + oi));
|
||||
Reference in New Issue
Block a user