diff --git a/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs b/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs index 67283792a..08627f76d 100644 --- a/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs +++ b/DiscImageChef.Core/Devices/Dumping/CompactDisc.cs @@ -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); + } } /// Dumps a compact disc @@ -644,8 +656,8 @@ namespace DiscImageChef.Core.Devices.Dumping double minSpeed = double.MaxValue; uint blocksToRead = 64; Dictionary mediaTags = new Dictionary(); - 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...");