mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Refactor: Simplification and C# 7.
This commit is contained in:
@@ -48,16 +48,26 @@ namespace DiscImageChef.Core
|
||||
// TODO: Complete it
|
||||
static void AudioMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
{
|
||||
sidecar.AudioMedia = new AudioMediaType[1];
|
||||
sidecar.AudioMedia[0] = new AudioMediaType();
|
||||
sidecar.AudioMedia[0].Checksums = imgChecksums.ToArray();
|
||||
sidecar.AudioMedia[0].Image = new ImageType();
|
||||
sidecar.AudioMedia[0].Image.format = image.GetImageFormat();
|
||||
sidecar.AudioMedia[0].Image.offset = 0;
|
||||
sidecar.AudioMedia[0].Image.offsetSpecified = true;
|
||||
sidecar.AudioMedia[0].Image.Value = Path.GetFileName(imagePath);
|
||||
sidecar.AudioMedia[0].Size = fi.Length;
|
||||
sidecar.AudioMedia[0].Sequence = new SequenceType();
|
||||
sidecar.AudioMedia = new []
|
||||
{
|
||||
new AudioMediaType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Sequence = new SequenceType
|
||||
{
|
||||
MediaTitle = image.GetImageName()
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0)
|
||||
{
|
||||
sidecar.AudioMedia[0].Sequence.MediaSequence = image.GetMediaSequence();
|
||||
@@ -68,7 +78,6 @@ namespace DiscImageChef.Core
|
||||
sidecar.AudioMedia[0].Sequence.MediaSequence = 1;
|
||||
sidecar.AudioMedia[0].Sequence.TotalMedia = 1;
|
||||
}
|
||||
sidecar.AudioMedia[0].Sequence.MediaTitle = image.GetImageName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,16 +50,26 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
static void BlockMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
{
|
||||
sidecar.BlockMedia = new BlockMediaType[1];
|
||||
sidecar.BlockMedia[0] = new BlockMediaType();
|
||||
sidecar.BlockMedia[0].Checksums = imgChecksums.ToArray();
|
||||
sidecar.BlockMedia[0].Image = new ImageType();
|
||||
sidecar.BlockMedia[0].Image.format = image.GetImageFormat();
|
||||
sidecar.BlockMedia[0].Image.offset = 0;
|
||||
sidecar.BlockMedia[0].Image.offsetSpecified = true;
|
||||
sidecar.BlockMedia[0].Image.Value = Path.GetFileName(imagePath);
|
||||
sidecar.BlockMedia[0].Size = fi.Length;
|
||||
sidecar.BlockMedia[0].Sequence = new SequenceType();
|
||||
sidecar.BlockMedia = new[]
|
||||
{
|
||||
new BlockMediaType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Sequence = new SequenceType
|
||||
{
|
||||
MediaTitle = image.GetImageName()
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0)
|
||||
{
|
||||
sidecar.BlockMedia[0].Sequence.MediaSequence = image.GetMediaSequence();
|
||||
@@ -70,30 +80,41 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].Sequence.MediaSequence = 1;
|
||||
sidecar.BlockMedia[0].Sequence.TotalMedia = 1;
|
||||
}
|
||||
sidecar.BlockMedia[0].Sequence.MediaTitle = image.GetImageName();
|
||||
|
||||
foreach(MediaTagType tagType in image.ImageInfo.readableMediaTags)
|
||||
{
|
||||
switch(tagType)
|
||||
{
|
||||
case MediaTagType.ATAPI_IDENTIFY:
|
||||
sidecar.BlockMedia[0].ATA = new ATAType();
|
||||
sidecar.BlockMedia[0].ATA.Identify = new DumpType();
|
||||
sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray();
|
||||
sidecar.BlockMedia[0].ATA.Identify.Size = image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length;
|
||||
sidecar.BlockMedia[0].ATA = new ATAType
|
||||
{
|
||||
Identify = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.ATAPI_IDENTIFY).Length
|
||||
}
|
||||
};
|
||||
break;
|
||||
case MediaTagType.ATA_IDENTIFY:
|
||||
sidecar.BlockMedia[0].ATA = new ATAType();
|
||||
sidecar.BlockMedia[0].ATA.Identify = new DumpType();
|
||||
sidecar.BlockMedia[0].ATA.Identify.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray();
|
||||
sidecar.BlockMedia[0].ATA.Identify.Size = image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length;
|
||||
sidecar.BlockMedia[0].ATA = new ATAType
|
||||
{
|
||||
Identify = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.ATA_IDENTIFY)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.ATA_IDENTIFY).Length
|
||||
}
|
||||
};
|
||||
break;
|
||||
case MediaTagType.PCMCIA_CIS:
|
||||
byte[] cis = image.ReadDiskTag(MediaTagType.PCMCIA_CIS);
|
||||
sidecar.BlockMedia[0].PCMCIA = new PCMCIAType();
|
||||
sidecar.BlockMedia[0].PCMCIA.CIS = new DumpType();
|
||||
sidecar.BlockMedia[0].PCMCIA.CIS.Checksums = Checksum.GetChecksums(cis).ToArray();
|
||||
sidecar.BlockMedia[0].PCMCIA.CIS.Size = cis.Length;
|
||||
sidecar.BlockMedia[0].PCMCIA = new PCMCIAType
|
||||
{
|
||||
CIS = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(cis).ToArray(),
|
||||
Size = cis.Length
|
||||
}
|
||||
};
|
||||
Tuple[] tuples = CIS.GetTuples(cis);
|
||||
if(tuples != null)
|
||||
{
|
||||
@@ -127,31 +148,41 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
break;
|
||||
case MediaTagType.SCSI_INQUIRY:
|
||||
sidecar.BlockMedia[0].SCSI = new SCSIType();
|
||||
sidecar.BlockMedia[0].SCSI.Inquiry = new DumpType();
|
||||
sidecar.BlockMedia[0].SCSI.Inquiry.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray();
|
||||
sidecar.BlockMedia[0].SCSI.Inquiry.Size = image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length;
|
||||
sidecar.BlockMedia[0].SCSI = new SCSIType
|
||||
{
|
||||
Inquiry = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SCSI_INQUIRY)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SCSI_INQUIRY).Length
|
||||
}
|
||||
};
|
||||
break;
|
||||
case MediaTagType.SD_CID:
|
||||
if(sidecar.BlockMedia[0].SecureDigital == null)
|
||||
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
|
||||
sidecar.BlockMedia[0].SecureDigital.CID = new DumpType();
|
||||
sidecar.BlockMedia[0].SecureDigital.CID.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CID)).ToArray();
|
||||
sidecar.BlockMedia[0].SecureDigital.CID.Size = image.ReadDiskTag(MediaTagType.SD_CID).Length;
|
||||
sidecar.BlockMedia[0].SecureDigital.CID = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CID)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_CID).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.SD_CSD:
|
||||
if(sidecar.BlockMedia[0].SecureDigital == null)
|
||||
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
|
||||
sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType();
|
||||
sidecar.BlockMedia[0].SecureDigital.CSD.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CSD)).ToArray();
|
||||
sidecar.BlockMedia[0].SecureDigital.CSD.Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length;
|
||||
sidecar.BlockMedia[0].SecureDigital.CSD = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_CSD)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_CSD).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.SD_ExtendedCSD:
|
||||
if(sidecar.BlockMedia[0].SecureDigital == null)
|
||||
sidecar.BlockMedia[0].SecureDigital = new SecureDigitalType();
|
||||
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD = new DumpType();
|
||||
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_ExtendedCSD)).ToArray();
|
||||
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD.Size = image.ReadDiskTag(MediaTagType.SD_ExtendedCSD).Length;
|
||||
sidecar.BlockMedia[0].SecureDigital.ExtendedCSD = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.SD_ExtendedCSD)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.SD_ExtendedCSD).Length
|
||||
};
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -198,8 +229,7 @@ namespace DiscImageChef.Core
|
||||
EndProgress2();
|
||||
}
|
||||
|
||||
string dskType, dskSubType;
|
||||
Metadata.MediaType.MediaTypeToString(image.ImageInfo.mediaType, out dskType, out dskSubType);
|
||||
Metadata.MediaType.MediaTypeToString(image.ImageInfo.mediaType, out string dskType, out string dskSubType);
|
||||
sidecar.BlockMedia[0].DiskType = dskType;
|
||||
sidecar.BlockMedia[0].DiskSubType = dskSubType;
|
||||
Statistics.AddMedia(image.ImageInfo.mediaType, false);
|
||||
@@ -222,14 +252,15 @@ namespace DiscImageChef.Core
|
||||
sidecar.BlockMedia[0].FileSystemInformation = new PartitionType[partitions.Count];
|
||||
for(int i = 0; i < partitions.Count; i++)
|
||||
{
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType();
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i].Description = partitions[i].Description;
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i].EndSector = (int)(partitions[i].End);
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i].Name = partitions[i].Name;
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i].Sequence = (int)partitions[i].Sequence;
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i].StartSector = (int)partitions[i].Start;
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i].Type = partitions[i].Type;
|
||||
|
||||
sidecar.BlockMedia[0].FileSystemInformation[i] = new PartitionType
|
||||
{
|
||||
Description = partitions[i].Description,
|
||||
EndSector = (int)(partitions[i].End),
|
||||
Name = partitions[i].Name,
|
||||
Sequence = (int)partitions[i].Sequence,
|
||||
StartSector = (int)partitions[i].Start,
|
||||
Type = partitions[i].Type
|
||||
};
|
||||
List<FileSystemType> lstFs = new List<FileSystemType>();
|
||||
|
||||
foreach(Filesystem _plugin in plugins.PluginsList.Values)
|
||||
@@ -238,8 +269,7 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
if(_plugin.Identify(image, partitions[i]))
|
||||
{
|
||||
string foo;
|
||||
_plugin.GetInformation(image, partitions[i], out foo);
|
||||
_plugin.GetInformation(image, partitions[i], out string foo);
|
||||
lstFs.Add(_plugin.XmlFSType);
|
||||
Statistics.AddFilesystem(_plugin.XmlFSType.Type);
|
||||
}
|
||||
@@ -258,9 +288,11 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
else
|
||||
{
|
||||
sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType();
|
||||
sidecar.BlockMedia[0].FileSystemInformation[0].StartSector = 0;
|
||||
sidecar.BlockMedia[0].FileSystemInformation[0].EndSector = (int)(image.GetSectors() - 1);
|
||||
sidecar.BlockMedia[0].FileSystemInformation[0] = new PartitionType
|
||||
{
|
||||
StartSector = 0,
|
||||
EndSector = (int)(image.GetSectors() - 1)
|
||||
};
|
||||
|
||||
Partition wholePart = new Partition
|
||||
{
|
||||
|
||||
@@ -48,15 +48,21 @@ namespace DiscImageChef.Core
|
||||
// TODO: Complete it
|
||||
static void LinearMedia(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
{
|
||||
sidecar.LinearMedia = new LinearMediaType[1];
|
||||
sidecar.LinearMedia[0] = new LinearMediaType();
|
||||
sidecar.LinearMedia[0].Checksums = imgChecksums.ToArray();
|
||||
sidecar.LinearMedia[0].Image = new ImageType();
|
||||
sidecar.LinearMedia[0].Image.format = image.GetImageFormat();
|
||||
sidecar.LinearMedia[0].Image.offset = 0;
|
||||
sidecar.LinearMedia[0].Image.offsetSpecified = true;
|
||||
sidecar.LinearMedia[0].Image.Value = Path.GetFileName(imagePath);
|
||||
sidecar.LinearMedia[0].Size = fi.Length;
|
||||
sidecar.LinearMedia = new []
|
||||
{
|
||||
new LinearMediaType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,16 +49,26 @@ namespace DiscImageChef.Core
|
||||
{
|
||||
static void OpticalDisc(ImagePlugin image, System.Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, List<ChecksumType> imgChecksums, ref CICMMetadataType sidecar)
|
||||
{
|
||||
sidecar.OpticalDisc = new OpticalDiscType[1];
|
||||
sidecar.OpticalDisc[0] = new OpticalDiscType();
|
||||
sidecar.OpticalDisc[0].Checksums = imgChecksums.ToArray();
|
||||
sidecar.OpticalDisc[0].Image = new ImageType();
|
||||
sidecar.OpticalDisc[0].Image.format = image.GetImageFormat();
|
||||
sidecar.OpticalDisc[0].Image.offset = 0;
|
||||
sidecar.OpticalDisc[0].Image.offsetSpecified = true;
|
||||
sidecar.OpticalDisc[0].Image.Value = Path.GetFileName(imagePath);
|
||||
sidecar.OpticalDisc[0].Size = fi.Length;
|
||||
sidecar.OpticalDisc[0].Sequence = new SequenceType();
|
||||
sidecar.OpticalDisc = new[]
|
||||
{
|
||||
new OpticalDiscType
|
||||
{
|
||||
Checksums = imgChecksums.ToArray(),
|
||||
Image = new ImageType
|
||||
{
|
||||
format = image.GetImageFormat(),
|
||||
offset = 0,
|
||||
offsetSpecified = true,
|
||||
Value = Path.GetFileName(imagePath)
|
||||
},
|
||||
Size = fi.Length,
|
||||
Sequence = new SequenceType
|
||||
{
|
||||
MediaTitle = image.GetImageName()
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if(image.GetMediaSequence() != 0 && image.GetLastDiskSequence() != 0)
|
||||
{
|
||||
sidecar.OpticalDisc[0].Sequence.MediaSequence = image.GetMediaSequence();
|
||||
@@ -69,7 +79,6 @@ namespace DiscImageChef.Core
|
||||
sidecar.OpticalDisc[0].Sequence.MediaSequence = 1;
|
||||
sidecar.OpticalDisc[0].Sequence.TotalMedia = 1;
|
||||
}
|
||||
sidecar.OpticalDisc[0].Sequence.MediaTitle = image.GetImageName();
|
||||
|
||||
MediaType dskType = image.ImageInfo.mediaType;
|
||||
|
||||
@@ -78,9 +87,11 @@ namespace DiscImageChef.Core
|
||||
switch(tagType)
|
||||
{
|
||||
case MediaTagType.CD_ATIP:
|
||||
sidecar.OpticalDisc[0].ATIP = new DumpType();
|
||||
sidecar.OpticalDisc[0].ATIP.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray();
|
||||
sidecar.OpticalDisc[0].ATIP.Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length;
|
||||
sidecar.OpticalDisc[0].ATIP = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_ATIP)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.CD_ATIP).Length
|
||||
};
|
||||
Decoders.CD.ATIP.CDATIP? atip = Decoders.CD.ATIP.Decode(image.ReadDiskTag(MediaTagType.CD_ATIP));
|
||||
if(atip.HasValue)
|
||||
{
|
||||
@@ -91,17 +102,25 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
break;
|
||||
case MediaTagType.DVD_BCA:
|
||||
sidecar.OpticalDisc[0].BCA = new DumpType();
|
||||
sidecar.OpticalDisc[0].BCA.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray();
|
||||
sidecar.OpticalDisc[0].BCA.Size = image.ReadDiskTag(MediaTagType.DVD_BCA).Length;
|
||||
sidecar.OpticalDisc[0].BCA = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_BCA)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_BCA).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.BD_BCA:
|
||||
sidecar.OpticalDisc[0].BCA = new DumpType();
|
||||
sidecar.OpticalDisc[0].BCA.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.BD_BCA)).ToArray();
|
||||
sidecar.OpticalDisc[0].BCA.Size = image.ReadDiskTag(MediaTagType.BD_BCA).Length;
|
||||
sidecar.OpticalDisc[0].BCA = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.BD_BCA)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.BD_BCA).Length
|
||||
};
|
||||
break;
|
||||
case MediaTagType.DVD_CMI:
|
||||
sidecar.OpticalDisc[0].CMI = new DumpType();
|
||||
sidecar.OpticalDisc[0].CMI = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length
|
||||
};
|
||||
Decoders.DVD.CSS_CPRM.LeadInCopyright? cmi = Decoders.DVD.CSS_CPRM.DecodeLeadInCopyright(image.ReadDiskTag(MediaTagType.DVD_CMI));
|
||||
if(cmi.HasValue)
|
||||
{
|
||||
@@ -118,30 +137,33 @@ namespace DiscImageChef.Core
|
||||
break;
|
||||
}
|
||||
}
|
||||
sidecar.OpticalDisc[0].CMI.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_CMI)).ToArray();
|
||||
sidecar.OpticalDisc[0].CMI.Size = image.ReadDiskTag(MediaTagType.DVD_CMI).Length;
|
||||
break;
|
||||
case MediaTagType.DVD_DMI:
|
||||
sidecar.OpticalDisc[0].DMI = new DumpType();
|
||||
sidecar.OpticalDisc[0].DMI.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray();
|
||||
sidecar.OpticalDisc[0].DMI.Size = image.ReadDiskTag(MediaTagType.DVD_DMI).Length;
|
||||
sidecar.OpticalDisc[0].DMI = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_DMI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_DMI).Length
|
||||
};
|
||||
if(Decoders.Xbox.DMI.IsXbox(image.ReadDiskTag(MediaTagType.DVD_DMI)))
|
||||
{
|
||||
dskType = MediaType.XGD;
|
||||
sidecar.OpticalDisc[0].Dimensions = new DimensionsType();
|
||||
sidecar.OpticalDisc[0].Dimensions.Diameter = 120;
|
||||
sidecar.OpticalDisc[0].Dimensions = new DimensionsType { Diameter = 120 };
|
||||
}
|
||||
else if(Decoders.Xbox.DMI.IsXbox360(image.ReadDiskTag(MediaTagType.DVD_DMI)))
|
||||
{
|
||||
dskType = MediaType.XGD2;
|
||||
sidecar.OpticalDisc[0].Dimensions = new DimensionsType();
|
||||
sidecar.OpticalDisc[0].Dimensions.Diameter = 120;
|
||||
sidecar.OpticalDisc[0].Dimensions = new DimensionsType
|
||||
{
|
||||
Diameter = 120
|
||||
};
|
||||
}
|
||||
break;
|
||||
case MediaTagType.DVD_PFI:
|
||||
sidecar.OpticalDisc[0].PFI = new DumpType();
|
||||
sidecar.OpticalDisc[0].PFI.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray();
|
||||
sidecar.OpticalDisc[0].PFI.Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length;
|
||||
sidecar.OpticalDisc[0].PFI = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.DVD_PFI)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.DVD_PFI).Length
|
||||
};
|
||||
Decoders.DVD.PFI.PhysicalFormatInformation? pfi = Decoders.DVD.PFI.Decode(image.ReadDiskTag(MediaTagType.DVD_PFI));
|
||||
if(pfi.HasValue)
|
||||
{
|
||||
@@ -213,9 +235,11 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
break;
|
||||
case MediaTagType.CD_PMA:
|
||||
sidecar.OpticalDisc[0].PMA = new DumpType();
|
||||
sidecar.OpticalDisc[0].PMA.Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_PMA)).ToArray();
|
||||
sidecar.OpticalDisc[0].PMA.Size = image.ReadDiskTag(MediaTagType.CD_PMA).Length;
|
||||
sidecar.OpticalDisc[0].PMA = new DumpType
|
||||
{
|
||||
Checksums = Checksum.GetChecksums(image.ReadDiskTag(MediaTagType.CD_PMA)).ToArray(),
|
||||
Size = image.ReadDiskTag(MediaTagType.CD_PMA).Length
|
||||
};
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -281,16 +305,17 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
break;
|
||||
}
|
||||
xmlTrk.Sequence = new TrackSequenceType();
|
||||
xmlTrk.Sequence.Session = trk.TrackSession;
|
||||
xmlTrk.Sequence.TrackNumber = (int)trk.TrackSequence;
|
||||
xmlTrk.Sequence = new TrackSequenceType
|
||||
{
|
||||
Session = trk.TrackSession,
|
||||
TrackNumber = (int)trk.TrackSequence
|
||||
};
|
||||
xmlTrk.StartSector = (long)trk.TrackStartSector;
|
||||
xmlTrk.EndSector = (long)trk.TrackEndSector;
|
||||
|
||||
if(trk.Indexes != null && trk.Indexes.ContainsKey(0))
|
||||
{
|
||||
ulong idx0;
|
||||
if(trk.Indexes.TryGetValue(0, out idx0))
|
||||
if(trk.Indexes.TryGetValue(0, out ulong idx0))
|
||||
xmlTrk.StartSector = (long)idx0;
|
||||
}
|
||||
|
||||
@@ -306,15 +331,18 @@ namespace DiscImageChef.Core
|
||||
xmlTrk.EndMSF = DdcdLbaToMsf(xmlTrk.EndSector);
|
||||
}
|
||||
|
||||
xmlTrk.Image = new ImageType();
|
||||
xmlTrk.Image.Value = Path.GetFileName(trk.TrackFile);
|
||||
xmlTrk.Image = new ImageType
|
||||
{
|
||||
Value = Path.GetFileName(trk.TrackFile),
|
||||
format = trk.TrackFileType
|
||||
};
|
||||
|
||||
if(trk.TrackFileOffset > 0)
|
||||
{
|
||||
xmlTrk.Image.offset = (long)trk.TrackFileOffset;
|
||||
xmlTrk.Image.offsetSpecified = true;
|
||||
}
|
||||
|
||||
xmlTrk.Image.format = trk.TrackFileType;
|
||||
xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * trk.TrackRawBytesPerSector;
|
||||
xmlTrk.BytesPerSector = trk.TrackBytesPerSector;
|
||||
|
||||
@@ -370,8 +398,16 @@ namespace DiscImageChef.Core
|
||||
|
||||
if(trk.TrackSubchannelType != TrackSubchannelType.None)
|
||||
{
|
||||
xmlTrk.SubChannel = new SubChannelType();
|
||||
xmlTrk.SubChannel.Image = new ImageType();
|
||||
xmlTrk.SubChannel = new SubChannelType
|
||||
{
|
||||
Image = new ImageType
|
||||
{
|
||||
Value = trk.TrackSubchannelFile
|
||||
},
|
||||
// TODO: Packed subchannel has different size?
|
||||
Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96
|
||||
};
|
||||
|
||||
switch(trk.TrackSubchannelType)
|
||||
{
|
||||
case TrackSubchannelType.Packed:
|
||||
@@ -393,10 +429,6 @@ namespace DiscImageChef.Core
|
||||
xmlTrk.SubChannel.Image.offset = (long)trk.TrackSubchannelOffset;
|
||||
xmlTrk.SubChannel.Image.offsetSpecified = true;
|
||||
}
|
||||
xmlTrk.SubChannel.Image.Value = trk.TrackSubchannelFile;
|
||||
|
||||
// TODO: Packed subchannel has different size?
|
||||
xmlTrk.SubChannel.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96;
|
||||
|
||||
Checksum subChkWorker = new Checksum();
|
||||
|
||||
@@ -445,14 +477,15 @@ namespace DiscImageChef.Core
|
||||
xmlTrk.FileSystemInformation = new PartitionType[partitions.Count];
|
||||
for(int i = 0; i < partitions.Count; i++)
|
||||
{
|
||||
xmlTrk.FileSystemInformation[i] = new PartitionType();
|
||||
xmlTrk.FileSystemInformation[i].Description = partitions[i].Description;
|
||||
xmlTrk.FileSystemInformation[i].EndSector = (int)(partitions[i].End);
|
||||
xmlTrk.FileSystemInformation[i].Name = partitions[i].Name;
|
||||
xmlTrk.FileSystemInformation[i].Sequence = (int)partitions[i].Sequence;
|
||||
xmlTrk.FileSystemInformation[i].StartSector = (int)partitions[i].Start;
|
||||
xmlTrk.FileSystemInformation[i].Type = partitions[i].Type;
|
||||
|
||||
xmlTrk.FileSystemInformation[i] = new PartitionType
|
||||
{
|
||||
Description = partitions[i].Description,
|
||||
EndSector = (int)(partitions[i].End),
|
||||
Name = partitions[i].Name,
|
||||
Sequence = (int)partitions[i].Sequence,
|
||||
StartSector = (int)partitions[i].Start,
|
||||
Type = partitions[i].Type
|
||||
};
|
||||
List<FileSystemType> lstFs = new List<FileSystemType>();
|
||||
|
||||
foreach(Filesystem _plugin in plugins.PluginsList.Values)
|
||||
@@ -489,10 +522,11 @@ namespace DiscImageChef.Core
|
||||
}
|
||||
else
|
||||
{
|
||||
xmlTrk.FileSystemInformation[0] = new PartitionType();
|
||||
xmlTrk.FileSystemInformation[0].EndSector = (int)xmlTrk.EndSector;
|
||||
xmlTrk.FileSystemInformation[0].StartSector = (int)xmlTrk.StartSector;
|
||||
|
||||
xmlTrk.FileSystemInformation[0] = new PartitionType
|
||||
{
|
||||
EndSector = (int)xmlTrk.EndSector,
|
||||
StartSector = (int)xmlTrk.StartSector
|
||||
};
|
||||
List<FileSystemType> lstFs = new List<FileSystemType>();
|
||||
|
||||
Partition xmlPart = new Partition
|
||||
@@ -552,9 +586,7 @@ namespace DiscImageChef.Core
|
||||
dskType = MediaType.XGD3;
|
||||
}
|
||||
|
||||
|
||||
string dscType, dscSubType;
|
||||
Metadata.MediaType.MediaTypeToString(dskType, out dscType, out dscSubType);
|
||||
Metadata.MediaType.MediaTypeToString(dskType, out string dscType, out string dscSubType);
|
||||
sidecar.OpticalDisc[0].DiscType = dscType;
|
||||
sidecar.OpticalDisc[0].DiscSubType = dscSubType;
|
||||
Statistics.AddMedia(dskType, false);
|
||||
@@ -564,17 +596,29 @@ namespace DiscImageChef.Core
|
||||
!string.IsNullOrEmpty(image.ImageInfo.driveFirmwareRevision) ||
|
||||
!string.IsNullOrEmpty(image.ImageInfo.driveSerialNumber))
|
||||
{
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray = new DumpHardwareType[1];
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents = new ExtentType[0];
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].Start = 0;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Extents[0].End = image.ImageInfo.sectors;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Manufacturer = image.ImageInfo.driveManufacturer;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Model = image.ImageInfo.driveModel;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Firmware = image.ImageInfo.driveFirmwareRevision;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Serial = image.ImageInfo.driveSerialNumber;
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Software = new SoftwareType();
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Name = image.GetImageApplication();
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray[0].Software.Version = image.GetImageApplicationVersion();
|
||||
sidecar.OpticalDisc[0].DumpHardwareArray = new[]
|
||||
{
|
||||
new DumpHardwareType
|
||||
{
|
||||
Extents = new[]
|
||||
{
|
||||
new ExtentType
|
||||
{
|
||||
Start = 0,
|
||||
End = image.ImageInfo.sectors
|
||||
}
|
||||
},
|
||||
Manufacturer = image.ImageInfo.driveManufacturer,
|
||||
Model = image.ImageInfo.driveModel,
|
||||
Firmware = image.ImageInfo.driveFirmwareRevision,
|
||||
Serial = image.ImageInfo.driveSerialNumber,
|
||||
Software = new SoftwareType
|
||||
{
|
||||
Name = image.GetImageApplication(),
|
||||
Version = image.GetImageApplicationVersion()
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,11 +35,9 @@
|
||||
// Copyright (C) 2011-2015 Claunia.com
|
||||
// ****************************************************************************/
|
||||
// //$Id$
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using DiscImageChef.CommonTypes;
|
||||
using DiscImageChef.Decoders.PCMCIA;
|
||||
using DiscImageChef.Filesystems;
|
||||
using DiscImageChef.ImagePlugins;
|
||||
using Schemas;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user