mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Mark newly discovered pregap sectors for retry. Fixes incorrect data on some track type changes.
This commit is contained in:
@@ -30,8 +30,6 @@
|
|||||||
// Copyright © 2011-2022 Natalia Portillo
|
// Copyright © 2011-2022 Natalia Portillo
|
||||||
// ****************************************************************************/
|
// ****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ReSharper disable JoinDeclarationAndInitializer
|
// ReSharper disable JoinDeclarationAndInitializer
|
||||||
// ReSharper disable InlineOutVariableDeclaration
|
// ReSharper disable InlineOutVariableDeclaration
|
||||||
// ReSharper disable TooWideLocalVariableScope
|
// ReSharper disable TooWideLocalVariableScope
|
||||||
@@ -268,7 +266,8 @@ partial class Dump
|
|||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, i + r, 1, subLog, isrcs, 1, ref mcn, tracks,
|
desiredSubchannel, sub, i + r, 1, subLog, isrcs, 1, ref mcn, tracks,
|
||||||
subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
||||||
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true,
|
||||||
|
out List<ulong> newPregapSectors);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -350,13 +349,24 @@ partial class Dump
|
|||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, 1, ref mcn, tracks,
|
desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, 1, ref mcn, tracks,
|
||||||
subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
||||||
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true,
|
||||||
|
out List<ulong> newPregapSectors);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
{
|
{
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
|
|
||||||
|
foreach(ulong newPregapSector in newPregapSectors)
|
||||||
|
_resume.BadBlocks.Add(newPregapSector);
|
||||||
|
|
||||||
|
if(i >= blocksToRead)
|
||||||
i -= blocksToRead;
|
i -= blocksToRead;
|
||||||
|
else
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
if(i > 0)
|
||||||
|
i--;
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ using Aaru.Decoders.CD;
|
|||||||
using Aaru.Decoders.SCSI;
|
using Aaru.Decoders.SCSI;
|
||||||
using Aaru.Devices;
|
using Aaru.Devices;
|
||||||
using Schemas;
|
using Schemas;
|
||||||
|
using TrackType = Aaru.CommonTypes.Enums.TrackType;
|
||||||
|
|
||||||
partial class Dump
|
partial class Dump
|
||||||
{
|
{
|
||||||
@@ -513,13 +514,26 @@ partial class Dump
|
|||||||
desiredSubchannel, sub, i + r, 1, subLog, isrcs, (byte)track.Sequence, ref mcn,
|
desiredSubchannel, sub, i + r, 1, subLog, isrcs, (byte)track.Sequence, ref mcn,
|
||||||
tracks, subchannelExtents, _fixSubchannelPosition,
|
tracks, subchannelExtents, _fixSubchannelPosition,
|
||||||
outputFormat as IWritableOpticalImage, _fixSubchannel, _fixSubchannelCrc, _dumpLog,
|
outputFormat as IWritableOpticalImage, _fixSubchannel, _fixSubchannelCrc, _dumpLog,
|
||||||
UpdateStatus, smallestPregapLbaPerTrack, true);
|
UpdateStatus, smallestPregapLbaPerTrack, true, out List<ulong> newPregapSectors);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
{
|
{
|
||||||
(outputFormat as IWritableOpticalImage).SetTracks(tracks.ToList());
|
(outputFormat as IWritableOpticalImage).SetTracks(tracks.ToList());
|
||||||
|
|
||||||
|
foreach(ulong newPregapSector in newPregapSectors)
|
||||||
|
_resume.BadBlocks.Add(newPregapSector);
|
||||||
|
|
||||||
|
if(i >= blocksToRead)
|
||||||
i -= blocksToRead;
|
i -= blocksToRead;
|
||||||
|
else
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
if(i > 0)
|
||||||
|
i--;
|
||||||
|
|
||||||
|
foreach(Track aTrack in tracks.Where(aTrack => aTrack.Type == TrackType.Audio))
|
||||||
|
audioExtents.Add(aTrack.StartSector, aTrack.EndSector);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -656,14 +670,27 @@ partial class Dump
|
|||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, (byte)track.Sequence, ref mcn,
|
desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, (byte)track.Sequence, ref mcn,
|
||||||
tracks, subchannelExtents, _fixSubchannelPosition, outputFormat as IWritableOpticalImage,
|
tracks, subchannelExtents, _fixSubchannelPosition, outputFormat as IWritableOpticalImage,
|
||||||
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack,
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true,
|
||||||
true);
|
out List<ulong> newPregapSectors);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
{
|
{
|
||||||
(outputFormat as IWritableOpticalImage).SetTracks(tracks.ToList());
|
(outputFormat as IWritableOpticalImage).SetTracks(tracks.ToList());
|
||||||
|
|
||||||
|
foreach(ulong newPregapSector in newPregapSectors)
|
||||||
|
_resume.BadBlocks.Add(newPregapSector);
|
||||||
|
|
||||||
|
if(i >= blocksToRead)
|
||||||
i -= blocksToRead;
|
i -= blocksToRead;
|
||||||
|
else
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
if(i > 0)
|
||||||
|
i--;
|
||||||
|
|
||||||
|
foreach(Track aTrack in tracks.Where(aTrack => aTrack.Type == TrackType.Audio))
|
||||||
|
audioExtents.Add(aTrack.StartSector, aTrack.EndSector);
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,8 +30,6 @@
|
|||||||
// Copyright © 2011-2022 Natalia Portillo
|
// Copyright © 2011-2022 Natalia Portillo
|
||||||
// ****************************************************************************/
|
// ****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ReSharper disable JoinDeclarationAndInitializer
|
// ReSharper disable JoinDeclarationAndInitializer
|
||||||
// ReSharper disable InlineOutVariableDeclaration
|
// ReSharper disable InlineOutVariableDeclaration
|
||||||
// ReSharper disable TooWideLocalVariableScope
|
// ReSharper disable TooWideLocalVariableScope
|
||||||
@@ -367,7 +365,7 @@ partial class Dump
|
|||||||
_fixSubchannelPosition, outputOptical,
|
_fixSubchannelPosition, outputOptical,
|
||||||
_fixSubchannel, _fixSubchannelCrc,
|
_fixSubchannel, _fixSubchannelCrc,
|
||||||
_dumpLog, UpdateStatus,
|
_dumpLog, UpdateStatus,
|
||||||
smallestPregapLbaPerTrack, true);
|
smallestPregapLbaPerTrack, true, out _);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(!indexesChanged)
|
if(!indexesChanged)
|
||||||
@@ -497,15 +495,15 @@ partial class Dump
|
|||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.Sequence, ref mcn,
|
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.Sequence, ref mcn,
|
||||||
tracks, subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
tracks, subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
||||||
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true, out _);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(!indexesChanged)
|
||||||
{
|
continue;
|
||||||
|
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
i--;
|
i--;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(supportsLongSectors)
|
if(supportsLongSectors)
|
||||||
@@ -660,7 +658,7 @@ partial class Dump
|
|||||||
subLog, isrcs, (byte)track.Sequence, ref mcn, tracks,
|
subLog, isrcs, (byte)track.Sequence, ref mcn, tracks,
|
||||||
subchannelExtents, _fixSubchannelPosition, outputOptical,
|
subchannelExtents, _fixSubchannelPosition, outputOptical,
|
||||||
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus,
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus,
|
||||||
smallestPregapLbaPerTrack, true);
|
smallestPregapLbaPerTrack, true, out _);
|
||||||
|
|
||||||
if(subchannelExtents.Contains(bs))
|
if(subchannelExtents.Contains(bs))
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -30,8 +30,6 @@
|
|||||||
// Copyright © 2011-2022 Natalia Portillo
|
// Copyright © 2011-2022 Natalia Portillo
|
||||||
// ****************************************************************************/
|
// ****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ReSharper disable JoinDeclarationAndInitializer
|
// ReSharper disable JoinDeclarationAndInitializer
|
||||||
// ReSharper disable InlineOutVariableDeclaration
|
// ReSharper disable InlineOutVariableDeclaration
|
||||||
// ReSharper disable TooWideLocalVariableScope
|
// ReSharper disable TooWideLocalVariableScope
|
||||||
@@ -165,7 +163,7 @@ partial class Dump
|
|||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, i, _maximumReadable, subLog, isrcs, 0xAA, ref mcn, tracks,
|
desiredSubchannel, sub, i, _maximumReadable, subLog, isrcs, 0xAA, ref mcn, tracks,
|
||||||
subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
||||||
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true, out _);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -333,7 +331,7 @@ partial class Dump
|
|||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, i, _maximumReadable, subLog, isrcs, 0xAA, ref mcn, tracks,
|
desiredSubchannel, sub, i, _maximumReadable, subLog, isrcs, 0xAA, ref mcn, tracks,
|
||||||
subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
subchannelExtents, _fixSubchannelPosition, outputOptical, _fixSubchannel,
|
||||||
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true, out _);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
|
|||||||
@@ -30,8 +30,6 @@
|
|||||||
// Copyright © 2011-2022 Natalia Portillo
|
// Copyright © 2011-2022 Natalia Portillo
|
||||||
// ****************************************************************************/
|
// ****************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ReSharper disable JoinDeclarationAndInitializer
|
// ReSharper disable JoinDeclarationAndInitializer
|
||||||
// ReSharper disable InlineOutVariableDeclaration
|
// ReSharper disable InlineOutVariableDeclaration
|
||||||
// ReSharper disable TooWideLocalVariableScope
|
// ReSharper disable TooWideLocalVariableScope
|
||||||
@@ -271,7 +269,7 @@ partial class Dump
|
|||||||
_fixSubchannelPosition, outputOptical,
|
_fixSubchannelPosition, outputOptical,
|
||||||
_fixSubchannel, _fixSubchannelCrc,
|
_fixSubchannel, _fixSubchannelCrc,
|
||||||
_dumpLog, UpdateStatus,
|
_dumpLog, UpdateStatus,
|
||||||
smallestPregapLbaPerTrack, true);
|
smallestPregapLbaPerTrack, true, out _);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(!indexesChanged)
|
if(!indexesChanged)
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ public static class CompactDisc
|
|||||||
bool fixSubchannelPosition, IWritableOpticalImage outputPlugin,
|
bool fixSubchannelPosition, IWritableOpticalImage outputPlugin,
|
||||||
bool fixSubchannel, bool fixSubchannelCrc, DumpLog dumpLog,
|
bool fixSubchannel, bool fixSubchannelCrc, DumpLog dumpLog,
|
||||||
UpdateStatusHandler updateStatus,
|
UpdateStatusHandler updateStatus,
|
||||||
Dictionary<byte, int> smallestPregapLbaPerTrack, bool dumping)
|
Dictionary<byte, int> smallestPregapLbaPerTrack, bool dumping, out List<ulong> newPregapSectors)
|
||||||
{
|
{
|
||||||
// We need to work in PW raw subchannels
|
// We need to work in PW raw subchannels
|
||||||
if(supportedSubchannel == MmcSubchannel.Q16)
|
if(supportedSubchannel == MmcSubchannel.Q16)
|
||||||
@@ -88,7 +88,7 @@ public static class CompactDisc
|
|||||||
byte[] deSub = Subchannel.Deinterleave(sub);
|
byte[] deSub = Subchannel.Deinterleave(sub);
|
||||||
|
|
||||||
bool indexesChanged = CheckIndexesFromSubchannel(deSub, isrcs, currentTrack, ref mcn, tracks, dumpLog,
|
bool indexesChanged = CheckIndexesFromSubchannel(deSub, isrcs, currentTrack, ref mcn, tracks, dumpLog,
|
||||||
updateStatus, smallestPregapLbaPerTrack, dumping);
|
updateStatus, smallestPregapLbaPerTrack, dumping, out newPregapSectors);
|
||||||
|
|
||||||
if(!fixSubchannelPosition ||
|
if(!fixSubchannelPosition ||
|
||||||
desiredSubchannel == MmcSubchannel.None)
|
desiredSubchannel == MmcSubchannel.None)
|
||||||
@@ -312,9 +312,10 @@ public static class CompactDisc
|
|||||||
static bool CheckIndexesFromSubchannel(byte[] deSub, Dictionary<byte, string> isrcs, byte currentTrack,
|
static bool CheckIndexesFromSubchannel(byte[] deSub, Dictionary<byte, string> isrcs, byte currentTrack,
|
||||||
ref string mcn, Track[] tracks, DumpLog dumpLog,
|
ref string mcn, Track[] tracks, DumpLog dumpLog,
|
||||||
UpdateStatusHandler updateStatus,
|
UpdateStatusHandler updateStatus,
|
||||||
Dictionary<byte, int> smallestPregapLbaPerTrack, bool dumping)
|
Dictionary<byte, int> smallestPregapLbaPerTrack, bool dumping, out List<ulong> newPregapSectors)
|
||||||
{
|
{
|
||||||
var status = false;
|
var status = false;
|
||||||
|
newPregapSectors = new List<ulong>();
|
||||||
|
|
||||||
// Check subchannel
|
// Check subchannel
|
||||||
for(var subPos = 0; subPos < deSub.Length; subPos += 96)
|
for(var subPos = 0; subPos < deSub.Length; subPos += 96)
|
||||||
@@ -431,6 +432,9 @@ public static class CompactDisc
|
|||||||
|
|
||||||
updateStatus?.Invoke($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors.");
|
updateStatus?.Invoke($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors.");
|
||||||
|
|
||||||
|
for(var p = 0; p < dif; p++)
|
||||||
|
newPregapSectors.Add(tracks[i].StartSector+(ulong)p);
|
||||||
|
|
||||||
status = true;
|
status = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -450,6 +454,9 @@ public static class CompactDisc
|
|||||||
|
|
||||||
updateStatus?.Invoke($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors.");
|
updateStatus?.Invoke($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors.");
|
||||||
|
|
||||||
|
for(var p = 0; p < (int)(tracks[i].Pregap - oldPregap); p++)
|
||||||
|
newPregapSectors.Add(tracks[i].StartSector +(ulong)p);
|
||||||
|
|
||||||
status = true;
|
status = true;
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -1172,7 +1172,7 @@ public sealed class ImageConvertViewModel : ViewModelBase
|
|||||||
MmcSubchannel.Raw, sector, doneSectors, 1, null, isrcs, (byte)track.Sequence,
|
MmcSubchannel.Raw, sector, doneSectors, 1, null, isrcs, (byte)track.Sequence,
|
||||||
ref mcn, tracks.ToArray(), subchannelExtents, false,
|
ref mcn, tracks.ToArray(), subchannelExtents, false,
|
||||||
outputFormat as IWritableOpticalImage, false, false, null, null,
|
outputFormat as IWritableOpticalImage, false, false, null, null,
|
||||||
smallestPregapLbaPerTrack, false);
|
smallestPregapLbaPerTrack, false, out _);
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
@@ -1224,7 +1224,7 @@ public sealed class ImageConvertViewModel : ViewModelBase
|
|||||||
MmcSubchannel.Raw, sector, doneSectors, sectorsToDo, null, isrcs,
|
MmcSubchannel.Raw, sector, doneSectors, sectorsToDo, null, isrcs,
|
||||||
(byte)track.Sequence, ref mcn, tracks.ToArray(), subchannelExtents, false,
|
(byte)track.Sequence, ref mcn, tracks.ToArray(), subchannelExtents, false,
|
||||||
outputFormat as IWritableOpticalImage, false, false, null, null,
|
outputFormat as IWritableOpticalImage, false, false, null, null,
|
||||||
smallestPregapLbaPerTrack, false);
|
smallestPregapLbaPerTrack, false, out _);
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ public abstract class OpticalImageConvertIssueTest
|
|||||||
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
||||||
MmcSubchannel.Raw, sector, doneSectors + track.StartSector, 1, null, isrcs,
|
MmcSubchannel.Raw, sector, doneSectors + track.StartSector, 1, null, isrcs,
|
||||||
(byte)track.Sequence, ref mcn, tracks, subchannelExtents, true, outputOptical,
|
(byte)track.Sequence, ref mcn, tracks, subchannelExtents, true, outputOptical,
|
||||||
true, true, null, null, smallestPregapLbaPerTrack, false);
|
true, true, null, null, smallestPregapLbaPerTrack, false, out _);
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
@@ -320,7 +320,7 @@ public abstract class OpticalImageConvertIssueTest
|
|||||||
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
||||||
MmcSubchannel.Raw, sector, doneSectors + track.StartSector, sectorsToDo, null,
|
MmcSubchannel.Raw, sector, doneSectors + track.StartSector, sectorsToDo, null,
|
||||||
isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, true,
|
isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, true,
|
||||||
outputOptical, true, true, null, null, smallestPregapLbaPerTrack, false);
|
outputOptical, true, true, null, null, smallestPregapLbaPerTrack, false, out _);
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
|
|||||||
@@ -365,7 +365,8 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
|
|||||||
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
||||||
MmcSubchannel.Raw, sector, doneSectors + track.StartSector, 1, null, isrcs,
|
MmcSubchannel.Raw, sector, doneSectors + track.StartSector, 1, null, isrcs,
|
||||||
(byte)track.Sequence, ref mcn, tracks, subchannelExtents, true,
|
(byte)track.Sequence, ref mcn, tracks, subchannelExtents, true,
|
||||||
outputFormat, true, true, null, null, smallestPregapLbaPerTrack, false);
|
outputFormat, true, true, null, null, smallestPregapLbaPerTrack, false,
|
||||||
|
out _);
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputFormat.SetTracks(tracks.ToList());
|
outputFormat.SetTracks(tracks.ToList());
|
||||||
@@ -389,7 +390,7 @@ public abstract class WritableOpticalMediaImageTest : BaseWritableMediaImageTest
|
|||||||
MmcSubchannel.Raw, sector, doneSectors + track.StartSector, sectorsToDo,
|
MmcSubchannel.Raw, sector, doneSectors + track.StartSector, sectorsToDo,
|
||||||
null, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents,
|
null, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents,
|
||||||
true, outputFormat, true, true, null, null, smallestPregapLbaPerTrack,
|
true, outputFormat, true, true, null, null, smallestPregapLbaPerTrack,
|
||||||
false);
|
false, out _);
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputFormat.SetTracks(tracks.ToList());
|
outputFormat.SetTracks(tracks.ToList());
|
||||||
|
|||||||
@@ -1136,7 +1136,7 @@ sealed class ConvertImageCommand : Command
|
|||||||
(byte)track.Sequence, ref mcn, tracks,
|
(byte)track.Sequence, ref mcn, tracks,
|
||||||
subchannelExtents, fixSubchannelPosition,
|
subchannelExtents, fixSubchannelPosition,
|
||||||
outputOptical, fixSubchannel, fixSubchannelCrc, null,
|
outputOptical, fixSubchannel, fixSubchannelCrc, null,
|
||||||
null, smallestPregapLbaPerTrack, false);
|
null, smallestPregapLbaPerTrack, false, out _);
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
@@ -1182,7 +1182,7 @@ sealed class ConvertImageCommand : Command
|
|||||||
isrcs, (byte)track.Sequence, ref mcn, tracks,
|
isrcs, (byte)track.Sequence, ref mcn, tracks,
|
||||||
subchannelExtents, fixSubchannelPosition,
|
subchannelExtents, fixSubchannelPosition,
|
||||||
outputOptical, fixSubchannel, fixSubchannelCrc, null,
|
outputOptical, fixSubchannel, fixSubchannelCrc, null,
|
||||||
null, smallestPregapLbaPerTrack, false);
|
null, smallestPregapLbaPerTrack, false, out _);
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
|
|||||||
Reference in New Issue
Block a user