mirror of
https://github.com/aaru-dps/Aaru.Decoders.git
synced 2025-12-16 19:24:32 +00:00
Fix full TOC generation. Fixes #625
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user