Fix detection of dual layer DVDs. Fixes #377

This commit is contained in:
2020-11-01 18:02:29 +00:00
parent 81e66aa0d4
commit 929569103a
6 changed files with 23 additions and 26 deletions

View File

@@ -312,7 +312,7 @@ namespace Aaru.Core.Devices.Dumping
break;
case DiskCategory.DVDR:
dskType = decPfi.PartVersion == 6 ? MediaType.DVDRDL : MediaType.DVDR;
dskType = decPfi.PartVersion >= 6 ? MediaType.DVDRDL : MediaType.DVDR;
break;
case DiskCategory.DVDRAM:
@@ -324,7 +324,7 @@ namespace Aaru.Core.Devices.Dumping
break;
case DiskCategory.DVDRW:
dskType = decPfi.PartVersion == 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
dskType = decPfi.PartVersion >= 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
break;
case DiskCategory.HDDVDR:

View File

@@ -191,7 +191,7 @@ namespace Aaru.Core.Media.Info
{
ReadCapacity = cmdBuf;
Blocks = (ulong)((cmdBuf[0] << 24) + (cmdBuf[1] << 16) + (cmdBuf[2] << 8) + cmdBuf[3]);
BlockSize = (uint)((cmdBuf[5] << 24) + (cmdBuf[5] << 16) + (cmdBuf[6] << 8) + cmdBuf[7]);
BlockSize = (uint)((cmdBuf[5] << 24) + (cmdBuf[5] << 16) + (cmdBuf[6] << 8) + cmdBuf[7]);
}
sense = dev.ReadCapacity16(out cmdBuf, out senseBuf, dev.Timeout, out _);
@@ -278,7 +278,7 @@ namespace Aaru.Core.Media.Info
{
ReadCapacity = cmdBuf;
Blocks = (ulong)((cmdBuf[0] << 24) + (cmdBuf[1] << 16) + (cmdBuf[2] << 8) + cmdBuf[3]);
BlockSize = (uint)((cmdBuf[5] << 24) + (cmdBuf[5] << 16) + (cmdBuf[6] << 8) + cmdBuf[7]);
BlockSize = (uint)((cmdBuf[5] << 24) + (cmdBuf[5] << 16) + (cmdBuf[6] << 8) + cmdBuf[7]);
}
break;
@@ -541,7 +541,7 @@ namespace Aaru.Core.Media.Info
break;
case DiskCategory.DVDR:
MediaType = DecodedPfi.Value.PartVersion == 6 ? MediaType.DVDRDL
MediaType = DecodedPfi.Value.PartVersion >= 6 ? MediaType.DVDRDL
: MediaType.DVDR;
break;
@@ -554,7 +554,7 @@ namespace Aaru.Core.Media.Info
break;
case DiskCategory.DVDRW:
MediaType = DecodedPfi.Value.PartVersion == 3 ? MediaType.DVDRWDL
MediaType = DecodedPfi.Value.PartVersion >= 3 ? MediaType.DVDRWDL
: MediaType.DVDRW;
break;

View File

@@ -282,11 +282,11 @@ namespace Aaru.Core
}
if(dskType == MediaType.DVDR &&
pfi.Value.PartVersion == 6)
pfi.Value.PartVersion >= 6)
dskType = MediaType.DVDRDL;
if(dskType == MediaType.DVDRW &&
pfi.Value.PartVersion == 3)
pfi.Value.PartVersion >= 3)
dskType = MediaType.DVDRWDL;
if(dskType == MediaType.GOD &&

View File

@@ -405,7 +405,7 @@ namespace Aaru.DiscImages
break;
case DiskCategory.DVDR:
_imageInfo.MediaType = pfi0.Value.PartVersion == 6 ? MediaType.DVDRDL : MediaType.DVDR;
_imageInfo.MediaType = pfi0.Value.PartVersion >= 6 ? MediaType.DVDRDL : MediaType.DVDR;
break;
case DiskCategory.DVDRAM:
@@ -418,7 +418,7 @@ namespace Aaru.DiscImages
break;
case DiskCategory.DVDRW:
_imageInfo.MediaType =
pfi0.Value.PartVersion == 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
pfi0.Value.PartVersion >= 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
break;
case DiskCategory.HDDVDR:

View File

@@ -532,43 +532,40 @@ namespace Aaru.DiscImages
chars.FileFilter =
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
path.ToLower(CultureInfo.
CurrentCulture)));
CurrentCulture)));
}
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
path.ToUpper(CultureInfo.
CurrentCulture))) !=
null)
CurrentCulture))) != null)
{
chars.FilePath = path.ToUpper(CultureInfo.CurrentCulture);
chars.FileFilter =
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
path.ToUpper(CultureInfo.
CurrentCulture)));
CurrentCulture)));
}
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
dataFile.Filename.ToLower(CultureInfo.
CurrentCulture))) !=
null)
CurrentCulture))) != null)
{
chars.FilePath = dataFile.Filename.ToLower(CultureInfo.CurrentCulture);
chars.FileFilter =
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
dataFile.Filename.ToLower(CultureInfo.
CurrentCulture)));
CurrentCulture)));
}
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
dataFile.Filename.ToUpper(CultureInfo.
CurrentCulture))) !=
null)
CurrentCulture))) != null)
{
chars.FilePath = dataFile.Filename.ToUpper(CultureInfo.CurrentCulture);
chars.FileFilter =
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
dataFile.Filename.ToUpper(CultureInfo.
CurrentCulture)));
CurrentCulture)));
}
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
dataFile.Filename)) != null)
@@ -773,8 +770,8 @@ namespace Aaru.DiscImages
track.TrackEndSector = (ulong)(trk.sectors + trk.startLba);
foreach(DataFileCharacteristics chars in _filePaths.Where(chars => trk.startLba >= chars.StartLba &&
trk.startLba + trk.sectors <=
chars.StartLba + chars.Sectors))
trk.startLba + trk.sectors <=
chars.StartLba + chars.Sectors))
{
track.TrackFilter = chars.FileFilter;
track.TrackFile = chars.FileFilter.GetFilename();
@@ -916,7 +913,7 @@ namespace Aaru.DiscImages
break;
case DiskCategory.DVDR:
_imageInfo.MediaType = pfi0.Value.PartVersion == 6 ? MediaType.DVDRDL : MediaType.DVDR;
_imageInfo.MediaType = pfi0.Value.PartVersion >= 6 ? MediaType.DVDRDL : MediaType.DVDR;
break;
case DiskCategory.DVDRAM:
@@ -928,7 +925,7 @@ namespace Aaru.DiscImages
break;
case DiskCategory.DVDRW:
_imageInfo.MediaType = pfi0.Value.PartVersion == 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
_imageInfo.MediaType = pfi0.Value.PartVersion >= 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
break;
case DiskCategory.HDDVDR:

View File

@@ -386,7 +386,7 @@ namespace Aaru.DiscImages
break;
case DiskCategory.DVDR:
_imageInfo.MediaType = decPfi.PartVersion == 6 ? MediaType.DVDRDL : MediaType.DVDR;
_imageInfo.MediaType = decPfi.PartVersion >= 6 ? MediaType.DVDRDL : MediaType.DVDR;
break;
case DiskCategory.DVDRAM:
@@ -398,7 +398,7 @@ namespace Aaru.DiscImages
break;
case DiskCategory.DVDRW:
_imageInfo.MediaType = decPfi.PartVersion == 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
_imageInfo.MediaType = decPfi.PartVersion >= 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
break;
case DiskCategory.HDDVDR: