Fix full TOC generation. Fixes #625

This commit is contained in:
2021-08-03 04:37:31 +01:00
parent 3fafaa8921
commit 6e744af7f3

View File

@@ -660,6 +660,12 @@ namespace Aaru.Decoders.CD
toc.LastCompleteSession = (byte)track.TrackSession; toc.LastCompleteSession = (byte)track.TrackSession;
} }
if(!sessionEndingTrack.ContainsKey(toc.LastCompleteSession))
sessionEndingTrack[toc.LastCompleteSession] = (byte)tracks.
Where(t => t.TrackSession ==
toc.LastCompleteSession).
Max(t => t.TrackSequence);
byte currentSession = 0; byte currentSession = 0;
foreach(Track track in tracks.OrderBy(t => t.TrackSession).ThenBy(t => t.TrackSequence)) foreach(Track track in tracks.OrderBy(t => t.TrackSession).ThenBy(t => t.TrackSequence))
@@ -719,8 +725,8 @@ namespace Aaru.Decoders.CD
sessionEndingTrack.TryGetValue(currentSession, out byte endingTrackNumber); sessionEndingTrack.TryGetValue(currentSession, out byte endingTrackNumber);
(byte minute, byte second, byte frame) leadinPmsf = (byte minute, byte second, byte frame) leadinPmsf =
LbaToMsf(tracks.FirstOrDefault(t => t.TrackSequence == endingTrackNumber)?.TrackEndSector ?? LbaToMsf((tracks.FirstOrDefault(t => t.TrackSequence == endingTrackNumber)?.TrackEndSector ??
0 + 1); 0) + 1);
// Starting track // Starting track
trackDescriptors.Add(new TrackDataDescriptor trackDescriptors.Add(new TrackDataDescriptor
@@ -756,7 +762,7 @@ namespace Aaru.Decoders.CD
}); });
} }
(byte minute, byte second, byte frame) pmsf = LbaToMsf(track.TrackStartSector); (byte minute, byte second, byte frame) pmsf = LbaToMsf((ulong)track.Indexes[1]);
// Track // Track
trackDescriptors.Add(new TrackDataDescriptor trackDescriptors.Add(new TrackDataDescriptor