mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Add detection and media type for Ultra HD Blu-ray.
This commit is contained in:
7
.idea/.idea.Aaru/.idea/vcs.xml
generated
7
.idea/.idea.Aaru/.idea/vcs.xml
generated
@@ -5,13 +5,6 @@
|
||||
<inspection_tool class="GraziCommit" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||
</profile>
|
||||
</component>
|
||||
<component name="GithubSharedProjectSettings">
|
||||
<option name="branchProtectionPatterns">
|
||||
<list>
|
||||
<option value="master" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$/Aaru.Checksums" vcs="Git" />
|
||||
|
||||
Submodule Aaru.CommonTypes updated: 727c9fbca0...dd856a397f
@@ -46,9 +46,9 @@ using Aaru.Devices;
|
||||
using Schemas;
|
||||
using DDS = Aaru.Decoders.DVD.DDS;
|
||||
using DMI = Aaru.Decoders.Xbox.DMI;
|
||||
using DVDDecryption = Aaru.Decryption.DVD.Dump;
|
||||
using Inquiry = Aaru.CommonTypes.Structs.Devices.SCSI.Inquiry;
|
||||
using Spare = Aaru.Decoders.DVD.Spare;
|
||||
using DVDDecryption = Aaru.Decryption.DVD.Dump;
|
||||
|
||||
// ReSharper disable JoinDeclarationAndInitializer
|
||||
|
||||
@@ -768,6 +768,7 @@ namespace Aaru.Core.Devices.Dumping
|
||||
case MediaType.BDROM:
|
||||
case MediaType.BDRXL:
|
||||
case MediaType.BDREXL:
|
||||
case MediaType.UHDBD:
|
||||
_dumpLog.WriteLine("Reading Disc Information.");
|
||||
|
||||
sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0,
|
||||
@@ -800,6 +801,7 @@ namespace Aaru.Core.Devices.Dumping
|
||||
{
|
||||
#region BD-ROM only
|
||||
case MediaType.BDROM:
|
||||
case MediaType.UHDBD:
|
||||
_dumpLog.WriteLine("Reading Burst Cutting Area.");
|
||||
|
||||
sense = _dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0,
|
||||
|
||||
@@ -1003,8 +1003,10 @@ namespace Aaru.Core.Media.Detection
|
||||
case MediaType.DVDROM:
|
||||
case MediaType.HDDVDROM:
|
||||
case MediaType.BDROM:
|
||||
case MediaType.UHDBD:
|
||||
case MediaType.Unknown:
|
||||
if(mediaType == MediaType.BDROM)
|
||||
if(mediaType == MediaType.BDROM ||
|
||||
mediaType == MediaType.UHDBD)
|
||||
{
|
||||
sense = dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Bd, 0, 0,
|
||||
MmcDiscStructureFormat.DiscInformation, 0, dev.Timeout, out _);
|
||||
@@ -1112,11 +1114,11 @@ namespace Aaru.Core.Media.Detection
|
||||
}
|
||||
}
|
||||
|
||||
if(mediaType == MediaType.DVDROM)
|
||||
if(mediaType == MediaType.DVDROM)
|
||||
{
|
||||
sense = dev.ReadDiscStructure(out cmdBuf, out _, MmcDiscStructureMediaType.Dvd, 0, 0,
|
||||
MmcDiscStructureFormat.DiscManufacturingInformation, 0, dev.Timeout,
|
||||
out _);
|
||||
MmcDiscStructureFormat.DiscManufacturingInformation, 0,
|
||||
dev.Timeout, out _);
|
||||
|
||||
if(!sense)
|
||||
{
|
||||
@@ -1129,9 +1131,9 @@ namespace Aaru.Core.Media.Detection
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(DMI.IsXbox360(cmdBuf))
|
||||
{
|
||||
|
||||
// All XGD3 all have the same number of blocks
|
||||
if(blocks == 25063 || // Locked (or non compatible drive)
|
||||
blocks == 4229664 || // Xtreme unlock
|
||||
@@ -1141,15 +1143,20 @@ namespace Aaru.Core.Media.Detection
|
||||
"Found Xbox 360 DMI with {0} blocks, setting disc type to Xbox 360 Game Disc 3 (XGD3).");
|
||||
|
||||
mediaType = MediaType.XGD3;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
AaruConsole.DebugWriteLine("Media detection",
|
||||
"Found Xbox 360 DMI with {0} blocks, setting disc type to Xbox 360 Game Disc 2 (XGD2).");
|
||||
|
||||
mediaType = MediaType.XGD2;
|
||||
return;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
// Recordables will be checked for PhotoCD only
|
||||
@@ -2232,6 +2239,7 @@ namespace Aaru.Core.Media.Detection
|
||||
case MediaType.DVDROM:
|
||||
case MediaType.HDDVDROM:
|
||||
case MediaType.BDROM:
|
||||
case MediaType.UHDBD:
|
||||
case MediaType.Unknown:
|
||||
// TODO: Nuon requires reading the filesystem, searching for a file called "/NUON/NUON.RUN"
|
||||
if(ps2BootSectors != null &&
|
||||
@@ -2302,12 +2310,24 @@ namespace Aaru.Core.Media.Detection
|
||||
{
|
||||
string blurayType = StringHandlers.CToString(blurayDi?.Units[0].DiscTypeIdentifier);
|
||||
|
||||
if(blurayType == "XG4")
|
||||
switch(blurayType)
|
||||
{
|
||||
AaruConsole.DebugWriteLine("Media detection",
|
||||
"Blu-ray type set to \"XG4\", setting disc type to Xbox One Disc (XGD4).");
|
||||
case "XG4":
|
||||
AaruConsole.DebugWriteLine("Media detection",
|
||||
"Blu-ray type set to \"XG4\", setting disc type to Xbox One Disc (XGD4).");
|
||||
|
||||
mediaType = MediaType.XGD4;
|
||||
mediaType = MediaType.XGD4;
|
||||
|
||||
break;
|
||||
|
||||
// TODO: PS5
|
||||
case "BDU":
|
||||
AaruConsole.DebugWriteLine("Media detection",
|
||||
"Blu-ray type set to \"BDU\", setting disc type to Ultra HD Blu-ray.");
|
||||
|
||||
mediaType = MediaType.UHDBD;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,12 +45,11 @@ using Aaru.Decoders.SCSI;
|
||||
using Aaru.Decoders.SCSI.MMC;
|
||||
using Aaru.Decoders.SCSI.SSC;
|
||||
using Aaru.Decoders.Xbox;
|
||||
using Aaru.Decryption.DVD;
|
||||
using Aaru.Devices;
|
||||
using DeviceInfo = Aaru.Core.Devices.Info.DeviceInfo;
|
||||
using DMI = Aaru.Decoders.Xbox.DMI;
|
||||
using Inquiry = Aaru.CommonTypes.Structs.Devices.SCSI.Inquiry;
|
||||
using DVDDecryption = Aaru.Decryption.DVD.Dump;
|
||||
using Inquiry = Aaru.CommonTypes.Structs.Devices.SCSI.Inquiry;
|
||||
|
||||
namespace Aaru.Core.Media.Info
|
||||
{
|
||||
@@ -714,7 +713,7 @@ namespace Aaru.Core.Media.Info
|
||||
#endregion DVD-R and HD DVD-R
|
||||
}
|
||||
|
||||
var dvdDecrypt = new Dump(dev);
|
||||
var dvdDecrypt = new DVDDecryption(dev);
|
||||
sense = dvdDecrypt.ReadBusKey(out cmdBuf, out senseBuf, CopyrightType.CSS, dev.Timeout, out _);
|
||||
|
||||
if(!sense)
|
||||
@@ -724,7 +723,7 @@ namespace Aaru.Core.Media.Info
|
||||
|
||||
if(sense)
|
||||
AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Disc Key\n{0}",
|
||||
Decoders.SCSI.Sense.PrettifySense(senseBuf));
|
||||
Sense.PrettifySense(senseBuf));
|
||||
else
|
||||
DvdDiscKey = cmdBuf;
|
||||
|
||||
@@ -734,7 +733,7 @@ namespace Aaru.Core.Media.Info
|
||||
|
||||
if(sense)
|
||||
AaruConsole.DebugWriteLine("Media-Info command", "READ DISC STRUCTURE: Sector CMI\n{0}",
|
||||
Decoders.SCSI.Sense.PrettifySense(senseBuf));
|
||||
Sense.PrettifySense(senseBuf));
|
||||
else
|
||||
DvdSectorCmi = cmdBuf;
|
||||
}
|
||||
@@ -968,6 +967,7 @@ namespace Aaru.Core.Media.Info
|
||||
case MediaType.BDR:
|
||||
case MediaType.BDRE:
|
||||
case MediaType.BDROM:
|
||||
case MediaType.UHDBD:
|
||||
case MediaType.BDRXL:
|
||||
case MediaType.BDREXL:
|
||||
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.Bd, 0, 0,
|
||||
@@ -996,6 +996,7 @@ namespace Aaru.Core.Media.Info
|
||||
{
|
||||
#region BD-ROM only
|
||||
case MediaType.BDROM:
|
||||
case MediaType.UHDBD:
|
||||
sense = dev.ReadDiscStructure(out cmdBuf, out senseBuf, MmcDiscStructureMediaType.Bd, 0, 0,
|
||||
MmcDiscStructureFormat.BdBurstCuttingArea, 0, dev.Timeout, out _);
|
||||
|
||||
|
||||
@@ -183,6 +183,7 @@ namespace Aaru.DiscImages
|
||||
case MediaType.HDDVDRDL:
|
||||
case MediaType.HDDVDRWDL:
|
||||
case MediaType.BDROM:
|
||||
case MediaType.UHDBD:
|
||||
case MediaType.BDR:
|
||||
case MediaType.BDRE:
|
||||
case MediaType.BDRXL:
|
||||
|
||||
@@ -145,10 +145,10 @@ namespace Aaru.DiscImages
|
||||
};
|
||||
public IEnumerable<MediaType> SupportedMediaTypes => new[]
|
||||
{
|
||||
MediaType.BDR, MediaType.BDRE, MediaType.BDREXL, MediaType.BDROM, MediaType.BDRXL, MediaType.CBHD,
|
||||
MediaType.CD, MediaType.CDDA, MediaType.CDEG, MediaType.CDG, MediaType.CDI, MediaType.CDMIDI,
|
||||
MediaType.CDMRW, MediaType.CDPLUS, MediaType.CDR, MediaType.CDROM, MediaType.CDROMXA, MediaType.CDRW,
|
||||
MediaType.CDV, MediaType.DVDDownload, MediaType.DVDPR, MediaType.DVDPRDL, MediaType.DVDPRW,
|
||||
MediaType.BDR, MediaType.BDRE, MediaType.BDREXL, MediaType.BDROM, MediaType.UHDBD, MediaType.BDRXL,
|
||||
MediaType.CBHD, MediaType.CD, MediaType.CDDA, MediaType.CDEG, MediaType.CDG, MediaType.CDI,
|
||||
MediaType.CDMIDI, MediaType.CDMRW, MediaType.CDPLUS, MediaType.CDR, MediaType.CDROM, MediaType.CDROMXA,
|
||||
MediaType.CDRW, MediaType.CDV, MediaType.DVDDownload, MediaType.DVDPR, MediaType.DVDPRDL, MediaType.DVDPRW,
|
||||
MediaType.DVDPRWDL, MediaType.DVDR, MediaType.DVDRAM, MediaType.DVDRDL, MediaType.DVDROM, MediaType.DVDRW,
|
||||
MediaType.DVDRWDL, MediaType.EVD, MediaType.FDDVD, MediaType.DTSCD, MediaType.FVD, MediaType.HDDVDR,
|
||||
MediaType.HDDVDRAM, MediaType.HDDVDRDL, MediaType.HDDVDROM, MediaType.HDDVDRW, MediaType.HDDVDRWDL,
|
||||
|
||||
@@ -145,7 +145,7 @@ namespace Aaru.DiscImages
|
||||
}
|
||||
|
||||
static (byte minute, byte second, byte frame) LbaToMsf(ulong sector) =>
|
||||
((byte)(sector / 75 / 60), (byte)((sector / 75) % 60), (byte)(sector % 75));
|
||||
((byte)(sector / 75 / 60), (byte)(sector / 75 % 60), (byte)(sector % 75));
|
||||
|
||||
static string GetTrackMode(Track track)
|
||||
{
|
||||
@@ -177,6 +177,7 @@ namespace Aaru.DiscImages
|
||||
case MediaType.BDREXL:
|
||||
case MediaType.BDRE: return CDRWIN_DISK_TYPE_BDRE;
|
||||
case MediaType.BDROM:
|
||||
case MediaType.UHDBD:
|
||||
case MediaType.CBHD:
|
||||
case MediaType.PS3BD:
|
||||
case MediaType.PS4BD:
|
||||
|
||||
@@ -198,19 +198,19 @@ namespace Aaru.DiscImages
|
||||
};
|
||||
public IEnumerable<MediaType> SupportedMediaTypes => new[]
|
||||
{
|
||||
MediaType.BDR, MediaType.BDRE, MediaType.BDREXL, MediaType.BDROM, MediaType.BDRXL, MediaType.CBHD,
|
||||
MediaType.CD, MediaType.CDDA, MediaType.CDEG, MediaType.CDG, MediaType.CDI, MediaType.CDMIDI,
|
||||
MediaType.CDMRW, MediaType.CDPLUS, MediaType.CDR, MediaType.CDROM, MediaType.CDROMXA, MediaType.CDRW,
|
||||
MediaType.CDV, MediaType.DDCD, MediaType.DDCDR, MediaType.DDCDRW, MediaType.DVDDownload, MediaType.DVDPR,
|
||||
MediaType.DVDPRDL, MediaType.DVDPRW, MediaType.DVDPRWDL, MediaType.DVDR, MediaType.DVDRAM, MediaType.DVDRDL,
|
||||
MediaType.DVDROM, MediaType.DVDRW, MediaType.DVDRWDL, MediaType.EVD, MediaType.FDDVD, MediaType.DTSCD,
|
||||
MediaType.FVD, MediaType.HDDVDR, MediaType.HDDVDRAM, MediaType.HDDVDRDL, MediaType.HDDVDROM,
|
||||
MediaType.HDDVDRW, MediaType.HDDVDRWDL, MediaType.HDVMD, MediaType.HVD, MediaType.JaguarCD,
|
||||
MediaType.MEGACD, MediaType.PS1CD, MediaType.PS2CD, MediaType.PS2DVD, MediaType.PS3BD, MediaType.PS3DVD,
|
||||
MediaType.PS4BD, MediaType.SuperCDROM2, MediaType.SVCD, MediaType.SVOD, MediaType.SATURNCD,
|
||||
MediaType.ThreeDO, MediaType.UDO, MediaType.UDO2, MediaType.UDO2_WORM, MediaType.UMD, MediaType.VCD,
|
||||
MediaType.VCDHD, MediaType.NeoGeoCD, MediaType.PCFX, MediaType.CDTV, MediaType.CD32, MediaType.Nuon,
|
||||
MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS, MediaType.MilCD, MediaType.VideoNow,
|
||||
MediaType.BDR, MediaType.BDRE, MediaType.BDREXL, MediaType.BDROM, MediaType.UHDBD, MediaType.BDRXL,
|
||||
MediaType.CBHD, MediaType.CD, MediaType.CDDA, MediaType.CDEG, MediaType.CDG, MediaType.CDI,
|
||||
MediaType.CDMIDI, MediaType.CDMRW, MediaType.CDPLUS, MediaType.CDR, MediaType.CDROM, MediaType.CDROMXA,
|
||||
MediaType.CDRW, MediaType.CDV, MediaType.DDCD, MediaType.DDCDR, MediaType.DDCDRW, MediaType.DVDDownload,
|
||||
MediaType.DVDPR, MediaType.DVDPRDL, MediaType.DVDPRW, MediaType.DVDPRWDL, MediaType.DVDR, MediaType.DVDRAM,
|
||||
MediaType.DVDRDL, MediaType.DVDROM, MediaType.DVDRW, MediaType.DVDRWDL, MediaType.EVD, MediaType.FDDVD,
|
||||
MediaType.DTSCD, MediaType.FVD, MediaType.HDDVDR, MediaType.HDDVDRAM, MediaType.HDDVDRDL,
|
||||
MediaType.HDDVDROM, MediaType.HDDVDRW, MediaType.HDDVDRWDL, MediaType.HDVMD, MediaType.HVD,
|
||||
MediaType.JaguarCD, MediaType.MEGACD, MediaType.PS1CD, MediaType.PS2CD, MediaType.PS2DVD, MediaType.PS3BD,
|
||||
MediaType.PS3DVD, MediaType.PS4BD, MediaType.SuperCDROM2, MediaType.SVCD, MediaType.SVOD,
|
||||
MediaType.SATURNCD, MediaType.ThreeDO, MediaType.UDO, MediaType.UDO2, MediaType.UDO2_WORM, MediaType.UMD,
|
||||
MediaType.VCD, MediaType.VCDHD, MediaType.NeoGeoCD, MediaType.PCFX, MediaType.CDTV, MediaType.CD32,
|
||||
MediaType.Nuon, MediaType.Playdia, MediaType.Pippin, MediaType.FMTOWNS, MediaType.MilCD, MediaType.VideoNow,
|
||||
MediaType.VideoNowColor, MediaType.VideoNowXp, MediaType.CVD, MediaType.PCD
|
||||
};
|
||||
public IEnumerable<(string name, Type type, string description, object @default)> SupportedOptions => new[]
|
||||
|
||||
Reference in New Issue
Block a user