mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Change how pregap starting with 0 is calculated dumping vs converting. Fixes #375
This commit is contained in:
@@ -261,16 +261,9 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
_outputPlugin.WriteSectorsLong(data, i + r, 1);
|
_outputPlugin.WriteSectorsLong(data, i + r, 1);
|
||||||
|
|
||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub,
|
desiredSubchannel, sub, i + r, 1, subLog, isrcs, 1, ref mcn, tracks,
|
||||||
i + r, 1, subLog, isrcs,
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
1, ref mcn, tracks,
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
||||||
subchannelExtents,
|
|
||||||
_fixSubchannelPosition,
|
|
||||||
_outputPlugin,
|
|
||||||
_fixSubchannel,
|
|
||||||
_fixSubchannelCrc,
|
|
||||||
_dumpLog, UpdateStatus,
|
|
||||||
smallestPregapLbaPerTrack);
|
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -353,15 +346,9 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
_outputPlugin.WriteSectorsLong(data, i, blocksToRead);
|
_outputPlugin.WriteSectorsLong(data, i, blocksToRead);
|
||||||
|
|
||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, i,
|
desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, 1, ref mcn, tracks,
|
||||||
blocksToRead, subLog, isrcs, 1,
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
ref mcn, tracks,
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
||||||
subchannelExtents,
|
|
||||||
_fixSubchannelPosition,
|
|
||||||
_outputPlugin, _fixSubchannel,
|
|
||||||
_fixSubchannelCrc, _dumpLog,
|
|
||||||
UpdateStatus,
|
|
||||||
smallestPregapLbaPerTrack);
|
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
|
|||||||
@@ -417,7 +417,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
desiredSubchannel, sub, i + r, 1, subLog, isrcs, (byte)track.TrackSequence,
|
desiredSubchannel, sub, i + r, 1, subLog, isrcs, (byte)track.TrackSequence,
|
||||||
ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
||||||
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus,
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus,
|
||||||
smallestPregapLbaPerTrack);
|
smallestPregapLbaPerTrack, true);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -560,7 +560,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, (byte)track.TrackSequence,
|
desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, (byte)track.TrackSequence,
|
||||||
ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
||||||
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack);
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack,
|
||||||
|
true);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
|
|||||||
@@ -308,7 +308,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence, ref mcn,
|
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence, ref mcn,
|
||||||
tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack);
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -440,7 +440,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence,
|
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence,
|
||||||
ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
||||||
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus,
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus,
|
||||||
smallestPregapLbaPerTrack);
|
smallestPregapLbaPerTrack, true);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -590,7 +590,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
subLog, isrcs, (byte)track.TrackSequence, ref mcn, tracks,
|
subLog, isrcs, (byte)track.TrackSequence, ref mcn, tracks,
|
||||||
subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
||||||
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus,
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus,
|
||||||
smallestPregapLbaPerTrack);
|
smallestPregapLbaPerTrack, true);
|
||||||
|
|
||||||
if(subchannelExtents.Contains(bs))
|
if(subchannelExtents.Contains(bs))
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -161,16 +161,9 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
_outputPlugin.WriteSectorsLong(data, i, _maximumReadable);
|
_outputPlugin.WriteSectorsLong(data, i, _maximumReadable);
|
||||||
|
|
||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, i,
|
desiredSubchannel, sub, i, _maximumReadable, subLog, isrcs, 0xAA, ref mcn, tracks,
|
||||||
_maximumReadable, subLog,
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
isrcs, 0xAA, ref mcn, tracks,
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
||||||
subchannelExtents,
|
|
||||||
_fixSubchannelPosition,
|
|
||||||
_outputPlugin,
|
|
||||||
_fixSubchannel,
|
|
||||||
_fixSubchannelCrc, _dumpLog,
|
|
||||||
UpdateStatus,
|
|
||||||
smallestPregapLbaPerTrack);
|
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -336,16 +329,9 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
_outputPlugin.WriteSectorsLong(data, i, _maximumReadable);
|
_outputPlugin.WriteSectorsLong(data, i, _maximumReadable);
|
||||||
|
|
||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, i,
|
desiredSubchannel, sub, i, _maximumReadable, subLog, isrcs, 0xAA, ref mcn, tracks,
|
||||||
_maximumReadable, subLog,
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
isrcs, 0xAA, ref mcn, tracks,
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
||||||
subchannelExtents,
|
|
||||||
_fixSubchannelPosition,
|
|
||||||
_outputPlugin,
|
|
||||||
_fixSubchannel,
|
|
||||||
_fixSubchannelCrc, _dumpLog,
|
|
||||||
UpdateStatus,
|
|
||||||
smallestPregapLbaPerTrack);
|
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence, ref mcn,
|
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence, ref mcn,
|
||||||
tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack);
|
_fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(!indexesChanged)
|
if(!indexesChanged)
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace Aaru.Core.Media
|
|||||||
bool fixSubchannelPosition, IWritableImage outputPlugin,
|
bool fixSubchannelPosition, IWritableImage outputPlugin,
|
||||||
bool fixSubchannel, bool fixSubchannelCrc, DumpLog dumpLog,
|
bool fixSubchannel, bool fixSubchannelCrc, DumpLog dumpLog,
|
||||||
UpdateStatusHandler updateStatus,
|
UpdateStatusHandler updateStatus,
|
||||||
Dictionary<byte, int> smallestPregapLbaPerTrack)
|
Dictionary<byte, int> smallestPregapLbaPerTrack, bool dumping)
|
||||||
{
|
{
|
||||||
if(supportedSubchannel == MmcSubchannel.Q16)
|
if(supportedSubchannel == MmcSubchannel.Q16)
|
||||||
sub = Subchannel.ConvertQToRaw(sub);
|
sub = Subchannel.ConvertQToRaw(sub);
|
||||||
@@ -65,7 +65,7 @@ namespace Aaru.Core.Media
|
|||||||
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);
|
updateStatus, smallestPregapLbaPerTrack, dumping);
|
||||||
|
|
||||||
if(!fixSubchannelPosition ||
|
if(!fixSubchannelPosition ||
|
||||||
desiredSubchannel == MmcSubchannel.None)
|
desiredSubchannel == MmcSubchannel.None)
|
||||||
@@ -100,8 +100,8 @@ namespace Aaru.Core.Media
|
|||||||
pWeight++;
|
pWeight++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!deSub.Skip(subPos + 24).Take(96 - 24).All(rw => (rw == 0)) &&
|
if(!deSub.Skip(subPos + 24).Take(96 - 24).All(rw => rw == 0) &&
|
||||||
!deSub.Skip(subPos + 24).Take(96 - 24).All(rw => (rw == 0xFF)))
|
!deSub.Skip(subPos + 24).Take(96 - 24).All(rw => rw == 0xFF))
|
||||||
rwOk = false;
|
rwOk = false;
|
||||||
|
|
||||||
bool rwPacket = false;
|
bool rwPacket = false;
|
||||||
@@ -253,7 +253,7 @@ namespace Aaru.Core.Media
|
|||||||
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)
|
Dictionary<byte, int> smallestPregapLbaPerTrack, bool dumping)
|
||||||
{
|
{
|
||||||
bool status = false;
|
bool status = false;
|
||||||
|
|
||||||
@@ -339,8 +339,10 @@ namespace Aaru.Core.Media
|
|||||||
byte pframe = (byte)(((q[5] / 16) * 10) + (q[5] & 0x0F));
|
byte pframe = (byte)(((q[5] / 16) * 10) + (q[5] & 0x0F));
|
||||||
int qPos = (pmin * 60 * 75) + (psec * 75) + pframe;
|
int qPos = (pmin * 60 * 75) + (psec * 75) + pframe;
|
||||||
|
|
||||||
|
// When we are dumping we calculate the pregap in reverse from index 1 back.
|
||||||
|
// When we are not, we go from index 0.
|
||||||
if(!smallestPregapLbaPerTrack.ContainsKey(trackNo))
|
if(!smallestPregapLbaPerTrack.ContainsKey(trackNo))
|
||||||
smallestPregapLbaPerTrack[trackNo] = 1;
|
smallestPregapLbaPerTrack[trackNo] = dumping ? 1 : 0;
|
||||||
|
|
||||||
if(qPos < smallestPregapLbaPerTrack[trackNo])
|
if(qPos < smallestPregapLbaPerTrack[trackNo])
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -676,16 +676,12 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
});
|
});
|
||||||
|
|
||||||
foreach(MediaTagType mediaTag in _inputFormat.Info.ReadableMediaTags.Where(mediaTag =>
|
foreach(MediaTagType mediaTag in _inputFormat.Info.ReadableMediaTags.Where(mediaTag =>
|
||||||
!outputFormat.
|
!outputFormat.SupportedMediaTags.Contains(mediaTag) && !ForceChecked))
|
||||||
SupportedMediaTags.
|
|
||||||
Contains(mediaTag) &&
|
|
||||||
!ForceChecked))
|
|
||||||
{
|
{
|
||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Converting image will lose media tag {mediaTag}, not continuing...",
|
$"Converting image will lose media tag {mediaTag}, not continuing...",
|
||||||
icon: Icon.
|
icon: Icon.Error).
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -694,9 +690,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
bool useLong = _inputFormat.Info.ReadableSectorTags.Count != 0;
|
bool useLong = _inputFormat.Info.ReadableSectorTags.Count != 0;
|
||||||
|
|
||||||
foreach(SectorTagType sectorTag in _inputFormat.Info.ReadableSectorTags.Where(sectorTag =>
|
foreach(SectorTagType sectorTag in _inputFormat.Info.ReadableSectorTags.Where(sectorTag =>
|
||||||
!outputFormat.
|
!outputFormat.SupportedSectorTags.Contains(sectorTag)))
|
||||||
SupportedSectorTags.
|
|
||||||
Contains(sectorTag)))
|
|
||||||
{
|
{
|
||||||
if(ForceChecked)
|
if(ForceChecked)
|
||||||
{
|
{
|
||||||
@@ -711,8 +705,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Converting image will lose sector tag {sectorTag}, not continuing...",
|
$"Converting image will lose sector tag {sectorTag}, not continuing...",
|
||||||
icon: Icon.
|
icon: Icon.Error).
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -765,8 +758,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} creating output image.",
|
$"Error {outputFormat.ErrorMessage} creating output image.",
|
||||||
icon: Icon.
|
icon: Icon.Error).
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
AaruConsole.ErrorWriteLine("Error {0} creating output image.", outputFormat.ErrorMessage);
|
AaruConsole.ErrorWriteLine("Error {0} creating output image.", outputFormat.ErrorMessage);
|
||||||
@@ -812,10 +804,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} setting metadata, not continuing...",
|
$"Error {outputFormat.ErrorMessage} setting metadata, not continuing...",
|
||||||
icon
|
icon: Icon.Error).ShowDialog(_view));
|
||||||
: Icon.
|
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
|
||||||
|
|
||||||
AaruConsole.ErrorWriteLine("not continuing...");
|
AaruConsole.ErrorWriteLine("not continuing...");
|
||||||
|
|
||||||
@@ -843,9 +832,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} sending tracks list to output image.",
|
$"Error {outputFormat.ErrorMessage} sending tracks list to output image.",
|
||||||
icon:
|
icon: Icon.Error).
|
||||||
Icon.
|
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
AaruConsole.ErrorWriteLine("Error {0} sending tracks list to output image.",
|
AaruConsole.ErrorWriteLine("Error {0} sending tracks list to output image.",
|
||||||
@@ -883,9 +870,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} writing media tag, not continuing...",
|
$"Error {outputFormat.ErrorMessage} writing media tag, not continuing...",
|
||||||
icon:
|
icon: Icon.Error).
|
||||||
Icon.
|
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
AaruConsole.ErrorWriteLine("Error {0} writing media tag, not continuing...",
|
AaruConsole.ErrorWriteLine("Error {0} writing media tag, not continuing...",
|
||||||
@@ -992,10 +977,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} writing sector {doneSectors}, not continuing...",
|
$"Error {outputFormat.ErrorMessage} writing sector {doneSectors}, not continuing...",
|
||||||
icon
|
icon: Icon.Error).ShowDialog(_view));
|
||||||
: Icon.
|
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
|
||||||
|
|
||||||
AaruConsole.ErrorWriteLine("Error {0} writing sector {1}, not continuing...",
|
AaruConsole.ErrorWriteLine("Error {0} writing sector {1}, not continuing...",
|
||||||
outputFormat.ErrorMessage, doneSectors);
|
outputFormat.ErrorMessage, doneSectors);
|
||||||
@@ -1121,14 +1103,9 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
track != null)
|
track != null)
|
||||||
{
|
{
|
||||||
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
||||||
MmcSubchannel.Raw, sector,
|
MmcSubchannel.Raw, sector, doneSectors, 1, null, isrcs,
|
||||||
doneSectors, 1, null, isrcs,
|
(byte)track.TrackSequence, ref mcn, tracks.ToArray(), subchannelExtents, false,
|
||||||
(byte)track.TrackSequence,
|
outputFormat, false, false, null, null, smallestPregapLbaPerTrack, false);
|
||||||
ref mcn, tracks.ToArray(),
|
|
||||||
subchannelExtents, false,
|
|
||||||
outputFormat, false, false,
|
|
||||||
null, null,
|
|
||||||
smallestPregapLbaPerTrack);
|
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
@@ -1148,15 +1125,9 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
|
|
||||||
{
|
{
|
||||||
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
||||||
MmcSubchannel.Raw, sector,
|
MmcSubchannel.Raw, sector, doneSectors, sectorsToDo, null, isrcs,
|
||||||
doneSectors, sectorsToDo, null,
|
(byte)track.TrackSequence, ref mcn, tracks.ToArray(), subchannelExtents, false,
|
||||||
isrcs,
|
outputFormat, false, false, null, null, smallestPregapLbaPerTrack, false);
|
||||||
(byte)track.TrackSequence,
|
|
||||||
ref mcn, tracks.ToArray(),
|
|
||||||
subchannelExtents, false,
|
|
||||||
outputFormat, false, false,
|
|
||||||
null, null,
|
|
||||||
smallestPregapLbaPerTrack);
|
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
@@ -1180,9 +1151,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} writing sector {doneSectors}, not continuing...",
|
$"Error {outputFormat.ErrorMessage} writing sector {doneSectors}, not continuing...",
|
||||||
icon
|
icon: Icon.Error).
|
||||||
: Icon.
|
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
AaruConsole.ErrorWriteLine("Error {0} writing sector {1}, not continuing...",
|
AaruConsole.ErrorWriteLine("Error {0} writing sector {1}, not continuing...",
|
||||||
@@ -1303,9 +1272,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} writing sector {doneSectors}, not continuing...",
|
$"Error {outputFormat.ErrorMessage} writing sector {doneSectors}, not continuing...",
|
||||||
icon
|
icon: Icon.Error).
|
||||||
: Icon.
|
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -1323,8 +1290,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
Progress2Value = Progress2MaxValue;
|
Progress2Value = Progress2MaxValue;
|
||||||
});
|
});
|
||||||
|
|
||||||
foreach(SectorTagType tag in _inputFormat.
|
foreach(SectorTagType tag in _inputFormat.Info.ReadableSectorTags.OrderBy(t => t).
|
||||||
Info.ReadableSectorTags.OrderBy(t => t).
|
|
||||||
TakeWhile(tag => useLong && !_cancel))
|
TakeWhile(tag => useLong && !_cancel))
|
||||||
{
|
{
|
||||||
switch(tag)
|
switch(tag)
|
||||||
@@ -1382,9 +1348,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await MessageBoxManager.
|
await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} writing tag, not continuing...",
|
$"Error {outputFormat.ErrorMessage} writing tag, not continuing...",
|
||||||
icon
|
icon: Icon.Error).
|
||||||
: Icon.
|
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -1442,9 +1406,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} writing tag for sector {doneSectors}, not continuing...",
|
$"Error {outputFormat.ErrorMessage} writing tag for sector {doneSectors}, not continuing...",
|
||||||
icon
|
icon: Icon.Error).
|
||||||
: Icon.
|
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -1525,8 +1487,7 @@ namespace Aaru.Gui.ViewModels.Windows
|
|||||||
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
await Dispatcher.UIThread.InvokeAsync(action: async () => await MessageBoxManager.
|
||||||
GetMessageBoxStandardWindow("Error",
|
GetMessageBoxStandardWindow("Error",
|
||||||
$"Error {outputFormat.ErrorMessage} closing output image... Contents are not correct.",
|
$"Error {outputFormat.ErrorMessage} closing output image... Contents are not correct.",
|
||||||
icon: Icon.
|
icon: Icon.Error).
|
||||||
Error).
|
|
||||||
ShowDialog(_view));
|
ShowDialog(_view));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -557,10 +557,7 @@ namespace Aaru.Commands.Image
|
|||||||
}
|
}
|
||||||
|
|
||||||
foreach(MediaTagType mediaTag in inputFormat.Info.ReadableMediaTags.Where(mediaTag =>
|
foreach(MediaTagType mediaTag in inputFormat.Info.ReadableMediaTags.Where(mediaTag =>
|
||||||
!outputFormat.
|
!outputFormat.SupportedMediaTags.Contains(mediaTag) && !force))
|
||||||
SupportedMediaTags.
|
|
||||||
Contains(mediaTag) &&
|
|
||||||
!force))
|
|
||||||
{
|
{
|
||||||
AaruConsole.ErrorWriteLine("Converting image will lose media tag {0}, not continuing...", mediaTag);
|
AaruConsole.ErrorWriteLine("Converting image will lose media tag {0}, not continuing...", mediaTag);
|
||||||
AaruConsole.ErrorWriteLine("If you don't care, use force option.");
|
AaruConsole.ErrorWriteLine("If you don't care, use force option.");
|
||||||
@@ -571,9 +568,7 @@ namespace Aaru.Commands.Image
|
|||||||
bool useLong = inputFormat.Info.ReadableSectorTags.Count != 0;
|
bool useLong = inputFormat.Info.ReadableSectorTags.Count != 0;
|
||||||
|
|
||||||
foreach(SectorTagType sectorTag in inputFormat.Info.ReadableSectorTags.Where(sectorTag =>
|
foreach(SectorTagType sectorTag in inputFormat.Info.ReadableSectorTags.Where(sectorTag =>
|
||||||
!outputFormat.
|
!outputFormat.SupportedSectorTags.Contains(sectorTag)))
|
||||||
SupportedSectorTags.
|
|
||||||
Contains(sectorTag)))
|
|
||||||
{
|
{
|
||||||
if(force)
|
if(force)
|
||||||
{
|
{
|
||||||
@@ -639,9 +634,7 @@ namespace Aaru.Commands.Image
|
|||||||
List<DumpHardwareType> dumpHardware = inputFormat.DumpHardware;
|
List<DumpHardwareType> dumpHardware = inputFormat.DumpHardware;
|
||||||
|
|
||||||
foreach(MediaTagType mediaTag in inputFormat.Info.ReadableMediaTags.Where(mediaTag =>
|
foreach(MediaTagType mediaTag in inputFormat.Info.ReadableMediaTags.Where(mediaTag =>
|
||||||
!force || outputFormat.
|
!force || outputFormat.SupportedMediaTags.Contains(mediaTag)))
|
||||||
SupportedMediaTags.
|
|
||||||
Contains(mediaTag)))
|
|
||||||
{
|
{
|
||||||
AaruConsole.WriteLine("Converting media tag {0}", mediaTag);
|
AaruConsole.WriteLine("Converting media tag {0}", mediaTag);
|
||||||
byte[] tag = inputFormat.ReadDiskTag(mediaTag);
|
byte[] tag = inputFormat.ReadDiskTag(mediaTag);
|
||||||
@@ -833,8 +826,8 @@ namespace Aaru.Commands.Image
|
|||||||
subchannelExtents.Add((int)s);
|
subchannelExtents.Add((int)s);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(SectorTagType tag in inputFormat.
|
foreach(SectorTagType tag in inputFormat.Info.ReadableSectorTags.OrderBy(t => t).
|
||||||
Info.ReadableSectorTags.OrderBy(t => t).TakeWhile(tag => useLong))
|
TakeWhile(tag => useLong))
|
||||||
{
|
{
|
||||||
switch(tag)
|
switch(tag)
|
||||||
{
|
{
|
||||||
@@ -908,19 +901,10 @@ namespace Aaru.Commands.Image
|
|||||||
if(tag == SectorTagType.CdSectorSubchannel)
|
if(tag == SectorTagType.CdSectorSubchannel)
|
||||||
{
|
{
|
||||||
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
||||||
MmcSubchannel.Raw, sector,
|
MmcSubchannel.Raw, sector, doneSectors + track.TrackStartSector, 1, null,
|
||||||
doneSectors +
|
isrcs, (byte)track.TrackSequence, ref mcn, tracks, subchannelExtents,
|
||||||
track.TrackStartSector, 1,
|
fixSubchannelPosition, outputFormat, fixSubchannel, fixSubchannelCrc, null,
|
||||||
null, isrcs,
|
null, smallestPregapLbaPerTrack, false);
|
||||||
(byte)track.TrackSequence,
|
|
||||||
ref mcn, tracks,
|
|
||||||
subchannelExtents,
|
|
||||||
fixSubchannelPosition,
|
|
||||||
outputFormat,
|
|
||||||
fixSubchannel,
|
|
||||||
fixSubchannelCrc, null,
|
|
||||||
null,
|
|
||||||
smallestPregapLbaPerTrack);
|
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
@@ -939,19 +923,10 @@ namespace Aaru.Commands.Image
|
|||||||
if(tag == SectorTagType.CdSectorSubchannel)
|
if(tag == SectorTagType.CdSectorSubchannel)
|
||||||
{
|
{
|
||||||
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw,
|
||||||
MmcSubchannel.Raw, sector,
|
MmcSubchannel.Raw, sector, doneSectors + track.TrackStartSector,
|
||||||
doneSectors +
|
sectorsToDo, null, isrcs, (byte)track.TrackSequence, ref mcn, tracks,
|
||||||
track.TrackStartSector,
|
subchannelExtents, fixSubchannelPosition, outputFormat, fixSubchannel,
|
||||||
sectorsToDo, null, isrcs,
|
fixSubchannelCrc, null, null, smallestPregapLbaPerTrack, false);
|
||||||
(byte)track.TrackSequence,
|
|
||||||
ref mcn, tracks,
|
|
||||||
subchannelExtents,
|
|
||||||
fixSubchannelPosition,
|
|
||||||
outputFormat,
|
|
||||||
fixSubchannel,
|
|
||||||
fixSubchannelCrc, null,
|
|
||||||
null,
|
|
||||||
smallestPregapLbaPerTrack);
|
|
||||||
|
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
outputOptical.SetTracks(tracks.ToList());
|
outputOptical.SetTracks(tracks.ToList());
|
||||||
|
|||||||
Reference in New Issue
Block a user