Read Lead-In's CD-Text.

This commit is contained in:
2019-12-14 20:50:18 +00:00
parent 29cedae01f
commit 4c936a4e9d

View File

@@ -616,6 +616,18 @@ namespace DiscImageChef.Core.Devices.Dumping
firstTrackLastSession = session.Value.TrackDescriptors[0].TrackNumber;
}
}
dumpLog.WriteLine("Reading CD-Text from Lead-In");
UpdateStatus?.Invoke("Reading CD-Text from Lead-In");
sense = dev.ReadCdText(out cmdBuf, out senseBuf, dev.Timeout, out _);
if(!sense &&
CDTextOnLeadIn.Decode(cmdBuf).HasValue)
{
tmpBuf = new byte[cmdBuf.Length - 4];
Array.Copy(cmdBuf, 4, tmpBuf, 0, cmdBuf.Length - 4);
mediaTags.Add(MediaTagType.CD_TEXT, tmpBuf);
}
}
/// <summary>Dumps a compact disc</summary>
@@ -644,8 +656,8 @@ namespace DiscImageChef.Core.Devices.Dumping
double minSpeed = double.MaxValue;
uint blocksToRead = 64;
Dictionary<MediaTagType, byte[]> mediaTags = new Dictionary<MediaTagType, byte[]>();
byte[] cmdBuf;
byte[] senseBuf;
byte[] cmdBuf = null;
byte[] senseBuf = null;
byte[] tmpBuf;
MmcSubchannel supportedSubchannel = MmcSubchannel.Raw;
TrackSubchannelType subType = TrackSubchannelType.None; // Track subchannel type
@@ -704,18 +716,6 @@ namespace DiscImageChef.Core.Devices.Dumping
dskType = MediaType.CDV;
}
dumpLog.WriteLine("Reading CD-Text from Lead-In");
UpdateStatus?.Invoke("Reading CD-Text from Lead-In");
sense = dev.ReadCdText(out cmdBuf, out senseBuf, dev.Timeout, out _);
if(!sense)
if(CDTextOnLeadIn.Decode(cmdBuf).HasValue)
{
tmpBuf = new byte[cmdBuf.Length - 4];
Array.Copy(cmdBuf, 4, tmpBuf, 0, cmdBuf.Length - 4);
mediaTags.Add(MediaTagType.CD_TEXT, tmpBuf);
}
// TODO: Add other detectors here
dumpLog.WriteLine("Detecting disc type...");
UpdateStatus?.Invoke("Detecting disc type...");