mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Do not calculate pregaps on non-CD optical disc images. Fixes #371
This commit is contained in:
@@ -1230,6 +1230,54 @@ namespace Aaru.DiscImages
|
||||
|
||||
AaruConsole.DebugWriteLine("Aaru Format plugin", "Memory snapshot: {0} bytes", GC.GetTotalMemory(false));
|
||||
|
||||
if(imageInfo.XmlMediaType != XmlMediaType.OpticalDisc)
|
||||
return true;
|
||||
|
||||
if(imageInfo.MediaType != MediaType.CD &&
|
||||
imageInfo.MediaType != MediaType.CDDA &&
|
||||
imageInfo.MediaType != MediaType.CDG &&
|
||||
imageInfo.MediaType != MediaType.CDEG &&
|
||||
imageInfo.MediaType != MediaType.CDI &&
|
||||
imageInfo.MediaType != MediaType.CDROM &&
|
||||
imageInfo.MediaType != MediaType.CDROMXA &&
|
||||
imageInfo.MediaType != MediaType.CDPLUS &&
|
||||
imageInfo.MediaType != MediaType.CDMO &&
|
||||
imageInfo.MediaType != MediaType.CDR &&
|
||||
imageInfo.MediaType != MediaType.CDRW &&
|
||||
imageInfo.MediaType != MediaType.CDMRW &&
|
||||
imageInfo.MediaType != MediaType.VCD &&
|
||||
imageInfo.MediaType != MediaType.SVCD &&
|
||||
imageInfo.MediaType != MediaType.PCD &&
|
||||
imageInfo.MediaType != MediaType.DTSCD &&
|
||||
imageInfo.MediaType != MediaType.CDMIDI &&
|
||||
imageInfo.MediaType != MediaType.CDV &&
|
||||
imageInfo.MediaType != MediaType.CDIREADY &&
|
||||
imageInfo.MediaType != MediaType.FMTOWNS &&
|
||||
imageInfo.MediaType != MediaType.PS1CD &&
|
||||
imageInfo.MediaType != MediaType.PS2CD &&
|
||||
imageInfo.MediaType != MediaType.MEGACD &&
|
||||
imageInfo.MediaType != MediaType.SATURNCD &&
|
||||
imageInfo.MediaType != MediaType.GDROM &&
|
||||
imageInfo.MediaType != MediaType.GDR &&
|
||||
imageInfo.MediaType != MediaType.MilCD &&
|
||||
imageInfo.MediaType != MediaType.SuperCDROM2 &&
|
||||
imageInfo.MediaType != MediaType.JaguarCD &&
|
||||
imageInfo.MediaType != MediaType.ThreeDO &&
|
||||
imageInfo.MediaType != MediaType.PCFX &&
|
||||
imageInfo.MediaType != MediaType.NeoGeoCD &&
|
||||
imageInfo.MediaType != MediaType.CDTV &&
|
||||
imageInfo.MediaType != MediaType.CD32 &&
|
||||
imageInfo.MediaType != MediaType.Playdia &&
|
||||
imageInfo.MediaType != MediaType.Pippin &&
|
||||
imageInfo.MediaType != MediaType.VideoNow &&
|
||||
imageInfo.MediaType != MediaType.VideoNowColor &&
|
||||
imageInfo.MediaType != MediaType.VideoNowXp)
|
||||
foreach(Track track in Tracks)
|
||||
{
|
||||
track.TrackPregap = 0;
|
||||
track.Indexes?.Clear();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,6 +50,7 @@ namespace Aaru.DiscImages
|
||||
FileStream descriptorStream;
|
||||
byte[] dmi;
|
||||
byte[] fullToc;
|
||||
AlcoholHeader header;
|
||||
ImageInfo imageInfo;
|
||||
Stream imageStream;
|
||||
bool isDvd;
|
||||
@@ -61,14 +62,10 @@ namespace Aaru.DiscImages
|
||||
public Alcohol120() => imageInfo = new ImageInfo
|
||||
{
|
||||
ReadableSectorTags = new List<SectorTagType>(), ReadableMediaTags = new List<MediaTagType>(),
|
||||
HasPartitions = true, HasSessions = true, Version = null,
|
||||
Application = null,
|
||||
ApplicationVersion = null, Creator = null, Comments = null,
|
||||
MediaManufacturer = null,
|
||||
MediaModel = null, MediaSerialNumber = null, MediaBarcode = null,
|
||||
MediaPartNumber = null,
|
||||
MediaSequence = 0, LastMediaSequence = 0, DriveManufacturer = null,
|
||||
DriveModel = null,
|
||||
HasPartitions = true, HasSessions = true, Version = null, Application = null,
|
||||
ApplicationVersion = null, Creator = null, Comments = null, MediaManufacturer = null,
|
||||
MediaModel = null, MediaSerialNumber = null, MediaBarcode = null, MediaPartNumber = null,
|
||||
MediaSequence = 0, LastMediaSequence = 0, DriveManufacturer = null, DriveModel = null,
|
||||
DriveSerialNumber = null, DriveFirmwareRevision = null
|
||||
};
|
||||
}
|
||||
|
||||
@@ -108,6 +108,14 @@ namespace Aaru.DiscImages
|
||||
break;
|
||||
}
|
||||
|
||||
if(header.type != AlcoholMediumType.CD &&
|
||||
header.type != AlcoholMediumType.CDR &&
|
||||
header.type != AlcoholMediumType.CDRW)
|
||||
{
|
||||
aaruTrack.TrackPregap = 0;
|
||||
aaruTrack.Indexes?.Clear();
|
||||
}
|
||||
|
||||
tracks.Add(aaruTrack);
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ namespace Aaru.DiscImages
|
||||
isDvd = false;
|
||||
byte[] hdr = new byte[88];
|
||||
stream.Read(hdr, 0, 88);
|
||||
AlcoholHeader header = Marshal.ByteArrayToStructureLittleEndian<AlcoholHeader>(hdr);
|
||||
header = Marshal.ByteArrayToStructureLittleEndian<AlcoholHeader>(hdr);
|
||||
|
||||
AaruConsole.DebugWriteLine("Alcohol 120% plugin", "header.signature = {0}",
|
||||
Encoding.ASCII.GetString(header.signature));
|
||||
|
||||
@@ -1131,6 +1131,15 @@ namespace Aaru.DiscImages
|
||||
|
||||
AaruConsole.VerboseWriteLine("BlindWrite image describes a disc of type {0}", imageInfo.MediaType);
|
||||
|
||||
if(header.profile != ProfileNumber.CDR &&
|
||||
header.profile != ProfileNumber.CDRW &&
|
||||
header.profile != ProfileNumber.CDROM)
|
||||
foreach(Track track in Tracks)
|
||||
{
|
||||
track.TrackPregap = 0;
|
||||
track.Indexes?.Clear();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -125,6 +125,50 @@ namespace Aaru.DiscImages
|
||||
else
|
||||
aaruTrack.TrackSubchannelType = TrackSubchannelType.None;
|
||||
|
||||
if(_imageInfo.MediaType != MediaType.CD &&
|
||||
_imageInfo.MediaType != MediaType.CDDA &&
|
||||
_imageInfo.MediaType != MediaType.CDG &&
|
||||
_imageInfo.MediaType != MediaType.CDEG &&
|
||||
_imageInfo.MediaType != MediaType.CDI &&
|
||||
_imageInfo.MediaType != MediaType.CDROM &&
|
||||
_imageInfo.MediaType != MediaType.CDROMXA &&
|
||||
_imageInfo.MediaType != MediaType.CDPLUS &&
|
||||
_imageInfo.MediaType != MediaType.CDMO &&
|
||||
_imageInfo.MediaType != MediaType.CDR &&
|
||||
_imageInfo.MediaType != MediaType.CDRW &&
|
||||
_imageInfo.MediaType != MediaType.CDMRW &&
|
||||
_imageInfo.MediaType != MediaType.VCD &&
|
||||
_imageInfo.MediaType != MediaType.SVCD &&
|
||||
_imageInfo.MediaType != MediaType.PCD &&
|
||||
_imageInfo.MediaType != MediaType.DTSCD &&
|
||||
_imageInfo.MediaType != MediaType.CDMIDI &&
|
||||
_imageInfo.MediaType != MediaType.CDV &&
|
||||
_imageInfo.MediaType != MediaType.CDIREADY &&
|
||||
_imageInfo.MediaType != MediaType.FMTOWNS &&
|
||||
_imageInfo.MediaType != MediaType.PS1CD &&
|
||||
_imageInfo.MediaType != MediaType.PS2CD &&
|
||||
_imageInfo.MediaType != MediaType.MEGACD &&
|
||||
_imageInfo.MediaType != MediaType.SATURNCD &&
|
||||
_imageInfo.MediaType != MediaType.GDROM &&
|
||||
_imageInfo.MediaType != MediaType.GDR &&
|
||||
_imageInfo.MediaType != MediaType.MilCD &&
|
||||
_imageInfo.MediaType != MediaType.SuperCDROM2 &&
|
||||
_imageInfo.MediaType != MediaType.JaguarCD &&
|
||||
_imageInfo.MediaType != MediaType.ThreeDO &&
|
||||
_imageInfo.MediaType != MediaType.PCFX &&
|
||||
_imageInfo.MediaType != MediaType.NeoGeoCD &&
|
||||
_imageInfo.MediaType != MediaType.CDTV &&
|
||||
_imageInfo.MediaType != MediaType.CD32 &&
|
||||
_imageInfo.MediaType != MediaType.Playdia &&
|
||||
_imageInfo.MediaType != MediaType.Pippin &&
|
||||
_imageInfo.MediaType != MediaType.VideoNow &&
|
||||
_imageInfo.MediaType != MediaType.VideoNowColor &&
|
||||
_imageInfo.MediaType != MediaType.VideoNowXp)
|
||||
{
|
||||
aaruTrack.TrackPregap = 0;
|
||||
aaruTrack.Indexes?.Clear();
|
||||
}
|
||||
|
||||
tracks.Add(aaruTrack);
|
||||
previousStartSector = aaruTrack.TrackEndSector + 1;
|
||||
}
|
||||
|
||||
@@ -657,6 +657,8 @@ namespace Aaru.DiscImages
|
||||
|
||||
AaruConsole.DebugWriteLine("DiscJuggler plugin", "End position = {0}", position);
|
||||
|
||||
imageInfo.MediaType = DecodeCdiMediumType(mediumType);
|
||||
|
||||
if(imageInfo.MediaType == MediaType.CDROM)
|
||||
{
|
||||
bool data = false;
|
||||
@@ -714,6 +716,13 @@ namespace Aaru.DiscImages
|
||||
|
||||
_sectorBuilder = new SectorBuilder();
|
||||
|
||||
if(mediumType != 152)
|
||||
foreach(Track track in Tracks)
|
||||
{
|
||||
track.TrackPregap = 0;
|
||||
track.Indexes?.Clear();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1090,6 +1090,51 @@ namespace Aaru.DiscImages
|
||||
|
||||
_sectorBuilder = new SectorBuilder();
|
||||
|
||||
if(imageInfo.MediaType != MediaType.CD &&
|
||||
imageInfo.MediaType != MediaType.CDDA &&
|
||||
imageInfo.MediaType != MediaType.CDG &&
|
||||
imageInfo.MediaType != MediaType.CDEG &&
|
||||
imageInfo.MediaType != MediaType.CDI &&
|
||||
imageInfo.MediaType != MediaType.CDROM &&
|
||||
imageInfo.MediaType != MediaType.CDROMXA &&
|
||||
imageInfo.MediaType != MediaType.CDPLUS &&
|
||||
imageInfo.MediaType != MediaType.CDMO &&
|
||||
imageInfo.MediaType != MediaType.CDR &&
|
||||
imageInfo.MediaType != MediaType.CDRW &&
|
||||
imageInfo.MediaType != MediaType.CDMRW &&
|
||||
imageInfo.MediaType != MediaType.VCD &&
|
||||
imageInfo.MediaType != MediaType.SVCD &&
|
||||
imageInfo.MediaType != MediaType.PCD &&
|
||||
imageInfo.MediaType != MediaType.DTSCD &&
|
||||
imageInfo.MediaType != MediaType.CDMIDI &&
|
||||
imageInfo.MediaType != MediaType.CDV &&
|
||||
imageInfo.MediaType != MediaType.CDIREADY &&
|
||||
imageInfo.MediaType != MediaType.FMTOWNS &&
|
||||
imageInfo.MediaType != MediaType.PS1CD &&
|
||||
imageInfo.MediaType != MediaType.PS2CD &&
|
||||
imageInfo.MediaType != MediaType.MEGACD &&
|
||||
imageInfo.MediaType != MediaType.SATURNCD &&
|
||||
imageInfo.MediaType != MediaType.GDROM &&
|
||||
imageInfo.MediaType != MediaType.GDR &&
|
||||
imageInfo.MediaType != MediaType.MilCD &&
|
||||
imageInfo.MediaType != MediaType.SuperCDROM2 &&
|
||||
imageInfo.MediaType != MediaType.JaguarCD &&
|
||||
imageInfo.MediaType != MediaType.ThreeDO &&
|
||||
imageInfo.MediaType != MediaType.PCFX &&
|
||||
imageInfo.MediaType != MediaType.NeoGeoCD &&
|
||||
imageInfo.MediaType != MediaType.CDTV &&
|
||||
imageInfo.MediaType != MediaType.CD32 &&
|
||||
imageInfo.MediaType != MediaType.Playdia &&
|
||||
imageInfo.MediaType != MediaType.Pippin &&
|
||||
imageInfo.MediaType != MediaType.VideoNow &&
|
||||
imageInfo.MediaType != MediaType.VideoNowColor &&
|
||||
imageInfo.MediaType != MediaType.VideoNowXp)
|
||||
foreach(Track track in Tracks)
|
||||
{
|
||||
track.TrackPregap = 0;
|
||||
track.Indexes?.Clear();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
|
||||
Reference in New Issue
Block a user