mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Change how converting an image works so data is done first, tags later, and percentage is from total.
This commit is contained in:
@@ -386,6 +386,7 @@ namespace DiscImageChef.Commands
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
foreach(Track track in tracks)
|
foreach(Track track in tracks)
|
||||||
{
|
{
|
||||||
doneSectors = 0;
|
doneSectors = 0;
|
||||||
@@ -402,9 +403,10 @@ namespace DiscImageChef.Commands
|
|||||||
(uint)(trackSectors - doneSectors);
|
(uint)(trackSectors - doneSectors);
|
||||||
|
|
||||||
DicConsole.Write("\rConverting sectors {0} to {1} in track {3} ({2:P2} done)",
|
DicConsole.Write("\rConverting sectors {0} to {1} in track {3} ({2:P2} done)",
|
||||||
doneSectors + track.TrackStartSector,
|
doneSectors + track.TrackStartSector,
|
||||||
doneSectors + sectorsToDo + track.TrackStartSector,
|
doneSectors + sectorsToDo + track.TrackStartSector,
|
||||||
doneSectors / (double)trackSectors, track.TrackSequence);
|
(doneSectors + track.TrackStartSector) / (double)inputFormat.Info.Sectors,
|
||||||
|
track.TrackSequence);
|
||||||
|
|
||||||
bool result;
|
bool result;
|
||||||
if(useLong)
|
if(useLong)
|
||||||
@@ -449,36 +451,43 @@ namespace DiscImageChef.Commands
|
|||||||
|
|
||||||
doneSectors += sectorsToDo;
|
doneSectors += sectorsToDo;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DicConsole.Write("\rConverting sectors {0} to {1} in track {3} ({2:P2} done)",
|
DicConsole.Write("\rConverting sectors {0} to {1} in track {3} ({2:P2} done)", inputFormat.Info.Sectors,
|
||||||
trackSectors + track.TrackStartSector, trackSectors + track.TrackStartSector, 1.0,
|
inputFormat.Info.Sectors, 1.0, tracks.Count);
|
||||||
track.TrackSequence);
|
DicConsole.WriteLine();
|
||||||
DicConsole.WriteLine();
|
|
||||||
|
|
||||||
foreach(SectorTagType tag in inputFormat.Info.ReadableSectorTags)
|
foreach(SectorTagType tag in inputFormat.Info.ReadableSectorTags.OrderBy(t => t))
|
||||||
|
{
|
||||||
|
if(!useLong) break;
|
||||||
|
|
||||||
|
switch(tag)
|
||||||
{
|
{
|
||||||
if(!useLong) break;
|
case SectorTagType.AppleSectorTag:
|
||||||
|
case SectorTagType.CdSectorSync:
|
||||||
|
case SectorTagType.CdSectorHeader:
|
||||||
|
case SectorTagType.CdSectorSubHeader:
|
||||||
|
case SectorTagType.CdSectorEdc:
|
||||||
|
case SectorTagType.CdSectorEccP:
|
||||||
|
case SectorTagType.CdSectorEccQ:
|
||||||
|
case SectorTagType.CdSectorEcc:
|
||||||
|
// This tags are inline in long sector
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
doneSectors = 0;
|
foreach(Track track in tracks)
|
||||||
|
{
|
||||||
|
doneSectors = 0;
|
||||||
|
ulong trackSectors = track.TrackEndSector - track.TrackStartSector + 1;
|
||||||
byte[] sector;
|
byte[] sector;
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
switch(tag)
|
switch(tag)
|
||||||
{
|
{
|
||||||
case SectorTagType.AppleSectorTag:
|
|
||||||
case SectorTagType.CdSectorSync:
|
|
||||||
case SectorTagType.CdSectorHeader:
|
|
||||||
case SectorTagType.CdSectorSubHeader:
|
|
||||||
case SectorTagType.CdSectorEdc:
|
|
||||||
case SectorTagType.CdSectorEccP:
|
|
||||||
case SectorTagType.CdSectorEccQ:
|
|
||||||
case SectorTagType.CdSectorEcc:
|
|
||||||
// This tags are inline in long sector
|
|
||||||
continue;
|
|
||||||
case SectorTagType.CdTrackFlags:
|
case SectorTagType.CdTrackFlags:
|
||||||
case SectorTagType.CdTrackIsrc:
|
case SectorTagType.CdTrackIsrc:
|
||||||
DicConsole.Write("\rConverting tag {0} in track {1}.", tag, track.TrackSequence);
|
DicConsole.Write("\rConverting tag {0} in track {1} ({2:P2} done).", tag,
|
||||||
DicConsole.WriteLine();
|
track.TrackSequence, track.TrackSequence / (double)tracks.Count);
|
||||||
sector = inputFormat.ReadSectorTag(track.TrackStartSector, tag);
|
sector = inputFormat.ReadSectorTag(track.TrackStartSector, tag);
|
||||||
result = outputFormat.WriteSectorTag(sector, track.TrackStartSector, tag);
|
result = outputFormat.WriteSectorTag(sector, track.TrackStartSector, tag);
|
||||||
continue;
|
continue;
|
||||||
@@ -493,9 +502,10 @@ namespace DiscImageChef.Commands
|
|||||||
(uint)(trackSectors - doneSectors);
|
(uint)(trackSectors - doneSectors);
|
||||||
|
|
||||||
DicConsole.Write("\rConverting tag {4} for sectors {0} to {1} in track {3} ({2:P2} done)",
|
DicConsole.Write("\rConverting tag {4} for sectors {0} to {1} in track {3} ({2:P2} done)",
|
||||||
doneSectors + track.TrackStartSector,
|
doneSectors + track.TrackStartSector,
|
||||||
doneSectors + sectorsToDo + track.TrackStartSector,
|
doneSectors + sectorsToDo + track.TrackStartSector,
|
||||||
doneSectors / (double)trackSectors, track.TrackSequence, tag);
|
(doneSectors + track.TrackStartSector) / (double)inputFormat.Info.Sectors,
|
||||||
|
track.TrackSequence, tag);
|
||||||
|
|
||||||
if(sectorsToDo == 1)
|
if(sectorsToDo == 1)
|
||||||
{
|
{
|
||||||
@@ -523,13 +533,25 @@ namespace DiscImageChef.Commands
|
|||||||
|
|
||||||
doneSectors += sectorsToDo;
|
doneSectors += sectorsToDo;
|
||||||
}
|
}
|
||||||
|
|
||||||
DicConsole.Write("\rConverting tag {4} for sectors {0} to {1} in track {3} ({2:P2} done)",
|
|
||||||
trackSectors + track.TrackStartSector, trackSectors + track.TrackStartSector,
|
|
||||||
1.0, track.TrackSequence, tag);
|
|
||||||
DicConsole.WriteLine();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch(tag)
|
||||||
|
{
|
||||||
|
case SectorTagType.CdTrackFlags:
|
||||||
|
case SectorTagType.CdTrackIsrc:
|
||||||
|
DicConsole.Write("\rConverting tag {0} in track {1} ({2:P2} done).", tag, tracks.Count,
|
||||||
|
1.0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
DicConsole.Write("\rConverting tag {4} for sectors {0} to {1} in track {3} ({2:P2} done)",
|
||||||
|
inputFormat.Info.Sectors, inputFormat.Info.Sectors, 1.0, tracks.Count,
|
||||||
|
tag);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DicConsole.WriteLine();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(tracks == null)
|
if(tracks == null)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user