Continue calculation of pregap even if we didnt get a valid Q subchannel.

This commit is contained in:
2020-01-05 15:49:01 +00:00
parent 72578b7daf
commit fb0281ef41

View File

@@ -218,8 +218,6 @@ namespace DiscImageChef.Core.Devices.Dumping
// Calculate pregap
lba = (int)track.TrackStartSector - 150;
pregapFound = false;
while(lba > (int)previousTrack.TrackStartSector)
{
// Some drives crash if you try to read just before the previous read, so seek away first
@@ -237,9 +235,16 @@ namespace DiscImageChef.Core.Devices.Dumping
CRC16CCITTContext.Data(subBuf, 10, out crc);
if(crc[0] != subBuf[10] ||
crc[1] != subBuf[11])
continue;
if(crc[0] == subBuf[10] &&
crc[1] == subBuf[11])
break;
}
if(retries == 10)
{
dumpLog?.WriteLine($"Could not get correct subchannel for sector {lba}");
updateStatus?.Invoke($"Could not get correct subchannel for sector {lba}");
}
BcdToBinaryQ(subBuf);
@@ -252,16 +257,16 @@ namespace DiscImageChef.Core.Devices.Dumping
lba++;
if(lba == (int)previousTrack.TrackStartSector)
pregapFound = true;
break;
continue;
}
// Search back
goneBack = true;
lba--;
break;
continue;
}
// Previous track
@@ -273,7 +278,7 @@ namespace DiscImageChef.Core.Devices.Dumping
if(goneBack)
goFront = true;
break;
continue;
}
// Same track, but not pregap
@@ -282,7 +287,7 @@ namespace DiscImageChef.Core.Devices.Dumping
{
lba--;
break;
continue;
}
// Pregap according to Q position
@@ -292,23 +297,9 @@ namespace DiscImageChef.Core.Devices.Dumping
if(pregapQ > pregaps[track.TrackSequence])
pregaps[track.TrackSequence] = pregapQ;
else if(pregapQ == pregaps[track.TrackSequence])
pregapFound = true;
break;
lba--;
break;
}
if(pregapFound)
break;
if(retries != 10)
continue;
dumpLog?.WriteLine($"Could not calculate pregap for track {track.TrackSequence}");
updateStatus?.Invoke($"Could not calculate pregap for track {track.TrackSequence}");
break;
}
}