mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Fix detection of CD-i discs.
Do not take as decoded data that has merely returned the SCSI data length header.
This commit is contained in:
@@ -299,26 +299,29 @@ namespace Aaru.Core.Media.Detection
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(hasDataTrack &&
|
if(mediaType != MediaType.CDI)
|
||||||
hasAudioTrack &&
|
{
|
||||||
allFirstSessionTracksAreAudio &&
|
if(hasDataTrack &&
|
||||||
sessions == 2)
|
hasAudioTrack &&
|
||||||
mediaType = MediaType.CDPLUS;
|
allFirstSessionTracksAreAudio &&
|
||||||
|
sessions == 2)
|
||||||
|
mediaType = MediaType.CDPLUS;
|
||||||
|
|
||||||
if(!hasDataTrack &&
|
if(!hasDataTrack &&
|
||||||
hasAudioTrack &&
|
hasAudioTrack &&
|
||||||
sessions == 1)
|
sessions == 1)
|
||||||
mediaType = MediaType.CDDA;
|
mediaType = MediaType.CDDA;
|
||||||
|
|
||||||
if(hasDataTrack &&
|
if(hasDataTrack &&
|
||||||
!hasAudioTrack &&
|
!hasAudioTrack &&
|
||||||
sessions == 1)
|
sessions == 1)
|
||||||
mediaType = MediaType.CDROM;
|
mediaType = MediaType.CDROM;
|
||||||
|
|
||||||
if(hasVideoTrack &&
|
if(hasVideoTrack &&
|
||||||
!hasDataTrack &&
|
!hasDataTrack &&
|
||||||
sessions == 1)
|
sessions == 1)
|
||||||
mediaType = MediaType.CDV;
|
mediaType = MediaType.CDV;
|
||||||
|
}
|
||||||
|
|
||||||
if((mediaType == MediaType.CD || mediaType == MediaType.CDROM) && hasDataTrack)
|
if((mediaType == MediaType.CD || mediaType == MediaType.CDROM) && hasDataTrack)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1124,7 +1124,7 @@ namespace Aaru.Core.Media.Info
|
|||||||
AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: Session info\n{0}",
|
AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: Session info\n{0}",
|
||||||
Sense.PrettifySense(senseBuf));
|
Sense.PrettifySense(senseBuf));
|
||||||
}
|
}
|
||||||
else
|
else if(cmdBuf.Length > 4)
|
||||||
{
|
{
|
||||||
Session = cmdBuf;
|
Session = cmdBuf;
|
||||||
DecodedSession = Decoders.CD.Session.Decode(cmdBuf);
|
DecodedSession = Decoders.CD.Session.Decode(cmdBuf);
|
||||||
@@ -1143,7 +1143,7 @@ namespace Aaru.Core.Media.Info
|
|||||||
AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: Raw TOC\n{0}",
|
AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: Raw TOC\n{0}",
|
||||||
Sense.PrettifySense(senseBuf));
|
Sense.PrettifySense(senseBuf));
|
||||||
}
|
}
|
||||||
else
|
else if(cmdBuf.Length > 4)
|
||||||
{
|
{
|
||||||
RawToc = cmdBuf;
|
RawToc = cmdBuf;
|
||||||
|
|
||||||
@@ -1155,7 +1155,7 @@ namespace Aaru.Core.Media.Info
|
|||||||
if(sense)
|
if(sense)
|
||||||
AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: PMA\n{0}",
|
AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: PMA\n{0}",
|
||||||
Sense.PrettifySense(senseBuf));
|
Sense.PrettifySense(senseBuf));
|
||||||
else
|
else if(cmdBuf.Length > 4)
|
||||||
Pma = cmdBuf;
|
Pma = cmdBuf;
|
||||||
|
|
||||||
sense = dev.ReadCdText(out cmdBuf, out senseBuf, dev.Timeout, out _);
|
sense = dev.ReadCdText(out cmdBuf, out senseBuf, dev.Timeout, out _);
|
||||||
@@ -1165,7 +1165,7 @@ namespace Aaru.Core.Media.Info
|
|||||||
AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: CD-TEXT\n{0}",
|
AaruConsole.DebugWriteLine("Media-Info command", "READ TOC/PMA/ATIP: CD-TEXT\n{0}",
|
||||||
Sense.PrettifySense(senseBuf));
|
Sense.PrettifySense(senseBuf));
|
||||||
}
|
}
|
||||||
else
|
else if(cmdBuf.Length > 4)
|
||||||
{
|
{
|
||||||
CdTextLeadIn = cmdBuf;
|
CdTextLeadIn = cmdBuf;
|
||||||
DecodedCdTextLeadIn = CDTextOnLeadIn.Decode(cmdBuf);
|
DecodedCdTextLeadIn = CDTextOnLeadIn.Decode(cmdBuf);
|
||||||
|
|||||||
Submodule Aaru.Decoders updated: b7c9b6b1fb...78d0ae75e2
Reference in New Issue
Block a user