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));
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ namespace Aaru.DiscImages
|
|||||||
FileStream descriptorStream;
|
FileStream descriptorStream;
|
||||||
byte[] dmi;
|
byte[] dmi;
|
||||||
byte[] fullToc;
|
byte[] fullToc;
|
||||||
|
AlcoholHeader header;
|
||||||
ImageInfo imageInfo;
|
ImageInfo imageInfo;
|
||||||
Stream imageStream;
|
Stream imageStream;
|
||||||
bool isDvd;
|
bool isDvd;
|
||||||
@@ -61,14 +62,10 @@ namespace Aaru.DiscImages
|
|||||||
public Alcohol120() => imageInfo = new ImageInfo
|
public Alcohol120() => imageInfo = new ImageInfo
|
||||||
{
|
{
|
||||||
ReadableSectorTags = new List<SectorTagType>(), ReadableMediaTags = new List<MediaTagType>(),
|
ReadableSectorTags = new List<SectorTagType>(), ReadableMediaTags = new List<MediaTagType>(),
|
||||||
HasPartitions = true, HasSessions = true, Version = null,
|
HasPartitions = true, HasSessions = true, Version = null, Application = null,
|
||||||
Application = null,
|
ApplicationVersion = null, Creator = null, Comments = null, MediaManufacturer = null,
|
||||||
ApplicationVersion = null, Creator = null, Comments = null,
|
MediaModel = null, MediaSerialNumber = null, MediaBarcode = null, MediaPartNumber = null,
|
||||||
MediaManufacturer = null,
|
MediaSequence = 0, LastMediaSequence = 0, DriveManufacturer = null, DriveModel = null,
|
||||||
MediaModel = null, MediaSerialNumber = null, MediaBarcode = null,
|
|
||||||
MediaPartNumber = null,
|
|
||||||
MediaSequence = 0, LastMediaSequence = 0, DriveManufacturer = null,
|
|
||||||
DriveModel = null,
|
|
||||||
DriveSerialNumber = null, DriveFirmwareRevision = null
|
DriveSerialNumber = null, DriveFirmwareRevision = null
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -108,6 +108,14 @@ namespace Aaru.DiscImages
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(header.type != AlcoholMediumType.CD &&
|
||||||
|
header.type != AlcoholMediumType.CDR &&
|
||||||
|
header.type != AlcoholMediumType.CDRW)
|
||||||
|
{
|
||||||
|
aaruTrack.TrackPregap = 0;
|
||||||
|
aaruTrack.Indexes?.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
tracks.Add(aaruTrack);
|
tracks.Add(aaruTrack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ namespace Aaru.DiscImages
|
|||||||
isDvd = false;
|
isDvd = false;
|
||||||
byte[] hdr = new byte[88];
|
byte[] hdr = new byte[88];
|
||||||
stream.Read(hdr, 0, 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}",
|
AaruConsole.DebugWriteLine("Alcohol 120% plugin", "header.signature = {0}",
|
||||||
Encoding.ASCII.GetString(header.signature));
|
Encoding.ASCII.GetString(header.signature));
|
||||||
|
|||||||
@@ -1131,6 +1131,15 @@ namespace Aaru.DiscImages
|
|||||||
|
|
||||||
AaruConsole.VerboseWriteLine("BlindWrite image describes a disc of type {0}", imageInfo.MediaType);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -125,6 +125,50 @@ namespace Aaru.DiscImages
|
|||||||
else
|
else
|
||||||
aaruTrack.TrackSubchannelType = TrackSubchannelType.None;
|
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);
|
tracks.Add(aaruTrack);
|
||||||
previousStartSector = aaruTrack.TrackEndSector + 1;
|
previousStartSector = aaruTrack.TrackEndSector + 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -657,6 +657,8 @@ namespace Aaru.DiscImages
|
|||||||
|
|
||||||
AaruConsole.DebugWriteLine("DiscJuggler plugin", "End position = {0}", position);
|
AaruConsole.DebugWriteLine("DiscJuggler plugin", "End position = {0}", position);
|
||||||
|
|
||||||
|
imageInfo.MediaType = DecodeCdiMediumType(mediumType);
|
||||||
|
|
||||||
if(imageInfo.MediaType == MediaType.CDROM)
|
if(imageInfo.MediaType == MediaType.CDROM)
|
||||||
{
|
{
|
||||||
bool data = false;
|
bool data = false;
|
||||||
@@ -714,6 +716,13 @@ namespace Aaru.DiscImages
|
|||||||
|
|
||||||
_sectorBuilder = new SectorBuilder();
|
_sectorBuilder = new SectorBuilder();
|
||||||
|
|
||||||
|
if(mediumType != 152)
|
||||||
|
foreach(Track track in Tracks)
|
||||||
|
{
|
||||||
|
track.TrackPregap = 0;
|
||||||
|
track.Indexes?.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1090,6 +1090,51 @@ namespace Aaru.DiscImages
|
|||||||
|
|
||||||
_sectorBuilder = new SectorBuilder();
|
_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;
|
return true;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
|
|||||||
Reference in New Issue
Block a user