mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Fix detection of dual layer DVDs. Fixes #377
This commit is contained in:
@@ -312,7 +312,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDR:
|
case DiskCategory.DVDR:
|
||||||
dskType = decPfi.PartVersion == 6 ? MediaType.DVDRDL : MediaType.DVDR;
|
dskType = decPfi.PartVersion >= 6 ? MediaType.DVDRDL : MediaType.DVDR;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDRAM:
|
case DiskCategory.DVDRAM:
|
||||||
@@ -324,7 +324,7 @@ namespace Aaru.Core.Devices.Dumping
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDRW:
|
case DiskCategory.DVDRW:
|
||||||
dskType = decPfi.PartVersion == 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
|
dskType = decPfi.PartVersion >= 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.HDDVDR:
|
case DiskCategory.HDDVDR:
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ namespace Aaru.Core.Media.Info
|
|||||||
{
|
{
|
||||||
ReadCapacity = cmdBuf;
|
ReadCapacity = cmdBuf;
|
||||||
Blocks = (ulong)((cmdBuf[0] << 24) + (cmdBuf[1] << 16) + (cmdBuf[2] << 8) + cmdBuf[3]);
|
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 _);
|
sense = dev.ReadCapacity16(out cmdBuf, out senseBuf, dev.Timeout, out _);
|
||||||
@@ -278,7 +278,7 @@ namespace Aaru.Core.Media.Info
|
|||||||
{
|
{
|
||||||
ReadCapacity = cmdBuf;
|
ReadCapacity = cmdBuf;
|
||||||
Blocks = (ulong)((cmdBuf[0] << 24) + (cmdBuf[1] << 16) + (cmdBuf[2] << 8) + cmdBuf[3]);
|
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;
|
break;
|
||||||
@@ -541,7 +541,7 @@ namespace Aaru.Core.Media.Info
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDR:
|
case DiskCategory.DVDR:
|
||||||
MediaType = DecodedPfi.Value.PartVersion == 6 ? MediaType.DVDRDL
|
MediaType = DecodedPfi.Value.PartVersion >= 6 ? MediaType.DVDRDL
|
||||||
: MediaType.DVDR;
|
: MediaType.DVDR;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -554,7 +554,7 @@ namespace Aaru.Core.Media.Info
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDRW:
|
case DiskCategory.DVDRW:
|
||||||
MediaType = DecodedPfi.Value.PartVersion == 3 ? MediaType.DVDRWDL
|
MediaType = DecodedPfi.Value.PartVersion >= 3 ? MediaType.DVDRWDL
|
||||||
: MediaType.DVDRW;
|
: MediaType.DVDRW;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -282,11 +282,11 @@ namespace Aaru.Core
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(dskType == MediaType.DVDR &&
|
if(dskType == MediaType.DVDR &&
|
||||||
pfi.Value.PartVersion == 6)
|
pfi.Value.PartVersion >= 6)
|
||||||
dskType = MediaType.DVDRDL;
|
dskType = MediaType.DVDRDL;
|
||||||
|
|
||||||
if(dskType == MediaType.DVDRW &&
|
if(dskType == MediaType.DVDRW &&
|
||||||
pfi.Value.PartVersion == 3)
|
pfi.Value.PartVersion >= 3)
|
||||||
dskType = MediaType.DVDRWDL;
|
dskType = MediaType.DVDRWDL;
|
||||||
|
|
||||||
if(dskType == MediaType.GOD &&
|
if(dskType == MediaType.GOD &&
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ namespace Aaru.DiscImages
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDR:
|
case DiskCategory.DVDR:
|
||||||
_imageInfo.MediaType = pfi0.Value.PartVersion == 6 ? MediaType.DVDRDL : MediaType.DVDR;
|
_imageInfo.MediaType = pfi0.Value.PartVersion >= 6 ? MediaType.DVDRDL : MediaType.DVDR;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDRAM:
|
case DiskCategory.DVDRAM:
|
||||||
@@ -418,7 +418,7 @@ namespace Aaru.DiscImages
|
|||||||
break;
|
break;
|
||||||
case DiskCategory.DVDRW:
|
case DiskCategory.DVDRW:
|
||||||
_imageInfo.MediaType =
|
_imageInfo.MediaType =
|
||||||
pfi0.Value.PartVersion == 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
|
pfi0.Value.PartVersion >= 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.HDDVDR:
|
case DiskCategory.HDDVDR:
|
||||||
|
|||||||
@@ -532,43 +532,40 @@ namespace Aaru.DiscImages
|
|||||||
chars.FileFilter =
|
chars.FileFilter =
|
||||||
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
||||||
path.ToLower(CultureInfo.
|
path.ToLower(CultureInfo.
|
||||||
CurrentCulture)));
|
CurrentCulture)));
|
||||||
}
|
}
|
||||||
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
||||||
path.ToUpper(CultureInfo.
|
path.ToUpper(CultureInfo.
|
||||||
CurrentCulture))) !=
|
CurrentCulture))) != null)
|
||||||
null)
|
|
||||||
{
|
{
|
||||||
chars.FilePath = path.ToUpper(CultureInfo.CurrentCulture);
|
chars.FilePath = path.ToUpper(CultureInfo.CurrentCulture);
|
||||||
|
|
||||||
chars.FileFilter =
|
chars.FileFilter =
|
||||||
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
||||||
path.ToUpper(CultureInfo.
|
path.ToUpper(CultureInfo.
|
||||||
CurrentCulture)));
|
CurrentCulture)));
|
||||||
}
|
}
|
||||||
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
||||||
dataFile.Filename.ToLower(CultureInfo.
|
dataFile.Filename.ToLower(CultureInfo.
|
||||||
CurrentCulture))) !=
|
CurrentCulture))) != null)
|
||||||
null)
|
|
||||||
{
|
{
|
||||||
chars.FilePath = dataFile.Filename.ToLower(CultureInfo.CurrentCulture);
|
chars.FilePath = dataFile.Filename.ToLower(CultureInfo.CurrentCulture);
|
||||||
|
|
||||||
chars.FileFilter =
|
chars.FileFilter =
|
||||||
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
||||||
dataFile.Filename.ToLower(CultureInfo.
|
dataFile.Filename.ToLower(CultureInfo.
|
||||||
CurrentCulture)));
|
CurrentCulture)));
|
||||||
}
|
}
|
||||||
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
||||||
dataFile.Filename.ToUpper(CultureInfo.
|
dataFile.Filename.ToUpper(CultureInfo.
|
||||||
CurrentCulture))) !=
|
CurrentCulture))) != null)
|
||||||
null)
|
|
||||||
{
|
{
|
||||||
chars.FilePath = dataFile.Filename.ToUpper(CultureInfo.CurrentCulture);
|
chars.FilePath = dataFile.Filename.ToUpper(CultureInfo.CurrentCulture);
|
||||||
|
|
||||||
chars.FileFilter =
|
chars.FileFilter =
|
||||||
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
||||||
dataFile.Filename.ToUpper(CultureInfo.
|
dataFile.Filename.ToUpper(CultureInfo.
|
||||||
CurrentCulture)));
|
CurrentCulture)));
|
||||||
}
|
}
|
||||||
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
else if(filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(),
|
||||||
dataFile.Filename)) != null)
|
dataFile.Filename)) != null)
|
||||||
@@ -773,8 +770,8 @@ namespace Aaru.DiscImages
|
|||||||
track.TrackEndSector = (ulong)(trk.sectors + trk.startLba);
|
track.TrackEndSector = (ulong)(trk.sectors + trk.startLba);
|
||||||
|
|
||||||
foreach(DataFileCharacteristics chars in _filePaths.Where(chars => trk.startLba >= chars.StartLba &&
|
foreach(DataFileCharacteristics chars in _filePaths.Where(chars => trk.startLba >= chars.StartLba &&
|
||||||
trk.startLba + trk.sectors <=
|
trk.startLba + trk.sectors <=
|
||||||
chars.StartLba + chars.Sectors))
|
chars.StartLba + chars.Sectors))
|
||||||
{
|
{
|
||||||
track.TrackFilter = chars.FileFilter;
|
track.TrackFilter = chars.FileFilter;
|
||||||
track.TrackFile = chars.FileFilter.GetFilename();
|
track.TrackFile = chars.FileFilter.GetFilename();
|
||||||
@@ -916,7 +913,7 @@ namespace Aaru.DiscImages
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDR:
|
case DiskCategory.DVDR:
|
||||||
_imageInfo.MediaType = pfi0.Value.PartVersion == 6 ? MediaType.DVDRDL : MediaType.DVDR;
|
_imageInfo.MediaType = pfi0.Value.PartVersion >= 6 ? MediaType.DVDRDL : MediaType.DVDR;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDRAM:
|
case DiskCategory.DVDRAM:
|
||||||
@@ -928,7 +925,7 @@ namespace Aaru.DiscImages
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDRW:
|
case DiskCategory.DVDRW:
|
||||||
_imageInfo.MediaType = pfi0.Value.PartVersion == 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
|
_imageInfo.MediaType = pfi0.Value.PartVersion >= 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.HDDVDR:
|
case DiskCategory.HDDVDR:
|
||||||
|
|||||||
@@ -386,7 +386,7 @@ namespace Aaru.DiscImages
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDR:
|
case DiskCategory.DVDR:
|
||||||
_imageInfo.MediaType = decPfi.PartVersion == 6 ? MediaType.DVDRDL : MediaType.DVDR;
|
_imageInfo.MediaType = decPfi.PartVersion >= 6 ? MediaType.DVDRDL : MediaType.DVDR;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDRAM:
|
case DiskCategory.DVDRAM:
|
||||||
@@ -398,7 +398,7 @@ namespace Aaru.DiscImages
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.DVDRW:
|
case DiskCategory.DVDRW:
|
||||||
_imageInfo.MediaType = decPfi.PartVersion == 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
|
_imageInfo.MediaType = decPfi.PartVersion >= 3 ? MediaType.DVDRWDL : MediaType.DVDRW;
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case DiskCategory.HDDVDR:
|
case DiskCategory.HDDVDR:
|
||||||
|
|||||||
Reference in New Issue
Block a user