mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Handle dumping CD-i discs with audio tracks and a hidden data track 1. Fixes #703
This commit is contained in:
@@ -562,14 +562,14 @@ sealed partial class Dump
|
||||
{
|
||||
new Track
|
||||
{
|
||||
Sequence = 0,
|
||||
Sequence = (uint)(tracks.Any(t => t.Sequence == 1) ? 0 : 1),
|
||||
Session = 1,
|
||||
Type = hiddenData ? TrackType.Data : TrackType.Audio,
|
||||
StartSector = 0,
|
||||
BytesPerSector = (int)sectorSize,
|
||||
RawBytesPerSector = (int)sectorSize,
|
||||
SubchannelType = subType,
|
||||
EndSector = tracks.First(t => t.Sequence == 1).StartSector - 1
|
||||
EndSector = tracks.First(t => t.Sequence >= 1).StartSector - 1
|
||||
}
|
||||
};
|
||||
|
||||
@@ -785,6 +785,15 @@ sealed partial class Dump
|
||||
StoppingErrorMessage?.Invoke($"Device error {_dev.LastError} trying to guess ideal transfer length.");
|
||||
}
|
||||
|
||||
var cdiWithHiddenTrack1 = false;
|
||||
|
||||
if(dskType is MediaType.CDIREADY &&
|
||||
tracks.Min(t => t.Sequence) == 1)
|
||||
{
|
||||
cdiWithHiddenTrack1 = true;
|
||||
dskType = MediaType.CDI;
|
||||
}
|
||||
|
||||
// Try to read the first track pregap
|
||||
if(_dumpFirstTrackPregap && readcd)
|
||||
ReadCdFirstTrackPregap(blockSize, ref currentSpeed, mediaTags, supportedSubchannel, ref totalDuration);
|
||||
@@ -1099,9 +1108,9 @@ sealed partial class Dump
|
||||
// Start reading
|
||||
start = DateTime.UtcNow;
|
||||
|
||||
if(dskType == MediaType.CDIREADY)
|
||||
if(dskType == MediaType.CDIREADY || cdiWithHiddenTrack1)
|
||||
{
|
||||
Track track0 = tracks.FirstOrDefault(t => t.Sequence == 0);
|
||||
Track track0 = tracks.FirstOrDefault(t => t.Sequence is 0 or 1);
|
||||
|
||||
track0.Type = TrackType.CdMode2Formless;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user