mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Move subchannel generation and fixing to a separate class.
This commit is contained in:
596
.idea/.idea.Aaru/.idea/contentModel.xml
generated
596
.idea/.idea.Aaru/.idea/contentModel.xml
generated
File diff suppressed because it is too large
Load Diff
2
.idea/.idea.Aaru/riderModule.iml
generated
2
.idea/.idea.Aaru/riderModule.iml
generated
@@ -2,6 +2,8 @@
|
|||||||
<module type="RIDER_MODULE" version="4">
|
<module type="RIDER_MODULE" version="4">
|
||||||
<component name="NewModuleRootManager">
|
<component name="NewModuleRootManager">
|
||||||
<content url="file://$USER_HOME$/.nuget/packages/microsoft.net.test.sdk/16.4.0/build/netcoreapp2.1" />
|
<content url="file://$USER_HOME$/.nuget/packages/microsoft.net.test.sdk/16.4.0/build/netcoreapp2.1" />
|
||||||
|
<content url="file://$USER_HOME$/.nuget/packages/microsoft.testplatform.testhost/16.4.0/build/netcoreapp2.1/x64/testhost.dll" />
|
||||||
|
<content url="file://$USER_HOME$/.nuget/packages/microsoft.testplatform.testhost/16.4.0/build/netcoreapp2.1/x64/testhost.exe" />
|
||||||
<content url="file://$USER_HOME$/.nuget/packages/nunit3testadapter/3.15.1/build/netcoreapp2.0/NUnit3.TestAdapter.dll" />
|
<content url="file://$USER_HOME$/.nuget/packages/nunit3testadapter/3.15.1/build/netcoreapp2.0/NUnit3.TestAdapter.dll" />
|
||||||
<content url="file://$USER_HOME$/.nuget/packages/nunit3testadapter/3.15.1/build/netcoreapp2.0/NUnit3.TestAdapter.pdb" />
|
<content url="file://$USER_HOME$/.nuget/packages/nunit3testadapter/3.15.1/build/netcoreapp2.0/NUnit3.TestAdapter.pdb" />
|
||||||
<content url="file://$USER_HOME$/.nuget/packages/nunit3testadapter/3.15.1/build/netcoreapp2.0/nunit.engine.api.dll" />
|
<content url="file://$USER_HOME$/.nuget/packages/nunit3testadapter/3.15.1/build/netcoreapp2.0/nunit.engine.api.dll" />
|
||||||
|
|||||||
@@ -79,6 +79,7 @@
|
|||||||
<Compile Include="ImageInfo.cs" />
|
<Compile Include="ImageInfo.cs" />
|
||||||
<Compile Include="Logging\ErrorLog.cs" />
|
<Compile Include="Logging\ErrorLog.cs" />
|
||||||
<Compile Include="Logging\SubchannelLog.cs" />
|
<Compile Include="Logging\SubchannelLog.cs" />
|
||||||
|
<Compile Include="Media\CompactDisc.cs" />
|
||||||
<Compile Include="Media\Detection\MMC.cs" />
|
<Compile Include="Media\Detection\MMC.cs" />
|
||||||
<Compile Include="Media\Info\CompactDisc.cs" />
|
<Compile Include="Media\Info\CompactDisc.cs" />
|
||||||
<Compile Include="Media\Info\ScsiInfo.cs" />
|
<Compile Include="Media\Info\ScsiInfo.cs" />
|
||||||
|
|||||||
@@ -269,9 +269,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
_outputPlugin.WriteSectorsLong(data, i + r, 1);
|
_outputPlugin.WriteSectorsLong(data, i + r, 1);
|
||||||
|
|
||||||
bool indexesChanged =
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, sub, i + r, 1,
|
desiredSubchannel, sub, i + r, 1, subLog, isrcs, 1, ref mcn, tracks,
|
||||||
subLog, isrcs, 1, ref mcn, tracks, subchannelExtents);
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
|
_fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -353,9 +354,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
_outputPlugin.WriteSectorsLong(data, i, blocksToRead);
|
_outputPlugin.WriteSectorsLong(data, i, blocksToRead);
|
||||||
|
|
||||||
bool indexesChanged = WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, sub, i,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
blocksToRead, subLog, isrcs, 1, ref mcn, tracks,
|
desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, 1, ref mcn, tracks,
|
||||||
subchannelExtents);
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
|
_fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
|
|||||||
@@ -393,10 +393,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
_outputPlugin.WriteSectorsLong(data, i + r, 1);
|
_outputPlugin.WriteSectorsLong(data, i + r, 1);
|
||||||
|
|
||||||
bool indexesChanged =
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, sub, i + r, 1,
|
desiredSubchannel, sub, i + r, 1, subLog, isrcs, (byte)track.TrackSequence,
|
||||||
subLog, isrcs, (byte)track.TrackSequence, ref mcn, tracks,
|
ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
||||||
subchannelExtents);
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -526,10 +526,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
_outputPlugin.WriteSectorsLong(data, i, blocksToRead);
|
_outputPlugin.WriteSectorsLong(data, i, blocksToRead);
|
||||||
|
|
||||||
bool indexesChanged = WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, sub, i,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
blocksToRead, subLog, isrcs,
|
desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, (byte)track.TrackSequence,
|
||||||
(byte)track.TrackSequence, ref mcn, tracks,
|
ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
||||||
subchannelExtents);
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
|
|||||||
@@ -406,7 +406,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(!(_outputPlugin as IWritableOpticalImage).OpticalCapabilities.HasFlag(OpticalImageCapabilities.
|
if(!(_outputPlugin as IWritableOpticalImage).OpticalCapabilities.HasFlag(OpticalImageCapabilities.
|
||||||
CanStorePregaps) &&
|
CanStorePregaps) &&
|
||||||
tracks.Where(track => track.TrackSequence !=
|
tracks.Where(track => track.TrackSequence !=
|
||||||
tracks.First(t => t.TrackSession == track.TrackSession).TrackSequence).
|
tracks.First(t => t.TrackSession == track.TrackSession).TrackSequence).
|
||||||
Any(track => track.TrackPregap > 0))
|
Any(track => track.TrackPregap > 0))
|
||||||
@@ -793,7 +793,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
// If a subchannel is supported, check if output plugin allows us to write it.
|
// If a subchannel is supported, check if output plugin allows us to write it.
|
||||||
if(desiredSubchannel != MmcSubchannel.None &&
|
if(desiredSubchannel != MmcSubchannel.None &&
|
||||||
!(_outputPlugin as IWritableOpticalImage).OpticalCapabilities.HasFlag(OpticalImageCapabilities.
|
!(_outputPlugin as IWritableOpticalImage).OpticalCapabilities.HasFlag(OpticalImageCapabilities.
|
||||||
CanStoreSubchannelRw))
|
CanStoreSubchannelRw))
|
||||||
{
|
{
|
||||||
_dumpLog.WriteLine("Output image does not support subchannels, {0}continuing...", _force ? "" : "not ");
|
_dumpLog.WriteLine("Output image does not support subchannels, {0}continuing...", _force ? "" : "not ");
|
||||||
|
|
||||||
@@ -1219,7 +1219,8 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
_resume.BadSubchannels.Sort();
|
_resume.BadSubchannels.Sort();
|
||||||
|
|
||||||
if(_generateSubchannels && _outputPlugin.SupportedSectorTags.Contains(SectorTagType.CdSectorSubchannel))
|
if(_generateSubchannels && _outputPlugin.SupportedSectorTags.Contains(SectorTagType.CdSectorSubchannel))
|
||||||
GenerateSubchannels(subchannelExtents, tracks, trackFlags, blocks, subLog);
|
Media.CompactDisc.GenerateSubchannels(subchannelExtents, tracks, trackFlags, blocks, subLog, _dumpLog,
|
||||||
|
InitProgress, UpdateProgress, EndProgress, _outputPlugin);
|
||||||
|
|
||||||
// TODO: Disc ID
|
// TODO: Disc ID
|
||||||
var metadata = new CommonTypes.Structs.ImageInfo
|
var metadata = new CommonTypes.Structs.ImageInfo
|
||||||
|
|||||||
@@ -292,9 +292,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
Array.Copy(cmdBuf, sectorSize, sub, 0, subSize);
|
Array.Copy(cmdBuf, sectorSize, sub, 0, subSize);
|
||||||
_outputPlugin.WriteSectorLong(data, badSector);
|
_outputPlugin.WriteSectorLong(data, badSector);
|
||||||
|
|
||||||
bool indexesChanged = WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, sub, badSector,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
1, subLog, isrcs, (byte)track.TrackSequence, ref mcn,
|
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence, ref mcn,
|
||||||
tracks, subchannelExtents);
|
tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
|
_fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -410,10 +411,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
Array.Copy(cmdBuf, sectorSize, sub, 0, subSize);
|
Array.Copy(cmdBuf, sectorSize, sub, 0, subSize);
|
||||||
_outputPlugin.WriteSectorLong(data, badSector);
|
_outputPlugin.WriteSectorLong(data, badSector);
|
||||||
|
|
||||||
bool indexesChanged = WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, sub,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
badSector, 1, subLog, isrcs,
|
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence,
|
||||||
(byte)track.TrackSequence, ref mcn, tracks,
|
ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
||||||
subchannelExtents);
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -555,8 +556,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, cmdBuf, badSector, 5, subLog, isrcs,
|
Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, cmdBuf, badSector, 5,
|
||||||
(byte)track.TrackSequence, ref mcn, tracks, subchannelExtents);
|
subLog, isrcs, (byte)track.TrackSequence, ref mcn, tracks,
|
||||||
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin,
|
||||||
|
_fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
if(subchannelExtents.Contains(tmpArray[i]))
|
if(subchannelExtents.Contains(tmpArray[i]))
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -160,9 +160,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
_outputPlugin.WriteSectorsLong(data, i, _maximumReadable);
|
_outputPlugin.WriteSectorsLong(data, i, _maximumReadable);
|
||||||
|
|
||||||
bool indexesChanged = WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, sub, i,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
_maximumReadable, subLog, isrcs, 0xAA, ref mcn,
|
desiredSubchannel, sub, i, _maximumReadable, subLog, isrcs, 0xAA, ref mcn, tracks,
|
||||||
tracks, subchannelExtents);
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
|
_fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
@@ -328,9 +329,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
_outputPlugin.WriteSectorsLong(data, i, _maximumReadable);
|
_outputPlugin.WriteSectorsLong(data, i, _maximumReadable);
|
||||||
|
|
||||||
bool indexesChanged = WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, sub, i,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
_maximumReadable, subLog, isrcs, 0xAA, ref mcn,
|
desiredSubchannel, sub, i, _maximumReadable, subLog, isrcs, 0xAA, ref mcn, tracks,
|
||||||
tracks, subchannelExtents);
|
subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
|
_fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(indexesChanged)
|
if(indexesChanged)
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -193,9 +193,10 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
Array.Copy(cmdBuf, sectorSize, sub, 0, subSize);
|
Array.Copy(cmdBuf, sectorSize, sub, 0, subSize);
|
||||||
_outputPlugin.WriteSectorLong(data, badSector);
|
_outputPlugin.WriteSectorLong(data, badSector);
|
||||||
|
|
||||||
bool indexesChanged = WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, sub, badSector,
|
bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel,
|
||||||
1, subLog, isrcs, (byte)track.TrackSequence, ref mcn,
|
desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence, ref mcn,
|
||||||
tracks, subchannelExtents);
|
tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel,
|
||||||
|
_fixSubchannelCrc, _dumpLog, UpdateStatus);
|
||||||
|
|
||||||
// Set tracks and go back
|
// Set tracks and go back
|
||||||
if(!indexesChanged)
|
if(!indexesChanged)
|
||||||
|
|||||||
1441
Aaru.Core/Media/CompactDisc.cs
Normal file
1441
Aaru.Core/Media/CompactDisc.cs
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user