From faa7cf05eb17765e944952f63c237d2d788669ad Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Mon, 12 Jul 2021 01:12:44 +0100 Subject: [PATCH] Fix pregap calculation on first tracks of each session when dumping CDs. Fixes #634 --- Aaru.Core/Media/CompactDisc.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Aaru.Core/Media/CompactDisc.cs b/Aaru.Core/Media/CompactDisc.cs index 801e412c9..4ef68a2c1 100644 --- a/Aaru.Core/Media/CompactDisc.cs +++ b/Aaru.Core/Media/CompactDisc.cs @@ -418,6 +418,23 @@ namespace Aaru.Core.Media tracks[i].TrackStartSector -= (ulong)dif; smallestPregapLbaPerTrack[trackNo] = qPos; + uint firstTrackNumberInSameSession = tracks. + Where(t => t.TrackSession == + tracks[i].TrackSession). + Min(t => t.TrackSequence); + + if(tracks[i].TrackSequence == firstTrackNumberInSameSession) + { + if(tracks[i].TrackPregap != 151) + status = true; + + dif = (int)(tracks[i].TrackPregap - 150); + tracks[i].TrackPregap -= (ulong)dif; + tracks[i].TrackStartSector += (ulong)dif; + + continue; + } + if(i > 0 && tracks[i - 1].TrackEndSector >= tracks[i].TrackStartSector) tracks[i - 1].TrackEndSector = tracks[i].TrackStartSector - 1;