diff --git a/Aaru.CommonTypes b/Aaru.CommonTypes index 2171f184a..2631f4308 160000 --- a/Aaru.CommonTypes +++ b/Aaru.CommonTypes @@ -1 +1 @@ -Subproject commit 2171f184a97c3e511ad4289522e0e380111e7136 +Subproject commit 2631f4308be47cad47e802af1f7ea648063f51ca diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/CdiReady.cs b/Aaru.Core/Devices/Dumping/CompactDisc/CdiReady.cs index 047fffcd3..aaba47b83 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/CdiReady.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/CdiReady.cs @@ -161,7 +161,7 @@ namespace Aaru.Core.Devices.Dumping byte[] senseBuf; // Sense buffer double cmdDuration; // Command execution time const uint sectorSize = 2352; // Full sector size - Track firstTrack = tracks.FirstOrDefault(t => t.TrackSequence == 1); + Track firstTrack = tracks.FirstOrDefault(t => t.Sequence == 1); uint blocksToRead; // How many sectors to read at once if(firstTrack is null) @@ -177,7 +177,7 @@ namespace Aaru.Core.Devices.Dumping InitProgress?.Invoke(); - for(ulong i = _resume.NextBlock; i < firstTrack.TrackStartSector; i += blocksToRead) + for(ulong i = _resume.NextBlock; i < firstTrack.StartSector; i += blocksToRead) { if(_aborted) { @@ -291,13 +291,13 @@ namespace Aaru.Core.Devices.Dumping { _errorLog?.WriteLine(i + r, _dev.Error, _dev.LastError, senseBuf); - leadOutExtents.Add(i + r, firstTrack.TrackStartSector - 1); + leadOutExtents.Add(i + r, firstTrack.StartSector - 1); UpdateStatus?. - Invoke($"Adding CD-i Ready hole from LBA {i + r} to {firstTrack.TrackStartSector - 1} inclusive."); + Invoke($"Adding CD-i Ready hole from LBA {i + r} to {firstTrack.StartSector - 1} inclusive."); _dumpLog.WriteLine("Adding CD-i Ready hole from LBA {0} to {1} inclusive.", i + r, - firstTrack.TrackStartSector - 1); + firstTrack.StartSector - 1); break; } @@ -391,7 +391,7 @@ namespace Aaru.Core.Devices.Dumping { _errorLog?.WriteLine(i, _dev.Error, _dev.LastError, senseBuf); - _resume.NextBlock = firstTrack.TrackStartSector; + _resume.NextBlock = firstTrack.StartSector; break; } diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Data.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Data.cs index bc04948e3..c47643c24 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Data.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Data.cs @@ -157,7 +157,7 @@ namespace Aaru.Core.Devices.Dumping uint firstSectorToRead = (uint)i; - Track track = tracks.OrderBy(t => t.TrackStartSector).LastOrDefault(t => i >= t.TrackStartSector); + Track track = tracks.OrderBy(t => t.StartSector).LastOrDefault(t => i >= t.StartSector); blocksToRead = 0; bool inData = nextData; @@ -201,9 +201,9 @@ namespace Aaru.Core.Devices.Dumping } } - if(track.TrackSequence != 0 && - i + blocksToRead - (ulong)sectorsForOffset > track.TrackEndSector + 1) - blocksToRead = (uint)(track.TrackEndSector + 1 - i + (ulong)sectorsForOffset); + if(track.Sequence != 0 && + i + blocksToRead - (ulong)sectorsForOffset > track.EndSector + 1) + blocksToRead = (uint)(track.EndSector + 1 - i + (ulong)sectorsForOffset); if(blocksToRead == 1 && !inData) @@ -504,7 +504,7 @@ namespace Aaru.Core.Devices.Dumping } bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel, - desiredSubchannel, sub, i + r, 1, subLog, isrcs, (byte)track.TrackSequence, + desiredSubchannel, sub, i + r, 1, subLog, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true); @@ -648,7 +648,7 @@ namespace Aaru.Core.Devices.Dumping } bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel, - desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, (byte)track.TrackSequence, + desiredSubchannel, sub, i, blocksToRead, subLog, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true); diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Dump.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Dump.cs index 92a00d058..1e5e51bbb 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Dump.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Dump.cs @@ -142,7 +142,7 @@ namespace Aaru.Core.Devices.Dumping return; } - firstLba = (uint)tracks.Min(t => t.TrackStartSector); + firstLba = (uint)tracks.Min(t => t.StartSector); // Check subchannels support supportsPqSubchannel = SupportsPqSubchannel(_dev, _dumpLog, UpdateStatus, firstLba); @@ -400,7 +400,7 @@ namespace Aaru.Core.Devices.Dumping } foreach(Track trk in tracks) - trk.TrackSubchannelType = subType; + trk.SubchannelType = subType; _dumpLog.WriteLine("Calculating pregaps, can take some time..."); UpdateStatus?.Invoke("Calculating pregaps, can take some time..."); @@ -437,7 +437,7 @@ namespace Aaru.Core.Devices.Dumping if(!(_outputPlugin as IWritableOpticalImage).OpticalCapabilities.HasFlag(OpticalImageCapabilities. CanStoreAudioTracks) && - tracks.Any(track => track.TrackType == TrackType.Audio)) + tracks.Any(track => track.Type == TrackType.Audio)) { _dumpLog.WriteLine("Output format does not support audio tracks, cannot continue..."); @@ -448,9 +448,9 @@ namespace Aaru.Core.Devices.Dumping if(!(_outputPlugin as IWritableOpticalImage).OpticalCapabilities.HasFlag(OpticalImageCapabilities. CanStorePregaps) && - tracks.Where(track => track.TrackSequence != - tracks.First(t => t.TrackSession == track.TrackSession).TrackSequence). - Any(track => track.TrackPregap > 0)) + tracks.Where(track => track.Sequence != + tracks.First(t => t.Session == track.Session).Sequence). + Any(track => track.Pregap > 0)) { if(!_force) { @@ -469,9 +469,9 @@ namespace Aaru.Core.Devices.Dumping } for(int t = 1; t < tracks.Length; t++) - tracks[t - 1].TrackEndSector = tracks[t].TrackStartSector - 1; + tracks[t - 1].EndSector = tracks[t].StartSector - 1; - tracks[^1].TrackEndSector = (ulong)lastSector; + tracks[^1].EndSector = (ulong)lastSector; blocks = (ulong)(lastSector + 1); if(blocks == 0) @@ -538,14 +538,14 @@ namespace Aaru.Core.Devices.Dumping UpdateStatus?.Invoke("Solving lead-outs..."); foreach(KeyValuePair leadOuts in leadOutStarts) - foreach(Track trk in tracks.Where(trk => trk.TrackSession == leadOuts.Key). - Where(trk => trk.TrackEndSector >= (ulong)leadOuts.Value)) - trk.TrackEndSector = (ulong)leadOuts.Value - 1; + foreach(Track trk in tracks.Where(trk => trk.Session == leadOuts.Key). + Where(trk => trk.EndSector >= (ulong)leadOuts.Value)) + trk.EndSector = (ulong)leadOuts.Value - 1; var dataExtents = new ExtentsULong(); foreach(Track trk in tracks) - dataExtents.Add(trk.TrackStartSector, trk.TrackEndSector); + dataExtents.Add(trk.StartSector, trk.EndSector); Tuple[] dataExtentsArray = dataExtents.ToArray(); @@ -568,14 +568,14 @@ namespace Aaru.Core.Devices.Dumping { new Track { - TrackSequence = 0, - TrackSession = 1, - TrackType = hiddenData ? TrackType.Data : TrackType.Audio, - TrackStartSector = 0, - TrackBytesPerSector = (int)sectorSize, - TrackRawBytesPerSector = (int)sectorSize, - TrackSubchannelType = subType, - TrackEndSector = tracks.First(t => t.TrackSequence == 1).TrackStartSector - 1 + Sequence = 0, + Session = 1, + Type = hiddenData ? TrackType.Data : TrackType.Audio, + StartSector = 0, + BytesPerSector = (int)sectorSize, + RawBytesPerSector = (int)sectorSize, + SubchannelType = subType, + EndSector = tracks.First(t => t.Sequence == 1).StartSector - 1 } }; @@ -583,7 +583,7 @@ namespace Aaru.Core.Devices.Dumping tracks = trkList.ToArray(); } - if(tracks.Any(t => t.TrackType == TrackType.Audio) && + if(tracks.Any(t => t.Type == TrackType.Audio) && desiredSubchannel != MmcSubchannel.Raw) { _dumpLog.WriteLine("WARNING: If disc says CD+G, CD+EG, CD-MIDI, CD Graphics or CD Enhanced Graphics, dump will be incorrect!"); @@ -593,27 +593,27 @@ namespace Aaru.Core.Devices.Dumping } // Check mode for tracks - foreach(Track trk in tracks.Where(t => t.TrackType != TrackType.Audio)) + foreach(Track trk in tracks.Where(t => t.Type != TrackType.Audio)) { if(!readcd) { - trk.TrackType = TrackType.CdMode1; + trk.Type = TrackType.CdMode1; continue; } - _dumpLog.WriteLine("Checking mode for track {0}...", trk.TrackSequence); - UpdateStatus?.Invoke($"Checking mode for track {trk.TrackSequence}..."); + _dumpLog.WriteLine("Checking mode for track {0}...", trk.Sequence); + UpdateStatus?.Invoke($"Checking mode for track {trk.Sequence}..."); - sense = _dev.ReadCd(out cmdBuf, out _, (uint)(trk.TrackStartSector + trk.TrackPregap), blockSize, 1, + sense = _dev.ReadCd(out cmdBuf, out _, (uint)(trk.StartSector + trk.Pregap), blockSize, 1, MmcSectorTypes.AllTypes, false, false, true, MmcHeaderCodes.AllHeaders, true, true, MmcErrorField.None, supportedSubchannel, _dev.Timeout, out _); if(sense) { - _dumpLog.WriteLine("Unable to guess mode for track {0}, continuing...", trk.TrackSequence); + _dumpLog.WriteLine("Unable to guess mode for track {0}, continuing...", trk.Sequence); - UpdateStatus?.Invoke($"Unable to guess mode for track {trk.TrackSequence}, continuing..."); + UpdateStatus?.Invoke($"Unable to guess mode for track {trk.Sequence}, continuing..."); continue; } @@ -643,9 +643,9 @@ namespace Aaru.Core.Devices.Dumping { case 1: case 0x61: // Scrambled - UpdateStatus?.Invoke($"Track {trk.TrackSequence} is MODE1"); - _dumpLog.WriteLine("Track {0} is MODE1", trk.TrackSequence); - trk.TrackType = TrackType.CdMode1; + UpdateStatus?.Invoke($"Track {trk.Sequence} is MODE1"); + _dumpLog.WriteLine("Track {0} is MODE1", trk.Sequence); + trk.Type = TrackType.CdMode1; break; case 2: @@ -653,25 +653,25 @@ namespace Aaru.Core.Devices.Dumping if(dskType == MediaType.CDI || dskType == MediaType.CDIREADY) { - UpdateStatus?.Invoke($"Track {trk.TrackSequence} is MODE2"); - _dumpLog.WriteLine("Track {0} is MODE2", trk.TrackSequence); - trk.TrackType = TrackType.CdMode2Formless; + UpdateStatus?.Invoke($"Track {trk.Sequence} is MODE2"); + _dumpLog.WriteLine("Track {0} is MODE2", trk.Sequence); + trk.Type = TrackType.CdMode2Formless; break; } if((cmdBuf[0x012] & 0x20) == 0x20) // mode 2 form 2 { - UpdateStatus?.Invoke($"Track {trk.TrackSequence} is MODE2 FORM 2"); - _dumpLog.WriteLine("Track {0} is MODE2 FORM 2", trk.TrackSequence); - trk.TrackType = TrackType.CdMode2Form2; + UpdateStatus?.Invoke($"Track {trk.Sequence} is MODE2 FORM 2"); + _dumpLog.WriteLine("Track {0} is MODE2 FORM 2", trk.Sequence); + trk.Type = TrackType.CdMode2Form2; break; } - UpdateStatus?.Invoke($"Track {trk.TrackSequence} is MODE2 FORM 1"); - _dumpLog.WriteLine("Track {0} is MODE2 FORM 1", trk.TrackSequence); - trk.TrackType = TrackType.CdMode2Form1; + UpdateStatus?.Invoke($"Track {trk.Sequence} is MODE2 FORM 1"); + _dumpLog.WriteLine("Track {0} is MODE2 FORM 1", trk.Sequence); + trk.Type = TrackType.CdMode2Form1; // These media type specifications do not legally allow mode 2 tracks to be present if(dskType == MediaType.CDROM || @@ -681,8 +681,8 @@ namespace Aaru.Core.Devices.Dumping break; default: - UpdateStatus?.Invoke($"Track {trk.TrackSequence} is unknown mode {cmdBuf[15]}"); - _dumpLog.WriteLine("Track {0} is unknown mode {1}", trk.TrackSequence, cmdBuf[15]); + UpdateStatus?.Invoke($"Track {trk.Sequence} is unknown mode {cmdBuf[15]}"); + _dumpLog.WriteLine("Track {0} is unknown mode {1}", trk.Sequence, cmdBuf[15]); break; } @@ -698,7 +698,7 @@ namespace Aaru.Core.Devices.Dumping return; } - if(tracks.Any(t => t.TrackType == TrackType.Audio)) + if(tracks.Any(t => t.Type == TrackType.Audio)) { StoppingErrorMessage?.Invoke("Output format does not support audio tracks, not continuing..."); _dumpLog.WriteLine("Output format does not support audio tracks, not continuing..."); @@ -706,7 +706,7 @@ namespace Aaru.Core.Devices.Dumping return; } - if(tracks.Any(t => t.TrackType != TrackType.CdMode1)) + if(tracks.Any(t => t.Type != TrackType.CdMode1)) { StoppingErrorMessage?.Invoke("Output format only supports MODE 1 tracks, not continuing..."); _dumpLog.WriteLine("Output format only supports MODE 1 tracks, not continuing..."); @@ -848,24 +848,24 @@ namespace Aaru.Core.Devices.Dumping try { byte[] isrcBytes = - (_outputPlugin as IWritableOpticalImage).ReadSectorTag(imgTrack.TrackSequence, + (_outputPlugin as IWritableOpticalImage).ReadSectorTag(imgTrack.Sequence, SectorTagType.CdTrackIsrc); if(isrcBytes != null) - isrcs[(byte)imgTrack.TrackSequence] = Encoding.ASCII.GetString(isrcBytes); + isrcs[(byte)imgTrack.Sequence] = Encoding.ASCII.GetString(isrcBytes); } catch(Exception) { // TODO: Replace for error number } - Track trk = tracks.FirstOrDefault(t => t.TrackSequence == imgTrack.TrackSequence); + Track trk = tracks.FirstOrDefault(t => t.Sequence == imgTrack.Sequence); if(trk != null) { - trk.TrackPregap = imgTrack.TrackPregap; - trk.TrackStartSector = imgTrack.TrackStartSector; - trk.TrackEndSector = imgTrack.TrackEndSector; + trk.Pregap = imgTrack.Pregap; + trk.StartSector = imgTrack.StartSector; + trk.EndSector = imgTrack.EndSector; foreach(KeyValuePair imgIdx in imgTrack.Indexes) trk.Indexes[imgIdx.Key] = imgIdx.Value; @@ -913,13 +913,13 @@ namespace Aaru.Core.Devices.Dumping // Set track flags foreach(KeyValuePair kvp in trackFlags) { - Track track = tracks.FirstOrDefault(t => t.TrackSequence == kvp.Key); + Track track = tracks.FirstOrDefault(t => t.Sequence == kvp.Key); if(track is null) continue; - _dumpLog.WriteLine("Setting flags for track {0}...", track.TrackSequence); - UpdateStatus?.Invoke($"Setting flags for track {track.TrackSequence}..."); + _dumpLog.WriteLine("Setting flags for track {0}...", track.Sequence); + UpdateStatus?.Invoke($"Setting flags for track {track.Sequence}..."); _outputPlugin.WriteSectorTag(new[] { @@ -947,17 +947,17 @@ namespace Aaru.Core.Devices.Dumping if(supportedSubchannel == MmcSubchannel.None) foreach(Track trk in tracks) { - sense = _dev.ReadIsrc((byte)trk.TrackSequence, out string isrc, out _, out _, _dev.Timeout, out _); + sense = _dev.ReadIsrc((byte)trk.Sequence, out string isrc, out _, out _, _dev.Timeout, out _); if(sense || isrc == null || isrc == "000000000000") continue; - isrcs[(byte)trk.TrackSequence] = isrc; + isrcs[(byte)trk.Sequence] = isrc; - UpdateStatus?.Invoke($"Found ISRC for track {trk.TrackSequence}: {isrc}"); - _dumpLog.WriteLine($"Found ISRC for track {trk.TrackSequence}: {isrc}"); + UpdateStatus?.Invoke($"Found ISRC for track {trk.Sequence}: {isrc}"); + _dumpLog.WriteLine($"Found ISRC for track {trk.Sequence}: {isrc}"); } if(supportedSubchannel != MmcSubchannel.None && @@ -987,13 +987,13 @@ namespace Aaru.Core.Devices.Dumping #if DEBUG foreach(Track trk in tracks) UpdateStatus?. - Invoke($"Track {trk.TrackSequence} starts at LBA {trk.TrackStartSector} and ends at LBA {trk.TrackEndSector}"); + Invoke($"Track {trk.Sequence} starts at LBA {trk.StartSector} and ends at LBA {trk.EndSector}"); #endif // Check offset if(_fixOffset) { - if(tracks.All(t => t.TrackType != TrackType.Audio)) + if(tracks.All(t => t.Type != TrackType.Audio)) { // No audio tracks so no need to fix offset _dumpLog.WriteLine("No audio tracks, disabling offset fix."); @@ -1012,7 +1012,7 @@ namespace Aaru.Core.Devices.Dumping _fixOffset = false; } } - else if(tracks.Any(t => t.TrackType == TrackType.Audio)) + else if(tracks.Any(t => t.Type == TrackType.Audio)) { _dumpLog.WriteLine("There are audio tracks and offset fixing is disabled, dump may not be correct."); UpdateStatus?.Invoke("There are audio tracks and offset fixing is disabled, dump may not be correct."); @@ -1036,7 +1036,7 @@ namespace Aaru.Core.Devices.Dumping _dumpLog.WriteLine("Disc offset cannot be calculated."); UpdateStatus?.Invoke("Disc offset cannot be calculated."); - if(tracks.Any(t => t.TrackType == TrackType.Audio)) + if(tracks.Any(t => t.Type == TrackType.Audio)) { _dumpLog.WriteLine("Dump may not be correct."); @@ -1099,7 +1099,7 @@ namespace Aaru.Core.Devices.Dumping } if(!_fixOffset || - tracks.All(t => t.TrackType != TrackType.Audio)) + tracks.All(t => t.Type != TrackType.Audio)) { offsetBytes = 0; sectorsForOffset = 0; @@ -1110,9 +1110,9 @@ namespace Aaru.Core.Devices.Dumping audioExtents = new ExtentsULong(); - foreach(Track audioTrack in tracks.Where(t => t.TrackType == TrackType.Audio)) + foreach(Track audioTrack in tracks.Where(t => t.Type == TrackType.Audio)) { - audioExtents.Add(audioTrack.TrackStartSector, audioTrack.TrackEndSector); + audioExtents.Add(audioTrack.StartSector, audioTrack.EndSector); } // Set speed @@ -1135,9 +1135,9 @@ namespace Aaru.Core.Devices.Dumping if(dskType == MediaType.CDIREADY) { - Track track0 = tracks.FirstOrDefault(t => t.TrackSequence == 0); + Track track0 = tracks.FirstOrDefault(t => t.Sequence == 0); - track0.TrackType = TrackType.CdMode2Formless; + track0.Type = TrackType.CdMode2Formless; if(!supportsLongSectors) { @@ -1232,7 +1232,7 @@ namespace Aaru.Core.Devices.Dumping ReadCdData(audioExtents, blocks, blockSize, ref currentSpeed, currentTry, extents, ibgLog, ref imageWriteDuration, lastSector, leadOutExtents, ref maxSpeed, mhddLog, ref minSpeed, - out newTrim, tracks[0].TrackType != TrackType.Audio, offsetBytes, read6, read10, read12, read16, + out newTrim, tracks[0].Type != TrackType.Audio, offsetBytes, read6, read10, read12, read16, readcd, sectorsForOffset, subSize, supportedSubchannel, supportsLongSectors, ref totalDuration, tracks, subLog, desiredSubchannel, isrcs, ref mcn, subchannelExtents, smallestPregapLbaPerTrack); @@ -1364,14 +1364,14 @@ namespace Aaru.Core.Devices.Dumping foreach(Track trk in tracks) { // Fix track starts in each session's first track - if(tracks.Where(t => t.TrackSession == trk.TrackSession).OrderBy(t => t.TrackSequence).FirstOrDefault(). - TrackSequence == trk.TrackSequence) + if(tracks.Where(t => t.Session == trk.Session).OrderBy(t => t.Sequence).FirstOrDefault(). + Sequence == trk.Sequence) { - if(trk.TrackSequence == 1) + if(trk.Sequence == 1) continue; - trk.TrackStartSector -= trk.TrackPregap; - trk.Indexes[0] = (int)trk.TrackStartSector; + trk.StartSector -= trk.Pregap; + trk.Indexes[0] = (int)trk.StartSector; continue; } diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Error.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Error.cs index 50a7e99de..889272477 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Error.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Error.cs @@ -236,8 +236,8 @@ namespace Aaru.Core.Devices.Dumping forward ? "forward" : "reverse", runningPersistent ? "recovering partial data, " : "")); - Track track = tracks.OrderBy(t => t.TrackStartSector). - LastOrDefault(t => badSector >= t.TrackStartSector); + Track track = tracks.OrderBy(t => t.StartSector). + LastOrDefault(t => badSector >= t.StartSector); byte sectorsToReRead = 1; uint badSectorToReRead = (uint)badSector; @@ -365,7 +365,7 @@ namespace Aaru.Core.Devices.Dumping _outputPlugin.WriteSector(Sector.GetUserData(data), badSector); bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel, - desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence, ref mcn, + desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true); @@ -461,8 +461,8 @@ namespace Aaru.Core.Devices.Dumping PulseProgress?.Invoke($"Trying to get partial data for sector {badSector}"); - Track track = tracks.OrderBy(t => t.TrackStartSector). - LastOrDefault(t => badSector >= t.TrackStartSector); + Track track = tracks.OrderBy(t => t.StartSector). + LastOrDefault(t => badSector >= t.StartSector); if(readcd) { @@ -496,7 +496,7 @@ namespace Aaru.Core.Devices.Dumping _outputPlugin.WriteSector(Sector.GetUserData(data), badSector); bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel, - desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence, + desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true); @@ -619,8 +619,8 @@ namespace Aaru.Core.Devices.Dumping { uint badSector = (uint)bs; - Track track = tracks.OrderBy(t => t.TrackStartSector). - LastOrDefault(t => badSector >= t.TrackStartSector); + Track track = tracks.OrderBy(t => t.StartSector). + LastOrDefault(t => badSector >= t.StartSector); if(_aborted) { @@ -644,7 +644,7 @@ namespace Aaru.Core.Devices.Dumping else if(readcd) { sense = _dev.ReadCd(out cmdBuf, out senseBuf, startSector, subSize, 5, - track.TrackType == TrackType.Audio ? MmcSectorTypes.Cdda + track.Type == TrackType.Audio ? MmcSectorTypes.Cdda : MmcSectorTypes.AllTypes, false, false, false, MmcHeaderCodes.None, false, false, MmcErrorField.None, supportedSubchannel, _dev.Timeout, out cmdDuration); @@ -659,7 +659,7 @@ namespace Aaru.Core.Devices.Dumping } Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel, desiredSubchannel, cmdBuf, badSector, 5, - subLog, isrcs, (byte)track.TrackSequence, ref mcn, tracks, + subLog, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true); diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Pregap.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Pregap.cs index a44b7586e..a4669384c 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Pregap.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Pregap.cs @@ -191,7 +191,7 @@ namespace Aaru.Core.Devices.Dumping // Initialize the dictionary foreach(Track t in tracks) - pregaps[t.TrackSequence] = 0; + pregaps[t.Sequence] = 0; for(int t = 0; t < tracks.Length; t++) { @@ -199,22 +199,22 @@ namespace Aaru.Core.Devices.Dumping int trackRetries = 0; // First track of each session has at least 150 sectors of pregap and is not always readable - if(tracks.Where(trk => trk.TrackSession == track.TrackSession).OrderBy(trk => trk.TrackSequence). - FirstOrDefault().TrackSequence == track.TrackSequence) + if(tracks.Where(trk => trk.Session == track.Session).OrderBy(trk => trk.Sequence). + FirstOrDefault().Sequence == track.Sequence) { - AaruConsole.DebugWriteLine("Pregap calculator", "Skipping track {0}", track.TrackSequence); + AaruConsole.DebugWriteLine("Pregap calculator", "Skipping track {0}", track.Sequence); - if(track.TrackSequence > 1) - pregaps[track.TrackSequence] = 150; + if(track.Sequence > 1) + pregaps[track.Sequence] = 150; continue; } if(t > 0 && - tracks[t - 1].TrackType == tracks[t].TrackType && + tracks[t - 1].Type == tracks[t].Type && dumping) { - AaruConsole.DebugWriteLine("Pregap calculator", "Skipping track {0}", track.TrackSequence); + AaruConsole.DebugWriteLine("Pregap calculator", "Skipping track {0}", track.Sequence); continue; } @@ -222,16 +222,16 @@ namespace Aaru.Core.Devices.Dumping if(dumping && dev.Manufacturer.ToLowerInvariant().StartsWith("plextor", StringComparison.Ordinal)) { AaruConsole.DebugWriteLine("Pregap calculator", "Skipping track {0} due to Plextor firmware bug", - track.TrackSequence); + track.Sequence); continue; } - AaruConsole.DebugWriteLine("Pregap calculator", "Track {0}", track.TrackSequence); + AaruConsole.DebugWriteLine("Pregap calculator", "Track {0}", track.Sequence); - int lba = (int)track.TrackStartSector - 1; + int lba = (int)track.StartSector - 1; bool pregapFound = false; - Track previousTrack = tracks.FirstOrDefault(trk => trk.TrackSequence == track.TrackSequence - 1); + Track previousTrack = tracks.FirstOrDefault(trk => trk.Sequence == track.Sequence - 1); bool goneBack = false; bool goFront = false; @@ -244,8 +244,8 @@ namespace Aaru.Core.Devices.Dumping { sense = supportsRwSubchannel ? GetSectorForPregapRaw(dev, (uint)lba, dbDev, out subBuf, - track.TrackType == TrackType.Audio) - : GetSectorForPregapQ16(dev, (uint)lba, out subBuf, track.TrackType == TrackType.Audio); + track.Type == TrackType.Audio) + : GetSectorForPregapQ16(dev, (uint)lba, out subBuf, track.Type == TrackType.Audio); if(sense) { @@ -319,12 +319,12 @@ namespace Aaru.Core.Devices.Dumping posQ = (subBuf[7] * 60 * 75) + (subBuf[8] * 75) + subBuf[9] - 150; - if(subBuf[1] != track.TrackSequence - 1 || + if(subBuf[1] != track.Sequence - 1 || subBuf[2] == 0 || posQ != lba) break; - pregaps[track.TrackSequence] = 0; + pregaps[track.Sequence] = 0; pregapFound = true; } @@ -333,26 +333,26 @@ namespace Aaru.Core.Devices.Dumping continue; // Calculate pregap - lba = (int)track.TrackStartSector - 150; + lba = (int)track.StartSector - 150; - while(lba > (int)previousTrack.TrackStartSector && - lba <= (int)track.TrackStartSector) + while(lba > (int)previousTrack.StartSector && + lba <= (int)track.StartSector) { // Some drives crash if you try to read just before the previous read, so seek away first if(!forward) sense = supportsRwSubchannel ? GetSectorForPregapRaw(dev, (uint)lba - 10, dbDev, out subBuf, - track.TrackType == TrackType.Audio) + track.Type == TrackType.Audio) : GetSectorForPregapQ16(dev, (uint)lba - 10, out subBuf, - track.TrackType == TrackType.Audio); + track.Type == TrackType.Audio); for(retries = 0; retries < 10; retries++) { sense = supportsRwSubchannel ? GetSectorForPregapRaw(dev, (uint)lba, dbDev, out subBuf, - track.TrackType == TrackType.Audio) + track.Type == TrackType.Audio) : GetSectorForPregapQ16(dev, (uint)lba, out subBuf, - track.TrackType == TrackType.Audio); + track.Type == TrackType.Audio); if(sense) continue; @@ -426,12 +426,12 @@ namespace Aaru.Core.Devices.Dumping if(trackRetries >= 10) { - if(pregaps[track.TrackSequence] == 0) + if(pregaps[track.Sequence] == 0) { - if((previousTrack.TrackType == TrackType.Audio && - track.TrackType != TrackType.Audio) || - (previousTrack.TrackType != TrackType.Audio && - track.TrackType == TrackType.Audio)) + if((previousTrack.Type == TrackType.Audio && + track.Type != TrackType.Audio) || + (previousTrack.Type != TrackType.Audio && + track.Type == TrackType.Audio)) { dumpLog?. WriteLine("Could not read subchannel for this track, supposing 150 sectors."); @@ -451,10 +451,10 @@ namespace Aaru.Core.Devices.Dumping else { dumpLog?. - WriteLine($"Could not read subchannel for this track, supposing {pregaps[track.TrackSequence]} sectors."); + WriteLine($"Could not read subchannel for this track, supposing {pregaps[track.Sequence]} sectors."); updateStatus?. - Invoke($"Could not read subchannel for this track, supposing {pregaps[track.TrackSequence]} sectors."); + Invoke($"Could not read subchannel for this track, supposing {pregaps[track.Sequence]} sectors."); } break; @@ -493,7 +493,7 @@ namespace Aaru.Core.Devices.Dumping lba++; forward = true; - if(lba == (int)previousTrack.TrackStartSector) + if(lba == (int)previousTrack.StartSector) break; continue; @@ -508,7 +508,7 @@ namespace Aaru.Core.Devices.Dumping } // Previous track - if(subBuf[1] < track.TrackSequence) + if(subBuf[1] < track.Sequence) { lba++; forward = true; @@ -522,7 +522,7 @@ namespace Aaru.Core.Devices.Dumping } // Same track, but not pregap - if(subBuf[1] == track.TrackSequence && + if(subBuf[1] == track.Sequence && subBuf[2] > 0) { lba--; @@ -539,7 +539,7 @@ namespace Aaru.Core.Devices.Dumping // Pregap according to Q position posQ = (subBuf[7] * 60 * 75) + (subBuf[8] * 75) + subBuf[9] - 150; int diff = posQ - lba; - int pregapQ = (int)track.TrackStartSector - lba; + int pregapQ = (int)track.StartSector - lba; if(diff != 0) { @@ -561,26 +561,26 @@ namespace Aaru.Core.Devices.Dumping } // Bigger than known change, otherwise we found it - if(pregapQ > pregaps[track.TrackSequence]) + if(pregapQ > pregaps[track.Sequence]) { // If CRC is not OK, only accept pregaps less than 10 sectors longer than previously now - if(crcOk || pregapQ - pregaps[track.TrackSequence] < 10) + if(crcOk || pregapQ - pregaps[track.Sequence] < 10) { AaruConsole.DebugWriteLine("Pregap calculator", "Pregap for track {0}: {1}", - track.TrackSequence, pregapQ); + track.Sequence, pregapQ); - pregaps[track.TrackSequence] = pregapQ; + pregaps[track.Sequence] = pregapQ; } // We are going forward, so we have already been in the previous track, so add 1 to pregap and get out of here else if(forward) { - pregaps[track.TrackSequence]++; + pregaps[track.Sequence]++; break; } } - else if(pregapQ == pregaps[track.TrackSequence]) + else if(pregapQ == pregaps[track.Sequence]) break; lba--; @@ -590,11 +590,11 @@ namespace Aaru.Core.Devices.Dumping foreach(Track trk in tracks) { - trk.TrackPregap = (ulong)pregaps[trk.TrackSequence]; + trk.Pregap = (ulong)pregaps[trk.Sequence]; // Do not reduce pregap, or starting position of session's first track - if(tracks.Where(t => t.TrackSession == trk.TrackSession).OrderBy(t => t.TrackSequence).FirstOrDefault(). - TrackSequence == trk.TrackSequence) + if(tracks.Where(t => t.Session == trk.Session).OrderBy(t => t.Sequence).FirstOrDefault(). + Sequence == trk.Sequence) continue; if(dumping) @@ -602,19 +602,19 @@ namespace Aaru.Core.Devices.Dumping // Minus five, to ensure dumping will fix if there is a pregap LBA 0 int red = 5; - while(trk.TrackPregap > 0 && + while(trk.Pregap > 0 && red > 0) { - trk.TrackPregap--; + trk.Pregap--; red--; } } - trk.TrackStartSector -= trk.TrackPregap; + trk.StartSector -= trk.Pregap; #if DEBUG - dumpLog?.WriteLine($"Track {trk.TrackSequence} pregap is {trk.TrackPregap} sectors"); - updateStatus?.Invoke($"Track {trk.TrackSequence} pregap is {trk.TrackPregap} sectors"); + dumpLog?.WriteLine($"Track {trk.Sequence} pregap is {trk.Pregap} sectors"); + updateStatus?.Invoke($"Track {trk.Sequence} pregap is {trk.Pregap} sectors"); #endif } } diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Tracks.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Tracks.cs index 4bcb4242c..9f3929506 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Tracks.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Tracks.cs @@ -107,16 +107,16 @@ namespace Aaru.Core.Devices.Dumping { trackList.Add(new Track { - TrackSequence = trk.POINT, - TrackSession = trk.SessionNumber, - TrackType = (TocControl)(trk.CONTROL & 0x0D) == TocControl.DataTrack || + Sequence = trk.POINT, + Session = trk.SessionNumber, + Type = (TocControl)(trk.CONTROL & 0x0D) == TocControl.DataTrack || (TocControl)(trk.CONTROL & 0x0D) == TocControl.DataTrackIncremental ? TrackType.Data : TrackType.Audio, - TrackStartSector = + StartSector = (ulong)((trk.PHOUR * 3600 * 75) + (trk.PMIN * 60 * 75) + (trk.PSEC * 75) + trk.PFRAME - 150), - TrackBytesPerSector = (int)sectorSize, - TrackRawBytesPerSector = (int)sectorSize + BytesPerSector = (int)sectorSize, + RawBytesPerSector = (int)sectorSize }); trackFlags?.Add(trk.POINT, trk.CONTROL); @@ -199,14 +199,14 @@ namespace Aaru.Core.Devices.Dumping { trackList.Add(new Track { - TrackSequence = trk.TrackNumber, - TrackSession = 1, - TrackType = (TocControl)(trk.CONTROL & 0x0D) == TocControl.DataTrack || + Sequence = trk.TrackNumber, + Session = 1, + Type = (TocControl)(trk.CONTROL & 0x0D) == TocControl.DataTrack || (TocControl)(trk.CONTROL & 0x0D) == TocControl.DataTrackIncremental ? TrackType.Data : TrackType.Audio, - TrackStartSector = trk.TrackStartAddress, - TrackBytesPerSector = (int)sectorSize, - TrackRawBytesPerSector = (int)sectorSize + StartSector = trk.TrackStartAddress, + BytesPerSector = (int)sectorSize, + RawBytesPerSector = (int)sectorSize }); trackFlags?.Add(trk.TrackNumber, trk.CONTROL); @@ -229,12 +229,12 @@ namespace Aaru.Core.Devices.Dumping trackList.Add(new Track { - TrackSequence = 1, - TrackSession = 1, - TrackType = leadoutTrackType, - TrackStartSector = 0, - TrackBytesPerSector = (int)sectorSize, - TrackRawBytesPerSector = (int)sectorSize + Sequence = 1, + Session = 1, + Type = leadoutTrackType, + StartSector = 0, + BytesPerSector = (int)sectorSize, + RawBytesPerSector = (int)sectorSize }); trackFlags?.Add(1, (byte)(leadoutTrackType == TrackType.Audio ? 0 : 4)); diff --git a/Aaru.Core/Devices/Dumping/CompactDisc/Trim.cs b/Aaru.Core/Devices/Dumping/CompactDisc/Trim.cs index 42acce1f3..5e972c677 100644 --- a/Aaru.Core/Devices/Dumping/CompactDisc/Trim.cs +++ b/Aaru.Core/Devices/Dumping/CompactDisc/Trim.cs @@ -140,8 +140,8 @@ namespace Aaru.Core.Devices.Dumping PulseProgress?.Invoke($"Trimming sector {badSector}"); - Track track = tracks.OrderBy(t => t.TrackStartSector). - LastOrDefault(t => badSector >= t.TrackStartSector); + Track track = tracks.OrderBy(t => t.StartSector). + LastOrDefault(t => badSector >= t.StartSector); byte sectorsToTrim = 1; uint badSectorToRead = (uint)badSector; @@ -266,10 +266,10 @@ namespace Aaru.Core.Devices.Dumping else _outputPlugin.WriteSector(Sector.GetUserData(data), badSector); - ulong trkStartBefore = track.TrackStartSector; + ulong trkStartBefore = track.StartSector; bool indexesChanged = Media.CompactDisc.WriteSubchannelToImage(supportedSubchannel, - desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.TrackSequence, ref mcn, + desiredSubchannel, sub, badSector, 1, subLog, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, _fixSubchannelPosition, _outputPlugin, _fixSubchannel, _fixSubchannelCrc, _dumpLog, UpdateStatus, smallestPregapLbaPerTrack, true); @@ -279,10 +279,10 @@ namespace Aaru.Core.Devices.Dumping (_outputPlugin as IWritableOpticalImage).SetTracks(tracks.ToList()); - if(track.TrackStartSector != trkStartBefore && - !_resume.BadBlocks.Contains(track.TrackStartSector)) + if(track.StartSector != trkStartBefore && + !_resume.BadBlocks.Contains(track.StartSector)) { - _resume.BadBlocks.Add(track.TrackStartSector); + _resume.BadBlocks.Add(track.StartSector); goto trimStart; } diff --git a/Aaru.Core/Devices/Dumping/PlayStationPortable/UMD.cs b/Aaru.Core/Devices/Dumping/PlayStationPortable/UMD.cs index f08aacc97..d8fb013e2 100644 --- a/Aaru.Core/Devices/Dumping/PlayStationPortable/UMD.cs +++ b/Aaru.Core/Devices/Dumping/PlayStationPortable/UMD.cs @@ -159,13 +159,13 @@ namespace Aaru.Core.Devices.Dumping { new Track { - TrackBytesPerSector = (int)blockSize, - TrackEndSector = blocks - 1, - TrackSequence = 1, - TrackRawBytesPerSector = (int)blockSize, - TrackSubchannelType = TrackSubchannelType.None, - TrackSession = 1, - TrackType = TrackType.Data + BytesPerSector = (int)blockSize, + EndSector = blocks - 1, + Sequence = 1, + RawBytesPerSector = (int)blockSize, + SubchannelType = TrackSubchannelType.None, + Session = 1, + Type = TrackType.Data } }); diff --git a/Aaru.Core/Devices/Dumping/Sbc/Dump.cs b/Aaru.Core/Devices/Dumping/Sbc/Dump.cs index ffe8f9a1d..21e06edb9 100644 --- a/Aaru.Core/Devices/Dumping/Sbc/Dump.cs +++ b/Aaru.Core/Devices/Dumping/Sbc/Dump.cs @@ -476,18 +476,18 @@ namespace Aaru.Core.Devices.Dumping var track = new Track { - TrackSequence = trkInfo.LogicalTrackNumber, - TrackSession = (ushort)(canStoreNotCdSessions ? trkInfo.SessionNumber : 1), - TrackType = TrackType.Data, - TrackStartSector = trkInfo.LogicalTrackStartAddress, - TrackEndSector = trkInfo.LogicalTrackSize + trkInfo.LogicalTrackStartAddress - 1, - TrackRawBytesPerSector = (int)blockSize, - TrackBytesPerSector = (int)blockSize, - TrackSubchannelType = TrackSubchannelType.None + Sequence = trkInfo.LogicalTrackNumber, + Session = (ushort)(canStoreNotCdSessions ? trkInfo.SessionNumber : 1), + Type = TrackType.Data, + StartSector = trkInfo.LogicalTrackStartAddress, + EndSector = trkInfo.LogicalTrackSize + trkInfo.LogicalTrackStartAddress - 1, + RawBytesPerSector = (int)blockSize, + BytesPerSector = (int)blockSize, + SubchannelType = TrackSubchannelType.None }; - if(track.TrackEndSector >= blocks) - blocks = track.TrackEndSector + 1; + if(track.EndSector >= blocks) + blocks = track.EndSector + 1; tracks.Add(track); } @@ -495,16 +495,16 @@ namespace Aaru.Core.Devices.Dumping if(tracks.Count == 0) tracks.Add(new Track { - TrackBytesPerSector = (int)blockSize, - TrackEndSector = blocks - 1, - TrackSequence = 1, - TrackRawBytesPerSector = (int)blockSize, - TrackSubchannelType = TrackSubchannelType.None, - TrackSession = 1, - TrackType = TrackType.Data + BytesPerSector = (int)blockSize, + EndSector = blocks - 1, + Sequence = 1, + RawBytesPerSector = (int)blockSize, + SubchannelType = TrackSubchannelType.None, + Session = 1, + Type = TrackType.Data }); else - tracks = tracks.OrderBy(t => t.TrackSequence).ToList(); + tracks = tracks.OrderBy(t => t.Sequence).ToList(); ret = _outputPlugin.Create(_outputPath, dskType, _formatOptions, blocks, blockSize); @@ -525,7 +525,7 @@ namespace Aaru.Core.Devices.Dumping #if DEBUG foreach(Track trk in tracks) UpdateStatus?. - Invoke($"Track {trk.TrackSequence} starts at LBA {trk.TrackStartSector} and ends at LBA {trk.TrackEndSector}"); + Invoke($"Track {trk.Sequence} starts at LBA {trk.StartSector} and ends at LBA {trk.EndSector}"); #endif if(canStoreNotCdTracks) @@ -549,13 +549,13 @@ namespace Aaru.Core.Devices.Dumping { new Track { - TrackBytesPerSector = (int)blockSize, - TrackEndSector = blocks - 1, - TrackSequence = 1, - TrackRawBytesPerSector = (int)blockSize, - TrackSubchannelType = TrackSubchannelType.None, - TrackSession = 1, - TrackType = TrackType.Data + BytesPerSector = (int)blockSize, + EndSector = blocks - 1, + Sequence = 1, + RawBytesPerSector = (int)blockSize, + SubchannelType = TrackSubchannelType.None, + Session = 1, + Type = TrackType.Data } }); } @@ -572,13 +572,13 @@ namespace Aaru.Core.Devices.Dumping { new Track { - TrackBytesPerSector = (int)blockSize, - TrackEndSector = blocks - 1, - TrackSequence = 1, - TrackRawBytesPerSector = (int)blockSize, - TrackSubchannelType = TrackSubchannelType.None, - TrackSession = 1, - TrackType = TrackType.Data + BytesPerSector = (int)blockSize, + EndSector = blocks - 1, + Sequence = 1, + RawBytesPerSector = (int)blockSize, + SubchannelType = TrackSubchannelType.None, + Session = 1, + Type = TrackType.Data } }); } diff --git a/Aaru.Core/Devices/Dumping/XGD.cs b/Aaru.Core/Devices/Dumping/XGD.cs index ec050b188..a912f51d6 100644 --- a/Aaru.Core/Devices/Dumping/XGD.cs +++ b/Aaru.Core/Devices/Dumping/XGD.cs @@ -504,13 +504,13 @@ namespace Aaru.Core.Devices.Dumping { new Track { - TrackBytesPerSector = (int)blockSize, - TrackEndSector = blocks - 1, - TrackSequence = 1, - TrackRawBytesPerSector = (int)blockSize, - TrackSubchannelType = TrackSubchannelType.None, - TrackSession = 1, - TrackType = TrackType.Data + BytesPerSector = (int)blockSize, + EndSector = blocks - 1, + Sequence = 1, + RawBytesPerSector = (int)blockSize, + SubchannelType = TrackSubchannelType.None, + Session = 1, + Type = TrackType.Data } }); diff --git a/Aaru.Core/Entropy.cs b/Aaru.Core/Entropy.cs index d94debc52..a075e8e53 100644 --- a/Aaru.Core/Entropy.cs +++ b/Aaru.Core/Entropy.cs @@ -93,31 +93,31 @@ namespace Aaru.Core { var trackEntropy = new EntropyResults { - Track = currentTrack.TrackSequence, + Track = currentTrack.Sequence, Entropy = 0 }; UpdateProgressEvent?. - Invoke($"Entropying track {currentTrack.TrackSequence} of {inputTracks.Max(t => t.TrackSequence)}", - currentTrack.TrackSequence, inputTracks.Max(t => t.TrackSequence)); + Invoke($"Entropying track {currentTrack.Sequence} of {inputTracks.Max(t => t.Sequence)}", + currentTrack.Sequence, inputTracks.Max(t => t.Sequence)); ulong[] entTable = new ulong[256]; ulong trackSize = 0; List uniqueSectorsPerTrack = new List(); - trackEntropy.Sectors = currentTrack.TrackEndSector - currentTrack.TrackStartSector + 1; + trackEntropy.Sectors = currentTrack.EndSector - currentTrack.StartSector + 1; - AaruConsole.VerboseWriteLine("Track {0} has {1} sectors", currentTrack.TrackSequence, + AaruConsole.VerboseWriteLine("Track {0} has {1} sectors", currentTrack.Sequence, trackEntropy.Sectors); InitProgress2Event?.Invoke(); for(ulong i = 0; i < trackEntropy.Sectors; i++) { - UpdateProgress2Event?.Invoke($"Entropying sector {i + 1} of track {currentTrack.TrackSequence}", - (long)(i + 1), (long)currentTrack.TrackEndSector); + UpdateProgress2Event?.Invoke($"Entropying sector {i + 1} of track {currentTrack.Sequence}", + (long)(i + 1), (long)currentTrack.EndSector); - byte[] sector = opticalMediaImage.ReadSector(i, currentTrack.TrackSequence); + byte[] sector = opticalMediaImage.ReadSector(i, currentTrack.Sequence); if(duplicatedSectors) { diff --git a/Aaru.Core/ImageInfo.cs b/Aaru.Core/ImageInfo.cs index e8bdf254e..fd7420442 100644 --- a/Aaru.Core/ImageInfo.cs +++ b/Aaru.Core/ImageInfo.cs @@ -631,7 +631,7 @@ namespace Aaru.Core table.AddColumn("End"); foreach(Session session in opticalImage.Sessions) - table.AddRow(session.SessionSequence.ToString(), session.StartTrack.ToString(), + table.AddRow(session.Sequence.ToString(), session.StartTrack.ToString(), session.EndTrack.ToString(), session.StartSector.ToString(), session.EndSector.ToString()); @@ -664,10 +664,10 @@ namespace Aaru.Core table.AddColumn("End"); foreach(Track track in opticalImage.Tracks) - table.AddRow(track.TrackSequence.ToString(), track.TrackType.ToString(), - track.TrackBytesPerSector.ToString(), track.TrackRawBytesPerSector.ToString(), - track.TrackSubchannelType.ToString(), track.TrackPregap.ToString(), - track.TrackStartSector.ToString(), track.TrackEndSector.ToString()); + table.AddRow(track.Sequence.ToString(), track.Type.ToString(), + track.BytesPerSector.ToString(), track.RawBytesPerSector.ToString(), + track.SubchannelType.ToString(), track.Pregap.ToString(), + track.StartSector.ToString(), track.EndSector.ToString()); AnsiConsole.Render(table); @@ -686,7 +686,7 @@ namespace Aaru.Core foreach(Track track in opticalImage.Tracks) foreach(KeyValuePair index in track.Indexes) - table.AddRow(track.TrackSequence.ToString(), index.Key.ToString(), + table.AddRow(track.Sequence.ToString(), index.Key.ToString(), index.Value.ToString()); AnsiConsole.Render(table); diff --git a/Aaru.Core/Media/CompactDisc.cs b/Aaru.Core/Media/CompactDisc.cs index c2dd98ef9..2547dc28e 100644 --- a/Aaru.Core/Media/CompactDisc.cs +++ b/Aaru.Core/Media/CompactDisc.cs @@ -395,7 +395,7 @@ namespace Aaru.Core.Media for(int i = 0; i < tracks.Length; i++) { - if(tracks[i].TrackSequence != trackNo) + if(tracks[i].Sequence != trackNo) continue; // Pregap @@ -413,50 +413,50 @@ namespace Aaru.Core.Media smallestPregapLbaPerTrack[trackNo] = dumping ? 1 : 0; uint firstTrackNumberInSameSession = tracks. - Where(t => t.TrackSession == - tracks[i].TrackSession). - Min(t => t.TrackSequence); + Where(t => t.Session == + tracks[i].Session). + Min(t => t.Sequence); - if(tracks[i].TrackSequence == firstTrackNumberInSameSession) + if(tracks[i].Sequence == firstTrackNumberInSameSession) continue; if(qPos < smallestPregapLbaPerTrack[trackNo]) { int dif = smallestPregapLbaPerTrack[trackNo] - qPos; - tracks[i].TrackPregap += (ulong)dif; - tracks[i].TrackStartSector -= (ulong)dif; + tracks[i].Pregap += (ulong)dif; + tracks[i].StartSector -= (ulong)dif; smallestPregapLbaPerTrack[trackNo] = qPos; if(i > 0 && - tracks[i - 1].TrackEndSector >= tracks[i].TrackStartSector) - tracks[i - 1].TrackEndSector = tracks[i].TrackStartSector - 1; + tracks[i - 1].EndSector >= tracks[i].StartSector) + tracks[i - 1].EndSector = tracks[i].StartSector - 1; dumpLog?. - WriteLine($"Pregap for track {trackNo} set to {tracks[i].TrackPregap} sectors."); + WriteLine($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors."); updateStatus?. - Invoke($"Pregap for track {trackNo} set to {tracks[i].TrackPregap} sectors."); + Invoke($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors."); status = true; } - if(tracks[i].TrackPregap >= (ulong)qPos) + if(tracks[i].Pregap >= (ulong)qPos) continue; - ulong oldPregap = tracks[i].TrackPregap; + ulong oldPregap = tracks[i].Pregap; - tracks[i].TrackPregap = (ulong)qPos; - tracks[i].TrackStartSector -= tracks[i].TrackPregap - oldPregap; + tracks[i].Pregap = (ulong)qPos; + tracks[i].StartSector -= tracks[i].Pregap - oldPregap; if(i > 0 && - tracks[i - 1].TrackEndSector >= tracks[i].TrackStartSector) - tracks[i - 1].TrackEndSector = tracks[i].TrackStartSector - 1; + tracks[i - 1].EndSector >= tracks[i].StartSector) + tracks[i - 1].EndSector = tracks[i].StartSector - 1; dumpLog?. - WriteLine($"Pregap for track {trackNo} set to {tracks[i].TrackPregap} sectors."); + WriteLine($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors."); updateStatus?. - Invoke($"Pregap for track {trackNo} set to {tracks[i].TrackPregap} sectors."); + Invoke($"Pregap for track {trackNo} set to {tracks[i].Pregap} sectors."); status = true; @@ -1589,7 +1589,7 @@ namespace Aaru.Core.Media foreach(int sector in subchannelExtents) { - Track track = tracks.LastOrDefault(t => (int)t.TrackStartSector <= sector); + Track track = tracks.LastOrDefault(t => (int)t.StartSector <= sector); byte trkFlags; byte flags; ulong trackStart; @@ -1599,20 +1599,20 @@ namespace Aaru.Core.Media continue; // Hidden track - if(track.TrackSequence == 0) + if(track.Sequence == 0) { - track = tracks.FirstOrDefault(t => (int)t.TrackSequence == 1); + track = tracks.FirstOrDefault(t => (int)t.Sequence == 1); trackStart = 0; - pregap = track?.TrackStartSector ?? 0; + pregap = track?.StartSector ?? 0; } else { - trackStart = track.TrackStartSector; - pregap = track.TrackPregap; + trackStart = track.StartSector; + pregap = track.Pregap; } - if(!trackFlags.TryGetValue((byte)(track?.TrackSequence ?? 0), out trkFlags) && - track?.TrackType != TrackType.Audio) + if(!trackFlags.TryGetValue((byte)(track?.Sequence ?? 0), out trkFlags) && + track?.Type != TrackType.Audio) flags = (byte)CdFlags.DataTrack; else flags = trkFlags; @@ -1627,7 +1627,7 @@ namespace Aaru.Core.Media updateProgress?.Invoke($"Generating subchannel for sector {sector}...", sector, (long)blocks); dumpLog?.WriteLine($"Generating subchannel for sector {sector}."); - byte[] sub = Subchannel.Generate(sector, track?.TrackSequence ?? 0, (int)pregap, (int)trackStart, flags, + byte[] sub = Subchannel.Generate(sector, track?.Sequence ?? 0, (int)pregap, (int)trackStart, flags, index); outputPlugin.WriteSectorsTag(sub, (ulong)sector, 1, SectorTagType.CdSectorSubchannel); diff --git a/Aaru.Core/Media/Info/CompactDisc.cs b/Aaru.Core/Media/Info/CompactDisc.cs index ae0016953..00159b03a 100644 --- a/Aaru.Core/Media/Info/CompactDisc.cs +++ b/Aaru.Core/Media/Info/CompactDisc.cs @@ -86,9 +86,9 @@ namespace Aaru.Core.Media.Info if(dskType != MediaType.VideoNowColor) { - if(tracks.Any(t => t.TrackType != TrackType.Audio)) + if(tracks.Any(t => t.Type != TrackType.Audio)) { - dataTrack = tracks.FirstOrDefault(t => t.TrackType != TrackType.Audio); + dataTrack = tracks.FirstOrDefault(t => t.Type != TrackType.Audio); if(dataTrack != null) { @@ -101,7 +101,7 @@ namespace Aaru.Core.Media.Info tmpBuf = new byte[sectorSync.Length]; // Ensure to be out of the pregap, or multi-session discs give funny values - uint wantedLba = (uint)(dataTrack.TrackStartSector + 151); + uint wantedLba = (uint)(dataTrack.StartSector + 151); // Plextor READ CDDA if(dbDev?.ATAPI?.RemovableMedias?.Any(d => d.SupportsPlextorReadCDDA == true) == true || @@ -216,8 +216,8 @@ namespace Aaru.Core.Media.Info for(int i = 1; i < tracks.Length; i++) { - if(tracks[i - 1].TrackType == TrackType.Audio || - tracks[i].TrackType != TrackType.Audio) + if(tracks[i - 1].Type == TrackType.Audio || + tracks[i].Type != TrackType.Audio) continue; dataTrack = tracks[i - 1]; @@ -231,21 +231,21 @@ namespace Aaru.Core.Media.Info return; // Found them - sense = dev.ReadCd(out cmdBuf, out _, (uint)audioTrack.TrackStartSector, sectorSize, 3, + sense = dev.ReadCd(out cmdBuf, out _, (uint)audioTrack.StartSector, sectorSize, 3, MmcSectorTypes.Cdda, false, false, false, MmcHeaderCodes.None, true, false, MmcErrorField.None, MmcSubchannel.None, dev.Timeout, out _); if(sense || dev.Error) return; - dataTrack.TrackEndSector += 150; + dataTrack.EndSector += 150; // Calculate MSF - minute = (int)dataTrack.TrackEndSector / 4500; - second = ((int)dataTrack.TrackEndSector - (minute * 4500)) / 75; - frame = (int)dataTrack.TrackEndSector - (minute * 4500) - (second * 75); + minute = (int)dataTrack.EndSector / 4500; + second = ((int)dataTrack.EndSector - (minute * 4500)) / 75; + frame = (int)dataTrack.EndSector - (minute * 4500) - (second * 75); - dataTrack.TrackEndSector -= 150; + dataTrack.EndSector -= 150; // Convert to BCD minute = ((minute / 10) << 4) + (minute % 10); @@ -278,10 +278,10 @@ namespace Aaru.Core.Media.Info break; } - if(offsetFound || audioTrack.TrackPregap <= 0) + if(offsetFound || audioTrack.Pregap <= 0) return; - sense = dev.ReadCd(out byte[] dataBuf, out _, (uint)dataTrack.TrackEndSector, sectorSize, 1, + sense = dev.ReadCd(out byte[] dataBuf, out _, (uint)dataTrack.EndSector, sectorSize, 1, MmcSectorTypes.AllTypes, false, false, true, MmcHeaderCodes.AllHeaders, true, true, MmcErrorField.None, MmcSubchannel.None, dev.Timeout, out _); diff --git a/Aaru.Core/Sidecar/OpticalDisc.cs b/Aaru.Core/Sidecar/OpticalDisc.cs index fabc3c7ea..1f1366837 100644 --- a/Aaru.Core/Sidecar/OpticalDisc.cs +++ b/Aaru.Core/Sidecar/OpticalDisc.cs @@ -309,7 +309,7 @@ namespace Aaru.Core var xmlTrk = new TrackType(); - switch(trk.TrackType) + switch(trk.Type) { case CommonTypes.Enums.TrackType.Audio: xmlTrk.TrackType1 = TrackTypeTrackType.audio; @@ -361,12 +361,12 @@ namespace Aaru.Core xmlTrk.Sequence = new TrackSequenceType { - Session = trk.TrackSession, - TrackNumber = trk.TrackSequence + Session = trk.Session, + TrackNumber = trk.Sequence }; - xmlTrk.StartSector = trk.TrackStartSector; - xmlTrk.EndSector = trk.TrackEndSector; + xmlTrk.StartSector = trk.StartSector; + xmlTrk.EndSector = trk.EndSector; int idx0 = -1; @@ -391,19 +391,19 @@ namespace Aaru.Core xmlTrk.Image = new ImageType { - Value = Path.GetFileName(trk.TrackFile), - format = trk.TrackFileType + Value = Path.GetFileName(trk.File), + format = trk.FileType }; - if(trk.TrackFileOffset > 0) + if(trk.FileOffset > 0) { - xmlTrk.Image.offset = trk.TrackFileOffset; + xmlTrk.Image.offset = trk.FileOffset; xmlTrk.Image.offsetSpecified = true; } - xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * (ulong)trk.TrackRawBytesPerSector; + xmlTrk.Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * (ulong)trk.RawBytesPerSector; - xmlTrk.BytesPerSector = (uint)trk.TrackBytesPerSector; + xmlTrk.BytesPerSector = (uint)trk.BytesPerSector; uint sectorsToRead = 512; ulong sectors = xmlTrk.EndSector - xmlTrk.StartSector + 1; @@ -420,7 +420,7 @@ namespace Aaru.Core xmlTrk.Checksums = sidecar.OpticalDisc[0].Checksums; else { - UpdateProgress("Track {0} of {1}", trk.TrackSequence, tracks.Count); + UpdateProgress("Track {0} of {1}", trk.Sequence, tracks.Count); // For fast debugging, skip checksum //goto skipChecksum; @@ -446,7 +446,7 @@ namespace Aaru.Core sector = image.ReadSectorsLong(doneSectors, sectorsToRead, xmlTrk.Sequence.TrackNumber); UpdateProgress2("Hashing sector {0} of {1}", (long)doneSectors, - (long)(trk.TrackEndSector - trk.TrackStartSector + 1)); + (long)(trk.EndSector - trk.StartSector + 1)); doneSectors += sectorsToRead; } @@ -456,7 +456,7 @@ namespace Aaru.Core xmlTrk.Sequence.TrackNumber); UpdateProgress2("Hashing sector {0} of {1}", (long)doneSectors, - (long)(trk.TrackEndSector - trk.TrackStartSector + 1)); + (long)(trk.EndSector - trk.StartSector + 1)); doneSectors += sectors - doneSectors; } @@ -471,20 +471,20 @@ namespace Aaru.Core EndProgress2(); } - if(trk.TrackSubchannelType != TrackSubchannelType.None) + if(trk.SubchannelType != TrackSubchannelType.None) { xmlTrk.SubChannel = new SubChannelType { Image = new ImageType { - Value = trk.TrackSubchannelFile + Value = trk.SubchannelFile }, // TODO: Packed subchannel has different size? Size = (xmlTrk.EndSector - xmlTrk.StartSector + 1) * 96 }; - switch(trk.TrackSubchannelType) + switch(trk.SubchannelType) { case TrackSubchannelType.Packed: case TrackSubchannelType.PackedInterleaved: @@ -503,9 +503,9 @@ namespace Aaru.Core break; } - if(trk.TrackFileOffset > 0) + if(trk.FileOffset > 0) { - xmlTrk.SubChannel.Image.offset = trk.TrackSubchannelOffset; + xmlTrk.SubChannel.Image.offset = trk.SubchannelOffset; xmlTrk.SubChannel.Image.offsetSpecified = true; } @@ -534,7 +534,7 @@ namespace Aaru.Core SectorTagType.CdSectorSubchannel); UpdateProgress2("Hashing subchannel sector {0} of {1}", (long)doneSectors, - (long)(trk.TrackEndSector - trk.TrackStartSector + 1)); + (long)(trk.EndSector - trk.StartSector + 1)); doneSectors += sectorsToRead; } @@ -545,7 +545,7 @@ namespace Aaru.Core SectorTagType.CdSectorSubchannel); UpdateProgress2("Hashing subchannel sector {0} of {1}", (long)doneSectors, - (long)(trk.TrackEndSector - trk.TrackStartSector + 1)); + (long)(trk.EndSector - trk.StartSector + 1)); doneSectors += sectors - doneSectors; } @@ -564,8 +564,8 @@ namespace Aaru.Core //skipChecksum: List trkPartitions = partitions. - Where(p => p.Start >= trk.TrackStartSector && - p.End <= trk.TrackEndSector).ToList(); + Where(p => p.Start >= trk.StartSector && + p.End <= trk.EndSector).ToList(); xmlTrk.FileSystemInformation = new PartitionType[1]; @@ -704,7 +704,7 @@ namespace Aaru.Core try { - byte[] isrcData = image.ReadSectorTag(trk.TrackSequence, SectorTagType.CdTrackIsrc); + byte[] isrcData = image.ReadSectorTag(trk.Sequence, SectorTagType.CdTrackIsrc); if(isrcData?.Length > 0) xmlTrk.ISRC = Encoding.UTF8.GetString(isrcData); @@ -716,7 +716,7 @@ namespace Aaru.Core try { - byte[] flagsData = image.ReadSectorTag(trk.TrackSequence, SectorTagType.CdTrackFlags); + byte[] flagsData = image.ReadSectorTag(trk.Sequence, SectorTagType.CdTrackFlags); if(flagsData?.Length > 0) { diff --git a/Aaru.Decoders b/Aaru.Decoders index e0047f5cc..675cd71d5 160000 --- a/Aaru.Decoders +++ b/Aaru.Decoders @@ -1 +1 @@ -Subproject commit e0047f5cc902d0299dae4cbf256e3941d59eaf36 +Subproject commit 675cd71d5cc79b1938b0578bf8bd6db79fa9d83e diff --git a/Aaru.Gui/ViewModels/Windows/ImageChecksumViewModel.cs b/Aaru.Gui/ViewModels/Windows/ImageChecksumViewModel.cs index a5123078d..75ff31f6b 100644 --- a/Aaru.Gui/ViewModels/Windows/ImageChecksumViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/ImageChecksumViewModel.cs @@ -455,14 +455,13 @@ namespace Aaru.Gui.ViewModels.Windows { await Dispatcher.UIThread.InvokeAsync(() => { - ProgressText = - $"Hashing track {currentTrack.TrackSequence} of {opticalMediaImage.Tracks.Count}"; + ProgressText = $"Hashing track {currentTrack.Sequence} of {opticalMediaImage.Tracks.Count}"; ProgressValue++; }); - if(currentTrack.TrackStartSector - previousTrackEnd != 0 && ChecksumMediaChecked) - for(ulong i = previousTrackEnd + 1; i < currentTrack.TrackStartSector; i++) + if(currentTrack.StartSector - previousTrackEnd != 0 && ChecksumMediaChecked) + for(ulong i = previousTrackEnd + 1; i < currentTrack.StartSector; i++) { ulong sector = i; @@ -479,13 +478,13 @@ namespace Aaru.Gui.ViewModels.Windows AaruConsole.DebugWriteLine("Checksum command", "Track {0} starts at sector {1} and ends at sector {2}", - currentTrack.TrackSequence, currentTrack.TrackStartSector, - currentTrack.TrackEndSector); + currentTrack.Sequence, currentTrack.StartSector, + currentTrack.EndSector); if(ChecksumTracksChecked) trackChecksum = new Checksum(enabledChecksums); - ulong sectors = currentTrack.TrackEndSector - currentTrack.TrackStartSector + 1; + ulong sectors = currentTrack.EndSector - currentTrack.StartSector + 1; ulong doneSectors = 0; while(doneSectors < sectors) @@ -507,7 +506,7 @@ namespace Aaru.Gui.ViewModels.Windows if(sectors - doneSectors >= SECTORS_TO_READ) { sector = opticalMediaImage.ReadSectors(doneSectors, SECTORS_TO_READ, - currentTrack.TrackSequence); + currentTrack.Sequence); ulong doneSectorsToInvoke = doneSectors; @@ -516,7 +515,7 @@ namespace Aaru.Gui.ViewModels.Windows Progress2Value = (int)(doneSectorsToInvoke / SECTORS_TO_READ); Progress2Text = - $"Hashing sectors {doneSectorsToInvoke} to {doneSectorsToInvoke + SECTORS_TO_READ} of track {currentTrack.TrackSequence}"; + $"Hashing sectors {doneSectorsToInvoke} to {doneSectorsToInvoke + SECTORS_TO_READ} of track {currentTrack.Sequence}"; }); doneSectors += SECTORS_TO_READ; @@ -524,7 +523,7 @@ namespace Aaru.Gui.ViewModels.Windows else { sector = opticalMediaImage.ReadSectors(doneSectors, (uint)(sectors - doneSectors), - currentTrack.TrackSequence); + currentTrack.Sequence); ulong doneSectorsToInvoke = doneSectors; @@ -533,7 +532,7 @@ namespace Aaru.Gui.ViewModels.Windows Progress2Value = (int)(doneSectorsToInvoke / SECTORS_TO_READ); Progress2Text = - $"Hashing sectors {doneSectorsToInvoke} to {doneSectorsToInvoke + (sectors - doneSectorsToInvoke)} of track {currentTrack.TrackSequence}"; + $"Hashing sectors {doneSectorsToInvoke} to {doneSectorsToInvoke + (sectors - doneSectorsToInvoke)} of track {currentTrack.Sequence}"; }); doneSectors += sectors - doneSectors; @@ -557,13 +556,13 @@ namespace Aaru.Gui.ViewModels.Windows foreach(ChecksumType chk in trackChecksum.End()) TrackChecksums.Add(new ChecksumModel { - Track = currentTrack.TrackSequence.ToString(), + Track = currentTrack.Sequence.ToString(), Algorithm = chk.type.ToString(), Hash = chk.Value }); }); - previousTrackEnd = currentTrack.TrackEndSector; + previousTrackEnd = currentTrack.EndSector; } if(opticalMediaImage.Info.Sectors - previousTrackEnd != 0 && ChecksumMediaChecked) diff --git a/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs b/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs index e3e9b9e39..8c68c1b48 100644 --- a/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs @@ -711,7 +711,7 @@ namespace Aaru.Gui.ViewModels.Windows return; } - Dictionary parsedOptions = new Dictionary(); + Dictionary parsedOptions = new(); /* TODO: if(grpOptions.Content is StackLayout stkImageOptions) @@ -996,23 +996,23 @@ namespace Aaru.Gui.ViewModels.Windows Progress2Value = Progress2MaxValue; }); - Dictionary isrcs = new Dictionary(); - Dictionary trackFlags = new Dictionary(); + Dictionary isrcs = new(); + Dictionary trackFlags = new(); string mcn = null; - HashSet subchannelExtents = new HashSet(); - Dictionary smallestPregapLbaPerTrack = new Dictionary(); + HashSet subchannelExtents = new(); + Dictionary smallestPregapLbaPerTrack = new(); foreach(SectorTagType tag in _inputFormat.Info.ReadableSectorTags. Where(t => t == SectorTagType.CdTrackIsrc).OrderBy(t => t)) { foreach(Track track in inputOptical.Tracks) { - byte[] isrc = _inputFormat.ReadSectorTag(track.TrackSequence, tag); + byte[] isrc = _inputFormat.ReadSectorTag(track.Sequence, tag); if(isrc is null) continue; - isrcs[(byte)track.TrackSequence] = Encoding.UTF8.GetString(isrc); + isrcs[(byte)track.Sequence] = Encoding.UTF8.GetString(isrc); } } @@ -1021,12 +1021,12 @@ namespace Aaru.Gui.ViewModels.Windows { foreach(Track track in inputOptical.Tracks) { - byte[] flags = _inputFormat.ReadSectorTag(track.TrackSequence, tag); + byte[] flags = _inputFormat.ReadSectorTag(track.Sequence, tag); if(flags is null) continue; - trackFlags[(byte)track.TrackSequence] = flags[0]; + trackFlags[(byte)track.Sequence] = flags[0]; } } @@ -1097,15 +1097,15 @@ namespace Aaru.Gui.ViewModels.Windows if(sectorsToDo == 1) { sector = _inputFormat.ReadSectorTag(doneSectors, tag); - Track track = tracks.LastOrDefault(t => t.TrackStartSector >= doneSectors); + Track track = tracks.LastOrDefault(t => t.StartSector >= doneSectors); if(tag == SectorTagType.CdSectorSubchannel && track != null) { bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw, - MmcSubchannel.Raw, sector, doneSectors, 1, null, isrcs, - (byte)track.TrackSequence, ref mcn, tracks.ToArray(), subchannelExtents, false, - outputFormat, false, false, null, null, smallestPregapLbaPerTrack, false); + MmcSubchannel.Raw, sector, doneSectors, 1, null, isrcs, (byte)track.Sequence, + ref mcn, tracks.ToArray(), subchannelExtents, false, outputFormat, false, + false, null, null, smallestPregapLbaPerTrack, false); if(indexesChanged) outputOptical.SetTracks(tracks.ToList()); @@ -1118,7 +1118,7 @@ namespace Aaru.Gui.ViewModels.Windows else { sector = _inputFormat.ReadSectorsTag(doneSectors, sectorsToDo, tag); - Track track = tracks.LastOrDefault(t => t.TrackStartSector >= doneSectors); + Track track = tracks.LastOrDefault(t => t.StartSector >= doneSectors); if(tag == SectorTagType.CdSectorSubchannel && track != null) @@ -1126,7 +1126,7 @@ namespace Aaru.Gui.ViewModels.Windows { bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw, MmcSubchannel.Raw, sector, doneSectors, sectorsToDo, null, isrcs, - (byte)track.TrackSequence, ref mcn, tracks.ToArray(), subchannelExtents, false, + (byte)track.Sequence, ref mcn, tracks.ToArray(), subchannelExtents, false, outputFormat, false, false, null, null, smallestPregapLbaPerTrack, false); if(indexesChanged) @@ -1192,11 +1192,11 @@ namespace Aaru.Gui.ViewModels.Windows foreach(Track track in tracks.TakeWhile(track => !_cancel)) { doneSectors = 0; - ulong trackSectors = track.TrackEndSector - track.TrackStartSector + 1; + ulong trackSectors = track.EndSector - track.StartSector + 1; await Dispatcher.UIThread.InvokeAsync(() => { - ProgressText = $"Converting sectors in track {track.TrackSequence}"; + ProgressText = $"Converting sectors in track {track.Sequence}"; ProgressValue++; Progress2Text = ""; Progress2Indeterminate = false; @@ -1222,7 +1222,7 @@ namespace Aaru.Gui.ViewModels.Windows await Dispatcher.UIThread.InvokeAsync(() => { Progress2Text = - $"Converting sectors {sectors + track.TrackStartSector} to {sectors + sectorsToDo + track.TrackStartSector} in track {track.TrackSequence} ({(sectors + track.TrackStartSector) / (double)_inputFormat.Info.Sectors:P2} done)"; + $"Converting sectors {sectors + track.StartSector} to {sectors + sectorsToDo + track.StartSector} in track {track.Sequence} ({(sectors + track.StartSector) / (double)_inputFormat.Info.Sectors:P2} done)"; Progress2Value = (int)(sectors / SectorsValue); }); @@ -1232,29 +1232,28 @@ namespace Aaru.Gui.ViewModels.Windows if(useLong) if(sectorsToDo == 1) { - sector = _inputFormat.ReadSectorLong(doneSectors + track.TrackStartSector); - result = outputFormat.WriteSectorLong(sector, doneSectors + track.TrackStartSector); + sector = _inputFormat.ReadSectorLong(doneSectors + track.StartSector); + result = outputFormat.WriteSectorLong(sector, doneSectors + track.StartSector); } else { - sector = _inputFormat.ReadSectorsLong(doneSectors + track.TrackStartSector, - sectorsToDo); + sector = _inputFormat.ReadSectorsLong(doneSectors + track.StartSector, sectorsToDo); - result = outputFormat.WriteSectorsLong(sector, doneSectors + track.TrackStartSector, + result = outputFormat.WriteSectorsLong(sector, doneSectors + track.StartSector, sectorsToDo); } else { if(sectorsToDo == 1) { - sector = _inputFormat.ReadSector(doneSectors + track.TrackStartSector); - result = outputFormat.WriteSector(sector, doneSectors + track.TrackStartSector); + sector = _inputFormat.ReadSector(doneSectors + track.StartSector); + result = outputFormat.WriteSector(sector, doneSectors + track.StartSector); } else { - sector = _inputFormat.ReadSectors(doneSectors + track.TrackStartSector, sectorsToDo); + sector = _inputFormat.ReadSectors(doneSectors + track.StartSector, sectorsToDo); - result = outputFormat.WriteSectors(sector, doneSectors + track.TrackStartSector, + result = outputFormat.WriteSectors(sector, doneSectors + track.StartSector, sectorsToDo); } } @@ -1313,13 +1312,13 @@ namespace Aaru.Gui.ViewModels.Windows foreach(Track track in tracks.TakeWhile(track => !_cancel)) { doneSectors = 0; - ulong trackSectors = track.TrackEndSector - track.TrackStartSector + 1; + ulong trackSectors = track.EndSector - track.StartSector + 1; byte[] sector; bool result; await Dispatcher.UIThread.InvokeAsync(() => { - ProgressText = $"Converting tag {tag} in track {track.TrackSequence}."; + ProgressText = $"Converting tag {tag} in track {track.Sequence}."; ProgressValue++; Progress2Text = ""; Progress2Indeterminate = false; @@ -1331,8 +1330,8 @@ namespace Aaru.Gui.ViewModels.Windows case SectorTagType.CdTrackFlags: case SectorTagType.CdTrackIsrc: - sector = _inputFormat.ReadSectorTag(track.TrackSequence, tag); - result = outputFormat.WriteSectorTag(sector, track.TrackSequence, tag); + sector = _inputFormat.ReadSectorTag(track.Sequence, tag); + result = outputFormat.WriteSectorTag(sector, track.Sequence, tag); if(!result) if(ForceChecked) @@ -1374,22 +1373,21 @@ namespace Aaru.Gui.ViewModels.Windows await Dispatcher.UIThread.InvokeAsync(() => { Progress2Text = - $"Converting tag {tag} for sectors {sectors + track.TrackStartSector} to {sectors + sectorsToDo + track.TrackStartSector} in track {track.TrackSequence} ({(sectors + track.TrackStartSector) / (double)_inputFormat.Info.Sectors:P2} done)"; + $"Converting tag {tag} for sectors {sectors + track.StartSector} to {sectors + sectorsToDo + track.StartSector} in track {track.Sequence} ({(sectors + track.StartSector) / (double)_inputFormat.Info.Sectors:P2} done)"; Progress2Value = (int)(sectors / SectorsValue); }); if(sectorsToDo == 1) { - sector = _inputFormat.ReadSectorTag(doneSectors + track.TrackStartSector, tag); - result = outputFormat.WriteSectorTag(sector, doneSectors + track.TrackStartSector, tag); + sector = _inputFormat.ReadSectorTag(doneSectors + track.StartSector, tag); + result = outputFormat.WriteSectorTag(sector, doneSectors + track.StartSector, tag); } else { - sector = _inputFormat.ReadSectorsTag(doneSectors + track.TrackStartSector, sectorsToDo, - tag); + sector = _inputFormat.ReadSectorsTag(doneSectors + track.StartSector, sectorsToDo, tag); - result = outputFormat.WriteSectorsTag(sector, doneSectors + track.TrackStartSector, + result = outputFormat.WriteSectorsTag(sector, doneSectors + track.StartSector, sectorsToDo, tag); } diff --git a/Aaru.Gui/ViewModels/Windows/ImageVerifyViewModel.cs b/Aaru.Gui/ViewModels/Windows/ImageVerifyViewModel.cs index 5da5645ce..ba36a0bbb 100644 --- a/Aaru.Gui/ViewModels/Windows/ImageVerifyViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/ImageVerifyViewModel.cs @@ -445,8 +445,8 @@ namespace Aaru.Gui.ViewModels.Windows { DateTime startCheck = DateTime.Now; DateTime endCheck = startCheck; - List failingLbas = new List(); - List unknownLbas = new List(); + List failingLbas = new(); + List unknownLbas = new(); await Dispatcher.UIThread.InvokeAsync(() => { @@ -466,13 +466,12 @@ namespace Aaru.Gui.ViewModels.Windows { await Dispatcher.UIThread.InvokeAsync(() => { - ProgressText = - $"Verifying track {currentTrack.TrackSequence} of {inputOptical.Tracks.Count}"; + ProgressText = $"Verifying track {currentTrack.Sequence} of {inputOptical.Tracks.Count}"; ProgressValue++; }); - ulong remainingSectors = currentTrack.TrackEndSector - currentTrack.TrackStartSector; + ulong remainingSectors = currentTrack.EndSector - currentTrack.StartSector; ulong currentSector = 0; while(remainingSectors > 0) @@ -496,18 +495,17 @@ namespace Aaru.Gui.ViewModels.Windows Progress2Value = all / 512d; Progress2Text = - $"Checking sector {all} of {_inputFormat.Info.Sectors}, on track {currentTrack.TrackSequence}"; + $"Checking sector {all} of {_inputFormat.Info.Sectors}, on track {currentTrack.Sequence}"; }); List tempFailingLbas; List tempUnknownLbas; if(remainingSectors < 512) - inputOptical.VerifySectors(currentSector, (uint)remainingSectors, - currentTrack.TrackSequence, out tempFailingLbas, - out tempUnknownLbas); + inputOptical.VerifySectors(currentSector, (uint)remainingSectors, currentTrack.Sequence, + out tempFailingLbas, out tempUnknownLbas); else - inputOptical.VerifySectors(currentSector, 512, currentTrack.TrackSequence, + inputOptical.VerifySectors(currentSector, 512, currentTrack.Sequence, out tempFailingLbas, out tempUnknownLbas); failingLbas.AddRange(tempFailingLbas); diff --git a/Aaru.Gui/Views/Panels/ImageInfo.xaml b/Aaru.Gui/Views/Panels/ImageInfo.xaml index fea26ea7b..9a05f49c4 100644 --- a/Aaru.Gui/Views/Panels/ImageInfo.xaml +++ b/Aaru.Gui/Views/Panels/ImageInfo.xaml @@ -117,14 +117,14 @@ - - - - - - - - + + + + + + + + diff --git a/Aaru.Images/AaruFormat/Read.cs b/Aaru.Images/AaruFormat/Read.cs index 4e7583c04..3fe38236b 100644 --- a/Aaru.Images/AaruFormat/Read.cs +++ b/Aaru.Images/AaruFormat/Read.cs @@ -776,15 +776,15 @@ namespace Aaru.DiscImages Tracks.Add(new Track { - TrackSequence = trackEntry.sequence, - TrackType = trackEntry.type, - TrackStartSector = (ulong)trackEntry.start, - TrackEndSector = (ulong)trackEntry.end, - TrackPregap = (ulong)trackEntry.pregap, - TrackSession = trackEntry.session, - TrackFile = imageFilter.GetFilename(), - TrackFileType = "BINARY", - TrackFilter = imageFilter + Sequence = trackEntry.sequence, + Type = trackEntry.type, + StartSector = (ulong)trackEntry.start, + EndSector = (ulong)trackEntry.end, + Pregap = (ulong)trackEntry.pregap, + Session = trackEntry.session, + File = imageFilter.GetFilename(), + FileType = "BINARY", + Filter = imageFilter }); if(trackEntry.type == TrackType.Data) @@ -1168,7 +1168,7 @@ namespace Aaru.DiscImages if(decodedFullToc.HasValue) { - Dictionary leadOutStarts = new Dictionary(); // Lead-out starts + Dictionary leadOutStarts = new(); // Lead-out starts foreach(FullTOC.TrackDataDescriptor trk in decodedFullToc.Value.TrackDescriptors.Where(trk => (trk.ADR == 1 || trk.ADR == 4) && @@ -1218,17 +1218,16 @@ namespace Aaru.DiscImages { var lastTrackInSession = new Track(); - foreach(Track trk in Tracks.Where(trk => trk.TrackSession == leadOuts.Key). - Where(trk => trk.TrackSequence > - lastTrackInSession.TrackSequence)) + foreach(Track trk in Tracks.Where(trk => trk.Session == leadOuts.Key). + Where(trk => trk.Sequence > lastTrackInSession.Sequence)) lastTrackInSession = trk; - if(lastTrackInSession.TrackSequence == 0 || - lastTrackInSession.TrackEndSector == (ulong)leadOuts.Value - 1) + if(lastTrackInSession.Sequence == 0 || + lastTrackInSession.EndSector == (ulong)leadOuts.Value - 1) continue; - lastTrackInSession.TrackEndSector = (ulong)leadOuts.Value - 1; - leadOutFixed = true; + lastTrackInSession.EndSector = (ulong)leadOuts.Value - 1; + leadOutFixed = true; } } } @@ -1237,22 +1236,22 @@ namespace Aaru.DiscImages { foreach(Track track in Tracks) { - if(track.TrackSequence <= 1) + if(track.Sequence <= 1) continue; uint firstTrackNumberInSameSession = Tracks. - Where(t => t.TrackSession == track.TrackSession). - Min(t => t.TrackSequence); + Where(t => t.Session == track.Session). + Min(t => t.Sequence); - if(firstTrackNumberInSameSession != track.TrackSequence) + if(firstTrackNumberInSameSession != track.Sequence) continue; - if(track.TrackPregap == 150) + if(track.Pregap == 150) continue; - long dif = (long)track.TrackPregap - 150; - track.TrackPregap = (ulong)((long)track.TrackPregap - dif); - track.TrackStartSector = (ulong)((long)track.TrackStartSector + dif); + long dif = (long)track.Pregap - 150; + track.Pregap = (ulong)((long)track.Pregap - dif); + track.StartSector = (ulong)((long)track.StartSector + dif); sessionPregapFixed = true; } @@ -1274,17 +1273,17 @@ namespace Aaru.DiscImages { Tracks = new List { - new Track + new() { - TrackBytesPerSector = (int)_imageInfo.SectorSize, - TrackEndSector = _imageInfo.Sectors - 1, - TrackFile = imageFilter.GetFilename(), - TrackFileType = "BINARY", - TrackFilter = imageFilter, - TrackRawBytesPerSector = (int)_imageInfo.SectorSize, - TrackSession = 1, - TrackSequence = 1, - TrackType = TrackType.Data + BytesPerSector = (int)_imageInfo.SectorSize, + EndSector = _imageInfo.Sectors - 1, + File = imageFilter.GetFilename(), + FileType = "BINARY", + Filter = imageFilter, + RawBytesPerSector = (int)_imageInfo.SectorSize, + Session = 1, + Sequence = 1, + Type = TrackType.Data } }; @@ -1303,58 +1302,57 @@ namespace Aaru.DiscImages Sessions = new List(); - for(int i = 1; i <= Tracks.Max(t => t.TrackSession); i++) + for(int i = 1; i <= Tracks.Max(t => t.Session); i++) Sessions.Add(new Session { - SessionSequence = (ushort)i, - StartTrack = Tracks.Where(t => t.TrackSession == i).Min(t => t.TrackSequence), - EndTrack = Tracks.Where(t => t.TrackSession == i).Max(t => t.TrackSequence), - StartSector = Tracks.Where(t => t.TrackSession == i).Min(t => t.TrackStartSector), - EndSector = Tracks.Where(t => t.TrackSession == i).Max(t => t.TrackEndSector) + Sequence = (ushort)i, + StartTrack = Tracks.Where(t => t.Session == i).Min(t => t.Sequence), + EndTrack = Tracks.Where(t => t.Session == i).Max(t => t.Sequence), + StartSector = Tracks.Where(t => t.Session == i).Min(t => t.StartSector), + EndSector = Tracks.Where(t => t.Session == i).Max(t => t.EndSector) }); AaruConsole.DebugWriteLine("Aaru Format plugin", "Memory snapshot: {0} bytes", GC.GetTotalMemory(false)); - foreach(Track track in Tracks.OrderBy(t => t.TrackStartSector)) + foreach(Track track in Tracks.OrderBy(t => t.StartSector)) { - if(track.TrackSequence == 1) + if(track.Sequence == 1) { - track.TrackPregap = 150; - track.Indexes[0] = -150; - track.Indexes[1] = (int)track.TrackStartSector; + track.Pregap = 150; + track.Indexes[0] = -150; + track.Indexes[1] = (int)track.StartSector; continue; } - if(track.TrackPregap > 0) + if(track.Pregap > 0) { - track.Indexes[0] = (int)track.TrackStartSector; - track.Indexes[1] = (int)(track.TrackStartSector + track.TrackPregap); + track.Indexes[0] = (int)track.StartSector; + track.Indexes[1] = (int)(track.StartSector + track.Pregap); } else - track.Indexes[1] = (int)track.TrackStartSector; + track.Indexes[1] = (int)track.StartSector; } ulong currentTrackOffset = 0; Partitions = new List(); - foreach(Track track in Tracks.OrderBy(t => t.TrackStartSector)) + foreach(Track track in Tracks.OrderBy(t => t.StartSector)) { Partitions.Add(new Partition { - Sequence = track.TrackSequence, - Type = track.TrackType.ToString(), - Name = $"Track {track.TrackSequence}", - Offset = currentTrackOffset, - Start = (ulong)track.Indexes[1], - Size = (track.TrackEndSector - (ulong)track.Indexes[1] + 1) * (ulong)track.TrackBytesPerSector, - Length = track.TrackEndSector - (ulong)track.Indexes[1] + 1, - Scheme = "Optical disc track" + Sequence = track.Sequence, + Type = track.Type.ToString(), + Name = $"Track {track.Sequence}", + Offset = currentTrackOffset, + Start = (ulong)track.Indexes[1], + Size = (track.EndSector - (ulong)track.Indexes[1] + 1) * (ulong)track.BytesPerSector, + Length = track.EndSector - (ulong)track.Indexes[1] + 1, + Scheme = "Optical disc track" }); - currentTrackOffset += (track.TrackEndSector - track.TrackStartSector + 1) * - (ulong)track.TrackBytesPerSector; + currentTrackOffset += (track.EndSector - track.StartSector + 1) * (ulong)track.BytesPerSector; } AaruConsole.DebugWriteLine("Aaru Format plugin", "Memory snapshot: {0} bytes", @@ -1364,19 +1362,19 @@ namespace Aaru.DiscImages foreach(Track trk in tracks) { - byte[] sector = ReadSector(trk.TrackStartSector); - trk.TrackBytesPerSector = sector.Length; + byte[] sector = ReadSector(trk.StartSector); + trk.BytesPerSector = sector.Length; - trk.TrackRawBytesPerSector = + trk.RawBytesPerSector = (_sectorPrefix != null && _sectorSuffix != null) || (_sectorPrefixDdt != null && _sectorSuffixDdt != null) ? 2352 : sector.Length; if(_sectorSubchannel == null) continue; - trk.TrackSubchannelFile = trk.TrackFile; - trk.TrackSubchannelFilter = trk.TrackFilter; - trk.TrackSubchannelType = TrackSubchannelType.Raw; + trk.SubchannelFile = trk.File; + trk.SubchannelFilter = trk.Filter; + trk.SubchannelType = TrackSubchannelType.Raw; } AaruConsole.DebugWriteLine("Aaru Format plugin", "Memory snapshot: {0} bytes", @@ -1392,7 +1390,7 @@ namespace Aaru.DiscImages foreach(CompactDiscIndexEntry compactDiscIndex in compactDiscIndexes.OrderBy(i => i.Track). ThenBy(i => i.Index)) { - Track track = Tracks.FirstOrDefault(t => t.TrackSequence == compactDiscIndex.Track); + Track track = Tracks.FirstOrDefault(t => t.Sequence == compactDiscIndex.Track); if(track is null) continue; @@ -1463,7 +1461,7 @@ namespace Aaru.DiscImages { foreach(Track track in Tracks) { - track.TrackPregap = 0; + track.Pregap = 0; track.Indexes?.Clear(); } } @@ -1594,12 +1592,12 @@ namespace Aaru.DiscImages if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc) throw new FeatureNotPresentImageException("Feature not present in image"); - Track trk = Tracks.FirstOrDefault(t => t.TrackSequence == track); + Track trk = Tracks.FirstOrDefault(t => t.Sequence == track); - if(trk?.TrackSequence != track) + if(trk?.Sequence != track) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - return ReadSector(trk.TrackStartSector + sectorAddress); + return ReadSector(trk.StartSector + sectorAddress); } /// @@ -1608,12 +1606,12 @@ namespace Aaru.DiscImages if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc) throw new FeatureNotPresentImageException("Feature not present in image"); - Track trk = Tracks.FirstOrDefault(t => t.TrackSequence == track); + Track trk = Tracks.FirstOrDefault(t => t.Sequence == track); - if(trk?.TrackSequence != track) + if(trk?.Sequence != track) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - return ReadSectorTag(trk.TrackStartSector + sectorAddress, tag); + return ReadSectorTag(trk.StartSector + sectorAddress, tag); } /// @@ -1647,20 +1645,19 @@ namespace Aaru.DiscImages if(_imageInfo.XmlMediaType == XmlMediaType.OpticalDisc) { - Track trk = Tracks.FirstOrDefault(t => sectorAddress >= t.TrackStartSector && - sectorAddress <= t.TrackEndSector); + Track trk = Tracks.FirstOrDefault(t => sectorAddress >= t.StartSector && sectorAddress <= t.EndSector); if(trk is null) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); - if(trk.TrackSequence == 0 && - trk.TrackStartSector == 0 && - trk.TrackEndSector == 0) + if(trk.Sequence == 0 && + trk.StartSector == 0 && + trk.EndSector == 0) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); - if(trk.TrackType == TrackType.Data) + if(trk.Type == TrackType.Data) throw new ArgumentException("Unsupported tag requested", nameof(tag)); switch(tag) @@ -1687,7 +1684,7 @@ namespace Aaru.DiscImages default: throw new ArgumentException("Unsupported tag requested", nameof(tag)); } - switch(trk.TrackType) + switch(trk.Type) { case TrackType.CdMode1: switch(tag) @@ -1922,16 +1919,16 @@ namespace Aaru.DiscImages if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc) throw new FeatureNotPresentImageException("Feature not present in image"); - Track trk = Tracks.FirstOrDefault(t => t.TrackSequence == track); + Track trk = Tracks.FirstOrDefault(t => t.Sequence == track); - if(trk?.TrackSequence != track) + if(trk?.Sequence != track) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(trk.TrackStartSector + sectorAddress + length > trk.TrackEndSector + 1) + if(trk.StartSector + sectorAddress + length > trk.EndSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({trk.TrackEndSector - trk.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({trk.EndSector - trk.StartSector + 1}), won't cross tracks"); - return ReadSectors(trk.TrackStartSector + sectorAddress, length); + return ReadSectors(trk.StartSector + sectorAddress, length); } /// @@ -1940,16 +1937,16 @@ namespace Aaru.DiscImages if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc) throw new FeatureNotPresentImageException("Feature not present in image"); - Track trk = Tracks.FirstOrDefault(t => t.TrackSequence == track); + Track trk = Tracks.FirstOrDefault(t => t.Sequence == track); - if(trk?.TrackSequence != track) + if(trk?.Sequence != track) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(trk.TrackStartSector + sectorAddress + length > trk.TrackEndSector + 1) + if(trk.StartSector + sectorAddress + length > trk.EndSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({trk.TrackEndSector - trk.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({trk.EndSector - trk.StartSector + 1}), won't cross tracks"); - return ReadSectorsTag(trk.TrackStartSector + sectorAddress, length, tag); + return ReadSectorsTag(trk.StartSector + sectorAddress, length, tag); } /// @@ -1958,16 +1955,16 @@ namespace Aaru.DiscImages switch(_imageInfo.XmlMediaType) { case XmlMediaType.OpticalDisc: - Track trk = Tracks.FirstOrDefault(t => sectorAddress >= t.TrackStartSector && - sectorAddress <= t.TrackEndSector); + Track trk = Tracks.FirstOrDefault(t => sectorAddress >= t.StartSector && + sectorAddress <= t.EndSector); if(trk is null) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); - if(trk.TrackSequence == 0 && - trk.TrackStartSector == 0 && - trk.TrackEndSector == 0) + if(trk.Sequence == 0 && + trk.StartSector == 0 && + trk.EndSector == 0) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); @@ -1978,7 +1975,7 @@ namespace Aaru.DiscImages byte[] sector = new byte[2352]; byte[] data = ReadSector(sectorAddress); - switch(trk.TrackType) + switch(trk.Type) { case TrackType.Audio: case TrackType.Data: return data; @@ -1990,7 +1987,7 @@ namespace Aaru.DiscImages else if(_sectorPrefixDdt != null) { if((_sectorPrefixDdt[sectorAddress] & CD_XFIX_MASK) == (uint)CdFixFlags.Correct) - ReconstructPrefix(ref sector, trk.TrackType, (long)sectorAddress); + ReconstructPrefix(ref sector, trk.Type, (long)sectorAddress); else if((_sectorPrefixDdt[sectorAddress] & CD_XFIX_MASK) == (uint)CdFixFlags.NotDumped || _sectorPrefixDdt[sectorAddress] == 0) @@ -2018,7 +2015,7 @@ namespace Aaru.DiscImages else if(_sectorSuffixDdt != null) { if((_sectorSuffixDdt[sectorAddress] & CD_XFIX_MASK) == (uint)CdFixFlags.Correct) - ReconstructEcc(ref sector, trk.TrackType); + ReconstructEcc(ref sector, trk.Type); else if((_sectorSuffixDdt[sectorAddress] & CD_XFIX_MASK) == (uint)CdFixFlags.NotDumped || _sectorSuffixDdt[sectorAddress] == 0) @@ -2050,7 +2047,7 @@ namespace Aaru.DiscImages else if(_sectorPrefixMs != null) { if((_sectorPrefixDdt[sectorAddress] & CD_XFIX_MASK) == (uint)CdFixFlags.Correct) - ReconstructPrefix(ref sector, trk.TrackType, (long)sectorAddress); + ReconstructPrefix(ref sector, trk.Type, (long)sectorAddress); else if((_sectorPrefixDdt[sectorAddress] & CD_XFIX_MASK) == (uint)CdFixFlags.NotDumped || _sectorPrefixDdt[sectorAddress] == 0) @@ -2160,12 +2157,12 @@ namespace Aaru.DiscImages if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc) throw new FeatureNotPresentImageException("Feature not present in image"); - Track trk = Tracks.FirstOrDefault(t => t.TrackSequence == track); + Track trk = Tracks.FirstOrDefault(t => t.Sequence == track); - if(trk?.TrackSequence != track) + if(trk?.Sequence != track) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - return ReadSectorLong(trk.TrackStartSector + sectorAddress); + return ReadSectorLong(trk.StartSector + sectorAddress); } /// @@ -2177,24 +2174,24 @@ namespace Aaru.DiscImages switch(_imageInfo.XmlMediaType) { case XmlMediaType.OpticalDisc: - Track trk = Tracks.FirstOrDefault(t => sectorAddress >= t.TrackStartSector && - sectorAddress <= t.TrackEndSector); + Track trk = Tracks.FirstOrDefault(t => sectorAddress >= t.StartSector && + sectorAddress <= t.EndSector); if(trk is null) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); - if(trk.TrackSequence == 0 && - trk.TrackStartSector == 0 && - trk.TrackEndSector == 0) + if(trk.Sequence == 0 && + trk.StartSector == 0 && + trk.EndSector == 0) throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Can't found track containing requested sector"); - if(sectorAddress + length > trk.TrackEndSector + 1) + if(sectorAddress + length > trk.EndSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({trk.TrackEndSector - trk.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({trk.EndSector - trk.StartSector + 1}), won't cross tracks"); - switch(trk.TrackType) + switch(trk.Type) { // These types only contain user data case TrackType.Audio: @@ -2336,23 +2333,23 @@ namespace Aaru.DiscImages if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc) throw new FeatureNotPresentImageException("Feature not present in image"); - Track trk = Tracks.FirstOrDefault(t => t.TrackSequence == track); + Track trk = Tracks.FirstOrDefault(t => t.Sequence == track); - if(trk?.TrackSequence != track) + if(trk?.Sequence != track) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(trk.TrackStartSector + sectorAddress + length > trk.TrackEndSector + 1) + if(trk.StartSector + sectorAddress + length > trk.EndSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({trk.TrackEndSector - trk.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({trk.EndSector - trk.StartSector + 1}), won't cross tracks"); - return ReadSectorsLong(trk.TrackStartSector + sectorAddress, length); + return ReadSectorsLong(trk.StartSector + sectorAddress, length); } /// public List GetSessionTracks(Session session) => - Tracks.Where(t => t.TrackSequence == session.SessionSequence).ToList(); + Tracks.Where(t => t.Sequence == session.Sequence).ToList(); /// - public List GetSessionTracks(ushort session) => Tracks.Where(t => t.TrackSequence == session).ToList(); + public List GetSessionTracks(ushort session) => Tracks.Where(t => t.Sequence == session).ToList(); } } \ No newline at end of file diff --git a/Aaru.Images/AaruFormat/Write.cs b/Aaru.Images/AaruFormat/Write.cs index 3c274201c..40d4e3a3c 100644 --- a/Aaru.Images/AaruFormat/Write.cs +++ b/Aaru.Images/AaruFormat/Write.cs @@ -976,13 +976,13 @@ namespace Aaru.DiscImages Tracks.Add(new Track { - TrackSequence = trackEntry.sequence, - TrackType = trackEntry.type, - TrackStartSector = (ulong)trackEntry.start, - TrackEndSector = (ulong)trackEntry.end, - TrackPregap = (ulong)trackEntry.pregap, - TrackSession = trackEntry.session, - TrackFileType = "BINARY" + Sequence = trackEntry.sequence, + Type = trackEntry.type, + StartSector = (ulong)trackEntry.start, + EndSector = (ulong)trackEntry.end, + Pregap = (ulong)trackEntry.pregap, + Session = trackEntry.session, + FileType = "BINARY" }); if(trackEntry.type == TrackType.Data) @@ -1338,7 +1338,7 @@ namespace Aaru.DiscImages if(decodedFullToc.HasValue) { - Dictionary leadOutStarts = new Dictionary(); // Lead-out starts + Dictionary leadOutStarts = new(); // Lead-out starts foreach(FullTOC.TrackDataDescriptor trk in decodedFullToc.Value.TrackDescriptors.Where(trk => (trk.ADR == 1 || trk.ADR == 4) && @@ -1388,16 +1388,15 @@ namespace Aaru.DiscImages { var lastTrackInSession = new Track(); - foreach(Track trk in Tracks.Where(trk => trk.TrackSession == leadOuts.Key). - Where(trk => trk.TrackSequence > - lastTrackInSession.TrackSequence)) + foreach(Track trk in Tracks.Where(trk => trk.Session == leadOuts.Key). + Where(trk => trk.Sequence > lastTrackInSession.Sequence)) lastTrackInSession = trk; - if(lastTrackInSession.TrackSequence == 0 || - lastTrackInSession.TrackEndSector == (ulong)leadOuts.Value - 1) + if(lastTrackInSession.Sequence == 0 || + lastTrackInSession.EndSector == (ulong)leadOuts.Value - 1) continue; - lastTrackInSession.TrackEndSector = (ulong)leadOuts.Value - 1; + lastTrackInSession.EndSector = (ulong)leadOuts.Value - 1; } } } @@ -1410,15 +1409,15 @@ namespace Aaru.DiscImages { Tracks = new List { - new Track + new() { - TrackBytesPerSector = (int)_imageInfo.SectorSize, - TrackEndSector = _imageInfo.Sectors - 1, - TrackFileType = "BINARY", - TrackRawBytesPerSector = (int)_imageInfo.SectorSize, - TrackSession = 1, - TrackSequence = 1, - TrackType = TrackType.Data + BytesPerSector = (int)_imageInfo.SectorSize, + EndSector = _imageInfo.Sectors - 1, + FileType = "BINARY", + RawBytesPerSector = (int)_imageInfo.SectorSize, + Session = 1, + Sequence = 1, + Type = TrackType.Data } }; @@ -1437,59 +1436,57 @@ namespace Aaru.DiscImages Sessions = new List(); - for(int i = 1; i <= Tracks.Max(t => t.TrackSession); i++) + for(int i = 1; i <= Tracks.Max(t => t.Session); i++) Sessions.Add(new Session { - SessionSequence = (ushort)i, - StartTrack = Tracks.Where(t => t.TrackSession == i).Min(t => t.TrackSequence), - EndTrack = Tracks.Where(t => t.TrackSession == i).Max(t => t.TrackSequence), - StartSector = Tracks.Where(t => t.TrackSession == i).Min(t => t.TrackStartSector), - EndSector = Tracks.Where(t => t.TrackSession == i).Max(t => t.TrackEndSector) + Sequence = (ushort)i, + StartTrack = Tracks.Where(t => t.Session == i).Min(t => t.Sequence), + EndTrack = Tracks.Where(t => t.Session == i).Max(t => t.Sequence), + StartSector = Tracks.Where(t => t.Session == i).Min(t => t.StartSector), + EndSector = Tracks.Where(t => t.Session == i).Max(t => t.EndSector) }); AaruConsole.DebugWriteLine("Aaru Format plugin", "Memory snapshot: {0} bytes", GC.GetTotalMemory(false)); - foreach(Track track in Tracks.OrderBy(t => t.TrackStartSector)) + foreach(Track track in Tracks.OrderBy(t => t.StartSector)) { - if(track.TrackSequence == 1) + if(track.Sequence == 1) { - track.TrackPregap = 150; - track.Indexes[0] = -150; - track.Indexes[1] = (int)track.TrackStartSector; + track.Pregap = 150; + track.Indexes[0] = -150; + track.Indexes[1] = (int)track.StartSector; continue; } - if(track.TrackPregap > 0) + if(track.Pregap > 0) { - track.Indexes[0] = (int)track.TrackStartSector; - track.Indexes[1] = (int)(track.TrackStartSector + track.TrackPregap); + track.Indexes[0] = (int)track.StartSector; + track.Indexes[1] = (int)(track.StartSector + track.Pregap); } else - track.Indexes[1] = (int)track.TrackStartSector; + track.Indexes[1] = (int)track.StartSector; } ulong currentTrackOffset = 0; Partitions = new List(); - foreach(Track track in Tracks.OrderBy(t => t.TrackStartSector)) + foreach(Track track in Tracks.OrderBy(t => t.StartSector)) { Partitions.Add(new Partition { - Sequence = track.TrackSequence, - Type = track.TrackType.ToString(), - Name = $"Track {track.TrackSequence}", + Sequence = track.Sequence, + Type = track.Type.ToString(), + Name = $"Track {track.Sequence}", Offset = currentTrackOffset, Start = (ulong)track.Indexes[1], - Size = (track.TrackEndSector - (ulong)track.Indexes[1] + 1) * - (ulong)track.TrackBytesPerSector, - Length = track.TrackEndSector - (ulong)track.Indexes[1] + 1, - Scheme = "Optical disc track" + Size = (track.EndSector - (ulong)track.Indexes[1] + 1) * (ulong)track.BytesPerSector, + Length = track.EndSector - (ulong)track.Indexes[1] + 1, + Scheme = "Optical disc track" }); - currentTrackOffset += (track.TrackEndSector - track.TrackStartSector + 1) * - (ulong)track.TrackBytesPerSector; + currentTrackOffset += (track.EndSector - track.StartSector + 1) * (ulong)track.BytesPerSector; } AaruConsole.DebugWriteLine("Aaru Format plugin", "Memory snapshot: {0} bytes", @@ -1499,19 +1496,19 @@ namespace Aaru.DiscImages foreach(Track trk in tracks) { - byte[] sector = ReadSector(trk.TrackStartSector); - trk.TrackBytesPerSector = sector.Length; + byte[] sector = ReadSector(trk.StartSector); + trk.BytesPerSector = sector.Length; - trk.TrackRawBytesPerSector = + trk.RawBytesPerSector = (_sectorPrefix != null && _sectorSuffix != null) || (_sectorPrefixDdt != null && _sectorSuffixDdt != null) ? 2352 : sector.Length; if(_sectorSubchannel == null) continue; - trk.TrackSubchannelFile = trk.TrackFile; - trk.TrackSubchannelFilter = trk.TrackFilter; - trk.TrackSubchannelType = TrackSubchannelType.Raw; + trk.SubchannelFile = trk.File; + trk.SubchannelFilter = trk.Filter; + trk.SubchannelType = TrackSubchannelType.Raw; } AaruConsole.DebugWriteLine("Aaru Format plugin", "Memory snapshot: {0} bytes", @@ -1527,7 +1524,7 @@ namespace Aaru.DiscImages foreach(CompactDiscIndexEntry compactDiscIndex in compactDiscIndexes.OrderBy(i => i.Track). ThenBy(i => i.Index)) { - Track track = Tracks.FirstOrDefault(t => t.TrackSequence == compactDiscIndex.Track); + Track track = Tracks.FirstOrDefault(t => t.Sequence == compactDiscIndex.Track); if(track is null) continue; @@ -1741,13 +1738,13 @@ namespace Aaru.DiscImages // If optical disc check track if(_imageInfo.XmlMediaType == XmlMediaType.OpticalDisc) { - trk = Tracks.FirstOrDefault(t => sectorAddress >= t.TrackStartSector && - sectorAddress <= t.TrackEndSector) ?? new Track(); + trk = Tracks.FirstOrDefault(t => sectorAddress >= t.StartSector && sectorAddress <= t.EndSector) ?? + new Track(); - if(trk.TrackSequence == 0 && - trk.TrackStartSector == 0 && - trk.TrackEndSector == 0) - trk.TrackType = TrackType.Data; // TODO: Check intersession data type + if(trk.Sequence == 0 && + trk.StartSector == 0 && + trk.EndSector == 0) + trk.Type = TrackType.Data; // TODO: Check intersession data type } // Close current block first @@ -1760,7 +1757,7 @@ namespace Aaru.DiscImages _currentBlockOffset == 1 << _shift || // When we change to/from CompactDisc audio - (_currentBlockHeader.compression == CompressionType.Flac && trk.TrackType != TrackType.Audio))) + (_currentBlockHeader.compression == CompressionType.Flac && trk.Type != TrackType.Audio))) { _currentBlockHeader.length = _currentBlockOffset * _currentBlockHeader.sectorSize; _currentBlockHeader.crc64 = BitConverter.ToUInt64(_crc64.Final(), 0); @@ -1852,16 +1849,16 @@ namespace Aaru.DiscImages }; if(_imageInfo.XmlMediaType == XmlMediaType.OpticalDisc && - trk.TrackType == TrackType.Audio && + trk.Type == TrackType.Audio && _compress) _currentBlockHeader.compression = CompressionType.Flac; // JaguarCD stores data in audio tracks. FLAC is too inefficient, use LZMA there. // VideoNow stores video in audio tracks, and LZMA works better too. - if(((_imageInfo.MediaType == MediaType.JaguarCD && trk.TrackSession > 1) || + if(((_imageInfo.MediaType == MediaType.JaguarCD && trk.Session > 1) || _imageInfo.MediaType == MediaType.VideoNow || _imageInfo.MediaType == MediaType.VideoNowColor || _imageInfo.MediaType == MediaType.VideoNowXp) && - trk.TrackType == TrackType.Audio && + trk.Type == TrackType.Audio && _compress && _currentBlockHeader.compression == CompressionType.Flac) _currentBlockHeader.compression = CompressionType.Lzma; @@ -1967,8 +1964,8 @@ namespace Aaru.DiscImages { case XmlMediaType.OpticalDisc: Track track = - Tracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + Tracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -1977,10 +1974,10 @@ namespace Aaru.DiscImages return false; } - if(track.TrackSequence == 0 && - track.TrackStartSector == 0 && - track.TrackEndSector == 0) - track.TrackType = TrackType.Data; + if(track.Sequence == 0 && + track.StartSector == 0 && + track.EndSector == 0) + track.Type = TrackType.Data; if(data.Length != 2352) { @@ -2016,7 +2013,7 @@ namespace Aaru.DiscImages int storedLba; // Split raw cd sector data in prefix (sync, header), user data and suffix (edc, ecc p, ecc q) - switch(track.TrackType) + switch(track.Type) { case TrackType.Audio: case TrackType.Data: return WriteSector(data, sectorAddress); @@ -3844,45 +3841,45 @@ namespace Aaru.DiscImages _blockStream = null; } - List trackEntries = new List(); - List compactDiscIndexEntries = new List(); + List trackEntries = new(); + List compactDiscIndexEntries = new(); foreach(Track track in Tracks) { - _trackFlags.TryGetValue((byte)track.TrackSequence, out byte flags); - _trackIsrcs.TryGetValue((byte)track.TrackSequence, out string isrc); + _trackFlags.TryGetValue((byte)track.Sequence, out byte flags); + _trackIsrcs.TryGetValue((byte)track.Sequence, out string isrc); if((flags & (int)CdFlags.DataTrack) == 0 && - track.TrackType != TrackType.Audio) + track.Type != TrackType.Audio) flags += (byte)CdFlags.DataTrack; trackEntries.Add(new TrackEntry { - sequence = (byte)track.TrackSequence, - type = track.TrackType, - start = (long)track.TrackStartSector, - end = (long)track.TrackEndSector, - pregap = (long)track.TrackPregap, - session = (byte)track.TrackSession, + sequence = (byte)track.Sequence, + type = track.Type, + start = (long)track.StartSector, + end = (long)track.EndSector, + pregap = (long)track.Pregap, + session = (byte)track.Session, isrc = isrc, flags = flags }); if(!track.Indexes.ContainsKey(0) && - track.TrackPregap > 0) + track.Pregap > 0) { - track.Indexes[0] = (int)track.TrackStartSector; - track.Indexes[1] = (int)(track.TrackStartSector + track.TrackPregap); + track.Indexes[0] = (int)track.StartSector; + track.Indexes[1] = (int)(track.StartSector + track.Pregap); } else if(!track.Indexes.ContainsKey(0) && !track.Indexes.ContainsKey(1)) - track.Indexes[0] = (int)track.TrackStartSector; + track.Indexes[0] = (int)track.StartSector; compactDiscIndexEntries.AddRange(track.Indexes.Select(trackIndex => new CompactDiscIndexEntry { Index = trackIndex.Key, Lba = trackIndex.Value, - Track = (ushort)track.TrackSequence + Track = (ushort)track.Sequence })); } @@ -4462,10 +4459,10 @@ namespace Aaru.DiscImages return false; } - track = Tracks.FirstOrDefault(trk => sectorAddress == trk.TrackSequence); + track = Tracks.FirstOrDefault(trk => sectorAddress == trk.Sequence); if(track is null || - (track.TrackSequence == 0 && track.TrackStartSector == 0 && track.TrackEndSector == 0)) + (track.Sequence == 0 && track.StartSector == 0 && track.EndSector == 0)) { ErrorMessage = $"Can't find track {sectorAddress}"; @@ -4481,11 +4478,11 @@ namespace Aaru.DiscImages return false; } - track = Tracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + track = Tracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); - if(track is { TrackSequence: 0, TrackStartSector: 0, TrackEndSector: 0 }) - track.TrackType = TrackType.Data; + if(track is { Sequence: 0, StartSector: 0, EndSector: 0 }) + track.Type = TrackType.Data; break; } diff --git a/Aaru.Images/Alcohol120/Properties.cs b/Aaru.Images/Alcohol120/Properties.cs index 168206bce..011b34a60 100644 --- a/Aaru.Images/Alcohol120/Properties.cs +++ b/Aaru.Images/Alcohol120/Properties.cs @@ -60,7 +60,7 @@ namespace Aaru.DiscImages /// public string Name => "Alcohol 120% Media Descriptor Structure"; /// - public Guid Id => new Guid("A78FBEBA-0307-4915-BDE3-B8A3B57F843F"); + public Guid Id => new("A78FBEBA-0307-4915-BDE3-B8A3B57F843F"); /// public string Author => "Natalia Portillo"; @@ -79,7 +79,7 @@ namespace Aaru.DiscImages _alcTracks == null) return _writingTracks; - List tracks = new List(); + List tracks = new(); _alcTracks ??= new Dictionary(); foreach(Track alcTrack in _alcTracks.Values) @@ -87,25 +87,25 @@ namespace Aaru.DiscImages ushort sessionNo = (from session in Sessions where alcTrack.point >= session.StartTrack && alcTrack.point <= session.EndTrack - select session.SessionSequence).FirstOrDefault(); + select session.Sequence).FirstOrDefault(); if(!_alcTrackExtras.TryGetValue(alcTrack.point, out TrackExtra alcExtra)) continue; var aaruTrack = new CommonTypes.Structs.Track { - TrackStartSector = alcTrack.startLba, - TrackEndSector = alcTrack.startLba + alcExtra.sectors - 1, - TrackPregap = alcExtra.pregap, - TrackSession = sessionNo, - TrackSequence = alcTrack.point, - TrackType = TrackModeToTrackType(alcTrack.mode), - TrackFilter = _alcImage, - TrackFile = _alcImage.GetFilename(), - TrackFileOffset = alcTrack.startOffset, - TrackFileType = "BINARY", - TrackRawBytesPerSector = alcTrack.sectorSize, - TrackBytesPerSector = TrackModeToCookedBytesPerSector(alcTrack.mode) + StartSector = alcTrack.startLba, + EndSector = alcTrack.startLba + alcExtra.sectors - 1, + Pregap = alcExtra.pregap, + Session = sessionNo, + Sequence = alcTrack.point, + Type = TrackModeToTrackType(alcTrack.mode), + Filter = _alcImage, + File = _alcImage.GetFilename(), + FileOffset = alcTrack.startOffset, + FileType = "BINARY", + RawBytesPerSector = alcTrack.sectorSize, + BytesPerSector = TrackModeToCookedBytesPerSector(alcTrack.mode) }; if(alcExtra.pregap > 0) @@ -115,19 +115,19 @@ namespace Aaru.DiscImages if(aaruTrack.Indexes.ContainsKey(0) && aaruTrack.Indexes[0] >= 0) - aaruTrack.TrackStartSector = (ulong)aaruTrack.Indexes[0]; + aaruTrack.StartSector = (ulong)aaruTrack.Indexes[0]; switch(alcTrack.subMode) { case SubchannelMode.Interleaved: - aaruTrack.TrackSubchannelFilter = _alcImage; - aaruTrack.TrackSubchannelFile = _alcImage.GetFilename(); - aaruTrack.TrackSubchannelOffset = alcTrack.startOffset; - aaruTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; + aaruTrack.SubchannelFilter = _alcImage; + aaruTrack.SubchannelFile = _alcImage.GetFilename(); + aaruTrack.SubchannelOffset = alcTrack.startOffset; + aaruTrack.SubchannelType = TrackSubchannelType.RawInterleaved; break; case SubchannelMode.None: - aaruTrack.TrackSubchannelType = TrackSubchannelType.None; + aaruTrack.SubchannelType = TrackSubchannelType.None; break; } @@ -136,7 +136,7 @@ namespace Aaru.DiscImages _header.type != MediumType.CDR && _header.type != MediumType.CDRW) { - aaruTrack.TrackPregap = 0; + aaruTrack.Pregap = 0; aaruTrack.Indexes?.Clear(); } diff --git a/Aaru.Images/Alcohol120/Read.cs b/Aaru.Images/Alcohol120/Read.cs index 85d9f33f8..16377c596 100644 --- a/Aaru.Images/Alcohol120/Read.cs +++ b/Aaru.Images/Alcohol120/Read.cs @@ -148,7 +148,7 @@ namespace Aaru.DiscImages foreach(Session session in _alcSessions.Values) { stream.Seek(session.trackOffset, SeekOrigin.Begin); - Dictionary sesToc = new Dictionary(); + Dictionary sesToc = new(); for(int i = 0; i < session.allBlocks; i++) { @@ -375,11 +375,11 @@ namespace Aaru.DiscImages if(!_alcTrackExtras.TryGetValue(alcSes.lastTrack, out TrackExtra endingTrackExtra)) break; - session.StartSector = startingTrack.startLba; - session.StartTrack = alcSes.firstTrack; - session.SessionSequence = alcSes.sessionSequence; - session.EndSector = endingTrack.startLba + endingTrackExtra.sectors - 1; - session.EndTrack = alcSes.lastTrack; + session.StartSector = startingTrack.startLba; + session.StartTrack = alcSes.firstTrack; + session.Sequence = alcSes.sessionSequence; + session.EndSector = endingTrack.startLba + endingTrackExtra.sectors - 1; + session.EndTrack = alcSes.lastTrack; Sessions.Add(session); @@ -1480,7 +1480,7 @@ namespace Aaru.DiscImages public List GetSessionTracks(CommonTypes.Structs.Session session) { if(Sessions.Contains(session)) - return GetSessionTracks(session.SessionSequence); + return GetSessionTracks(session.Sequence); throw new ImageNotSupportedException("Session does not exist in disc image"); } @@ -1488,13 +1488,13 @@ namespace Aaru.DiscImages /// public List GetSessionTracks(ushort session) { - List tracks = new List(); + List tracks = new(); foreach(Track alcTrack in _alcTracks.Values) { ushort sessionNo = (from ses in Sessions where alcTrack.point >= ses.StartTrack || alcTrack.point <= ses.EndTrack - select ses.SessionSequence).FirstOrDefault(); + select ses.Sequence).FirstOrDefault(); if(!_alcTrackExtras.TryGetValue(alcTrack.point, out TrackExtra alcExtra) || session != sessionNo) @@ -1502,18 +1502,18 @@ namespace Aaru.DiscImages var aaruTrack = new CommonTypes.Structs.Track { - TrackStartSector = alcTrack.startLba, - TrackEndSector = alcExtra.sectors - 1, - TrackPregap = alcExtra.pregap, - TrackSession = sessionNo, - TrackSequence = alcTrack.point, - TrackType = TrackModeToTrackType(alcTrack.mode), - TrackFilter = _alcImage, - TrackFile = _alcImage.GetFilename(), - TrackFileOffset = alcTrack.startOffset, - TrackFileType = "BINARY", - TrackRawBytesPerSector = alcTrack.sectorSize, - TrackBytesPerSector = TrackModeToCookedBytesPerSector(alcTrack.mode) + StartSector = alcTrack.startLba, + EndSector = alcExtra.sectors - 1, + Pregap = alcExtra.pregap, + Session = sessionNo, + Sequence = alcTrack.point, + Type = TrackModeToTrackType(alcTrack.mode), + Filter = _alcImage, + File = _alcImage.GetFilename(), + FileOffset = alcTrack.startOffset, + FileType = "BINARY", + RawBytesPerSector = alcTrack.sectorSize, + BytesPerSector = TrackModeToCookedBytesPerSector(alcTrack.mode) }; if(alcExtra.pregap > 0) @@ -1524,14 +1524,14 @@ namespace Aaru.DiscImages switch(alcTrack.subMode) { case SubchannelMode.Interleaved: - aaruTrack.TrackSubchannelFilter = _alcImage; - aaruTrack.TrackSubchannelFile = _alcImage.GetFilename(); - aaruTrack.TrackSubchannelOffset = alcTrack.startOffset; - aaruTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; + aaruTrack.SubchannelFilter = _alcImage; + aaruTrack.SubchannelFile = _alcImage.GetFilename(); + aaruTrack.SubchannelOffset = alcTrack.startOffset; + aaruTrack.SubchannelType = TrackSubchannelType.RawInterleaved; break; case SubchannelMode.None: - aaruTrack.TrackSubchannelType = TrackSubchannelType.None; + aaruTrack.SubchannelType = TrackSubchannelType.None; break; } diff --git a/Aaru.Images/Alcohol120/Write.cs b/Aaru.Images/Alcohol120/Write.cs index 0521f2773..cde24d6a3 100644 --- a/Aaru.Images/Alcohol120/Write.cs +++ b/Aaru.Images/Alcohol120/Write.cs @@ -213,8 +213,8 @@ namespace Aaru.DiscImages } CommonTypes.Structs.Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(!_isDvd) { @@ -230,14 +230,14 @@ namespace Aaru.DiscImages return false; } - if(track.TrackBytesPerSector != track.TrackRawBytesPerSector) + if(track.BytesPerSector != track.RawBytesPerSector) { ErrorMessage = "Invalid write mode for this sector"; return false; } - if(data.Length != track.TrackRawBytesPerSector) + if(data.Length != track.RawBytesPerSector) { ErrorMessage = "Incorrect data size"; @@ -245,7 +245,7 @@ namespace Aaru.DiscImages } _imageStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); _imageStream.Write(data, 0, data.Length); @@ -271,8 +271,8 @@ namespace Aaru.DiscImages } CommonTypes.Structs.Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -281,32 +281,32 @@ namespace Aaru.DiscImages return false; } - if(track.TrackBytesPerSector != track.TrackRawBytesPerSector) + if(track.BytesPerSector != track.RawBytesPerSector) { ErrorMessage = "Invalid write mode for this sector"; return false; } - if(sectorAddress + length > track.TrackEndSector + 1) + if(sectorAddress + length > track.EndSector + 1) { ErrorMessage = "Can't cross tracks"; return false; } - if(data.Length % track.TrackRawBytesPerSector != 0) + if(data.Length % track.RawBytesPerSector != 0) { ErrorMessage = "Incorrect data size"; return false; } - switch(track.TrackSubchannelType) + switch(track.SubchannelType) { case TrackSubchannelType.None: _imageStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); _imageStream.Write(data, 0, data.Length); @@ -317,12 +317,12 @@ namespace Aaru.DiscImages case TrackSubchannelType.Raw: case TrackSubchannelType.RawInterleaved: _imageStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + 96))), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + 96))), SeekOrigin.Begin); for(uint i = 0; i < length; i++) { - _imageStream.Write(data, (int)(i * track.TrackRawBytesPerSector), track.TrackRawBytesPerSector); + _imageStream.Write(data, (int)(i * track.RawBytesPerSector), track.RawBytesPerSector); _imageStream.Position += 96; } @@ -347,8 +347,8 @@ namespace Aaru.DiscImages } CommonTypes.Structs.Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -357,17 +357,17 @@ namespace Aaru.DiscImages return false; } - if(data.Length != track.TrackRawBytesPerSector) + if(data.Length != track.RawBytesPerSector) { ErrorMessage = "Incorrect data size"; return false; } - uint subchannelSize = (uint)(track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0); + uint subchannelSize = (uint)(track.SubchannelType != TrackSubchannelType.None ? 96 : 0); _imageStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + subchannelSize))), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + subchannelSize))), SeekOrigin.Begin); _imageStream.Write(data, 0, data.Length); @@ -386,8 +386,8 @@ namespace Aaru.DiscImages } CommonTypes.Structs.Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -396,29 +396,29 @@ namespace Aaru.DiscImages return false; } - if(sectorAddress + length > track.TrackEndSector + 1) + if(sectorAddress + length > track.EndSector + 1) { ErrorMessage = "Can't cross tracks"; return false; } - if(data.Length % track.TrackRawBytesPerSector != 0) + if(data.Length % track.RawBytesPerSector != 0) { ErrorMessage = "Incorrect data size"; return false; } - uint subchannelSize = (uint)(track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0); + uint subchannelSize = (uint)(track.SubchannelType != TrackSubchannelType.None ? 96 : 0); for(uint i = 0; i < length; i++) { _imageStream. - Seek((long)(track.TrackFileOffset + ((i + sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + subchannelSize))), + Seek((long)(track.FileOffset + ((i + sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + subchannelSize))), SeekOrigin.Begin); - _imageStream.Write(data, (int)(i * track.TrackRawBytesPerSector), track.TrackRawBytesPerSector); + _imageStream.Write(data, (int)(i * track.RawBytesPerSector), track.RawBytesPerSector); } return true; @@ -433,38 +433,38 @@ namespace Aaru.DiscImages if(!_isDvd) { - CommonTypes.Structs.Track[] tmpTracks = tracks.OrderBy(t => t.TrackSequence).ToArray(); + CommonTypes.Structs.Track[] tmpTracks = tracks.OrderBy(t => t.Sequence).ToArray(); for(int i = 1; i < tmpTracks.Length; i++) { CommonTypes.Structs.Track firstTrackInSession = - tracks.FirstOrDefault(t => t.TrackSession == tmpTracks[i].TrackSession); + tracks.FirstOrDefault(t => t.Session == tmpTracks[i].Session); if(firstTrackInSession is null) continue; - if(tmpTracks[i].TrackSequence == firstTrackInSession.TrackSequence) + if(tmpTracks[i].Sequence == firstTrackInSession.Sequence) { - if(tmpTracks[i].TrackSequence > 1) - tmpTracks[i].TrackStartSector += 150; + if(tmpTracks[i].Sequence > 1) + tmpTracks[i].StartSector += 150; continue; } - tmpTracks[i - 1].TrackEndSector += tmpTracks[i].TrackPregap; - tmpTracks[i].TrackPregap = 0; - tmpTracks[i].TrackStartSector = tmpTracks[i - 1].TrackEndSector + 1; + tmpTracks[i - 1].EndSector += tmpTracks[i].Pregap; + tmpTracks[i].Pregap = 0; + tmpTracks[i].StartSector = tmpTracks[i - 1].EndSector + 1; } tracks = tmpTracks.ToList(); } - foreach(CommonTypes.Structs.Track track in tracks.OrderBy(t => t.TrackSequence)) + foreach(CommonTypes.Structs.Track track in tracks.OrderBy(t => t.Sequence)) { CommonTypes.Structs.Track newTrack = track; uint subchannelSize; - switch(track.TrackSubchannelType) + switch(track.SubchannelType) { case TrackSubchannelType.None: subchannelSize = 0; @@ -476,15 +476,15 @@ namespace Aaru.DiscImages break; default: - ErrorMessage = $"Unsupported subchannel type {track.TrackSubchannelType}"; + ErrorMessage = $"Unsupported subchannel type {track.SubchannelType}"; return false; } - newTrack.TrackFileOffset = currentDataOffset; + newTrack.FileOffset = currentDataOffset; - currentDataOffset += (ulong)(newTrack.TrackRawBytesPerSector + subchannelSize) * - (newTrack.TrackEndSector - newTrack.TrackStartSector + 1); + currentDataOffset += (ulong)(newTrack.RawBytesPerSector + subchannelSize) * + (newTrack.EndSector - newTrack.StartSector + 1); _writingTracks.Add(newTrack); } @@ -504,8 +504,8 @@ namespace Aaru.DiscImages byte sessions = byte.MinValue; - foreach(CommonTypes.Structs.Track t in _writingTracks.Where(t => t.TrackSession > byte.MinValue)) - sessions = (byte)t.TrackSession; + foreach(CommonTypes.Structs.Track t in _writingTracks.Where(t => t.Session > byte.MinValue)) + sessions = (byte)t.Session; var header = new Header { @@ -530,7 +530,7 @@ namespace Aaru.DiscImages _alcSessions = new Dictionary(); _alcTracks = new Dictionary(); _alcToc = new Dictionary>(); - _writingTracks = _writingTracks.OrderBy(t => t.TrackSession).ThenBy(t => t.TrackSequence).ToList(); + _writingTracks = _writingTracks.OrderBy(t => t.Session).ThenBy(t => t.Sequence).ToList(); _alcTrackExtras = new Dictionary(); long currentTrackOffset = header.sessionOffset + (Marshal.SizeOf() * sessions); @@ -563,9 +563,9 @@ namespace Aaru.DiscImages currentExtraOffset += Marshal.SizeOf() * 3; extraCount += 3; - currentExtraOffset += Marshal.SizeOf() * _writingTracks.Count(t => t.TrackSession == i); + currentExtraOffset += Marshal.SizeOf() * _writingTracks.Count(t => t.Session == i); - extraCount += _writingTracks.Count(t => t.TrackSession == i); + extraCount += _writingTracks.Count(t => t.Session == i); if(i < sessions) { @@ -586,7 +586,7 @@ namespace Aaru.DiscImages { _alcSessions.Add(1, new Session { - sessionEnd = (int)(_writingTracks[0].TrackEndSector - _writingTracks[0].TrackStartSector + 1), + sessionEnd = (int)(_writingTracks[0].EndSector - _writingTracks[0].StartSector + 1), sessionSequence = 1, allBlocks = 1, nonTrackBlocks = 3, @@ -605,7 +605,7 @@ namespace Aaru.DiscImages mode = TrackMode.DVD, adrCtl = 20, point = 1, - extraOffset = (uint)(_writingTracks[0].TrackEndSector - _writingTracks[0].TrackStartSector + 1), + extraOffset = (uint)(_writingTracks[0].EndSector - _writingTracks[0].StartSector + 1), sectorSize = 2048, files = 1, footerOffset = (uint)footerOffset, @@ -618,37 +618,37 @@ namespace Aaru.DiscImages else for(int i = 1; i <= sessions; i++) { - CommonTypes.Structs.Track firstTrack = _writingTracks.First(t => t.TrackSession == i); - CommonTypes.Structs.Track lastTrack = _writingTracks.Last(t => t.TrackSession == i); + CommonTypes.Structs.Track firstTrack = _writingTracks.First(t => t.Session == i); + CommonTypes.Structs.Track lastTrack = _writingTracks.Last(t => t.Session == i); _alcSessions.Add(i, new Session { - sessionStart = (int)firstTrack.TrackStartSector - 150, - sessionEnd = (int)lastTrack.TrackEndSector + 1, + sessionStart = (int)firstTrack.StartSector - 150, + sessionEnd = (int)lastTrack.EndSector + 1, sessionSequence = (ushort)i, allBlocks = (byte)(decodedToc?.TrackDescriptors.Count(t => t.SessionNumber == i) ?? - _writingTracks.Count(t => t.TrackSession == i) + 3), + _writingTracks.Count(t => t.Session == i) + 3), nonTrackBlocks = (byte)(decodedToc?.TrackDescriptors.Count(t => t.SessionNumber == i && t.POINT >= 0xA0 && t.POINT <= 0xAF) ?? 3), - firstTrack = (ushort)firstTrack.TrackSequence, - lastTrack = (ushort)lastTrack.TrackSequence, + firstTrack = (ushort)firstTrack.Sequence, + lastTrack = (ushort)lastTrack.Sequence, trackOffset = (uint)currentTrackOffset }); - Dictionary thisSessionTracks = new Dictionary(); - _trackFlags.TryGetValue((byte)firstTrack.TrackSequence, out byte firstTrackControl); - _trackFlags.TryGetValue((byte)lastTrack.TrackSequence, out byte lastTrackControl); + Dictionary thisSessionTracks = new(); + _trackFlags.TryGetValue((byte)firstTrack.Sequence, out byte firstTrackControl); + _trackFlags.TryGetValue((byte)lastTrack.Sequence, out byte lastTrackControl); - if(firstTrackControl == 0 && - firstTrack.TrackType != TrackType.Audio) + if(firstTrackControl == 0 && + firstTrack.Type != TrackType.Audio) firstTrackControl = (byte)CdFlags.DataTrack; - if(lastTrackControl == 0 && - lastTrack.TrackType != TrackType.Audio) + if(lastTrackControl == 0 && + lastTrack.Type != TrackType.Audio) lastTrackControl = (byte)CdFlags.DataTrack; - (byte minute, byte second, byte frame) leadinPmsf = LbaToMsf(lastTrack.TrackEndSector + 1); + (byte minute, byte second, byte frame) leadinPmsf = LbaToMsf(lastTrack.EndSector + 1); if(decodedToc?.TrackDescriptors.Any(t => t.SessionNumber == i && t.POINT >= 0xA0 && t.POINT <= 0xAF) == true) @@ -682,16 +682,16 @@ namespace Aaru.DiscImages thisSessionTracks.Add(0xA0, new Track { adrCtl = (byte)((1 << 4) + firstTrackControl), - pmin = (byte)firstTrack.TrackSequence, + pmin = (byte)firstTrack.Sequence, mode = TrackMode.NoData, point = 0xA0, unknown = new byte[18], unknown2 = new byte[24], psec = (byte)(_imageInfo.MediaType == MediaType.CDI ? 0x10 - : _writingTracks.Any(t => t.TrackType == TrackType.CdMode2Form1 || - t.TrackType == TrackType.CdMode2Form2 || - t.TrackType == TrackType.CdMode2Formless) + : _writingTracks.Any(t => t.Type == TrackType.CdMode2Form1 || + t.Type == TrackType.CdMode2Form2 || + t.Type == TrackType.CdMode2Formless) ? 0x20 : 0), extraOffset = (uint)currentExtraOffset @@ -700,7 +700,7 @@ namespace Aaru.DiscImages thisSessionTracks.Add(0xA1, new Track { adrCtl = (byte)((1 << 4) + lastTrackControl), - pmin = (byte)lastTrack.TrackSequence, + pmin = (byte)lastTrack.Sequence, mode = TrackMode.NoData, point = 0xA1, unknown = new byte[18], @@ -726,17 +726,17 @@ namespace Aaru.DiscImages currentTrackOffset += Marshal.SizeOf() * 3; } - foreach(CommonTypes.Structs.Track track in _writingTracks.Where(t => t.TrackSession == i). - OrderBy(t => t.TrackSequence)) + foreach(CommonTypes.Structs.Track track in _writingTracks.Where(t => t.Session == i). + OrderBy(t => t.Sequence)) { var alcTrk = new Track(); - if(decodedToc?.TrackDescriptors.Any(t => t.SessionNumber == i && - t.POINT == track.TrackSequence) == true) + if(decodedToc?.TrackDescriptors.Any(t => t.SessionNumber == i && t.POINT == track.Sequence) == + true) { FullTOC.TrackDataDescriptor tocTrk = decodedToc.Value.TrackDescriptors.First(t => t.SessionNumber == i && - t.POINT == track.TrackSequence); + t.POINT == track.Sequence); alcTrk.adrCtl = (byte)((tocTrk.ADR << 4) + tocTrk.CONTROL); alcTrk.tno = tocTrk.TNO; @@ -752,38 +752,38 @@ namespace Aaru.DiscImages else { (byte minute, byte second, byte frame) msf = LbaToMsf((ulong)track.Indexes[1]); - _trackFlags.TryGetValue((byte)track.TrackSequence, out byte trackControl); + _trackFlags.TryGetValue((byte)track.Sequence, out byte trackControl); - if(trackControl == 0 && - track.TrackType != TrackType.Audio) + if(trackControl == 0 && + track.Type != TrackType.Audio) trackControl = (byte)CdFlags.DataTrack; alcTrk.adrCtl = (byte)((1 << 4) + trackControl); - alcTrk.point = (byte)track.TrackSequence; + alcTrk.point = (byte)track.Sequence; alcTrk.zero = 0; alcTrk.pmin = msf.minute; alcTrk.psec = msf.second; alcTrk.pframe = msf.frame; } - alcTrk.mode = TrackTypeToTrackMode(track.TrackType); + alcTrk.mode = TrackTypeToTrackMode(track.Type); - alcTrk.subMode = track.TrackSubchannelType != TrackSubchannelType.None - ? SubchannelMode.Interleaved : SubchannelMode.None; + alcTrk.subMode = track.SubchannelType != TrackSubchannelType.None ? SubchannelMode.Interleaved + : SubchannelMode.None; - alcTrk.sectorSize = (ushort)(track.TrackRawBytesPerSector + - (track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0)); + alcTrk.sectorSize = (ushort)(track.RawBytesPerSector + + (track.SubchannelType != TrackSubchannelType.None ? 96 : 0)); - alcTrk.startLba = (uint)(track.TrackStartSector + track.TrackPregap); - alcTrk.startOffset = track.TrackFileOffset + (alcTrk.sectorSize * track.TrackPregap); + alcTrk.startLba = (uint)(track.StartSector + track.Pregap); + alcTrk.startOffset = track.FileOffset + (alcTrk.sectorSize * track.Pregap); alcTrk.files = 1; alcTrk.extraOffset = (uint)currentExtraOffset; alcTrk.footerOffset = (uint)footerOffset; - if(track.TrackSequence == firstTrack.TrackSequence) + if(track.Sequence == firstTrack.Sequence) { - alcTrk.startLba -= (uint)track.TrackPregap; - alcTrk.startOffset -= alcTrk.sectorSize * track.TrackPregap; + alcTrk.startLba -= (uint)track.Pregap; + alcTrk.startOffset -= alcTrk.sectorSize * track.Pregap; } // Alcohol seems to set that for all CD tracks @@ -796,35 +796,33 @@ namespace Aaru.DiscImages alcTrk.unknown2 = new byte[24]; - thisSessionTracks.Add((int)track.TrackSequence, alcTrk); + thisSessionTracks.Add((int)track.Sequence, alcTrk); currentTrackOffset += Marshal.SizeOf(); currentExtraOffset += Marshal.SizeOf(); var trkExtra = new TrackExtra { - sectors = (uint)(track.TrackEndSector - track.TrackStartSector + 1) + sectors = (uint)(track.EndSector - track.StartSector + 1) }; - if(track.TrackSequence == firstTrack.TrackSequence) + if(track.Sequence == firstTrack.Sequence) trkExtra.pregap = 150; // When track mode changes there's a mandatory gap, Alcohol needs it - else if(thisSessionTracks.TryGetValue((int)(track.TrackSequence - 1), - out Track previousTrack) && - _alcTrackExtras.TryGetValue((int)(track.TrackSequence - 1), - out TrackExtra previousExtra) && + else if(thisSessionTracks.TryGetValue((int)(track.Sequence - 1), out Track previousTrack) && + _alcTrackExtras.TryGetValue((int)(track.Sequence - 1), out TrackExtra previousExtra) && previousTrack.mode != alcTrk.mode) { previousExtra.sectors -= 150; trkExtra.pregap = 150; - _alcTrackExtras.Remove((int)(track.TrackSequence - 1)); - _alcTrackExtras.Add((int)(track.TrackSequence - 1), previousExtra); + _alcTrackExtras.Remove((int)(track.Sequence - 1)); + _alcTrackExtras.Add((int)(track.Sequence - 1), previousExtra); } else trkExtra.pregap = 0; - _alcTrackExtras.Add((int)track.TrackSequence, trkExtra); + _alcTrackExtras.Add((int)track.Sequence, trkExtra); } if(decodedToc?.TrackDescriptors.Any(t => t.SessionNumber == i && t.POINT >= 0xB0) == true) @@ -855,11 +853,10 @@ namespace Aaru.DiscImages else if(i < sessions) { (byte minute, byte second, byte frame) leadoutAmsf = - LbaToMsf(_writingTracks.First(t => t.TrackSession == i + 1).TrackStartSector - 150); + LbaToMsf(_writingTracks.First(t => t.Session == i + 1).StartSector - 150); (byte minute, byte second, byte frame) leadoutPmsf = - LbaToMsf(_writingTracks.OrderBy(t => t.TrackSession).ThenBy(t => t.TrackSequence).Last(). - TrackStartSector); + LbaToMsf(_writingTracks.OrderBy(t => t.Session).ThenBy(t => t.Sequence).Last().StartSector); thisSessionTracks.Add(0xB0, new Track { @@ -1057,8 +1054,8 @@ namespace Aaru.DiscImages } CommonTypes.Structs.Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -1084,10 +1081,10 @@ namespace Aaru.DiscImages } case SectorTagType.CdSectorSubchannel: { - if(track.TrackSubchannelType == 0) + if(track.SubchannelType == 0) { ErrorMessage = - $"Trying to write subchannel to track {track.TrackSequence}, that does not have subchannel"; + $"Trying to write subchannel to track {track.Sequence}, that does not have subchannel"; return false; } @@ -1100,7 +1097,7 @@ namespace Aaru.DiscImages } _imageStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + 96))) + track.TrackRawBytesPerSector, + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + 96))) + track.RawBytesPerSector, SeekOrigin.Begin); _imageStream.Write(data, 0, data.Length); @@ -1125,8 +1122,8 @@ namespace Aaru.DiscImages } CommonTypes.Structs.Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -1140,10 +1137,10 @@ namespace Aaru.DiscImages case SectorTagType.CdTrackFlags: return WriteSectorTag(data, sectorAddress, tag); case SectorTagType.CdSectorSubchannel: { - if(track.TrackSubchannelType == 0) + if(track.SubchannelType == 0) { ErrorMessage = - $"Trying to write subchannel to track {track.TrackSequence}, that does not have subchannel"; + $"Trying to write subchannel to track {track.Sequence}, that does not have subchannel"; return false; } @@ -1158,7 +1155,7 @@ namespace Aaru.DiscImages for(uint i = 0; i < length; i++) { _imageStream. - Seek((long)(track.TrackFileOffset + ((i + sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + 96))) + track.TrackRawBytesPerSector, + Seek((long)(track.FileOffset + ((i + sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + 96))) + track.RawBytesPerSector, SeekOrigin.Begin); _imageStream.Write(data, (int)(i * 96), 96); diff --git a/Aaru.Images/BlindWrite4/Read.cs b/Aaru.Images/BlindWrite4/Read.cs index 1809caa36..517c25e8d 100644 --- a/Aaru.Images/BlindWrite4/Read.cs +++ b/Aaru.Images/BlindWrite4/Read.cs @@ -489,36 +489,36 @@ namespace Aaru.DiscImages { var track = new Track { - TrackDescription = bwTrack.title, - TrackEndSector = bwTrack.lastSector + Description = bwTrack.title, + EndSector = bwTrack.lastSector }; if(!string.IsNullOrEmpty(bwTrack.filename)) do { - track.TrackFilter = + track.Filter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename)); - if(track.TrackFilter != null) + if(track.Filter != null) break; - track.TrackFilter = + track.Filter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.ToLower(CultureInfo. CurrentCulture))); - if(track.TrackFilter != null) + if(track.Filter != null) break; - track.TrackFilter = + track.Filter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.ToUpper(CultureInfo. CurrentCulture))); - if(track.TrackFilter != null) + if(track.Filter != null) break; - track.TrackFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), + track.Filter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.Split(new[] { '\\' @@ -527,10 +527,10 @@ namespace Aaru.DiscImages RemoveEmptyEntries). Last())); - if(track.TrackFilter != null) + if(track.Filter != null) break; - track.TrackFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), + track.Filter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.Split(new[] { '\\' @@ -540,10 +540,10 @@ namespace Aaru.DiscImages Last(). ToLower(CultureInfo.CurrentCulture))); - if(track.TrackFilter != null) + if(track.Filter != null) break; - track.TrackFilter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), + track.Filter = filtersList.GetFilter(Path.Combine(imageFilter.GetParentFolder(), bwTrack.filename.Split(new[] { '\\' @@ -553,67 +553,67 @@ namespace Aaru.DiscImages Last(). ToUpper(CultureInfo.CurrentCulture))); - track.TrackFilter = _dataFilter; + track.Filter = _dataFilter; } while(true); else - track.TrackFilter = _dataFilter; + track.Filter = _dataFilter; - track.TrackFile = _dataFilter.GetFilename(); + track.File = _dataFilter.GetFilename(); - track.TrackFileOffset = bwTrack.offset + ((150 - bwTrack.pregapOffsetAdjustment) * 2352); + track.FileOffset = bwTrack.offset + ((150 - bwTrack.pregapOffsetAdjustment) * 2352); - track.TrackSubchannelOffset = + track.SubchannelOffset = ((bwTrack.offset / 2352) + (150 - bwTrack.pregapOffsetAdjustment)) * 96; if(bwTrack.pregap > 0) { - track.TrackPregap = (ulong)(bwTrack.startSector - bwTrack.pregap); - track.TrackStartSector = (ulong)bwTrack.pregap; + track.Pregap = (ulong)(bwTrack.startSector - bwTrack.pregap); + track.StartSector = (ulong)bwTrack.pregap; - track.TrackFileOffset -= track.TrackPregap * 2352; - track.TrackSubchannelOffset -= track.TrackPregap * 96; + track.FileOffset -= track.Pregap * 2352; + track.SubchannelOffset -= track.Pregap * 96; } else { - track.TrackPregap = (ulong)(bwTrack.startSector - bwTrack.pregap); + track.Pregap = (ulong)(bwTrack.startSector - bwTrack.pregap); if(bwTrack.pregap < 0) - track.TrackStartSector = 0; + track.StartSector = 0; else - track.TrackStartSector = (ulong)bwTrack.pregap; + track.StartSector = (ulong)bwTrack.pregap; } - track.TrackFileType = "BINARY"; - track.TrackRawBytesPerSector = 2352; - track.TrackSequence = bwTrack.point; - track.TrackSession = bwTrack.session; + track.FileType = "BINARY"; + track.RawBytesPerSector = 2352; + track.Sequence = bwTrack.point; + track.Session = bwTrack.session; - if(track.TrackSession > maxSession) - maxSession = track.TrackSession; + if(track.Session > maxSession) + maxSession = track.Session; - track.TrackSubchannelFilter = _subFilter; - track.TrackSubchannelFile = _subFilter?.GetFilename(); + track.SubchannelFilter = _subFilter; + track.SubchannelFile = _subFilter?.GetFilename(); if(_subFilter != null) { - track.TrackSubchannelType = TrackSubchannelType.Packed; + track.SubchannelType = TrackSubchannelType.Packed; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel); } else - track.TrackSubchannelType = TrackSubchannelType.None; + track.SubchannelType = TrackSubchannelType.None; switch(bwTrack.trackMode) { case TrackType.Audio: - track.TrackType = CommonTypes.Enums.TrackType.Audio; + track.Type = CommonTypes.Enums.TrackType.Audio; _imageInfo.SectorSize = 2352; - track.TrackBytesPerSector = 2352; + track.BytesPerSector = 2352; break; case TrackType.Mode1: - track.TrackType = CommonTypes.Enums.TrackType.CdMode1; + track.Type = CommonTypes.Enums.TrackType.CdMode1; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -639,11 +639,11 @@ namespace Aaru.DiscImages if(_imageInfo.SectorSize < 2048) _imageInfo.SectorSize = 2048; - track.TrackBytesPerSector = 2048; + track.BytesPerSector = 2048; break; case TrackType.Mode2: - track.TrackType = CommonTypes.Enums.TrackType.CdMode2Formless; + track.Type = CommonTypes.Enums.TrackType.CdMode2Formless; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -654,14 +654,14 @@ namespace Aaru.DiscImages if(_imageInfo.SectorSize < 2336) _imageInfo.SectorSize = 2336; - track.TrackBytesPerSector = 2336; + track.BytesPerSector = 2336; break; default: - track.TrackType = CommonTypes.Enums.TrackType.Data; - track.TrackRawBytesPerSector = 2048; + track.Type = CommonTypes.Enums.TrackType.Data; + track.RawBytesPerSector = 2048; _imageInfo.SectorSize = 2048; - track.TrackBytesPerSector = 2048; + track.BytesPerSector = 2048; break; } @@ -673,29 +673,29 @@ namespace Aaru.DiscImages var partition = new Partition { - Description = track.TrackDescription, - Size = (track.TrackEndSector - track.TrackStartSector + 1) * 2352, - Length = track.TrackEndSector - track.TrackStartSector + 1, - Sequence = track.TrackSequence, - Start = track.TrackStartSector + track.TrackPregap + Description = track.Description, + Size = (track.EndSector - track.StartSector + 1) * 2352, + Length = track.EndSector - track.StartSector + 1, + Sequence = track.Sequence, + Start = track.StartSector + track.Pregap }; partition.Offset = partition.Start * 2352; - partition.Type = track.TrackType.ToString(); + partition.Type = track.Type.ToString(); Partitions.Add(partition); Tracks.Add(track); if(bwTrack.pregap > 0) - _offsetMap[track.TrackSequence] = (ulong)bwTrack.pregap; + _offsetMap[track.Sequence] = (ulong)bwTrack.pregap; else - _offsetMap[track.TrackSequence] = 0; + _offsetMap[track.Sequence] = 0; - if(!_offsetMap.ContainsKey(track.TrackSequence)) - _offsetMap.Add(track.TrackSequence, track.TrackStartSector); + if(!_offsetMap.ContainsKey(track.Sequence)) + _offsetMap.Add(track.Sequence, track.StartSector); - if(!_trackFlags.ContainsKey(track.TrackSequence)) - _trackFlags.Add(track.TrackSequence, (byte)(bwTrack.adrCtl & 0x0F)); + if(!_trackFlags.ContainsKey(track.Sequence)) + _trackFlags.Add(track.Sequence, (byte)(bwTrack.adrCtl & 0x0F)); if(bwTrack.lastSector > _imageInfo.Sectors) _imageInfo.Sectors = bwTrack.lastSector + 1; @@ -717,33 +717,33 @@ namespace Aaru.DiscImages { var session = new Session { - SessionSequence = i, + Sequence = i, StartTrack = uint.MaxValue, StartSector = uint.MaxValue }; - foreach(Track track in Tracks.Where(track => track.TrackSession == i)) + foreach(Track track in Tracks.Where(track => track.Session == i)) { - if(track.TrackSequence < session.StartTrack) - session.StartTrack = track.TrackSequence; + if(track.Sequence < session.StartTrack) + session.StartTrack = track.Sequence; - if(track.TrackSequence > session.EndTrack) - session.StartTrack = track.TrackSequence; + if(track.Sequence > session.EndTrack) + session.StartTrack = track.Sequence; - if(track.TrackStartSector < session.StartSector) - session.StartSector = track.TrackStartSector; + if(track.StartSector < session.StartSector) + session.StartSector = track.StartSector; - if(track.TrackEndSector > session.EndSector) - session.EndSector = track.TrackEndSector; + if(track.EndSector > session.EndSector) + session.EndSector = track.EndSector; } Sessions.Add(session); } // As long as subchannel is written for any track, it is present for all tracks - if(Tracks.Any(t => t.TrackSubchannelType == TrackSubchannelType.Packed)) + if(Tracks.Any(t => t.SubchannelType == TrackSubchannelType.Packed)) foreach(Track track in Tracks) - track.TrackSubchannelType = TrackSubchannelType.Packed; + track.SubchannelType = TrackSubchannelType.Packed; _imageInfo.MediaType = MediaType.CD; @@ -765,18 +765,18 @@ namespace Aaru.DiscImages foreach(Track bwTrack in Tracks) { // First track is audio - firstAudio |= bwTrack.TrackSequence == 1 && bwTrack.TrackType == CommonTypes.Enums.TrackType.Audio; + firstAudio |= bwTrack.Sequence == 1 && bwTrack.Type == CommonTypes.Enums.TrackType.Audio; // First track is data - firstData |= bwTrack.TrackSequence == 1 && bwTrack.TrackType != CommonTypes.Enums.TrackType.Audio; + firstData |= bwTrack.Sequence == 1 && bwTrack.Type != CommonTypes.Enums.TrackType.Audio; // Any non first track is data - data |= bwTrack.TrackSequence != 1 && bwTrack.TrackType != CommonTypes.Enums.TrackType.Audio; + data |= bwTrack.Sequence != 1 && bwTrack.Type != CommonTypes.Enums.TrackType.Audio; // Any non first track is audio - audio |= bwTrack.TrackSequence != 1 && bwTrack.TrackType == CommonTypes.Enums.TrackType.Audio; + audio |= bwTrack.Sequence != 1 && bwTrack.Type == CommonTypes.Enums.TrackType.Audio; - switch(bwTrack.TrackType) + switch(bwTrack.Type) { case CommonTypes.Enums.TrackType.CdMode2Formless: mode2 = true; @@ -844,9 +844,9 @@ namespace Aaru.DiscImages public byte[] ReadSectors(ulong sectorAddress, uint length) { foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key + from track in Tracks where track.Sequence == kvp.Key where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + track.EndSector - track.StartSector + 1 select kvp) return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found"); @@ -856,9 +856,9 @@ namespace Aaru.DiscImages public byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag) { foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key + from track in Tracks where track.Sequence == kvp.Key where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + track.EndSector - track.StartSector + 1 select kvp) return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag); throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found"); @@ -869,10 +869,10 @@ namespace Aaru.DiscImages { var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.TrackSequence == track)) + foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.Sequence == track)) { aaruTrack = bwTrack; @@ -882,16 +882,16 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress > aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1) + if(length + sectorAddress > aaruTrack.EndSector - aaruTrack.StartSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector - aaruTrack.StartSector + 1}), won't cross tracks"); uint sectorOffset; uint sectorSize; uint sectorSkip; bool mode2 = false; - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case CommonTypes.Enums.TrackType.CdMode1: { @@ -931,11 +931,11 @@ namespace Aaru.DiscImages byte[] buffer = new byte[sectorSize * length]; - _imageStream = aaruTrack.TrackFilter.GetDataForkStream(); + _imageStream = aaruTrack.Filter.GetDataForkStream(); var br = new BinaryReader(_imageStream); br.BaseStream. - Seek((long)aaruTrack.TrackFileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), + Seek((long)aaruTrack.FileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), SeekOrigin.Begin); if(mode2) @@ -975,10 +975,10 @@ namespace Aaru.DiscImages { var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.TrackSequence == track)) + foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.Sequence == track)) { aaruTrack = bwTrack; @@ -988,15 +988,15 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress > aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1) + if(length + sectorAddress > aaruTrack.EndSector - aaruTrack.StartSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector - aaruTrack.StartSector + 1}), won't cross tracks"); uint sectorOffset; uint sectorSize; uint sectorSkip; - if(aaruTrack.TrackType == CommonTypes.Enums.TrackType.Data) + if(aaruTrack.Type == CommonTypes.Enums.TrackType.Data) throw new ArgumentException("Unsupported tag requested", nameof(tag)); switch(tag) @@ -1020,7 +1020,7 @@ namespace Aaru.DiscImages default: throw new ArgumentException("Unsupported tag requested", nameof(tag)); } - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case CommonTypes.Enums.TrackType.CdMode1: switch(tag) @@ -1148,13 +1148,13 @@ namespace Aaru.DiscImages byte[] buffer = new byte[sectorSize * length]; - _imageStream = tag == SectorTagType.CdSectorSubchannel ? aaruTrack.TrackSubchannelFilter.GetDataForkStream() - : aaruTrack.TrackFilter.GetDataForkStream(); + _imageStream = tag == SectorTagType.CdSectorSubchannel ? aaruTrack.SubchannelFilter.GetDataForkStream() + : aaruTrack.Filter.GetDataForkStream(); var br = new BinaryReader(_imageStream); br.BaseStream. - Seek((long)(tag == SectorTagType.CdSectorSubchannel ? aaruTrack.TrackSubchannelOffset : aaruTrack.TrackFileOffset) + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), + Seek((long)(tag == SectorTagType.CdSectorSubchannel ? aaruTrack.SubchannelOffset : aaruTrack.FileOffset) + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), SeekOrigin.Begin); if(sectorOffset == 0 && @@ -1182,9 +1182,9 @@ namespace Aaru.DiscImages public byte[] ReadSectorsLong(ulong sectorAddress, uint length) { foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key + from track in Tracks where track.Sequence == kvp.Key where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + track.EndSector - track.StartSector + 1 select kvp) return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found"); @@ -1195,10 +1195,10 @@ namespace Aaru.DiscImages { var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.TrackSequence == track)) + foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.Sequence == track)) { aaruTrack = bwTrack; @@ -1208,15 +1208,15 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress > aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1) + if(length + sectorAddress > aaruTrack.EndSector - aaruTrack.StartSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector - aaruTrack.StartSector + 1}), won't cross tracks"); uint sectorOffset; uint sectorSize; uint sectorSkip; - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case CommonTypes.Enums.TrackType.Audio: case CommonTypes.Enums.TrackType.CdMode1: @@ -1224,7 +1224,7 @@ namespace Aaru.DiscImages case CommonTypes.Enums.TrackType.Data: { sectorOffset = 0; - sectorSize = (uint)aaruTrack.TrackRawBytesPerSector; + sectorSize = (uint)aaruTrack.RawBytesPerSector; sectorSkip = 0; break; @@ -1232,11 +1232,11 @@ namespace Aaru.DiscImages default: throw new FeatureSupportedButNotImplementedImageException("Unsupported track type"); } - _imageStream = aaruTrack.TrackFilter.GetDataForkStream(); + _imageStream = aaruTrack.Filter.GetDataForkStream(); var br = new BinaryReader(_imageStream); br.BaseStream. - Seek((long)aaruTrack.TrackFileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), + Seek((long)aaruTrack.FileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), SeekOrigin.Begin); byte[] buffer = br.ReadBytes((int)(sectorSize * length)); @@ -1248,13 +1248,13 @@ namespace Aaru.DiscImages public List GetSessionTracks(Session session) { if(Sessions.Contains(session)) - return GetSessionTracks(session.SessionSequence); + return GetSessionTracks(session.Sequence); throw new ImageNotSupportedException("Session does not exist in disc image"); } /// public List GetSessionTracks(ushort session) => - Tracks.Where(track => track.TrackSession == session).ToList(); + Tracks.Where(track => track.Session == session).ToList(); } } \ No newline at end of file diff --git a/Aaru.Images/BlindWrite5/Read.cs b/Aaru.Images/BlindWrite5/Read.cs index 0d196b3e3..43ffa6faa 100644 --- a/Aaru.Images/BlindWrite5/Read.cs +++ b/Aaru.Images/BlindWrite5/Read.cs @@ -644,11 +644,11 @@ namespace Aaru.DiscImages { Sessions.Add(new Session { - SessionSequence = ses.Sequence, - StartSector = ses.Start < 0 ? 0 : (ulong)ses.Start, - EndSector = (ulong)ses.End - 1, - StartTrack = ses.FirstTrack, - EndTrack = ses.LastTrack + Sequence = ses.Sequence, + StartSector = ses.Start < 0 ? 0 : (ulong)ses.Start, + EndSector = (ulong)ses.End - 1, + StartTrack = ses.FirstTrack, + EndTrack = ses.LastTrack }); if(ses.Sequence < firstSession) @@ -683,8 +683,8 @@ namespace Aaru.DiscImages switch(trk.type) { case TrackType.Audio: - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; if(_imageInfo.SectorSize < 2352) _imageInfo.SectorSize = 2352; @@ -713,8 +713,8 @@ namespace Aaru.DiscImages if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorEdc)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorEdc); - track.TrackBytesPerSector = 2048; - track.TrackRawBytesPerSector = 2352; + track.BytesPerSector = 2048; + track.RawBytesPerSector = 2352; if(_imageInfo.SectorSize < 2048) _imageInfo.SectorSize = 2048; @@ -727,8 +727,8 @@ namespace Aaru.DiscImages if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorHeader)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorHeader); - track.TrackBytesPerSector = 2336; - track.TrackRawBytesPerSector = 2352; + track.BytesPerSector = 2336; + track.RawBytesPerSector = 2352; if(_imageInfo.SectorSize < 2336) _imageInfo.SectorSize = 2336; @@ -747,16 +747,16 @@ namespace Aaru.DiscImages if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorEdc)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorEdc); - track.TrackBytesPerSector = 2336; - track.TrackRawBytesPerSector = 2352; + track.BytesPerSector = 2336; + track.RawBytesPerSector = 2352; if(_imageInfo.SectorSize < 2324) _imageInfo.SectorSize = 2324; break; case TrackType.Dvd: - track.TrackBytesPerSector = 2048; - track.TrackRawBytesPerSector = 2048; + track.BytesPerSector = 2048; + track.RawBytesPerSector = 2048; if(_imageInfo.SectorSize < 2048) _imageInfo.SectorSize = 2048; @@ -766,9 +766,9 @@ namespace Aaru.DiscImages break; } - track.TrackDescription = $"Track {trk.point}"; - track.TrackStartSector = (ulong)(trk.startLba + trk.pregap); - track.TrackEndSector = (ulong)(trk.sectors + trk.startLba) - 1; + track.Description = $"Track {trk.point}"; + track.StartSector = (ulong)(trk.startLba + trk.pregap); + track.EndSector = (ulong)(trk.sectors + trk.startLba) - 1; List fileCharsForThisTrack = _filePaths. Where(chars => @@ -979,23 +979,23 @@ namespace Aaru.DiscImages return false; } - track.TrackFilter = splitStream.Filter; - track.TrackFile = $"{filename}.{extension}"; + track.Filter = splitStream.Filter; + track.File = $"{filename}.{extension}"; if(trk.startLba >= 0) - track.TrackFileOffset = + track.FileOffset = (ulong)((trk.startLba * splitStartChars.SectorSize) + splitStartChars.Offset); else - track.TrackFileOffset = (ulong)(trk.startLba * -1 * splitStartChars.SectorSize); + track.FileOffset = (ulong)(trk.startLba * -1 * splitStartChars.SectorSize); - track.TrackFileType = "BINARY"; + track.FileType = "BINARY"; if(splitStartChars.Subchannel != TrackSubchannelType.None) { - track.TrackSubchannelFilter = track.TrackFilter; - track.TrackSubchannelFile = track.TrackFile; - track.TrackSubchannelType = splitStartChars.Subchannel; - track.TrackSubchannelOffset = track.TrackFileOffset; + track.SubchannelFilter = track.Filter; + track.SubchannelFile = track.File; + track.SubchannelType = splitStartChars.Subchannel; + track.SubchannelOffset = track.FileOffset; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel); @@ -1010,23 +1010,23 @@ namespace Aaru.DiscImages else foreach(DataFileCharacteristics chars in fileCharsForThisTrack) { - track.TrackFilter = chars.FileFilter; - track.TrackFile = chars.FileFilter.GetFilename(); + track.Filter = chars.FileFilter; + track.File = chars.FileFilter.GetFilename(); if(trk.startLba >= 0) - track.TrackFileOffset = - (ulong)((trk.startLba - chars.StartLba) * chars.SectorSize) + chars.Offset; + track.FileOffset = (ulong)((trk.startLba - chars.StartLba) * chars.SectorSize) + + chars.Offset; else - track.TrackFileOffset = (ulong)(trk.startLba * -1 * chars.SectorSize); + track.FileOffset = (ulong)(trk.startLba * -1 * chars.SectorSize); - track.TrackFileType = "BINARY"; + track.FileType = "BINARY"; if(chars.Subchannel != TrackSubchannelType.None) { - track.TrackSubchannelFilter = track.TrackFilter; - track.TrackSubchannelFile = track.TrackFile; - track.TrackSubchannelType = chars.Subchannel; - track.TrackSubchannelOffset = track.TrackFileOffset; + track.SubchannelFilter = track.Filter; + track.SubchannelFile = track.File; + track.SubchannelType = chars.Subchannel; + track.SubchannelOffset = track.FileOffset; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel); @@ -1035,78 +1035,73 @@ namespace Aaru.DiscImages break; } - if(track.TrackFilter is null) + if(track.Filter is null) { AaruConsole.ErrorWriteLine("Could not find image for track {0}", trk.point); return false; } - track.TrackPregap = trk.pregap; - track.TrackSequence = trk.point; - track.TrackType = BlindWriteTrackTypeToTrackType(trk.type); + track.Pregap = trk.pregap; + track.Sequence = trk.point; + track.Type = BlindWriteTrackTypeToTrackType(trk.type); - if(trk.pregap > 0 && - track.TrackStartSector > 0) + if(trk.pregap > 0 && + track.StartSector > 0) { - track.Indexes[0] = (int)track.TrackStartSector - (int)trk.pregap; + track.Indexes[0] = (int)track.StartSector - (int)trk.pregap; if(track.Indexes[0] < 0) track.Indexes[0] = 0; } - track.Indexes[1] = (int)track.TrackStartSector; + track.Indexes[1] = (int)track.StartSector; - partition.Description = track.TrackDescription; + partition.Description = track.Description; - partition.Size = (track.TrackEndSector - track.TrackStartSector) * - (ulong)track.TrackRawBytesPerSector; + partition.Size = (track.EndSector - track.StartSector) * (ulong)track.RawBytesPerSector; - partition.Length = track.TrackEndSector - track.TrackStartSector + 1; - partition.Sequence = track.TrackSequence; + partition.Length = track.EndSector - track.StartSector + 1; + partition.Sequence = track.Sequence; partition.Offset = offsetBytes; - partition.Start = track.TrackStartSector; - partition.Type = track.TrackType.ToString(); + partition.Start = track.StartSector; + partition.Type = track.Type.ToString(); offsetBytes += partition.Size; - if(track.TrackStartSector >= trk.pregap) - track.TrackStartSector -= trk.pregap; + if(track.StartSector >= trk.pregap) + track.StartSector -= trk.pregap; - if(track.TrackEndSector > _imageInfo.Sectors) - _imageInfo.Sectors = track.TrackEndSector + 1; + if(track.EndSector > _imageInfo.Sectors) + _imageInfo.Sectors = track.EndSector + 1; Tracks.Add(track); Partitions.Add(partition); - _offsetMap.Add(track.TrackSequence, track.TrackStartSector); + _offsetMap.Add(track.Sequence, track.StartSector); } } foreach(Track track in Tracks) { Session trackSession = - Sessions.FirstOrDefault(s => track.TrackSequence >= s.StartTrack && - track.TrackSequence <= s.EndTrack); + Sessions.FirstOrDefault(s => track.Sequence >= s.StartTrack && track.Sequence <= s.EndTrack); - track.TrackSession = trackSession.SessionSequence; + track.Session = trackSession.Sequence; } AaruConsole.DebugWriteLine("BlindWrite5 plugin", "printing track map"); foreach(Track track in Tracks) { - AaruConsole.DebugWriteLine("BlindWrite5 plugin", "Partition sequence: {0}", track.TrackSequence); + AaruConsole.DebugWriteLine("BlindWrite5 plugin", "Partition sequence: {0}", track.Sequence); - AaruConsole.DebugWriteLine("BlindWrite5 plugin", "\tPartition description: {0}", - track.TrackDescription); + AaruConsole.DebugWriteLine("BlindWrite5 plugin", "\tPartition description: {0}", track.Description); - AaruConsole.DebugWriteLine("BlindWrite5 plugin", "\tPartition type: {0}", track.TrackType); + AaruConsole.DebugWriteLine("BlindWrite5 plugin", "\tPartition type: {0}", track.Type); - AaruConsole.DebugWriteLine("BlindWrite5 plugin", "\tPartition starting sector: {0}", - track.TrackStartSector); + AaruConsole.DebugWriteLine("BlindWrite5 plugin", "\tPartition starting sector: {0}", track.StartSector); - AaruConsole.DebugWriteLine("BlindWrite5 plugin", "\tPartition ending sector: {0}", - track.TrackEndSector); + AaruConsole.DebugWriteLine("BlindWrite5 plugin", "\tPartition ending sector: {0}", track.EndSector); } AaruConsole.DebugWriteLine("BlindWrite5 plugin", "printing partition map"); @@ -1226,18 +1221,18 @@ namespace Aaru.DiscImages foreach(Track bwTrack in Tracks) { // First track is audio - firstAudio |= bwTrack.TrackSequence == 1 && bwTrack.TrackType == CommonTypes.Enums.TrackType.Audio; + firstAudio |= bwTrack.Sequence == 1 && bwTrack.Type == CommonTypes.Enums.TrackType.Audio; // First track is data - firstData |= bwTrack.TrackSequence == 1 && bwTrack.TrackType != CommonTypes.Enums.TrackType.Audio; + firstData |= bwTrack.Sequence == 1 && bwTrack.Type != CommonTypes.Enums.TrackType.Audio; // Any non first track is data - data |= bwTrack.TrackSequence != 1 && bwTrack.TrackType != CommonTypes.Enums.TrackType.Audio; + data |= bwTrack.Sequence != 1 && bwTrack.Type != CommonTypes.Enums.TrackType.Audio; // Any non first track is audio - audio |= bwTrack.TrackSequence != 1 && bwTrack.TrackType == CommonTypes.Enums.TrackType.Audio; + audio |= bwTrack.Sequence != 1 && bwTrack.Type == CommonTypes.Enums.TrackType.Audio; - switch(bwTrack.TrackType) + switch(bwTrack.Type) { case CommonTypes.Enums.TrackType.CdMode2Formless: case CommonTypes.Enums.TrackType.CdMode2Form1: @@ -1388,7 +1383,7 @@ namespace Aaru.DiscImages _header.profile != ProfileNumber.CDROM) foreach(Track track in Tracks) { - track.TrackPregap = 0; + track.Pregap = 0; track.Indexes?.Clear(); } @@ -1478,10 +1473,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectors(ulong sectorAddress, uint length) { - foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value < + track.EndSector - track.StartSector + 1 select kvp) return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found"); @@ -1490,10 +1485,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag) { - foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value < + track.EndSector - track.StartSector + 1 select kvp) return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag); throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found"); @@ -1505,10 +1500,10 @@ namespace Aaru.DiscImages // TODO: Cross data files var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.TrackSequence == track)) + foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.Sequence == track)) { aaruTrack = bwTrack; @@ -1518,14 +1513,14 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress > aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1) + if(length + sectorAddress > aaruTrack.EndSector - aaruTrack.StartSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector - aaruTrack.StartSector + 1}), won't cross tracks"); DataFileCharacteristics chars = (from characteristics in _filePaths let firstSector = characteristics.StartLba let lastSector = firstSector + characteristics.Sectors - 1 let wantedSector = - (int)(sectorAddress + aaruTrack.TrackStartSector) + (int)(sectorAddress + aaruTrack.StartSector) where wantedSector >= firstSector && wantedSector <= lastSector select characteristics).FirstOrDefault(); @@ -1538,7 +1533,7 @@ namespace Aaru.DiscImages uint sectorSkip; bool mode2 = false; - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case CommonTypes.Enums.TrackType.CdMode1: { @@ -1601,7 +1596,7 @@ namespace Aaru.DiscImages var br = new BinaryReader(_imageStream); br.BaseStream. - Seek((long)aaruTrack.TrackFileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), + Seek((long)aaruTrack.FileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), SeekOrigin.Begin); if(mode2) @@ -1641,10 +1636,10 @@ namespace Aaru.DiscImages // TODO: Cross data files var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.TrackSequence == track)) + foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.Sequence == track)) { aaruTrack = bwTrack; @@ -1654,14 +1649,14 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress > aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1) + if(length + sectorAddress > aaruTrack.EndSector - aaruTrack.StartSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector - aaruTrack.StartSector + 1}), won't cross tracks"); DataFileCharacteristics chars = (from characteristics in _filePaths let firstSector = characteristics.StartLba let lastSector = firstSector + characteristics.Sectors - 1 let wantedSector = - (int)(sectorAddress + aaruTrack.TrackStartSector) + (int)(sectorAddress + aaruTrack.StartSector) where wantedSector >= firstSector && wantedSector <= lastSector select characteristics).FirstOrDefault(); @@ -1669,7 +1664,7 @@ namespace Aaru.DiscImages chars.FileFilter == null) throw new ArgumentOutOfRangeException(nameof(chars.FileFilter), "Track does not exist in disc image"); - if(aaruTrack.TrackType == CommonTypes.Enums.TrackType.Data) + if(aaruTrack.Type == CommonTypes.Enums.TrackType.Data) throw new ArgumentException("Unsupported tag requested", nameof(tag)); switch(tag) @@ -1697,7 +1692,7 @@ namespace Aaru.DiscImages uint sectorSize; uint sectorSkip; - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case CommonTypes.Enums.TrackType.CdMode1: switch(tag) @@ -2095,11 +2090,11 @@ namespace Aaru.DiscImages byte[] buffer = new byte[sectorSize * length]; - _imageStream = aaruTrack.TrackFilter.GetDataForkStream(); + _imageStream = aaruTrack.Filter.GetDataForkStream(); var br = new BinaryReader(_imageStream); br.BaseStream. - Seek((long)aaruTrack.TrackFileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), + Seek((long)aaruTrack.FileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), SeekOrigin.Begin); if(sectorOffset == 0 && @@ -2134,10 +2129,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectorsLong(ulong sectorAddress, uint length) { - foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value < + track.EndSector - track.StartSector + 1 select kvp) return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), "Sector address not found"); @@ -2149,10 +2144,10 @@ namespace Aaru.DiscImages // TODO: Cross data files var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.TrackSequence == track)) + foreach(Track bwTrack in Tracks.Where(bwTrack => bwTrack.Sequence == track)) { aaruTrack = bwTrack; @@ -2162,14 +2157,14 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress > aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1) + if(length + sectorAddress > aaruTrack.EndSector - aaruTrack.StartSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector - aaruTrack.StartSector + 1}), won't cross tracks"); DataFileCharacteristics chars = (from characteristics in _filePaths let firstSector = characteristics.StartLba let lastSector = firstSector + characteristics.Sectors - 1 let wantedSector = - (int)(sectorAddress + aaruTrack.TrackStartSector) + (int)(sectorAddress + aaruTrack.StartSector) where wantedSector >= firstSector && wantedSector <= lastSector select characteristics).FirstOrDefault(); @@ -2181,7 +2176,7 @@ namespace Aaru.DiscImages uint sectorSize; uint sectorSkip; - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case CommonTypes.Enums.TrackType.CdMode1: case CommonTypes.Enums.TrackType.CdMode2Formless: @@ -2225,11 +2220,11 @@ namespace Aaru.DiscImages byte[] buffer = new byte[sectorSize * length]; - _imageStream = aaruTrack.TrackFilter.GetDataForkStream(); + _imageStream = aaruTrack.Filter.GetDataForkStream(); var br = new BinaryReader(_imageStream); br.BaseStream. - Seek((long)aaruTrack.TrackFileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), + Seek((long)aaruTrack.FileOffset + (long)(sectorAddress * (sectorOffset + sectorSize + sectorSkip)), SeekOrigin.Begin); if(sectorOffset == 0 && @@ -2251,13 +2246,13 @@ namespace Aaru.DiscImages public List GetSessionTracks(Session session) { if(Sessions.Contains(session)) - return GetSessionTracks(session.SessionSequence); + return GetSessionTracks(session.Sequence); throw new ImageNotSupportedException("Session does not exist in disc image"); } /// public List GetSessionTracks(ushort session) => - Tracks.Where(aaruTrack => aaruTrack.TrackSession == session).ToList(); + Tracks.Where(aaruTrack => aaruTrack.Session == session).ToList(); } } \ No newline at end of file diff --git a/Aaru.Images/CDRDAO/CDRDAO.cs b/Aaru.Images/CDRDAO/CDRDAO.cs index ba81b7828..a7e75c8d3 100644 --- a/Aaru.Images/CDRDAO/CDRDAO.cs +++ b/Aaru.Images/CDRDAO/CDRDAO.cs @@ -50,7 +50,7 @@ namespace Aaru.DiscImages CdrdaoDisc _discimage; ImageInfo _imageInfo; Stream _imageStream; - /// Dictionary, index is track #, value is TrackFile + /// Dictionary, index is track #, value is File Dictionary _offsetmap; SectorBuilder _sectorBuilder; bool _separateTracksWriting; diff --git a/Aaru.Images/CDRDAO/Helpers.cs b/Aaru.Images/CDRDAO/Helpers.cs index 92933ae9b..dfc79be0b 100644 --- a/Aaru.Images/CDRDAO/Helpers.cs +++ b/Aaru.Images/CDRDAO/Helpers.cs @@ -74,21 +74,17 @@ namespace Aaru.DiscImages static string GetTrackMode(Track track) { - switch(track.TrackType) + switch(track.Type) { - case TrackType.Audio when track.TrackRawBytesPerSector == 2352: return CDRDAO_TRACK_TYPE_AUDIO; - case TrackType.Data: return CDRDAO_TRACK_TYPE_MODE1; - case TrackType.CdMode1 when track.TrackRawBytesPerSector == 2352: return CDRDAO_TRACK_TYPE_MODE1_RAW; - case TrackType.CdMode2Formless - when track.TrackRawBytesPerSector != 2352: return CDRDAO_TRACK_TYPE_MODE2; - case TrackType.CdMode2Form1 - when track.TrackRawBytesPerSector != 2352: return CDRDAO_TRACK_TYPE_MODE2_FORM1; - case TrackType.CdMode2Form2 - when track.TrackRawBytesPerSector != 2352: return CDRDAO_TRACK_TYPE_MODE2_FORM2; - case TrackType.CdMode2Formless when track.TrackRawBytesPerSector == 2352: - case TrackType.CdMode2Form1 when track.TrackRawBytesPerSector == 2352: - case TrackType.CdMode2Form2 - when track.TrackRawBytesPerSector == 2352: return CDRDAO_TRACK_TYPE_MODE2_RAW; + case TrackType.Audio when track.RawBytesPerSector == 2352: return CDRDAO_TRACK_TYPE_AUDIO; + case TrackType.Data: return CDRDAO_TRACK_TYPE_MODE1; + case TrackType.CdMode1 when track.RawBytesPerSector == 2352: return CDRDAO_TRACK_TYPE_MODE1_RAW; + case TrackType.CdMode2Formless when track.RawBytesPerSector != 2352: return CDRDAO_TRACK_TYPE_MODE2; + case TrackType.CdMode2Form1 when track.RawBytesPerSector != 2352: return CDRDAO_TRACK_TYPE_MODE2_FORM1; + case TrackType.CdMode2Form2 when track.RawBytesPerSector != 2352: return CDRDAO_TRACK_TYPE_MODE2_FORM2; + case TrackType.CdMode2Formless when track.RawBytesPerSector == 2352: + case TrackType.CdMode2Form1 when track.RawBytesPerSector == 2352: + case TrackType.CdMode2Form2 when track.RawBytesPerSector == 2352: return CDRDAO_TRACK_TYPE_MODE2_RAW; default: return CDRDAO_TRACK_TYPE_MODE1; } } diff --git a/Aaru.Images/CDRDAO/Properties.cs b/Aaru.Images/CDRDAO/Properties.cs index f2a1f1dba..8868582c4 100644 --- a/Aaru.Images/CDRDAO/Properties.cs +++ b/Aaru.Images/CDRDAO/Properties.cs @@ -59,7 +59,7 @@ namespace Aaru.DiscImages /// public string Name => "CDRDAO tocfile"; /// - public Guid Id => new Guid("04D7BA12-1BE8-44D4-97A4-1B48A505463E"); + public Guid Id => new("04D7BA12-1BE8-44D4-97A4-1B48A505463E"); /// public string Format => "CDRDAO tocfile"; /// @@ -72,18 +72,18 @@ namespace Aaru.DiscImages { get { - Track firstTrack = Tracks.First(t => t.TrackSequence == Tracks.Min(m => m.TrackSequence)); - Track lastTrack = Tracks.First(t => t.TrackSequence == Tracks.Max(m => m.TrackSequence)); + Track firstTrack = Tracks.First(t => t.Sequence == Tracks.Min(m => m.Sequence)); + Track lastTrack = Tracks.First(t => t.Sequence == Tracks.Max(m => m.Sequence)); return new List { - new Session + new() { - SessionSequence = 1, - StartSector = firstTrack.TrackStartSector, - EndSector = lastTrack.TrackEndSector, - StartTrack = firstTrack.TrackSequence, - EndTrack = lastTrack.TrackSequence + Sequence = 1, + StartSector = firstTrack.StartSector, + EndSector = lastTrack.EndSector, + StartTrack = firstTrack.Sequence, + EndTrack = lastTrack.Sequence } }; } @@ -94,47 +94,46 @@ namespace Aaru.DiscImages { get { - List tracks = new List(); + List tracks = new(); foreach(CdrdaoTrack cdrTrack in _discimage.Tracks) { var aaruTrack = new Track { - TrackDescription = cdrTrack.Title, - TrackStartSector = cdrTrack.StartSector, - TrackPregap = cdrTrack.Pregap, - TrackSession = 1, - TrackSequence = cdrTrack.Sequence, - TrackType = CdrdaoTrackTypeToTrackType(cdrTrack.Tracktype), - TrackFilter = cdrTrack.Trackfile.Datafilter, - TrackFile = cdrTrack.Trackfile.Datafilter.GetFilename(), - TrackFileOffset = cdrTrack.Trackfile.Offset, - TrackFileType = cdrTrack.Trackfile.Filetype, - TrackRawBytesPerSector = cdrTrack.Bps, - TrackBytesPerSector = CdrdaoTrackTypeToCookedBytesPerSector(cdrTrack.Tracktype) + Description = cdrTrack.Title, + StartSector = cdrTrack.StartSector, + Pregap = cdrTrack.Pregap, + Session = 1, + Sequence = cdrTrack.Sequence, + Type = CdrdaoTrackTypeToTrackType(cdrTrack.Tracktype), + Filter = cdrTrack.Trackfile.Datafilter, + File = cdrTrack.Trackfile.Datafilter.GetFilename(), + FileOffset = cdrTrack.Trackfile.Offset, + FileType = cdrTrack.Trackfile.Filetype, + RawBytesPerSector = cdrTrack.Bps, + BytesPerSector = CdrdaoTrackTypeToCookedBytesPerSector(cdrTrack.Tracktype) }; - aaruTrack.TrackEndSector = aaruTrack.TrackStartSector + cdrTrack.Sectors - 1; + aaruTrack.EndSector = aaruTrack.StartSector + cdrTrack.Sectors - 1; - if(!cdrTrack.Indexes.TryGetValue(0, out aaruTrack.TrackStartSector)) - cdrTrack.Indexes.TryGetValue(1, out aaruTrack.TrackStartSector); + if(!cdrTrack.Indexes.TryGetValue(0, out aaruTrack.StartSector)) + cdrTrack.Indexes.TryGetValue(1, out aaruTrack.StartSector); if(cdrTrack.Subchannel) { - aaruTrack.TrackSubchannelType = cdrTrack.Packedsubchannel - ? TrackSubchannelType.PackedInterleaved - : TrackSubchannelType.RawInterleaved; + aaruTrack.SubchannelType = cdrTrack.Packedsubchannel ? TrackSubchannelType.PackedInterleaved + : TrackSubchannelType.RawInterleaved; - aaruTrack.TrackSubchannelFilter = cdrTrack.Trackfile.Datafilter; - aaruTrack.TrackSubchannelFile = cdrTrack.Trackfile.Datafilter.GetFilename(); - aaruTrack.TrackSubchannelOffset = cdrTrack.Trackfile.Offset; + aaruTrack.SubchannelFilter = cdrTrack.Trackfile.Datafilter; + aaruTrack.SubchannelFile = cdrTrack.Trackfile.Datafilter.GetFilename(); + aaruTrack.SubchannelOffset = cdrTrack.Trackfile.Offset; } else - aaruTrack.TrackSubchannelType = TrackSubchannelType.None; + aaruTrack.SubchannelType = TrackSubchannelType.None; - if(aaruTrack.TrackSequence == 1) + if(aaruTrack.Sequence == 1) { - aaruTrack.TrackPregap = 150; + aaruTrack.Pregap = 150; if(cdrTrack.Indexes.Count == 0) { diff --git a/Aaru.Images/CDRDAO/Read.cs b/Aaru.Images/CDRDAO/Read.cs index 51dadb951..deae88d33 100644 --- a/Aaru.Images/CDRDAO/Read.cs +++ b/Aaru.Images/CDRDAO/Read.cs @@ -1485,7 +1485,7 @@ namespace Aaru.DiscImages } /// - public List GetSessionTracks(Session session) => GetSessionTracks(session.SessionSequence); + public List GetSessionTracks(Session session) => GetSessionTracks(session.Sequence); /// public List GetSessionTracks(ushort session) diff --git a/Aaru.Images/CDRDAO/Write.cs b/Aaru.Images/CDRDAO/Write.cs index 75b6a90f0..948b7735c 100644 --- a/Aaru.Images/CDRDAO/Write.cs +++ b/Aaru.Images/CDRDAO/Write.cs @@ -149,8 +149,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -159,7 +159,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -168,14 +168,14 @@ namespace Aaru.DiscImages return false; } - if(track.TrackBytesPerSector != track.TrackRawBytesPerSector) + if(track.BytesPerSector != track.RawBytesPerSector) { ErrorMessage = "Invalid write mode for this sector"; return false; } - if(data.Length != track.TrackRawBytesPerSector) + if(data.Length != track.RawBytesPerSector) { ErrorMessage = "Incorrect data size"; @@ -183,7 +183,7 @@ namespace Aaru.DiscImages } // cdrdao audio tracks are endian swapped corresponding to Aaru - if(track.TrackType == TrackType.Audio) + if(track.Type == TrackType.Audio) { byte[] swapped = new byte[data.Length]; @@ -197,7 +197,7 @@ namespace Aaru.DiscImages } trackStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); trackStream.Write(data, 0, data.Length); @@ -216,8 +216,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -226,7 +226,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -235,21 +235,21 @@ namespace Aaru.DiscImages return false; } - if(track.TrackBytesPerSector != track.TrackRawBytesPerSector) + if(track.BytesPerSector != track.RawBytesPerSector) { ErrorMessage = "Invalid write mode for this sector"; return false; } - if(sectorAddress + length > track.TrackEndSector + 1) + if(sectorAddress + length > track.EndSector + 1) { ErrorMessage = "Can't cross tracks"; return false; } - if(data.Length % track.TrackRawBytesPerSector != 0) + if(data.Length % track.RawBytesPerSector != 0) { ErrorMessage = "Incorrect data size"; @@ -257,7 +257,7 @@ namespace Aaru.DiscImages } // cdrdao audio tracks are endian swapped corresponding to Aaru - if(track.TrackType == TrackType.Audio) + if(track.Type == TrackType.Audio) { byte[] swapped = new byte[data.Length]; @@ -270,11 +270,11 @@ namespace Aaru.DiscImages data = swapped; } - switch(track.TrackSubchannelType) + switch(track.SubchannelType) { case TrackSubchannelType.None: trackStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); trackStream.Write(data, 0, data.Length); @@ -285,12 +285,12 @@ namespace Aaru.DiscImages case TrackSubchannelType.Raw: case TrackSubchannelType.RawInterleaved: trackStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + 96))), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + 96))), SeekOrigin.Begin); for(uint i = 0; i < length; i++) { - trackStream.Write(data, (int)(i * track.TrackRawBytesPerSector), track.TrackRawBytesPerSector); + trackStream.Write(data, (int)(i * track.RawBytesPerSector), track.RawBytesPerSector); trackStream.Position += 96; } @@ -315,8 +315,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -325,7 +325,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -334,7 +334,7 @@ namespace Aaru.DiscImages return false; } - if(data.Length != track.TrackRawBytesPerSector) + if(data.Length != track.RawBytesPerSector) { ErrorMessage = "Incorrect data size"; @@ -342,7 +342,7 @@ namespace Aaru.DiscImages } // cdrdao audio tracks are endian swapped corresponding to Aaru - if(track.TrackType == TrackType.Audio) + if(track.Type == TrackType.Audio) { byte[] swapped = new byte[data.Length]; @@ -355,10 +355,10 @@ namespace Aaru.DiscImages data = swapped; } - uint subchannelSize = (uint)(track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0); + uint subchannelSize = (uint)(track.SubchannelType != TrackSubchannelType.None ? 96 : 0); trackStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + subchannelSize))), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + subchannelSize))), SeekOrigin.Begin); trackStream.Write(data, 0, data.Length); @@ -377,8 +377,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -387,7 +387,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -396,14 +396,14 @@ namespace Aaru.DiscImages return false; } - if(sectorAddress + length > track.TrackEndSector + 1) + if(sectorAddress + length > track.EndSector + 1) { ErrorMessage = "Can't cross tracks"; return false; } - if(data.Length % track.TrackRawBytesPerSector != 0) + if(data.Length % track.RawBytesPerSector != 0) { ErrorMessage = "Incorrect data size"; @@ -411,7 +411,7 @@ namespace Aaru.DiscImages } // cdrdao audio tracks are endian swapped corresponding to Aaru - if(track.TrackType == TrackType.Audio) + if(track.Type == TrackType.Audio) { byte[] swapped = new byte[data.Length]; @@ -424,15 +424,15 @@ namespace Aaru.DiscImages data = swapped; } - uint subchannelSize = (uint)(track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0); + uint subchannelSize = (uint)(track.SubchannelType != TrackSubchannelType.None ? 96 : 0); for(uint i = 0; i < length; i++) { trackStream. - Seek((long)(track.TrackFileOffset + ((i + sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + subchannelSize))), + Seek((long)(track.FileOffset + ((i + sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + subchannelSize))), SeekOrigin.Begin); - trackStream.Write(data, (int)(i * track.TrackRawBytesPerSector), track.TrackRawBytesPerSector); + trackStream.Write(data, (int)(i * track.RawBytesPerSector), track.RawBytesPerSector); } return true; @@ -464,38 +464,36 @@ namespace Aaru.DiscImages ulong currentOffset = 0; _writingTracks = new List(); - foreach(Track track in tracks.OrderBy(t => t.TrackSequence)) + foreach(Track track in tracks.OrderBy(t => t.Sequence)) { - if(track.TrackSubchannelType == TrackSubchannelType.Q16 || - track.TrackSubchannelType == TrackSubchannelType.Q16Interleaved) + if(track.SubchannelType == TrackSubchannelType.Q16 || + track.SubchannelType == TrackSubchannelType.Q16Interleaved) { - ErrorMessage = - $"Unsupported subchannel type {track.TrackSubchannelType} for track {track.TrackSequence}"; + ErrorMessage = $"Unsupported subchannel type {track.SubchannelType} for track {track.Sequence}"; return false; } Track newTrack = track; - newTrack.TrackFile = _separateTracksWriting ? _writingBaseName + $"_track{track.TrackSequence:D2}.bin" - : _writingBaseName + ".bin"; + newTrack.File = _separateTracksWriting ? _writingBaseName + $"_track{track.Sequence:D2}.bin" + : _writingBaseName + ".bin"; - newTrack.TrackFileOffset = _separateTracksWriting ? 0 : currentOffset; + newTrack.FileOffset = _separateTracksWriting ? 0 : currentOffset; _writingTracks.Add(newTrack); - currentOffset += (ulong)newTrack.TrackRawBytesPerSector * - (newTrack.TrackEndSector - newTrack.TrackStartSector + 1); + currentOffset += (ulong)newTrack.RawBytesPerSector * (newTrack.EndSector - newTrack.StartSector + 1); - if(track.TrackSubchannelType != TrackSubchannelType.None) - currentOffset += 96 * (newTrack.TrackEndSector - newTrack.TrackStartSector + 1); + if(track.SubchannelType != TrackSubchannelType.None) + currentOffset += 96 * (newTrack.EndSector - newTrack.StartSector + 1); } _writingStreams = new Dictionary(); if(_separateTracksWriting) foreach(Track track in _writingTracks) - _writingStreams.Add(track.TrackSequence, - new FileStream(track.TrackFile, FileMode.OpenOrCreate, FileAccess.ReadWrite, + _writingStreams.Add(track.Sequence, + new FileStream(track.File, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)); else { @@ -503,7 +501,7 @@ namespace Aaru.DiscImages FileShare.None); foreach(Track track in _writingTracks) - _writingStreams.Add(track.TrackSequence, jointStream); + _writingStreams.Add(track.Sequence, jointStream); } return true; @@ -531,11 +529,11 @@ namespace Aaru.DiscImages _writingStreams.First().Value.Close(); } - bool data = _writingTracks.Count(t => t.TrackType != TrackType.Audio) > 0; + bool data = _writingTracks.Count(t => t.Type != TrackType.Audio) > 0; - bool mode2 = _writingTracks.Count(t => t.TrackType == TrackType.CdMode2Form1 || - t.TrackType == TrackType.CdMode2Form2 || - t.TrackType == TrackType.CdMode2Formless) > 0; + bool mode2 = _writingTracks.Count(t => t.Type == TrackType.CdMode2Form1 || + t.Type == TrackType.CdMode2Form2 || + t.Type == TrackType.CdMode2Formless) > 0; if(mode2) _descriptorStream.WriteLine("CD_ROM_XA"); @@ -563,11 +561,11 @@ namespace Aaru.DiscImages foreach(Track track in _writingTracks) { _descriptorStream.WriteLine(); - _descriptorStream.WriteLine("// Track {0}", track.TrackSequence); + _descriptorStream.WriteLine("// Track {0}", track.Sequence); string subchannelType; - switch(track.TrackSubchannelType) + switch(track.SubchannelType) { case TrackSubchannelType.Packed: case TrackSubchannelType.PackedInterleaved: @@ -587,13 +585,13 @@ namespace Aaru.DiscImages _descriptorStream.WriteLine("TRACK {0}{1}", GetTrackMode(track), subchannelType); - _trackFlags.TryGetValue((byte)track.TrackSequence, out byte flagsByte); + _trackFlags.TryGetValue((byte)track.Sequence, out byte flagsByte); var flags = (CdFlags)flagsByte; _descriptorStream.WriteLine("{0}COPY", flags.HasFlag(CdFlags.CopyPermitted) ? "" : "NO "); - if(track.TrackType == TrackType.Audio) + if(track.Type == TrackType.Audio) { _descriptorStream.WriteLine("{0}PRE_EMPHASIS", flags.HasFlag(CdFlags.PreEmphasis) ? "" : "NO "); @@ -601,23 +599,22 @@ namespace Aaru.DiscImages flags.HasFlag(CdFlags.FourChannel) ? "FOUR" : "TWO"); } - if(_trackIsrcs.TryGetValue((byte)track.TrackSequence, out string isrc) && + if(_trackIsrcs.TryGetValue((byte)track.Sequence, out string isrc) && !string.IsNullOrWhiteSpace(isrc)) _descriptorStream.WriteLine("ISRC {0}", isrc); - (byte minute, byte second, byte frame) msf = - LbaToMsf(track.TrackEndSector - track.TrackStartSector + 1); + (byte minute, byte second, byte frame) msf = LbaToMsf(track.EndSector - track.StartSector + 1); _descriptorStream.WriteLine("DATAFILE \"{0}\" #{1} {2:D2}:{3:D2}:{4:D2} // length in bytes: {5}", - Path.GetFileName(track.TrackFile), track.TrackFileOffset, msf.minute, - msf.second, msf.frame, - (track.TrackEndSector - track.TrackStartSector + 1) * - (ulong)(track.TrackRawBytesPerSector + - (track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0))); + Path.GetFileName(track.File), track.FileOffset, msf.minute, msf.second, + msf.frame, + (track.EndSector - track.StartSector + 1) * + (ulong)(track.RawBytesPerSector + + (track.SubchannelType != TrackSubchannelType.None ? 96 : 0))); foreach(KeyValuePair index in track.Indexes.OrderBy(i => i.Key).Where(i => i.Key > 1)) { - msf = LbaToMsf((ulong)index.Value - (track.TrackPregap + track.TrackStartSector)); + msf = LbaToMsf((ulong)index.Value - (track.Pregap + track.StartSector)); _descriptorStream.WriteLine("INDEX {0:D2}:{1:D2}:{2:D2}", msf.minute, msf.second, msf.frame); } @@ -662,8 +659,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -696,10 +693,10 @@ namespace Aaru.DiscImages } case SectorTagType.CdSectorSubchannel: { - if(track.TrackSubchannelType == 0) + if(track.SubchannelType == 0) { ErrorMessage = - $"Trying to write subchannel to track {track.TrackSequence}, that does not have subchannel"; + $"Trying to write subchannel to track {track.Sequence}, that does not have subchannel"; return false; } @@ -711,8 +708,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = - _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -722,7 +718,7 @@ namespace Aaru.DiscImages } trackStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + 96))) + track.TrackRawBytesPerSector, + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + 96))) + track.RawBytesPerSector, SeekOrigin.Begin); trackStream.Write(data, 0, data.Length); @@ -747,8 +743,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -763,10 +759,10 @@ namespace Aaru.DiscImages case SectorTagType.CdTrackIsrc: return WriteSectorTag(data, sectorAddress, tag); case SectorTagType.CdSectorSubchannel: { - if(track.TrackSubchannelType == 0) + if(track.SubchannelType == 0) { ErrorMessage = - $"Trying to write subchannel to track {track.TrackSequence}, that does not have subchannel"; + $"Trying to write subchannel to track {track.Sequence}, that does not have subchannel"; return false; } @@ -778,8 +774,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = - _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -791,7 +786,7 @@ namespace Aaru.DiscImages for(uint i = 0; i < length; i++) { trackStream. - Seek((long)(track.TrackFileOffset + ((i + sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + 96))) + track.TrackRawBytesPerSector, + Seek((long)(track.FileOffset + ((i + sectorAddress - track.StartSector) * (ulong)(track.RawBytesPerSector + 96))) + track.RawBytesPerSector, SeekOrigin.Begin); trackStream.Write(data, (int)(i * 96), 96); diff --git a/Aaru.Images/CDRWin/CDRWin.cs b/Aaru.Images/CDRWin/CDRWin.cs index 440ab2522..f55ad6823 100644 --- a/Aaru.Images/CDRWin/CDRWin.cs +++ b/Aaru.Images/CDRWin/CDRWin.cs @@ -52,7 +52,7 @@ namespace Aaru.DiscImages bool _isCd; uint _lostPregap; bool _negativeEnd; - /// Dictionary, index is track #, value is TrackFile + /// Dictionary, index is track #, value is File Dictionary _offsetMap; SectorBuilder _sectorBuilder; bool _separateTracksWriting; diff --git a/Aaru.Images/CDRWin/Helpers.cs b/Aaru.Images/CDRWin/Helpers.cs index 22dd2e300..dc0d2f96a 100644 --- a/Aaru.Images/CDRWin/Helpers.cs +++ b/Aaru.Images/CDRWin/Helpers.cs @@ -149,21 +149,18 @@ namespace Aaru.DiscImages static string GetTrackMode(Track track) { - switch(track.TrackType) + switch(track.Type) { - case TrackType.Audio when track.TrackRawBytesPerSector == 2352: return CDRWIN_TRACK_TYPE_AUDIO; - case TrackType.Data: return CDRWIN_TRACK_TYPE_MODE1; - case TrackType.CdMode1 when track.TrackRawBytesPerSector == 2352: return CDRWIN_TRACK_TYPE_MODE1_RAW; + case TrackType.Audio when track.RawBytesPerSector == 2352: return CDRWIN_TRACK_TYPE_AUDIO; + case TrackType.Data: return CDRWIN_TRACK_TYPE_MODE1; + case TrackType.CdMode1 when track.RawBytesPerSector == 2352: return CDRWIN_TRACK_TYPE_MODE1_RAW; case TrackType.CdMode2Formless - when track.TrackRawBytesPerSector != 2352: return CDRWIN_TRACK_TYPE_MODE2_FORMLESS; - case TrackType.CdMode2Form1 - when track.TrackRawBytesPerSector != 2352: return CDRWIN_TRACK_TYPE_MODE2_FORM1; - case TrackType.CdMode2Form2 - when track.TrackRawBytesPerSector != 2352: return CDRWIN_TRACK_TYPE_MODE2_FORM2; - case TrackType.CdMode2Formless when track.TrackRawBytesPerSector == 2352: - case TrackType.CdMode2Form1 when track.TrackRawBytesPerSector == 2352: - case TrackType.CdMode2Form2 - when track.TrackRawBytesPerSector == 2352: return CDRWIN_TRACK_TYPE_MODE2_RAW; + when track.RawBytesPerSector != 2352: return CDRWIN_TRACK_TYPE_MODE2_FORMLESS; + case TrackType.CdMode2Form1 when track.RawBytesPerSector != 2352: return CDRWIN_TRACK_TYPE_MODE2_FORM1; + case TrackType.CdMode2Form2 when track.RawBytesPerSector != 2352: return CDRWIN_TRACK_TYPE_MODE2_FORM2; + case TrackType.CdMode2Formless when track.RawBytesPerSector == 2352: + case TrackType.CdMode2Form1 when track.RawBytesPerSector == 2352: + case TrackType.CdMode2Form2 when track.RawBytesPerSector == 2352: return CDRWIN_TRACK_TYPE_MODE2_RAW; default: return CDRWIN_TRACK_TYPE_MODE1; } } diff --git a/Aaru.Images/CDRWin/Properties.cs b/Aaru.Images/CDRWin/Properties.cs index cf85f66fb..d5f4263f6 100644 --- a/Aaru.Images/CDRWin/Properties.cs +++ b/Aaru.Images/CDRWin/Properties.cs @@ -61,7 +61,7 @@ namespace Aaru.DiscImages /// public string Name => "CDRWin cuesheet"; /// - public Guid Id => new Guid("664568B2-15D4-4E64-8A7A-20BDA8B8386F"); + public Guid Id => new("664568B2-15D4-4E64-8A7A-20BDA8B8386F"); /// public string Format => "CDRWin CUESheet"; /// @@ -74,7 +74,7 @@ namespace Aaru.DiscImages { get { - List tracks = new List(); + List tracks = new(); ulong previousStartSector = 0; ulong gdRomSession2Offset = 45000; @@ -84,38 +84,38 @@ namespace Aaru.DiscImages { var aaruTrack = new Track { - TrackDescription = cdrTrack.Title, - TrackPregap = (ulong)cdrTrack.Pregap, - TrackSession = cdrTrack.Session, - TrackSequence = cdrTrack.Sequence, - TrackType = _isCd ? CdrWinTrackTypeToTrackType(cdrTrack.TrackType) : TrackType.Data, - TrackFile = cdrTrack.TrackFile.DataFilter.GetFilename(), - TrackFilter = cdrTrack.TrackFile.DataFilter, - TrackFileOffset = cdrTrack.TrackFile.Offset, - TrackFileType = cdrTrack.TrackFile.FileType, - TrackRawBytesPerSector = cdrTrack.Bps, - TrackBytesPerSector = CdrWinTrackTypeToCookedBytesPerSector(cdrTrack.TrackType) + Description = cdrTrack.Title, + Pregap = (ulong)cdrTrack.Pregap, + Session = cdrTrack.Session, + Sequence = cdrTrack.Sequence, + Type = _isCd ? CdrWinTrackTypeToTrackType(cdrTrack.TrackType) : TrackType.Data, + File = cdrTrack.TrackFile.DataFilter.GetFilename(), + Filter = cdrTrack.TrackFile.DataFilter, + FileOffset = cdrTrack.TrackFile.Offset, + FileType = cdrTrack.TrackFile.FileType, + RawBytesPerSector = cdrTrack.Bps, + BytesPerSector = CdrWinTrackTypeToCookedBytesPerSector(cdrTrack.TrackType) }; - if(aaruTrack.TrackSequence == 1 && _isCd) + if(aaruTrack.Sequence == 1 && _isCd) { - aaruTrack.TrackPregap = 150; - aaruTrack.Indexes[0] = -150; + aaruTrack.Pregap = 150; + aaruTrack.Indexes[0] = -150; } - if(previousTrackFile == aaruTrack.TrackFile || + if(previousTrackFile == aaruTrack.File || previousTrackFile == "") if(cdrTrack.Indexes.TryGetValue(0, out int idx0)) if(idx0 > 0) - aaruTrack.TrackStartSector = (ulong)idx0; + aaruTrack.StartSector = (ulong)idx0; else - aaruTrack.TrackStartSector = 0; + aaruTrack.StartSector = 0; else if(cdrTrack.Indexes.TryGetValue(1, out int idx1)) - aaruTrack.TrackStartSector = (ulong)idx1; + aaruTrack.StartSector = (ulong)idx1; else - aaruTrack.TrackStartSector += previousStartSector; + aaruTrack.StartSector += previousStartSector; else - aaruTrack.TrackStartSector += previousStartSector; + aaruTrack.StartSector += previousStartSector; foreach((ushort index, int position) in cdrTrack.Indexes) aaruTrack.Indexes[index] = position; @@ -123,30 +123,30 @@ namespace Aaru.DiscImages if(_discImage.IsRedumpGigadisc && cdrTrack.Session == 2 && previousStartSector < gdRomSession2Offset) - aaruTrack.TrackStartSector = gdRomSession2Offset; + aaruTrack.StartSector = gdRomSession2Offset; previousTrackFile = cdrTrack.TrackFile.DataFilter.GetFilename(); - aaruTrack.TrackEndSector = aaruTrack.TrackStartSector + cdrTrack.Sectors - 1; + aaruTrack.EndSector = aaruTrack.StartSector + cdrTrack.Sectors - 1; if(cdrTrack.TrackType == CDRWIN_TRACK_TYPE_CDG) { - aaruTrack.TrackSubchannelFilter = cdrTrack.TrackFile.DataFilter; - aaruTrack.TrackSubchannelFile = cdrTrack.TrackFile.DataFilter.GetFilename(); - aaruTrack.TrackSubchannelOffset = cdrTrack.TrackFile.Offset; - aaruTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; + aaruTrack.SubchannelFilter = cdrTrack.TrackFile.DataFilter; + aaruTrack.SubchannelFile = cdrTrack.TrackFile.DataFilter.GetFilename(); + aaruTrack.SubchannelOffset = cdrTrack.TrackFile.Offset; + aaruTrack.SubchannelType = TrackSubchannelType.RawInterleaved; } else - aaruTrack.TrackSubchannelType = TrackSubchannelType.None; + aaruTrack.SubchannelType = TrackSubchannelType.None; if(!_isCd) { - aaruTrack.TrackPregap = 0; + aaruTrack.Pregap = 0; aaruTrack.Indexes?.Clear(); } tracks.Add(aaruTrack); - previousStartSector = aaruTrack.TrackEndSector + 1; + previousStartSector = aaruTrack.EndSector + 1; } return tracks; diff --git a/Aaru.Images/CDRWin/Read.cs b/Aaru.Images/CDRWin/Read.cs index 834c20ff3..96651d6d5 100644 --- a/Aaru.Images/CDRWin/Read.cs +++ b/Aaru.Images/CDRWin/Read.cs @@ -129,7 +129,7 @@ namespace Aaru.DiscImages int trackCount = 0; - Dictionary leadouts = new Dictionary(); + Dictionary leadouts = new(); while(_cueStream.Peek() >= 0) { @@ -323,7 +323,7 @@ namespace Aaru.DiscImages { existingDump.Extents = new List(existingDump.Extents) { - new ExtentType + new() { Start = extentStart, End = extentEnd @@ -884,7 +884,7 @@ namespace Aaru.DiscImages for(int s = 1; s <= sessions.Length; s++) { bool firstTrackRead = false; - sessions[s - 1].SessionSequence = (ushort)s; + sessions[s - 1].Sequence = (ushort)s; ulong sessionSectors = 0; int lastSessionTrack = 0; @@ -1251,7 +1251,7 @@ namespace Aaru.DiscImages currentFilePath = track.TrackFile.DataFilter.GetBasePath(); } - Dictionary newIndexes = new Dictionary(); + Dictionary newIndexes = new(); foreach(KeyValuePair index in track.Indexes) newIndexes[index.Key] = index.Value + currentFileStartSector; @@ -1530,8 +1530,8 @@ namespace Aaru.DiscImages for(int s = 0; s < sessions.Length; s++) { - if(sessions[s].SessionSequence > 1 && - track.Sequence == sessions[s].StartTrack) + if(sessions[s].Sequence > 1 && + track.Sequence == sessions[s].StartTrack) { track.TrackFile.Offset += 307200; track.Sectors -= 150; @@ -2251,13 +2251,13 @@ namespace Aaru.DiscImages public List GetSessionTracks(Session session) { if(_discImage.Sessions.Contains(session)) - return GetSessionTracks(session.SessionSequence); + return GetSessionTracks(session.Sequence); throw new ImageNotSupportedException("Session does not exist in disc image"); } /// public List GetSessionTracks(ushort session) => - Tracks.Where(t => t.TrackSession == session).OrderBy(t => t.TrackSequence).ToList(); + Tracks.Where(t => t.Session == session).OrderBy(t => t.Sequence).ToList(); } } \ No newline at end of file diff --git a/Aaru.Images/CDRWin/Write.cs b/Aaru.Images/CDRWin/Write.cs index b5fe58db2..6101ae7c9 100644 --- a/Aaru.Images/CDRWin/Write.cs +++ b/Aaru.Images/CDRWin/Write.cs @@ -168,8 +168,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -178,7 +178,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -187,14 +187,14 @@ namespace Aaru.DiscImages return false; } - if(track.TrackBytesPerSector != track.TrackRawBytesPerSector) + if(track.BytesPerSector != track.RawBytesPerSector) { ErrorMessage = "Invalid write mode for this sector"; return false; } - if(data.Length != track.TrackRawBytesPerSector) + if(data.Length != track.RawBytesPerSector) { ErrorMessage = "Incorrect data size"; @@ -202,7 +202,7 @@ namespace Aaru.DiscImages } trackStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); trackStream.Write(data, 0, data.Length); @@ -221,8 +221,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -231,7 +231,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -240,21 +240,21 @@ namespace Aaru.DiscImages return false; } - if(track.TrackBytesPerSector != track.TrackRawBytesPerSector) + if(track.BytesPerSector != track.RawBytesPerSector) { ErrorMessage = "Invalid write mode for this sector"; return false; } - if(sectorAddress + length > track.TrackEndSector + 1) + if(sectorAddress + length > track.EndSector + 1) { ErrorMessage = "Can't cross tracks"; return false; } - if(data.Length % track.TrackRawBytesPerSector != 0) + if(data.Length % track.RawBytesPerSector != 0) { ErrorMessage = "Incorrect data size"; @@ -262,7 +262,7 @@ namespace Aaru.DiscImages } trackStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); trackStream.Write(data, 0, data.Length); @@ -281,8 +281,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -291,7 +291,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -300,7 +300,7 @@ namespace Aaru.DiscImages return false; } - if(data.Length != track.TrackRawBytesPerSector) + if(data.Length != track.RawBytesPerSector) { ErrorMessage = "Incorrect data size"; @@ -308,7 +308,7 @@ namespace Aaru.DiscImages } trackStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); trackStream.Write(data, 0, data.Length); @@ -327,8 +327,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { @@ -337,7 +337,7 @@ namespace Aaru.DiscImages return false; } - FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.TrackSequence).Value; + FileStream trackStream = _writingStreams.FirstOrDefault(kvp => kvp.Key == track.Sequence).Value; if(trackStream == null) { @@ -346,14 +346,14 @@ namespace Aaru.DiscImages return false; } - if(sectorAddress + length > track.TrackEndSector + 1) + if(sectorAddress + length > track.EndSector + 1) { ErrorMessage = "Can't cross tracks"; return false; } - if(data.Length % track.TrackRawBytesPerSector != 0) + if(data.Length % track.RawBytesPerSector != 0) { ErrorMessage = "Incorrect data size"; @@ -361,7 +361,7 @@ namespace Aaru.DiscImages } trackStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); trackStream.Write(data, 0, data.Length); @@ -394,14 +394,14 @@ namespace Aaru.DiscImages _writingTracks = new List(); - foreach(Track track in tracks.OrderBy(t => t.TrackSequence)) + foreach(Track track in tracks.OrderBy(t => t.Sequence)) { Track newTrack = track; - newTrack.TrackFile = _separateTracksWriting ? _writingBaseName + $"_track{track.TrackSequence:D2}.bin" - : _writingBaseName + ".bin"; + newTrack.File = _separateTracksWriting ? _writingBaseName + $"_track{track.Sequence:D2}.bin" + : _writingBaseName + ".bin"; - newTrack.TrackFileOffset = _separateTracksWriting ? 0 : track.TrackStartSector * 2352; + newTrack.FileOffset = _separateTracksWriting ? 0 : track.StartSector * 2352; _writingTracks.Add(newTrack); } @@ -409,8 +409,8 @@ namespace Aaru.DiscImages if(_separateTracksWriting) foreach(Track track in _writingTracks) - _writingStreams.Add(track.TrackSequence, - new FileStream(track.TrackFile, FileMode.OpenOrCreate, FileAccess.ReadWrite, + _writingStreams.Add(track.Sequence, + new FileStream(track.File, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None)); else { @@ -418,7 +418,7 @@ namespace Aaru.DiscImages FileShare.None); foreach(Track track in _writingTracks) - _writingStreams.Add(track.TrackSequence, jointStream); + _writingStreams.Add(track.Sequence, jointStream); } return true; @@ -512,7 +512,7 @@ namespace Aaru.DiscImages foreach(Track track in _writingTracks) { - switch(track.TrackSequence) + switch(track.Sequence) { // You should not be able to write CD-i Ready as this format, but just in case case 0 when _imageInfo.MediaType != MediaType.CDIREADY: @@ -520,24 +520,24 @@ namespace Aaru.DiscImages continue; case 1 when trackZero != null && !track.Indexes.ContainsKey(0): - track.TrackStartSector = trackZero.TrackStartSector; - track.TrackPregap = (ulong)track.Indexes[1] - track.TrackStartSector; + track.StartSector = trackZero.StartSector; + track.Pregap = (ulong)track.Indexes[1] - track.StartSector; break; } - if(track.TrackSession > currentSession) + if(track.Session > currentSession) _descriptorStream.WriteLine("REM SESSION {0}", ++currentSession); if(_separateTracksWriting) - _descriptorStream.WriteLine("FILE \"{0}\" BINARY", Path.GetFileName(track.TrackFile)); + _descriptorStream.WriteLine("FILE \"{0}\" BINARY", Path.GetFileName(track.File)); - (byte minute, byte second, byte frame) msf = LbaToMsf(track.TrackStartSector); - _descriptorStream.WriteLine(" TRACK {0:D2} {1}", track.TrackSequence, GetTrackMode(track)); + (byte minute, byte second, byte frame) msf = LbaToMsf(track.StartSector); + _descriptorStream.WriteLine(" TRACK {0:D2} {1}", track.Sequence, GetTrackMode(track)); if(_isCd) { - if(_trackFlags.TryGetValue((byte)track.TrackSequence, out byte flagsByte)) + if(_trackFlags.TryGetValue((byte)track.Sequence, out byte flagsByte)) if(flagsByte != 0 && flagsByte != (byte)CdFlags.DataTrack) { @@ -549,20 +549,19 @@ namespace Aaru.DiscImages flags.HasFlag(CdFlags.PreEmphasis) ? " PRE" : ""); } - if(_trackIsrcs.TryGetValue((byte)track.TrackSequence, out string isrc) && + if(_trackIsrcs.TryGetValue((byte)track.Sequence, out string isrc) && !string.IsNullOrWhiteSpace(isrc)) _descriptorStream.WriteLine(" ISRC {0}", isrc); } - if(track.TrackPregap > 0 && _isCd) + if(track.Pregap > 0 && _isCd) { - if(track.TrackSequence > _writingTracks.Where(t => t.TrackSession == track.TrackSession). - Min(t => t.TrackSequence)) + if(track.Sequence > _writingTracks.Where(t => t.Session == track.Session).Min(t => t.Sequence)) _descriptorStream.WriteLine(" INDEX {0:D2} {1:D2}:{2:D2}:{3:D2}", 0, msf.minute, msf.second, msf.frame); - if(track.TrackSequence > 1) - msf = LbaToMsf(track.TrackStartSector + track.TrackPregap); + if(track.Sequence > 1) + msf = LbaToMsf(track.StartSector + track.Pregap); _descriptorStream.WriteLine(" INDEX {0:D2} {1:D2}:{2:D2}:{3:D2}", 1, msf.minute, msf.second, msf.frame); @@ -580,18 +579,18 @@ namespace Aaru.DiscImages msf.second, msf.frame); } - ushort lastSession = _writingTracks.Max(t => t.TrackSession); + ushort lastSession = _writingTracks.Max(t => t.Session); if(currentSession >= lastSession) continue; - Track lastTrackInSession = _writingTracks.Where(t => t.TrackSession == currentSession). - OrderBy(t => t.TrackSequence).LastOrDefault(); + Track lastTrackInSession = _writingTracks.Where(t => t.Session == currentSession). + OrderBy(t => t.Sequence).LastOrDefault(); - if(track.TrackSequence != lastTrackInSession.TrackSequence) + if(track.Sequence != lastTrackInSession.Sequence) continue; - msf = LbaToMsf(track.TrackEndSector + 1); + msf = LbaToMsf(track.EndSector + 1); _descriptorStream.WriteLine("REM LEAD-OUT {0:D2}:{1:D2}:{2:D2}", msf.minute, msf.second, msf.frame); } @@ -623,8 +622,8 @@ namespace Aaru.DiscImages } Track track = - _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + _writingTracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && + sectorAddress <= trk.EndSector); if(track is null) { diff --git a/Aaru.Images/CHD/Helpers.cs b/Aaru.Images/CHD/Helpers.cs index 7fa6facc1..0e14c47fd 100644 --- a/Aaru.Images/CHD/Helpers.cs +++ b/Aaru.Images/CHD/Helpers.cs @@ -58,7 +58,7 @@ namespace Aaru.DiscImages { _tracks.TryGetValue(track, out Track aaruTrack); - return (aaruTrack?.TrackStartSector ?? 0) + relativeSector; + return (aaruTrack?.StartSector ?? 0) + relativeSector; } byte[] GetHunk(ulong hunkNo) diff --git a/Aaru.Images/CHD/Read.cs b/Aaru.Images/CHD/Read.cs index 2081ff77e..f4a5017fc 100644 --- a/Aaru.Images/CHD/Read.cs +++ b/Aaru.Images/CHD/Read.cs @@ -521,46 +521,46 @@ namespace Aaru.DiscImages switch((TrackTypeOld)chdTrack.type) { case TrackTypeOld.Audio: - aaruTrack.TrackBytesPerSector = 2352; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.Audio; + aaruTrack.BytesPerSector = 2352; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.Audio; break; case TrackTypeOld.Mode1: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2048; - aaruTrack.TrackType = TrackType.CdMode1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2048; + aaruTrack.Type = TrackType.CdMode1; break; case TrackTypeOld.Mode1Raw: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.CdMode1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.CdMode1; break; case TrackTypeOld.Mode2: case TrackTypeOld.Mode2FormMix: - aaruTrack.TrackBytesPerSector = 2336; - aaruTrack.TrackRawBytesPerSector = 2336; - aaruTrack.TrackType = TrackType.CdMode2Formless; + aaruTrack.BytesPerSector = 2336; + aaruTrack.RawBytesPerSector = 2336; + aaruTrack.Type = TrackType.CdMode2Formless; break; case TrackTypeOld.Mode2Form1: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2048; - aaruTrack.TrackType = TrackType.CdMode2Form1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2048; + aaruTrack.Type = TrackType.CdMode2Form1; break; case TrackTypeOld.Mode2Form2: - aaruTrack.TrackBytesPerSector = 2324; - aaruTrack.TrackRawBytesPerSector = 2324; - aaruTrack.TrackType = TrackType.CdMode2Form2; + aaruTrack.BytesPerSector = 2324; + aaruTrack.RawBytesPerSector = 2324; + aaruTrack.Type = TrackType.CdMode2Form2; break; case TrackTypeOld.Mode2Raw: - aaruTrack.TrackBytesPerSector = 2336; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.CdMode2Formless; + aaruTrack.BytesPerSector = 2336; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.CdMode2Formless; break; default: @@ -570,19 +570,19 @@ namespace Aaru.DiscImages switch((SubTypeOld)chdTrack.subType) { case SubTypeOld.Cooked: - aaruTrack.TrackSubchannelFile = imageFilter.GetFilename(); - aaruTrack.TrackSubchannelType = TrackSubchannelType.PackedInterleaved; - aaruTrack.TrackSubchannelFilter = imageFilter; + aaruTrack.SubchannelFile = imageFilter.GetFilename(); + aaruTrack.SubchannelType = TrackSubchannelType.PackedInterleaved; + aaruTrack.SubchannelFilter = imageFilter; break; case SubTypeOld.None: - aaruTrack.TrackSubchannelType = TrackSubchannelType.None; + aaruTrack.SubchannelType = TrackSubchannelType.None; break; case SubTypeOld.Raw: - aaruTrack.TrackSubchannelFile = imageFilter.GetFilename(); - aaruTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - aaruTrack.TrackSubchannelFilter = imageFilter; + aaruTrack.SubchannelFile = imageFilter.GetFilename(); + aaruTrack.SubchannelType = TrackSubchannelType.RawInterleaved; + aaruTrack.SubchannelFilter = imageFilter; break; default: @@ -590,21 +590,21 @@ namespace Aaru.DiscImages ImageNotSupportedException($"Unsupported subchannel type {chdTrack.type}"); } - aaruTrack.TrackDescription = $"Track {i + 1}"; - aaruTrack.TrackEndSector = currentSector + chdTrack.frames - 1; - aaruTrack.TrackFile = imageFilter.GetFilename(); - aaruTrack.TrackFileType = "BINARY"; - aaruTrack.TrackFilter = imageFilter; - aaruTrack.TrackStartSector = currentSector; - aaruTrack.TrackSequence = i + 1; - aaruTrack.TrackSession = 1; + aaruTrack.Description = $"Track {i + 1}"; + aaruTrack.EndSector = currentSector + chdTrack.frames - 1; + aaruTrack.File = imageFilter.GetFilename(); + aaruTrack.FileType = "BINARY"; + aaruTrack.Filter = imageFilter; + aaruTrack.StartSector = currentSector; + aaruTrack.Sequence = i + 1; + aaruTrack.Session = 1; - if(aaruTrack.TrackSequence == 1) + if(aaruTrack.Sequence == 1) aaruTrack.Indexes.Add(0, -150); aaruTrack.Indexes.Add(1, (int)currentSector); currentSector += chdTrack.frames + chdTrack.extraFrames; - _tracks.Add(aaruTrack.TrackSequence, aaruTrack); + _tracks.Add(aaruTrack.Sequence, aaruTrack); } _isCdrom = true; @@ -642,52 +642,52 @@ namespace Aaru.DiscImages switch(tracktype) { case TRACK_TYPE_AUDIO: - aaruTrack.TrackBytesPerSector = 2352; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.Audio; + aaruTrack.BytesPerSector = 2352; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.Audio; break; case TRACK_TYPE_MODE1: case TRACK_TYPE_MODE1_2K: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2048; - aaruTrack.TrackType = TrackType.CdMode1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2048; + aaruTrack.Type = TrackType.CdMode1; break; case TRACK_TYPE_MODE1_RAW: case TRACK_TYPE_MODE1_RAW_2K: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.CdMode1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.CdMode1; break; case TRACK_TYPE_MODE2: case TRACK_TYPE_MODE2_2K: case TRACK_TYPE_MODE2_FM: - aaruTrack.TrackBytesPerSector = 2336; - aaruTrack.TrackRawBytesPerSector = 2336; - aaruTrack.TrackType = TrackType.CdMode2Formless; + aaruTrack.BytesPerSector = 2336; + aaruTrack.RawBytesPerSector = 2336; + aaruTrack.Type = TrackType.CdMode2Formless; break; case TRACK_TYPE_MODE2_F1: case TRACK_TYPE_MODE2_F1_2K: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2048; - aaruTrack.TrackType = TrackType.CdMode2Form1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2048; + aaruTrack.Type = TrackType.CdMode2Form1; break; case TRACK_TYPE_MODE2_F2: case TRACK_TYPE_MODE2_F2_2K: - aaruTrack.TrackBytesPerSector = 2324; - aaruTrack.TrackRawBytesPerSector = 2324; - aaruTrack.TrackType = TrackType.CdMode2Form2; + aaruTrack.BytesPerSector = 2324; + aaruTrack.RawBytesPerSector = 2324; + aaruTrack.Type = TrackType.CdMode2Form2; break; case TRACK_TYPE_MODE2_RAW: case TRACK_TYPE_MODE2_RAW_2K: - aaruTrack.TrackBytesPerSector = 2336; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.CdMode2Formless; + aaruTrack.BytesPerSector = 2336; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.CdMode2Formless; break; default: @@ -697,41 +697,41 @@ namespace Aaru.DiscImages switch(subtype) { case SUB_TYPE_COOKED: - aaruTrack.TrackSubchannelFile = imageFilter.GetFilename(); - aaruTrack.TrackSubchannelType = TrackSubchannelType.PackedInterleaved; - aaruTrack.TrackSubchannelFilter = imageFilter; + aaruTrack.SubchannelFile = imageFilter.GetFilename(); + aaruTrack.SubchannelType = TrackSubchannelType.PackedInterleaved; + aaruTrack.SubchannelFilter = imageFilter; break; case SUB_TYPE_NONE: - aaruTrack.TrackSubchannelType = TrackSubchannelType.None; + aaruTrack.SubchannelType = TrackSubchannelType.None; break; case SUB_TYPE_RAW: - aaruTrack.TrackSubchannelFile = imageFilter.GetFilename(); - aaruTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - aaruTrack.TrackSubchannelFilter = imageFilter; + aaruTrack.SubchannelFile = imageFilter.GetFilename(); + aaruTrack.SubchannelType = TrackSubchannelType.RawInterleaved; + aaruTrack.SubchannelFilter = imageFilter; break; default: throw new ImageNotSupportedException($"Unsupported subchannel type {subtype}"); } - aaruTrack.TrackDescription = $"Track {trackNo}"; - aaruTrack.TrackEndSector = currentSector + frames - 1; - aaruTrack.TrackFile = imageFilter.GetFilename(); - aaruTrack.TrackFileType = "BINARY"; - aaruTrack.TrackFilter = imageFilter; - aaruTrack.TrackStartSector = currentSector; - aaruTrack.TrackSequence = trackNo; - aaruTrack.TrackSession = 1; + aaruTrack.Description = $"Track {trackNo}"; + aaruTrack.EndSector = currentSector + frames - 1; + aaruTrack.File = imageFilter.GetFilename(); + aaruTrack.FileType = "BINARY"; + aaruTrack.Filter = imageFilter; + aaruTrack.StartSector = currentSector; + aaruTrack.Sequence = trackNo; + aaruTrack.Session = 1; - if(aaruTrack.TrackSequence == 1) + if(aaruTrack.Sequence == 1) aaruTrack.Indexes.Add(0, -150); aaruTrack.Indexes.Add(1, (int)currentSector); currentSector += frames; currentTrack++; - _tracks.Add(aaruTrack.TrackSequence, aaruTrack); + _tracks.Add(aaruTrack.Sequence, aaruTrack); } break; @@ -781,52 +781,52 @@ namespace Aaru.DiscImages switch(trackType) { case TRACK_TYPE_AUDIO: - aaruTrack.TrackBytesPerSector = 2352; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.Audio; + aaruTrack.BytesPerSector = 2352; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.Audio; break; case TRACK_TYPE_MODE1: case TRACK_TYPE_MODE1_2K: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2048; - aaruTrack.TrackType = TrackType.CdMode1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2048; + aaruTrack.Type = TrackType.CdMode1; break; case TRACK_TYPE_MODE1_RAW: case TRACK_TYPE_MODE1_RAW_2K: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.CdMode1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.CdMode1; break; case TRACK_TYPE_MODE2: case TRACK_TYPE_MODE2_2K: case TRACK_TYPE_MODE2_FM: - aaruTrack.TrackBytesPerSector = 2336; - aaruTrack.TrackRawBytesPerSector = 2336; - aaruTrack.TrackType = TrackType.CdMode2Formless; + aaruTrack.BytesPerSector = 2336; + aaruTrack.RawBytesPerSector = 2336; + aaruTrack.Type = TrackType.CdMode2Formless; break; case TRACK_TYPE_MODE2_F1: case TRACK_TYPE_MODE2_F1_2K: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2048; - aaruTrack.TrackType = TrackType.CdMode2Form1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2048; + aaruTrack.Type = TrackType.CdMode2Form1; break; case TRACK_TYPE_MODE2_F2: case TRACK_TYPE_MODE2_F2_2K: - aaruTrack.TrackBytesPerSector = 2324; - aaruTrack.TrackRawBytesPerSector = 2324; - aaruTrack.TrackType = TrackType.CdMode2Form2; + aaruTrack.BytesPerSector = 2324; + aaruTrack.RawBytesPerSector = 2324; + aaruTrack.Type = TrackType.CdMode2Form2; break; case TRACK_TYPE_MODE2_RAW: case TRACK_TYPE_MODE2_RAW_2K: - aaruTrack.TrackBytesPerSector = 2336; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.CdMode2Formless; + aaruTrack.BytesPerSector = 2336; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.CdMode2Formless; break; default: @@ -836,45 +836,45 @@ namespace Aaru.DiscImages switch(subtype) { case SUB_TYPE_COOKED: - aaruTrack.TrackSubchannelFile = imageFilter.GetFilename(); - aaruTrack.TrackSubchannelType = TrackSubchannelType.PackedInterleaved; - aaruTrack.TrackSubchannelFilter = imageFilter; + aaruTrack.SubchannelFile = imageFilter.GetFilename(); + aaruTrack.SubchannelType = TrackSubchannelType.PackedInterleaved; + aaruTrack.SubchannelFilter = imageFilter; break; case SUB_TYPE_NONE: - aaruTrack.TrackSubchannelType = TrackSubchannelType.None; + aaruTrack.SubchannelType = TrackSubchannelType.None; break; case SUB_TYPE_RAW: - aaruTrack.TrackSubchannelFile = imageFilter.GetFilename(); - aaruTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - aaruTrack.TrackSubchannelFilter = imageFilter; + aaruTrack.SubchannelFile = imageFilter.GetFilename(); + aaruTrack.SubchannelType = TrackSubchannelType.RawInterleaved; + aaruTrack.SubchannelFilter = imageFilter; break; default: throw new ImageNotSupportedException($"Unsupported subchannel type {subtype}"); } - aaruTrack.TrackDescription = $"Track {trackNo}"; - aaruTrack.TrackEndSector = currentSector + frames - 1; - aaruTrack.TrackFile = imageFilter.GetFilename(); - aaruTrack.TrackFileType = "BINARY"; - aaruTrack.TrackFilter = imageFilter; - aaruTrack.TrackStartSector = currentSector; - aaruTrack.TrackSequence = trackNo; - aaruTrack.TrackSession = 1; + aaruTrack.Description = $"Track {trackNo}"; + aaruTrack.EndSector = currentSector + frames - 1; + aaruTrack.File = imageFilter.GetFilename(); + aaruTrack.FileType = "BINARY"; + aaruTrack.Filter = imageFilter; + aaruTrack.StartSector = currentSector; + aaruTrack.Sequence = trackNo; + aaruTrack.Session = 1; - if(aaruTrack.TrackSequence == 1) + if(aaruTrack.Sequence == 1) { if(pregap <= 150) { aaruTrack.Indexes.Add(0, -150); - aaruTrack.TrackPregap = 150; + aaruTrack.Pregap = 150; } else { aaruTrack.Indexes.Add(0, -1 * (int)pregap); - aaruTrack.TrackPregap = pregap; + aaruTrack.Pregap = pregap; } aaruTrack.Indexes.Add(1, (int)currentSector); @@ -882,7 +882,7 @@ namespace Aaru.DiscImages else if(pregap > 0) { aaruTrack.Indexes.Add(0, (int)currentSector); - aaruTrack.TrackPregap = pregap; + aaruTrack.Pregap = pregap; aaruTrack.Indexes.Add(1, (int)(currentSector + pregap)); } else @@ -890,7 +890,7 @@ namespace Aaru.DiscImages currentSector += frames; currentTrack++; - _tracks.Add(aaruTrack.TrackSequence, aaruTrack); + _tracks.Add(aaruTrack.Sequence, aaruTrack); } break; @@ -938,52 +938,52 @@ namespace Aaru.DiscImages switch(trackType) { case TRACK_TYPE_AUDIO: - aaruTrack.TrackBytesPerSector = 2352; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.Audio; + aaruTrack.BytesPerSector = 2352; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.Audio; break; case TRACK_TYPE_MODE1: case TRACK_TYPE_MODE1_2K: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2048; - aaruTrack.TrackType = TrackType.CdMode1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2048; + aaruTrack.Type = TrackType.CdMode1; break; case TRACK_TYPE_MODE1_RAW: case TRACK_TYPE_MODE1_RAW_2K: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.CdMode1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.CdMode1; break; case TRACK_TYPE_MODE2: case TRACK_TYPE_MODE2_2K: case TRACK_TYPE_MODE2_FM: - aaruTrack.TrackBytesPerSector = 2336; - aaruTrack.TrackRawBytesPerSector = 2336; - aaruTrack.TrackType = TrackType.CdMode2Formless; + aaruTrack.BytesPerSector = 2336; + aaruTrack.RawBytesPerSector = 2336; + aaruTrack.Type = TrackType.CdMode2Formless; break; case TRACK_TYPE_MODE2_F1: case TRACK_TYPE_MODE2_F1_2K: - aaruTrack.TrackBytesPerSector = 2048; - aaruTrack.TrackRawBytesPerSector = 2048; - aaruTrack.TrackType = TrackType.CdMode2Form1; + aaruTrack.BytesPerSector = 2048; + aaruTrack.RawBytesPerSector = 2048; + aaruTrack.Type = TrackType.CdMode2Form1; break; case TRACK_TYPE_MODE2_F2: case TRACK_TYPE_MODE2_F2_2K: - aaruTrack.TrackBytesPerSector = 2324; - aaruTrack.TrackRawBytesPerSector = 2324; - aaruTrack.TrackType = TrackType.CdMode2Form2; + aaruTrack.BytesPerSector = 2324; + aaruTrack.RawBytesPerSector = 2324; + aaruTrack.Type = TrackType.CdMode2Form2; break; case TRACK_TYPE_MODE2_RAW: case TRACK_TYPE_MODE2_RAW_2K: - aaruTrack.TrackBytesPerSector = 2336; - aaruTrack.TrackRawBytesPerSector = 2352; - aaruTrack.TrackType = TrackType.CdMode2Formless; + aaruTrack.BytesPerSector = 2336; + aaruTrack.RawBytesPerSector = 2352; + aaruTrack.Type = TrackType.CdMode2Formless; break; default: @@ -993,45 +993,45 @@ namespace Aaru.DiscImages switch(subtype) { case SUB_TYPE_COOKED: - aaruTrack.TrackSubchannelFile = imageFilter.GetFilename(); - aaruTrack.TrackSubchannelType = TrackSubchannelType.PackedInterleaved; - aaruTrack.TrackSubchannelFilter = imageFilter; + aaruTrack.SubchannelFile = imageFilter.GetFilename(); + aaruTrack.SubchannelType = TrackSubchannelType.PackedInterleaved; + aaruTrack.SubchannelFilter = imageFilter; break; case SUB_TYPE_NONE: - aaruTrack.TrackSubchannelType = TrackSubchannelType.None; + aaruTrack.SubchannelType = TrackSubchannelType.None; break; case SUB_TYPE_RAW: - aaruTrack.TrackSubchannelFile = imageFilter.GetFilename(); - aaruTrack.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - aaruTrack.TrackSubchannelFilter = imageFilter; + aaruTrack.SubchannelFile = imageFilter.GetFilename(); + aaruTrack.SubchannelType = TrackSubchannelType.RawInterleaved; + aaruTrack.SubchannelFilter = imageFilter; break; default: throw new ImageNotSupportedException($"Unsupported subchannel type {subtype}"); } - aaruTrack.TrackDescription = $"Track {trackNo}"; - aaruTrack.TrackEndSector = currentSector + frames - 1; - aaruTrack.TrackFile = imageFilter.GetFilename(); - aaruTrack.TrackFileType = "BINARY"; - aaruTrack.TrackFilter = imageFilter; - aaruTrack.TrackStartSector = currentSector; - aaruTrack.TrackSequence = trackNo; - aaruTrack.TrackSession = (ushort)(trackNo > 2 ? 2 : 1); + aaruTrack.Description = $"Track {trackNo}"; + aaruTrack.EndSector = currentSector + frames - 1; + aaruTrack.File = imageFilter.GetFilename(); + aaruTrack.FileType = "BINARY"; + aaruTrack.Filter = imageFilter; + aaruTrack.StartSector = currentSector; + aaruTrack.Sequence = trackNo; + aaruTrack.Session = (ushort)(trackNo > 2 ? 2 : 1); - if(aaruTrack.TrackSequence == 1) + if(aaruTrack.Sequence == 1) { if(pregap <= 150) { aaruTrack.Indexes.Add(0, -150); - aaruTrack.TrackPregap = 150; + aaruTrack.Pregap = 150; } else { aaruTrack.Indexes.Add(0, -1 * (int)pregap); - aaruTrack.TrackPregap = pregap; + aaruTrack.Pregap = pregap; } aaruTrack.Indexes.Add(1, (int)currentSector); @@ -1039,7 +1039,7 @@ namespace Aaru.DiscImages else if(pregap > 0) { aaruTrack.Indexes.Add(0, (int)currentSector); - aaruTrack.TrackPregap = pregap; + aaruTrack.Pregap = pregap; aaruTrack.Indexes.Add(1, (int)(currentSector + pregap)); } else @@ -1047,7 +1047,7 @@ namespace Aaru.DiscImages currentSector += frames; currentTrack++; - _tracks.Add(aaruTrack.TrackSequence, aaruTrack); + _tracks.Add(aaruTrack.Sequence, aaruTrack); } break; @@ -1113,7 +1113,7 @@ namespace Aaru.DiscImages _imageInfo.XmlMediaType = XmlMediaType.OpticalDisc; foreach(Track aaruTrack in _tracks.Values) - _imageInfo.Sectors += aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1; + _imageInfo.Sectors += aaruTrack.EndSector - aaruTrack.StartSector + 1; } else if(_isGdrom) { @@ -1123,7 +1123,7 @@ namespace Aaru.DiscImages _imageInfo.XmlMediaType = XmlMediaType.OpticalDisc; foreach(Track aaruTrack in _tracks.Values) - _imageInfo.Sectors += aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1; + _imageInfo.Sectors += aaruTrack.EndSector - aaruTrack.StartSector + 1; } else throw new ImageNotSupportedException("Image does not represent a known media, aborting"); @@ -1139,28 +1139,28 @@ namespace Aaru.DiscImages { var partition = new Partition { - Description = aaruTrack.TrackDescription, - Size = (aaruTrack.TrackEndSector - (ulong)aaruTrack.Indexes[1] + 1) * - (ulong)aaruTrack.TrackRawBytesPerSector, - Length = aaruTrack.TrackEndSector - (ulong)aaruTrack.Indexes[1] + 1, - Sequence = aaruTrack.TrackSequence, + Description = aaruTrack.Description, + Size = (aaruTrack.EndSector - (ulong)aaruTrack.Indexes[1] + 1) * + (ulong)aaruTrack.RawBytesPerSector, + Length = aaruTrack.EndSector - (ulong)aaruTrack.Indexes[1] + 1, + Sequence = aaruTrack.Sequence, Offset = partPos, Start = (ulong)aaruTrack.Indexes[1], - Type = aaruTrack.TrackType.ToString() + Type = aaruTrack.Type.ToString() }; partPos += partition.Length; - _offsetmap.Add(aaruTrack.TrackStartSector, aaruTrack.TrackSequence); + _offsetmap.Add(aaruTrack.StartSector, aaruTrack.Sequence); - if(aaruTrack.TrackSubchannelType != TrackSubchannelType.None) + if(aaruTrack.SubchannelType != TrackSubchannelType.None) if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel); - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case TrackType.CdMode1: case TrackType.CdMode2Form1: - if(aaruTrack.TrackRawBytesPerSector == 2352) + if(aaruTrack.RawBytesPerSector == 2352) { if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -1186,7 +1186,7 @@ namespace Aaru.DiscImages break; case TrackType.CdMode2Form2: - if(aaruTrack.TrackRawBytesPerSector == 2352) + if(aaruTrack.RawBytesPerSector == 2352) { if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -1203,7 +1203,7 @@ namespace Aaru.DiscImages break; case TrackType.CdMode2Formless: - if(aaruTrack.TrackRawBytesPerSector == 2352) + if(aaruTrack.RawBytesPerSector == 2352) { if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -1215,8 +1215,8 @@ namespace Aaru.DiscImages break; } - if(aaruTrack.TrackBytesPerSector > _imageInfo.SectorSize) - _imageInfo.SectorSize = (uint)aaruTrack.TrackBytesPerSector; + if(aaruTrack.BytesPerSector > _imageInfo.SectorSize) + _imageInfo.SectorSize = (uint)aaruTrack.BytesPerSector; _partitions.Add(partition); } @@ -1260,7 +1260,7 @@ namespace Aaru.DiscImages else { track = GetTrack(sectorAddress); - sectorSize = (uint)track.TrackRawBytesPerSector; + sectorSize = (uint)track.RawBytesPerSector; } ulong hunkNo = sectorAddress / _sectorsPerHunk; @@ -1283,11 +1283,11 @@ namespace Aaru.DiscImages uint sectorOffset; bool mode2 = false; - switch(track.TrackType) + switch(track.Type) { case TrackType.CdMode1: { - if(track.TrackRawBytesPerSector == 2352) + if(track.RawBytesPerSector == 2352) { sectorOffset = 16; sectorSize = 2048; @@ -1302,7 +1302,7 @@ namespace Aaru.DiscImages } case TrackType.CdMode2Form1: { - if(track.TrackRawBytesPerSector == 2352) + if(track.RawBytesPerSector == 2352) { sectorOffset = 0; sectorSize = 2352; @@ -1319,7 +1319,7 @@ namespace Aaru.DiscImages case TrackType.CdMode2Form2: { - if(track.TrackRawBytesPerSector == 2352) + if(track.RawBytesPerSector == 2352) { sectorOffset = 0; sectorSize = 2352; @@ -1337,7 +1337,7 @@ namespace Aaru.DiscImages case TrackType.CdMode2Formless: { sectorOffset = 0; - sectorSize = (uint)track.TrackRawBytesPerSector; + sectorSize = (uint)track.RawBytesPerSector; mode2 = true; break; @@ -1358,7 +1358,7 @@ namespace Aaru.DiscImages if(mode2) buffer = Sector.GetUserDataFromMode2(sector); - else if(track.TrackType == TrackType.Audio && _swapAudio) + else if(track.Type == TrackType.Audio && _swapAudio) for(int i = 0; i < 2352; i += 2) { buffer[i + 1] = sector[i]; @@ -1387,7 +1387,7 @@ namespace Aaru.DiscImages if(!_sectorCache.TryGetValue(sectorAddress, out byte[] sector)) { track = GetTrack(sectorAddress); - sectorSize = (uint)track.TrackRawBytesPerSector; + sectorSize = (uint)track.RawBytesPerSector; ulong hunkNo = sectorAddress / _sectorsPerHunk; ulong secOff = sectorAddress * sectorSize % (_sectorsPerHunk * sectorSize); @@ -1409,26 +1409,26 @@ namespace Aaru.DiscImages uint sectorOffset; if(tag == SectorTagType.CdSectorSubchannel) - switch(track.TrackSubchannelType) + switch(track.SubchannelType) { case TrackSubchannelType.None: throw new FeatureNotPresentImageException("Requested sector does not contain subchannel"); case TrackSubchannelType.RawInterleaved: - sectorOffset = (uint)track.TrackRawBytesPerSector; + sectorOffset = (uint)track.RawBytesPerSector; sectorSize = 96; break; default: throw new - FeatureSupportedButNotImplementedImageException($"Unsupported subchannel type {track.TrackSubchannelType}"); + FeatureSupportedButNotImplementedImageException($"Unsupported subchannel type {track.SubchannelType}"); } else - switch(track.TrackType) + switch(track.Type) { case TrackType.CdMode1: case TrackType.CdMode2Form1: { - if(track.TrackRawBytesPerSector == 2352) + if(track.RawBytesPerSector == 2352) switch(tag) { case SectorTagType.CdSectorSync: @@ -1492,7 +1492,7 @@ namespace Aaru.DiscImages case TrackType.CdMode2Form2: { - if(track.TrackRawBytesPerSector == 2352) + if(track.RawBytesPerSector == 2352) switch(tag) { case SectorTagType.CdSectorSync: @@ -1564,7 +1564,7 @@ namespace Aaru.DiscImages case TrackType.CdMode2Formless: { - if(track.TrackRawBytesPerSector == 2352) + if(track.RawBytesPerSector == 2352) switch(tag) { case SectorTagType.CdSectorSync: @@ -1605,7 +1605,7 @@ namespace Aaru.DiscImages byte[] buffer = new byte[sectorSize]; - if(track.TrackType == TrackType.Audio && _swapAudio) + if(track.Type == TrackType.Audio && _swapAudio) for(int i = 0; i < 2352; i += 2) { buffer[i + 1] = sector[i]; @@ -1614,7 +1614,7 @@ namespace Aaru.DiscImages else Array.Copy(sector, sectorOffset, buffer, 0, sectorSize); - if(track.TrackType == TrackType.Audio && _swapAudio) + if(track.Type == TrackType.Audio && _swapAudio) for(int i = 0; i < 2352; i += 2) { buffer[i + 1] = sector[i]; @@ -1685,7 +1685,7 @@ namespace Aaru.DiscImages if(!_sectorCache.TryGetValue(sectorAddress, out byte[] sector)) { track = GetTrack(sectorAddress); - uint sectorSize = (uint)track.TrackRawBytesPerSector; + uint sectorSize = (uint)track.RawBytesPerSector; ulong hunkNo = sectorAddress / _sectorsPerHunk; ulong secOff = sectorAddress * sectorSize % (_sectorsPerHunk * sectorSize); @@ -1701,20 +1701,20 @@ namespace Aaru.DiscImages _sectorCache.Add(sectorAddress, sector); } - byte[] buffer = new byte[track.TrackRawBytesPerSector]; + byte[] buffer = new byte[track.RawBytesPerSector]; - if(track.TrackType == TrackType.Audio && _swapAudio) + if(track.Type == TrackType.Audio && _swapAudio) for(int i = 0; i < 2352; i += 2) { buffer[i + 1] = sector[i]; buffer[i] = sector[i + 1]; } else - Array.Copy(sector, 0, buffer, 0, track.TrackRawBytesPerSector); + Array.Copy(sector, 0, buffer, 0, track.RawBytesPerSector); - switch(track.TrackType) + switch(track.Type) { - case TrackType.CdMode1 when track.TrackRawBytesPerSector == 2048: + case TrackType.CdMode1 when track.RawBytesPerSector == 2048: { byte[] fullSector = new byte[2352]; @@ -1726,7 +1726,7 @@ namespace Aaru.DiscImages break; } - case TrackType.CdMode2Form1 when track.TrackRawBytesPerSector == 2048: + case TrackType.CdMode2Form1 when track.RawBytesPerSector == 2048: { byte[] fullSector = new byte[2352]; @@ -1738,7 +1738,7 @@ namespace Aaru.DiscImages break; } - case TrackType.CdMode2Form1 when track.TrackRawBytesPerSector == 2324: + case TrackType.CdMode2Form1 when track.RawBytesPerSector == 2324: { byte[] fullSector = new byte[2352]; @@ -1750,7 +1750,7 @@ namespace Aaru.DiscImages break; } - case TrackType.CdMode2Formless when track.TrackRawBytesPerSector == 2336: + case TrackType.CdMode2Formless when track.RawBytesPerSector == 2336: { byte[] fullSector = new byte[2352]; @@ -1806,7 +1806,7 @@ namespace Aaru.DiscImages if(_isHdd) throw new FeaturedNotSupportedByDiscImageException("Cannot access optical tracks on a hard disk image"); - return GetSessionTracks(session.SessionSequence); + return GetSessionTracks(session.Sequence); } /// @@ -1815,7 +1815,7 @@ namespace Aaru.DiscImages if(_isHdd) throw new FeaturedNotSupportedByDiscImageException("Cannot access optical tracks on a hard disk image"); - return _tracks.Values.Where(track => track.TrackSession == session).ToList(); + return _tracks.Values.Where(track => track.Session == session).ToList(); } /// diff --git a/Aaru.Images/CloneCD/Read.cs b/Aaru.Images/CloneCD/Read.cs index 357883e4c..57be9a378 100644 --- a/Aaru.Images/CloneCD/Read.cs +++ b/Aaru.Images/CloneCD/Read.cs @@ -95,20 +95,20 @@ namespace Aaru.DiscImages var trkModeRegex = new Regex(TRACK_MODE); var trkIndexRegex = new Regex(TRACK_INDEX); - bool inCcd = false; - bool inDisk = false; - bool inSession = false; - bool inEntry = false; - bool inTrack = false; - bool inCdText = false; - var cdtMs = new MemoryStream(); - int minSession = int.MaxValue; - int maxSession = int.MinValue; - var currentEntry = new FullTOC.TrackDataDescriptor(); + bool inCcd = false; + bool inDisk = false; + bool inSession = false; + bool inEntry = false; + bool inTrack = false; + bool inCdText = false; + var cdtMs = new MemoryStream(); + int minSession = int.MaxValue; + int maxSession = int.MinValue; + var currentEntry = new FullTOC.TrackDataDescriptor(); byte currentTrackEntry = 0; - Dictionary trackModes = new Dictionary(); - Dictionary> trackIndexes = new Dictionary>(); - List entries = new List(); + Dictionary trackModes = new(); + Dictionary> trackIndexes = new(); + List entries = new(); _scrambled = false; _catalog = null; @@ -429,7 +429,7 @@ namespace Aaru.DiscImages if(!firstTrackInSession) { - currentTrack.TrackEndSector = leadOutStart - 1; + currentTrack.EndSector = leadOutStart - 1; Tracks.Add(currentTrack); } @@ -457,7 +457,7 @@ namespace Aaru.DiscImages { if(!firstTrackInSession) { - currentTrack.TrackEndSector = + currentTrack.EndSector = GetLba(descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME) - 1; Tracks.Add(currentTrack); @@ -465,43 +465,42 @@ namespace Aaru.DiscImages currentTrack = new Track { - TrackBytesPerSector = 2352, - TrackFile = _dataFilter.GetFilename(), - TrackFileType = _scrambled ? "SCRAMBLED" : "BINARY", - TrackFilter = _dataFilter, - TrackRawBytesPerSector = 2352, - TrackSequence = descriptor.POINT, - TrackStartSector = - GetLba(descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME), - TrackSession = descriptor.SessionNumber + BytesPerSector = 2352, + File = _dataFilter.GetFilename(), + FileType = _scrambled ? "SCRAMBLED" : "BINARY", + Filter = _dataFilter, + RawBytesPerSector = 2352, + Sequence = descriptor.POINT, + StartSector = GetLba(descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME), + Session = descriptor.SessionNumber }; if(descriptor.POINT == 1) { - currentTrack.TrackPregap = currentTrack.TrackStartSector + 150; - currentTrack.Indexes[0] = -150; - currentTrack.Indexes[1] = (int)currentTrack.TrackStartSector; - currentTrack.TrackStartSector = 0; + currentTrack.Pregap = currentTrack.StartSector + 150; + currentTrack.Indexes[0] = -150; + currentTrack.Indexes[1] = (int)currentTrack.StartSector; + currentTrack.StartSector = 0; } else { if(firstTrackInSession) { - currentTrack.TrackPregap = 150; + currentTrack.Pregap = 150; - if(currentTrack.TrackStartSector > 0) + if(currentTrack.StartSector > 0) { - currentTrack.Indexes[0] = (int)currentTrack.TrackStartSector - 150; + currentTrack.Indexes[0] = (int)currentTrack.StartSector - 150; if(currentTrack.Indexes[0] < 0) currentTrack.Indexes[0] = 0; } - currentTrack.Indexes[1] = (int)currentTrack.TrackStartSector; - currentTrack.TrackStartSector -= 150; + currentTrack.Indexes[1] = (int)currentTrack.StartSector; + currentTrack.StartSector -= 150; } else - currentTrack.Indexes[1] = (int)currentTrack.TrackStartSector; + currentTrack.Indexes[1] = (int)currentTrack.StartSector; } firstTrackInSession = false; @@ -509,21 +508,21 @@ namespace Aaru.DiscImages // Need to check exact data type later if((TocControl)(descriptor.CONTROL & 0x0D) == TocControl.DataTrack || (TocControl)(descriptor.CONTROL & 0x0D) == TocControl.DataTrackIncremental) - currentTrack.TrackType = TrackType.Data; + currentTrack.Type = TrackType.Data; else - currentTrack.TrackType = TrackType.Audio; + currentTrack.Type = TrackType.Audio; if(!_trackFlags.ContainsKey(descriptor.POINT)) _trackFlags.Add(descriptor.POINT, descriptor.CONTROL); if(_subFilter != null) { - currentTrack.TrackSubchannelFile = _subFilter.GetFilename(); - currentTrack.TrackSubchannelFilter = _subFilter; - currentTrack.TrackSubchannelType = TrackSubchannelType.Raw; + currentTrack.SubchannelFile = _subFilter.GetFilename(); + currentTrack.SubchannelFilter = _subFilter; + currentTrack.SubchannelType = TrackSubchannelType.Raw; } else - currentTrack.TrackSubchannelType = TrackSubchannelType.None; + currentTrack.SubchannelType = TrackSubchannelType.None; } break; @@ -563,47 +562,47 @@ namespace Aaru.DiscImages if(!firstTrackInSession) { - currentTrack.TrackEndSector = leadOutStart - 1; + currentTrack.EndSector = leadOutStart - 1; Tracks.Add(currentTrack); } - Track[] tmpTracks = Tracks.OrderBy(t => t.TrackSequence).ToArray(); + Track[] tmpTracks = Tracks.OrderBy(t => t.Sequence).ToArray(); ulong currentDataOffset = 0; ulong currentSubchannelOffset = 0; foreach(Track tmpTrack in tmpTracks) { - tmpTrack.TrackFileOffset = currentDataOffset; + tmpTrack.FileOffset = currentDataOffset; - currentDataOffset += 2352 * (tmpTrack.TrackEndSector - (ulong)tmpTrack.Indexes[1] + 1); + currentDataOffset += 2352 * (tmpTrack.EndSector - (ulong)tmpTrack.Indexes[1] + 1); if(_subFilter != null) { - tmpTrack.TrackSubchannelOffset = currentSubchannelOffset; + tmpTrack.SubchannelOffset = currentSubchannelOffset; - currentSubchannelOffset += 96 * (tmpTrack.TrackEndSector - (ulong)tmpTrack.Indexes[1] + 1); + currentSubchannelOffset += 96 * (tmpTrack.EndSector - (ulong)tmpTrack.Indexes[1] + 1); } if(tmpTrack.Indexes.TryGetValue(0, out int idx0)) { if(idx0 < 0) { - tmpTrack.TrackFileOffset = 0; - tmpTrack.TrackSubchannelOffset = 0; + tmpTrack.FileOffset = 0; + tmpTrack.SubchannelOffset = 0; } else { int indexDifference = tmpTrack.Indexes[1] - idx0; - tmpTrack.TrackFileOffset -= (ulong)(2352 * indexDifference); + tmpTrack.FileOffset -= (ulong)(2352 * indexDifference); if(_subFilter != null) - tmpTrack.TrackSubchannelOffset -= (ulong)(96 * indexDifference); + tmpTrack.SubchannelOffset -= (ulong)(96 * indexDifference); } } - if(trackModes.TryGetValue((byte)tmpTrack.TrackSequence, out int trackMode)) - tmpTrack.TrackType = trackMode switch + if(trackModes.TryGetValue((byte)tmpTrack.Sequence, out int trackMode)) + tmpTrack.Type = trackMode switch { 0 => TrackType.Audio, 1 => TrackType.CdMode1, @@ -611,7 +610,7 @@ namespace Aaru.DiscImages _ => TrackType.Data }; - if(trackIndexes.TryGetValue((byte)tmpTrack.TrackSequence, out Dictionary indexes)) + if(trackIndexes.TryGetValue((byte)tmpTrack.Sequence, out Dictionary indexes)) { foreach((byte index, int value) in indexes.OrderBy(i => i.Key). Where(trackIndex => trackIndex.Key > 1)) @@ -620,17 +619,17 @@ namespace Aaru.DiscImages tmpTrack.Indexes[index] = value; } - if(tmpTrack.TrackType == TrackType.Data) + if(tmpTrack.Type == TrackType.Data) { for(int s = 225; s < 750; s++) { byte[] syncTest = new byte[12]; byte[] sectTest = new byte[2352]; - long pos = (long)tmpTrack.TrackFileOffset + (s * 2352); + long pos = (long)tmpTrack.FileOffset + (s * 2352); if(pos >= _dataStream.Length + 2352 || - s >= (int)(tmpTrack.TrackEndSector - tmpTrack.TrackStartSector)) + s >= (int)(tmpTrack.EndSector - tmpTrack.StartSector)) break; _dataStream.Seek(pos, SeekOrigin.Begin); @@ -645,8 +644,8 @@ namespace Aaru.DiscImages if(sectTest[15] == 1) { - tmpTrack.TrackBytesPerSector = 2048; - tmpTrack.TrackType = TrackType.CdMode1; + tmpTrack.BytesPerSector = 2048; + tmpTrack.Type = TrackType.CdMode1; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -686,8 +685,8 @@ namespace Aaru.DiscImages !empHdr.SequenceEqual(subHdr1)) if((subHdr1[2] & 0x20) == 0x20) { - tmpTrack.TrackBytesPerSector = 2324; - tmpTrack.TrackType = TrackType.CdMode2Form2; + tmpTrack.BytesPerSector = 2324; + tmpTrack.Type = TrackType.CdMode2Form2; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -708,8 +707,8 @@ namespace Aaru.DiscImages } else { - tmpTrack.TrackBytesPerSector = 2048; - tmpTrack.TrackType = TrackType.CdMode2Form1; + tmpTrack.BytesPerSector = 2048; + tmpTrack.Type = TrackType.CdMode2Form1; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -738,8 +737,8 @@ namespace Aaru.DiscImages break; } - tmpTrack.TrackBytesPerSector = 2336; - tmpTrack.TrackType = TrackType.CdMode2Formless; + tmpTrack.BytesPerSector = 2336; + tmpTrack.Type = TrackType.CdMode2Formless; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -772,9 +771,9 @@ namespace Aaru.DiscImages var currentSession = new Session { - EndTrack = uint.MinValue, - StartTrack = uint.MaxValue, - SessionSequence = 1 + EndTrack = uint.MinValue, + StartTrack = uint.MaxValue, + Sequence = 1 }; Partitions = new List(); @@ -782,21 +781,21 @@ namespace Aaru.DiscImages foreach(Track track in Tracks) { - if(track.TrackEndSector + 1 > _imageInfo.Sectors) - _imageInfo.Sectors = track.TrackEndSector + 1; + if(track.EndSector + 1 > _imageInfo.Sectors) + _imageInfo.Sectors = track.EndSector + 1; - if(track.TrackSession == currentSession.SessionSequence) + if(track.Session == currentSession.Sequence) { - if(track.TrackSequence > currentSession.EndTrack) + if(track.Sequence > currentSession.EndTrack) { - currentSession.EndSector = track.TrackEndSector; - currentSession.EndTrack = track.TrackSequence; + currentSession.EndSector = track.EndSector; + currentSession.EndTrack = track.Sequence; } - if(track.TrackSequence < currentSession.StartTrack) + if(track.Sequence < currentSession.StartTrack) { - currentSession.StartSector = track.TrackStartSector; - currentSession.StartTrack = track.TrackSequence; + currentSession.StartSector = track.StartSector; + currentSession.StartTrack = track.Sequence; } } else @@ -805,28 +804,27 @@ namespace Aaru.DiscImages currentSession = new Session { - EndTrack = track.TrackSequence, - StartTrack = track.TrackSequence, - StartSector = track.TrackStartSector, - EndSector = track.TrackEndSector, - SessionSequence = track.TrackSession + EndTrack = track.Sequence, + StartTrack = track.Sequence, + StartSector = track.StartSector, + EndSector = track.EndSector, + Sequence = track.Session }; } var partition = new Partition { - Description = track.TrackDescription, - Size = (track.TrackEndSector - (ulong)track.Indexes[1] + 1) * - (ulong)track.TrackRawBytesPerSector, - Length = track.TrackEndSector - (ulong)track.Indexes[1] + 1, - Sequence = track.TrackSequence, - Offset = track.TrackFileOffset, - Start = (ulong)track.Indexes[1], - Type = track.TrackType.ToString() + Description = track.Description, + Size = (track.EndSector - (ulong)track.Indexes[1] + 1) * (ulong)track.RawBytesPerSector, + Length = track.EndSector - (ulong)track.Indexes[1] + 1, + Sequence = track.Sequence, + Offset = track.FileOffset, + Start = (ulong)track.Indexes[1], + Type = track.Type.ToString() }; Partitions.Add(partition); - _offsetMap.Add(track.TrackSequence, track.TrackStartSector); + _offsetMap.Add(track.Sequence, track.StartSector); } Sessions.Add(currentSession); @@ -840,18 +838,18 @@ namespace Aaru.DiscImages for(int i = 0; i < Tracks.Count; i++) { // First track is audio - firstAudio |= i == 0 && Tracks[i].TrackType == TrackType.Audio; + firstAudio |= i == 0 && Tracks[i].Type == TrackType.Audio; // First track is data - firstData |= i == 0 && Tracks[i].TrackType != TrackType.Audio; + firstData |= i == 0 && Tracks[i].Type != TrackType.Audio; // Any non first track is data - data |= i != 0 && Tracks[i].TrackType != TrackType.Audio; + data |= i != 0 && Tracks[i].Type != TrackType.Audio; // Any non first track is audio - audio |= i != 0 && Tracks[i].TrackType == TrackType.Audio; + audio |= i != 0 && Tracks[i].Type == TrackType.Audio; - switch(Tracks[i].TrackType) + switch(Tracks[i].Type) { case TrackType.CdMode2Form1: case TrackType.CdMode2Form2: @@ -933,10 +931,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectors(ulong sectorAddress, uint length) { - foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value < + track.EndSector - track.StartSector + 1 select kvp) return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), $"Sector address {sectorAddress} not found"); @@ -950,10 +948,9 @@ namespace Aaru.DiscImages { kvp, track - }).Where(t => t.track.TrackSequence == t.kvp.Key). + }).Where(t => t.track.Sequence == t.kvp.Key). Where(t => sectorAddress - t.kvp.Value < - t.track.TrackEndSector - - t.track.TrackStartSector + 1). + t.track.EndSector - t.track.StartSector + 1). Select(t => t.kvp)) return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag); @@ -965,10 +962,10 @@ namespace Aaru.DiscImages { var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.TrackSequence == track)) + foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.Sequence == track)) { aaruTrack = linqTrack; @@ -978,11 +975,11 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress - 1 > aaruTrack.TrackEndSector) + if(length + sectorAddress - 1 > aaruTrack.EndSector) throw new ArgumentOutOfRangeException(nameof(length), string. Format("Requested more sectors ({0} {2}) than present in track ({1}), won't cross tracks", - length + sectorAddress, aaruTrack.TrackEndSector, + length + sectorAddress, aaruTrack.EndSector, sectorAddress)); uint sectorOffset; @@ -990,7 +987,7 @@ namespace Aaru.DiscImages uint sectorSkip; bool mode2 = false; - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case TrackType.Audio: { @@ -1024,7 +1021,7 @@ namespace Aaru.DiscImages byte[] buffer = new byte[sectorSize * length]; - _dataStream.Seek((long)(aaruTrack.TrackFileOffset + (sectorAddress * 2352)), SeekOrigin.Begin); + _dataStream.Seek((long)(aaruTrack.FileOffset + (sectorAddress * 2352)), SeekOrigin.Begin); if(mode2) { @@ -1066,10 +1063,10 @@ namespace Aaru.DiscImages var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.TrackSequence == track)) + foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.Sequence == track)) { aaruTrack = linqTrack; @@ -1079,11 +1076,11 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress - 1 > aaruTrack.TrackEndSector) + if(length + sectorAddress - 1 > aaruTrack.EndSector) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector}), won't cross tracks"); - if(aaruTrack.TrackType == TrackType.Data) + if(aaruTrack.Type == TrackType.Data) throw new ArgumentException("Unsupported tag requested", nameof(tag)); byte[] buffer; @@ -1098,13 +1095,13 @@ namespace Aaru.DiscImages case SectorTagType.CdSectorSubHeader: case SectorTagType.CdSectorSync: break; case SectorTagType.CdTrackFlags: - return _trackFlags.TryGetValue((byte)aaruTrack.TrackSequence, out byte flags) ? new[] + return _trackFlags.TryGetValue((byte)aaruTrack.Sequence, out byte flags) ? new[] { flags } : new byte[1]; case SectorTagType.CdSectorSubchannel: buffer = new byte[96 * length]; - _subStream.Seek((long)(aaruTrack.TrackSubchannelOffset + (sectorAddress * 96)), SeekOrigin.Begin); + _subStream.Seek((long)(aaruTrack.SubchannelOffset + (sectorAddress * 96)), SeekOrigin.Begin); _subStream.Read(buffer, 0, buffer.Length); return Subchannel.Interleave(buffer); @@ -1115,7 +1112,7 @@ namespace Aaru.DiscImages uint sectorSize; uint sectorSkip; - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case TrackType.CdMode1: switch(tag) @@ -1316,7 +1313,7 @@ namespace Aaru.DiscImages buffer = new byte[sectorSize * length]; - _dataStream.Seek((long)(aaruTrack.TrackFileOffset + (sectorAddress * 2352)), SeekOrigin.Begin); + _dataStream.Seek((long)(aaruTrack.FileOffset + (sectorAddress * 2352)), SeekOrigin.Begin); if(sectorOffset == 0 && sectorSkip == 0) @@ -1343,10 +1340,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectorsLong(ulong sectorAddress, uint length) { - foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value < + track.EndSector - track.StartSector + 1 select kvp) return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), $"Sector address {sectorAddress} not found"); @@ -1357,10 +1354,10 @@ namespace Aaru.DiscImages { var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.TrackSequence == track)) + foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.Sequence == track)) { aaruTrack = linqTrack; @@ -1370,13 +1367,13 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress - 1 > aaruTrack.TrackEndSector) + if(length + sectorAddress - 1 > aaruTrack.EndSector) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector}), won't cross tracks"); byte[] buffer = new byte[2352 * length]; - _dataStream.Seek((long)(aaruTrack.TrackFileOffset + (sectorAddress * 2352)), SeekOrigin.Begin); + _dataStream.Seek((long)(aaruTrack.FileOffset + (sectorAddress * 2352)), SeekOrigin.Begin); _dataStream.Read(buffer, 0, buffer.Length); return buffer; @@ -1386,13 +1383,12 @@ namespace Aaru.DiscImages public List GetSessionTracks(Session session) { if(Sessions.Contains(session)) - return GetSessionTracks(session.SessionSequence); + return GetSessionTracks(session.Sequence); throw new ImageNotSupportedException("Session does not exist in disc image"); } /// - public List GetSessionTracks(ushort session) => - Tracks.Where(track => track.TrackSession == session).ToList(); + public List GetSessionTracks(ushort session) => Tracks.Where(track => track.Session == session).ToList(); } } \ No newline at end of file diff --git a/Aaru.Images/CloneCD/Write.cs b/Aaru.Images/CloneCD/Write.cs index 3f982d9f8..78fdd4c3f 100644 --- a/Aaru.Images/CloneCD/Write.cs +++ b/Aaru.Images/CloneCD/Write.cs @@ -162,8 +162,7 @@ namespace Aaru.DiscImages } Track track = - Tracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + Tracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && sectorAddress <= trk.EndSector); if(track is null) { @@ -172,7 +171,7 @@ namespace Aaru.DiscImages return false; } - if(data.Length != track.TrackRawBytesPerSector) + if(data.Length != track.RawBytesPerSector) { ErrorMessage = "Incorrect data size"; @@ -180,7 +179,7 @@ namespace Aaru.DiscImages } _dataStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); _dataStream.Write(data, 0, data.Length); @@ -199,8 +198,7 @@ namespace Aaru.DiscImages } Track track = - Tracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + Tracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && sectorAddress <= trk.EndSector); if(track is null) { @@ -209,14 +207,14 @@ namespace Aaru.DiscImages return false; } - if(sectorAddress + length > track.TrackEndSector + 1) + if(sectorAddress + length > track.EndSector + 1) { ErrorMessage = "Can't cross tracks"; return false; } - if(data.Length % track.TrackRawBytesPerSector != 0) + if(data.Length % track.RawBytesPerSector != 0) { ErrorMessage = "Incorrect data size"; @@ -224,7 +222,7 @@ namespace Aaru.DiscImages } _dataStream. - Seek((long)(track.TrackFileOffset + ((sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector)), + Seek((long)(track.FileOffset + ((sectorAddress - track.StartSector) * (ulong)track.RawBytesPerSector)), SeekOrigin.Begin); _dataStream.Write(data, 0, data.Length); @@ -240,25 +238,25 @@ namespace Aaru.DiscImages Tracks = new List(); - foreach(Track track in tracks.OrderBy(t => t.TrackSequence)) + foreach(Track track in tracks.OrderBy(t => t.Sequence)) { Track newTrack = track; - if(newTrack.TrackSession > 1) + if(newTrack.Session > 1) { - Track firstSessionTrack = tracks.FirstOrDefault(t => t.TrackSession == newTrack.TrackSession); + Track firstSessionTrack = tracks.FirstOrDefault(t => t.Session == newTrack.Session); - if(firstSessionTrack?.TrackSequence == newTrack.TrackSequence && - newTrack.TrackPregap >= 150) + if(firstSessionTrack?.Sequence == newTrack.Sequence && + newTrack.Pregap >= 150) { - newTrack.TrackPregap -= 150; - newTrack.TrackStartSector += 150; + newTrack.Pregap -= 150; + newTrack.StartSector += 150; } } uint subchannelSize; - switch(newTrack.TrackSubchannelType) + switch(newTrack.SubchannelType) { case TrackSubchannelType.None: subchannelSize = 0; @@ -270,18 +268,18 @@ namespace Aaru.DiscImages break; default: - ErrorMessage = $"Unsupported subchannel type {newTrack.TrackSubchannelType}"; + ErrorMessage = $"Unsupported subchannel type {newTrack.SubchannelType}"; return false; } - newTrack.TrackFileOffset = currentDataOffset; - newTrack.TrackSubchannelOffset = currentSubchannelOffset; + newTrack.FileOffset = currentDataOffset; + newTrack.SubchannelOffset = currentSubchannelOffset; - currentDataOffset += (ulong)newTrack.TrackRawBytesPerSector * - (newTrack.TrackEndSector - newTrack.TrackStartSector + 1); + currentDataOffset += (ulong)newTrack.RawBytesPerSector * + (newTrack.EndSector - newTrack.StartSector + 1); - currentSubchannelOffset += subchannelSize * (newTrack.TrackEndSector - newTrack.TrackStartSector + 1); + currentSubchannelOffset += subchannelSize * (newTrack.EndSector - newTrack.StartSector + 1); Tracks.Add(newTrack); } @@ -335,9 +333,9 @@ namespace Aaru.DiscImages { _descriptorStream.WriteLine("[Session {0}]", i); - Track firstSessionTrack = Tracks.FirstOrDefault(t => t.TrackSession == i); + Track firstSessionTrack = Tracks.FirstOrDefault(t => t.Session == i); - switch(firstSessionTrack?.TrackType) + switch(firstSessionTrack?.Type) { case TrackType.Audio: // CloneCD always writes this value for first track in disc, however the Rainbow Books @@ -429,8 +427,7 @@ namespace Aaru.DiscImages } Track track = - Tracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + Tracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && sectorAddress <= trk.EndSector); if(track is null) { @@ -456,10 +453,10 @@ namespace Aaru.DiscImages } case SectorTagType.CdSectorSubchannel: { - if(track.TrackSubchannelType == 0) + if(track.SubchannelType == 0) { ErrorMessage = - $"Trying to write subchannel to track {track.TrackSequence}, that does not have subchannel"; + $"Trying to write subchannel to track {track.Sequence}, that does not have subchannel"; return false; } @@ -484,9 +481,8 @@ namespace Aaru.DiscImages return false; } - _subStream. - Seek((long)(track.TrackSubchannelOffset + ((sectorAddress - track.TrackStartSector) * 96)), - SeekOrigin.Begin); + _subStream.Seek((long)(track.SubchannelOffset + ((sectorAddress - track.StartSector) * 96)), + SeekOrigin.Begin); _subStream.Write(Subchannel.Deinterleave(data), 0, data.Length); @@ -510,8 +506,7 @@ namespace Aaru.DiscImages } Track track = - Tracks.FirstOrDefault(trk => sectorAddress >= trk.TrackStartSector && - sectorAddress <= trk.TrackEndSector); + Tracks.FirstOrDefault(trk => sectorAddress >= trk.StartSector && sectorAddress <= trk.EndSector); if(track is null) { @@ -526,10 +521,10 @@ namespace Aaru.DiscImages case SectorTagType.CdTrackIsrc: return WriteSectorTag(data, sectorAddress, tag); case SectorTagType.CdSectorSubchannel: { - if(track.TrackSubchannelType == 0) + if(track.SubchannelType == 0) { ErrorMessage = - $"Trying to write subchannel to track {track.TrackSequence}, that does not have subchannel"; + $"Trying to write subchannel to track {track.Sequence}, that does not have subchannel"; return false; } @@ -554,9 +549,8 @@ namespace Aaru.DiscImages return false; } - _subStream. - Seek((long)(track.TrackSubchannelOffset + ((sectorAddress - track.TrackStartSector) * 96)), - SeekOrigin.Begin); + _subStream.Seek((long)(track.SubchannelOffset + ((sectorAddress - track.StartSector) * 96)), + SeekOrigin.Begin); _subStream.Write(Subchannel.Deinterleave(data), 0, data.Length); diff --git a/Aaru.Images/DiscJuggler/Read.cs b/Aaru.Images/DiscJuggler/Read.cs index 92151a532..e93619562 100644 --- a/Aaru.Images/DiscJuggler/Read.cs +++ b/Aaru.Images/DiscJuggler/Read.cs @@ -158,9 +158,9 @@ namespace Aaru.DiscImages var session = new Session { - SessionSequence = sessionSequence, - EndTrack = uint.MinValue, - StartTrack = uint.MaxValue + Sequence = sessionSequence, + EndTrack = uint.MinValue, + StartTrack = uint.MaxValue }; position += 15; @@ -178,9 +178,9 @@ namespace Aaru.DiscImages byte[] trackFilenameB = new byte[descriptor[position]]; position++; Array.Copy(descriptor, position, trackFilenameB, 0, trackFilenameB.Length); - position += trackFilenameB.Length; - track.TrackFile = Path.GetFileName(Encoding.Default.GetString(trackFilenameB)); - AaruConsole.DebugWriteLine("DiscJuggler plugin", "\tfilename = {0}", track.TrackFile); + position += trackFilenameB.Length; + track.File = Path.GetFileName(Encoding.Default.GetString(trackFilenameB)); + AaruConsole.DebugWriteLine("DiscJuggler plugin", "\tfilename = {0}", track.File); // Skip unknown position += 29; @@ -227,10 +227,9 @@ namespace Aaru.DiscImages if(cb != 10) continue; - track.TrackDescription = Encoding.Default.GetString(textBlk, 0, bLen); + track.Description = Encoding.Default.GetString(textBlk, 0, bLen); - AaruConsole.DebugWriteLine("DiscJuggler plugin", "\tTrack title = {0}", - track.TrackDescription); + AaruConsole.DebugWriteLine("DiscJuggler plugin", "\tTrack title = {0}", track.Description); } } @@ -242,36 +241,35 @@ namespace Aaru.DiscImages // Skip unknown position += 4; - session.SessionSequence = (ushort)(BitConverter.ToUInt32(descriptor, position) + 1); - track.TrackSession = session.SessionSequence; - AaruConsole.DebugWriteLine("DiscJuggler plugin", "\tsession = {0}", session.SessionSequence); - position += 4; - track.TrackSequence = BitConverter.ToUInt32(descriptor, position) + lastSessionTrack + 1; + session.Sequence = (ushort)(BitConverter.ToUInt32(descriptor, position) + 1); + track.Session = session.Sequence; + AaruConsole.DebugWriteLine("DiscJuggler plugin", "\tsession = {0}", session.Sequence); + position += 4; + track.Sequence = BitConverter.ToUInt32(descriptor, position) + lastSessionTrack + 1; - AaruConsole.DebugWriteLine("DiscJuggler plugin", "\ttrack = {1} + {2} + 1 = {0}", - track.TrackSequence, BitConverter.ToUInt32(descriptor, position), - lastSessionTrack); + AaruConsole.DebugWriteLine("DiscJuggler plugin", "\ttrack = {1} + {2} + 1 = {0}", track.Sequence, + BitConverter.ToUInt32(descriptor, position), lastSessionTrack); // There's always an index 0 in the image - track.TrackPregap = (ulong)track.Indexes[0]; + track.Pregap = (ulong)track.Indexes[0]; - if(track.TrackSequence == 1) + if(track.Sequence == 1) track.Indexes[0] = -150; if(track.Indexes[0] == 0) track.Indexes.Remove(0); - position += 4; - track.TrackStartSector = BitConverter.ToUInt32(descriptor, position); - AaruConsole.DebugWriteLine("DiscJuggler plugin", "\ttrackStart = {0}", track.TrackStartSector); + position += 4; + track.StartSector = BitConverter.ToUInt32(descriptor, position); + AaruConsole.DebugWriteLine("DiscJuggler plugin", "\ttrackStart = {0}", track.StartSector); position += 4; uint trackLen = BitConverter.ToUInt32(descriptor, position); // DiscJuggler counts the first track pregap start as 0 instead of -150, we need to adjust appropriately - if(track.TrackStartSector == 0) + if(track.StartSector == 0) trackLen -= 150; else - track.TrackStartSector -= 150; + track.StartSector -= 150; int leftLen = (int)trackLen; @@ -280,27 +278,27 @@ namespace Aaru.DiscImages { leftLen -= idx.Value; - if(idx.Key == 0 && - track.TrackSequence == 1) + if(idx.Key == 0 && + track.Sequence == 1) continue; - track.Indexes[idx.Key] = (int)track.TrackStartSector + leftLen; + track.Indexes[idx.Key] = (int)track.StartSector + leftLen; } - track.TrackEndSector = track.TrackStartSector + trackLen - 1; - AaruConsole.DebugWriteLine("DiscJuggler plugin", "\ttrackEnd = {0}", track.TrackEndSector); + track.EndSector = track.StartSector + trackLen - 1; + AaruConsole.DebugWriteLine("DiscJuggler plugin", "\ttrackEnd = {0}", track.EndSector); position += 4; - if(track.TrackSequence > session.EndTrack) + if(track.Sequence > session.EndTrack) { - session.EndTrack = track.TrackSequence; - session.EndSector = track.TrackEndSector; + session.EndTrack = track.Sequence; + session.EndSector = track.EndSector; } - if(track.TrackSequence < session.StartTrack) + if(track.Sequence < session.StartTrack) { - session.StartTrack = track.TrackSequence; - session.StartSector = track.TrackStartSector; + session.StartTrack = track.Sequence; + session.StartSector = track.StartSector; } // Skip unknown @@ -345,7 +343,7 @@ namespace Aaru.DiscImages // As to skip the lead-in bool firstTrack = currentOffset == 0; - track.TrackSubchannelType = TrackSubchannelType.None; + track.SubchannelType = TrackSubchannelType.None; switch(trackMode) { @@ -354,42 +352,42 @@ namespace Aaru.DiscImages if(_imageInfo.SectorSize < 2352) _imageInfo.SectorSize = 2352; - track.TrackType = TrackType.Audio; - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; + track.Type = TrackType.Audio; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; switch(readMode) { case 2: if(firstTrack) - currentOffset += 150 * (ulong)track.TrackRawBytesPerSector; + currentOffset += 150 * (ulong)track.RawBytesPerSector; - track.TrackFileOffset = currentOffset; - currentOffset += trackLen * (ulong)track.TrackRawBytesPerSector; + track.FileOffset = currentOffset; + currentOffset += trackLen * (ulong)track.RawBytesPerSector; break; case 3: if(firstTrack) - currentOffset += 150 * (ulong)(track.TrackRawBytesPerSector + 16); + currentOffset += 150 * (ulong)(track.RawBytesPerSector + 16); - track.TrackFileOffset = currentOffset; - track.TrackSubchannelFile = track.TrackFile; - track.TrackSubchannelOffset = currentOffset; - track.TrackSubchannelType = TrackSubchannelType.Q16Interleaved; + track.FileOffset = currentOffset; + track.SubchannelFile = track.File; + track.SubchannelOffset = currentOffset; + track.SubchannelType = TrackSubchannelType.Q16Interleaved; - currentOffset += trackLen * (ulong)(track.TrackRawBytesPerSector + 16); + currentOffset += trackLen * (ulong)(track.RawBytesPerSector + 16); break; case 4: if(firstTrack) - currentOffset += 150 * (ulong)(track.TrackRawBytesPerSector + 96); + currentOffset += 150 * (ulong)(track.RawBytesPerSector + 96); - track.TrackFileOffset = currentOffset; - track.TrackSubchannelFile = track.TrackFile; - track.TrackSubchannelOffset = currentOffset; - track.TrackSubchannelType = TrackSubchannelType.RawInterleaved; + track.FileOffset = currentOffset; + track.SubchannelFile = track.File; + track.SubchannelOffset = currentOffset; + track.SubchannelType = TrackSubchannelType.RawInterleaved; - currentOffset += trackLen * (ulong)(track.TrackRawBytesPerSector + 96); + currentOffset += trackLen * (ulong)(track.RawBytesPerSector + 96); break; default: throw new ImageNotSupportedException($"Unknown read mode {readMode}"); @@ -402,27 +400,27 @@ namespace Aaru.DiscImages if(_imageInfo.SectorSize < 2048) _imageInfo.SectorSize = 2048; - track.TrackType = TrackType.CdMode1; - track.TrackBytesPerSector = 2048; + track.Type = TrackType.CdMode1; + track.BytesPerSector = 2048; switch(readMode) { case 0: - track.TrackRawBytesPerSector = 2048; + track.RawBytesPerSector = 2048; if(firstTrack) - currentOffset += 150 * (ulong)track.TrackRawBytesPerSector; + currentOffset += 150 * (ulong)track.RawBytesPerSector; - track.TrackFileOffset = currentOffset; - currentOffset += trackLen * (ulong)track.TrackRawBytesPerSector; + track.FileOffset = currentOffset; + currentOffset += trackLen * (ulong)track.RawBytesPerSector; break; case 1: throw new ImageNotSupportedException($"Invalid read mode {readMode} for this track"); case 2: - track.TrackRawBytesPerSector = 2352; - currentOffset += trackLen * (ulong)track.TrackRawBytesPerSector; + track.RawBytesPerSector = 2352; + currentOffset += trackLen * (ulong)track.RawBytesPerSector; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -444,17 +442,17 @@ namespace Aaru.DiscImages break; case 3: - track.TrackRawBytesPerSector = 2352; + track.RawBytesPerSector = 2352; if(firstTrack) - currentOffset += 150 * (ulong)(track.TrackRawBytesPerSector + 16); + currentOffset += 150 * (ulong)(track.RawBytesPerSector + 16); - track.TrackFileOffset = currentOffset; - track.TrackSubchannelFile = track.TrackFile; - track.TrackSubchannelOffset = currentOffset; - track.TrackSubchannelType = TrackSubchannelType.Q16Interleaved; + track.FileOffset = currentOffset; + track.SubchannelFile = track.File; + track.SubchannelOffset = currentOffset; + track.SubchannelType = TrackSubchannelType.Q16Interleaved; - currentOffset += trackLen * (ulong)(track.TrackRawBytesPerSector + 16); + currentOffset += trackLen * (ulong)(track.RawBytesPerSector + 16); if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -476,17 +474,17 @@ namespace Aaru.DiscImages break; case 4: - track.TrackRawBytesPerSector = 2352; + track.RawBytesPerSector = 2352; if(firstTrack) - currentOffset += 150 * (ulong)(track.TrackRawBytesPerSector + 96); + currentOffset += 150 * (ulong)(track.RawBytesPerSector + 96); - track.TrackFileOffset = currentOffset; - track.TrackSubchannelFile = track.TrackFile; - track.TrackSubchannelOffset = currentOffset; - track.TrackSubchannelType = TrackSubchannelType.RawInterleaved; + track.FileOffset = currentOffset; + track.SubchannelFile = track.File; + track.SubchannelOffset = currentOffset; + track.SubchannelType = TrackSubchannelType.RawInterleaved; - currentOffset += trackLen * (ulong)(track.TrackRawBytesPerSector + 96); + currentOffset += trackLen * (ulong)(track.RawBytesPerSector + 96); if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -517,8 +515,8 @@ namespace Aaru.DiscImages if(_imageInfo.SectorSize < 2336) _imageInfo.SectorSize = 2336; - track.TrackType = TrackType.CdMode2Formless; - track.TrackBytesPerSector = 2336; + track.Type = TrackType.CdMode2Formless; + track.BytesPerSector = 2336; switch(readMode) { @@ -526,18 +524,18 @@ namespace Aaru.DiscImages throw new ImageNotSupportedException($"Invalid read mode {readMode} for this track"); case 1: - track.TrackRawBytesPerSector = 2336; + track.RawBytesPerSector = 2336; if(firstTrack) - currentOffset += 150 * (ulong)track.TrackRawBytesPerSector; + currentOffset += 150 * (ulong)track.RawBytesPerSector; - track.TrackFileOffset = currentOffset; - currentOffset += trackLen * (ulong)track.TrackRawBytesPerSector; + track.FileOffset = currentOffset; + currentOffset += trackLen * (ulong)track.RawBytesPerSector; break; case 2: - track.TrackRawBytesPerSector = 2352; - currentOffset += trackLen * (ulong)track.TrackRawBytesPerSector; + track.RawBytesPerSector = 2352; + currentOffset += trackLen * (ulong)track.RawBytesPerSector; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -547,17 +545,17 @@ namespace Aaru.DiscImages break; case 3: - track.TrackRawBytesPerSector = 2352; + track.RawBytesPerSector = 2352; if(firstTrack) - currentOffset += 150 * (ulong)(track.TrackRawBytesPerSector + 16); + currentOffset += 150 * (ulong)(track.RawBytesPerSector + 16); - track.TrackFileOffset = currentOffset; - track.TrackSubchannelFile = track.TrackFile; - track.TrackSubchannelOffset = currentOffset; - track.TrackSubchannelType = TrackSubchannelType.Q16Interleaved; + track.FileOffset = currentOffset; + track.SubchannelFile = track.File; + track.SubchannelOffset = currentOffset; + track.SubchannelType = TrackSubchannelType.Q16Interleaved; - currentOffset += trackLen * (ulong)(track.TrackRawBytesPerSector + 16); + currentOffset += trackLen * (ulong)(track.RawBytesPerSector + 16); if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -567,17 +565,17 @@ namespace Aaru.DiscImages break; case 4: - track.TrackRawBytesPerSector = 2352; + track.RawBytesPerSector = 2352; if(firstTrack) - currentOffset += 150 * (ulong)(track.TrackRawBytesPerSector + 96); + currentOffset += 150 * (ulong)(track.RawBytesPerSector + 96); - track.TrackFileOffset = currentOffset; - track.TrackSubchannelFile = track.TrackFile; - track.TrackSubchannelOffset = currentOffset; - track.TrackSubchannelType = TrackSubchannelType.RawInterleaved; + track.FileOffset = currentOffset; + track.SubchannelFile = track.File; + track.SubchannelOffset = currentOffset; + track.SubchannelType = TrackSubchannelType.RawInterleaved; - currentOffset += trackLen * (ulong)(track.TrackRawBytesPerSector + 96); + currentOffset += trackLen * (ulong)(track.RawBytesPerSector + 96); if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSync)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSync); @@ -593,13 +591,13 @@ namespace Aaru.DiscImages default: throw new ImageNotSupportedException($"Unknown track mode {trackMode}"); } - track.TrackFile = imageFilter.GetFilename(); - track.TrackFilter = imageFilter; + track.File = imageFilter.GetFilename(); + track.Filter = imageFilter; - if(track.TrackSubchannelType != TrackSubchannelType.None) + if(track.SubchannelType != TrackSubchannelType.None) { - track.TrackSubchannelFile = imageFilter.GetFilename(); - track.TrackSubchannelFilter = imageFilter; + track.SubchannelFile = imageFilter.GetFilename(); + track.SubchannelFilter = imageFilter; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel); @@ -607,30 +605,30 @@ namespace Aaru.DiscImages var partition = new Partition { - Description = track.TrackDescription, + Description = track.Description, Length = trackLen, - Sequence = track.TrackSequence, - Offset = track.TrackFileOffset, - Start = track.TrackStartSector, - Type = track.TrackType.ToString() + Sequence = track.Sequence, + Offset = track.FileOffset, + Start = track.StartSector, + Type = track.Type.ToString() }; - if(track.TrackSequence > 1 && - track.TrackPregap > 0) + if(track.Sequence > 1 && + track.Pregap > 0) { - partition.Start += track.TrackPregap; - partition.Length -= track.TrackPregap; + partition.Start += track.Pregap; + partition.Length -= track.Pregap; } - partition.Size = partition.Length * (ulong)track.TrackBytesPerSector; + partition.Size = partition.Length * (ulong)track.BytesPerSector; - if(track.TrackEndSector + 1 > _imageInfo.Sectors) - _imageInfo.Sectors = track.TrackEndSector + 1; + if(track.EndSector + 1 > _imageInfo.Sectors) + _imageInfo.Sectors = track.EndSector + 1; Partitions.Add(partition); - _offsetMap.Add(track.TrackSequence, track.TrackStartSector); + _offsetMap.Add(track.Sequence, track.StartSector); Tracks.Add(track); - _trackFlags.Add(track.TrackSequence, (byte)(trackCtl & 0xFF)); + _trackFlags.Add(track.Sequence, (byte)(trackCtl & 0xFF)); addedATrack = true; } @@ -644,8 +642,7 @@ namespace Aaru.DiscImages AaruConsole.DebugWriteLine("DiscJuggler plugin", "session.EndTrack = {0}", session.EndTrack); AaruConsole.DebugWriteLine("DiscJuggler plugin", "session.EndSector = {0}", session.EndSector); - AaruConsole.DebugWriteLine("DiscJuggler plugin", "session.SessionSequence = {0}", - session.SessionSequence); + AaruConsole.DebugWriteLine("DiscJuggler plugin", "session.Sequence = {0}", session.Sequence); } // Skip unknown @@ -718,18 +715,18 @@ namespace Aaru.DiscImages for(int i = 0; i < Tracks.Count; i++) { // First track is audio - firstaudio |= i == 0 && Tracks[i].TrackType == TrackType.Audio; + firstaudio |= i == 0 && Tracks[i].Type == TrackType.Audio; // First track is data - firstdata |= i == 0 && Tracks[i].TrackType != TrackType.Audio; + firstdata |= i == 0 && Tracks[i].Type != TrackType.Audio; // Any non first track is data - data |= i != 0 && Tracks[i].TrackType != TrackType.Audio; + data |= i != 0 && Tracks[i].Type != TrackType.Audio; // Any non first track is audio - audio |= i != 0 && Tracks[i].TrackType == TrackType.Audio; + audio |= i != 0 && Tracks[i].Type == TrackType.Audio; - switch(Tracks[i].TrackType) + switch(Tracks[i].Type) { case TrackType.CdMode2Form1: case TrackType.CdMode2Form2: @@ -775,7 +772,7 @@ namespace Aaru.DiscImages foreach(Track track in Tracks) { - track.TrackPregap = 0; + track.Pregap = 0; track.Indexes?.Clear(); } @@ -826,10 +823,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectors(ulong sectorAddress, uint length) { - foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value < + track.EndSector - track.StartSector + 1 select kvp) return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), $"Sector address {sectorAddress} not found"); @@ -838,10 +835,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag) { - foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value < + track.EndSector - track.StartSector + 1 select kvp) return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag); throw new ArgumentOutOfRangeException(nameof(sectorAddress), $"Sector address {sectorAddress} not found"); @@ -852,10 +849,10 @@ namespace Aaru.DiscImages { var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.TrackSequence == track)) + foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.Sequence == track)) { aaruTrack = linqTrack; @@ -865,16 +862,16 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress > aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1) + if(length + sectorAddress > aaruTrack.EndSector - aaruTrack.StartSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector - aaruTrack.StartSector + 1}), won't cross tracks"); uint sectorOffset; uint sectorSize; uint sectorSkip; bool mode2 = false; - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case TrackType.Audio: { @@ -885,7 +882,7 @@ namespace Aaru.DiscImages break; } case TrackType.CdMode1: - if(aaruTrack.TrackRawBytesPerSector == 2352) + if(aaruTrack.RawBytesPerSector == 2352) { sectorOffset = 16; sectorSize = 2048; @@ -903,7 +900,7 @@ namespace Aaru.DiscImages { mode2 = true; sectorOffset = 0; - sectorSize = (uint)aaruTrack.TrackRawBytesPerSector; + sectorSize = (uint)aaruTrack.RawBytesPerSector; sectorSkip = 0; } @@ -911,7 +908,7 @@ namespace Aaru.DiscImages default: throw new FeatureSupportedButNotImplementedImageException("Unsupported track type"); } - switch(aaruTrack.TrackSubchannelType) + switch(aaruTrack.SubchannelType) { case TrackSubchannelType.None: sectorSkip += 0; @@ -930,23 +927,22 @@ namespace Aaru.DiscImages byte[] buffer = new byte[sectorSize * length]; - _imageStream. - Seek((long)(aaruTrack.TrackFileOffset + (sectorAddress * (sectorOffset + sectorSize + sectorSkip))), - SeekOrigin.Begin); + _imageStream.Seek((long)(aaruTrack.FileOffset + (sectorAddress * (sectorOffset + sectorSize + sectorSkip))), + SeekOrigin.Begin); if(mode2) { var mode2Ms = new MemoryStream((int)(sectorSize * length)); - buffer = new byte[(aaruTrack.TrackRawBytesPerSector + sectorSkip) * length]; + buffer = new byte[(aaruTrack.RawBytesPerSector + sectorSkip) * length]; _imageStream.Read(buffer, 0, buffer.Length); for(int i = 0; i < length; i++) { - byte[] sector = new byte[aaruTrack.TrackRawBytesPerSector]; + byte[] sector = new byte[aaruTrack.RawBytesPerSector]; - Array.Copy(buffer, (aaruTrack.TrackRawBytesPerSector + sectorSkip) * i, sector, 0, - aaruTrack.TrackRawBytesPerSector); + Array.Copy(buffer, (aaruTrack.RawBytesPerSector + sectorSkip) * i, sector, 0, + aaruTrack.RawBytesPerSector); sector = Sector.GetUserDataFromMode2(sector); mode2Ms.Write(sector, 0, sector.Length); @@ -978,10 +974,10 @@ namespace Aaru.DiscImages var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.TrackSequence == track)) + foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.Sequence == track)) { aaruTrack = linqTrack; @@ -991,11 +987,11 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress > aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1) + if(length + sectorAddress > aaruTrack.EndSector - aaruTrack.StartSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector - aaruTrack.StartSector + 1}), won't cross tracks"); - if(aaruTrack.TrackType == TrackType.Data) + if(aaruTrack.Type == TrackType.Data) throw new ArgumentException("Unsupported tag requested", nameof(tag)); switch(tag) @@ -1023,10 +1019,10 @@ namespace Aaru.DiscImages uint sectorSize; uint sectorSkip; - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { case TrackType.CdMode1: - if(aaruTrack.TrackRawBytesPerSector != 2352) + if(aaruTrack.RawBytesPerSector != 2352) throw new ArgumentException("Unsupported tag requested for this track", nameof(tag)); switch(tag) @@ -1082,7 +1078,7 @@ namespace Aaru.DiscImages break; } case SectorTagType.CdSectorSubchannel: - switch(aaruTrack.TrackSubchannelType) + switch(aaruTrack.SubchannelType) { case TrackSubchannelType.None: throw new ArgumentException("Unsupported tag requested for this track", @@ -1107,7 +1103,7 @@ namespace Aaru.DiscImages break; case TrackType.CdMode2Formless: - if(aaruTrack.TrackRawBytesPerSector != 2352) + if(aaruTrack.RawBytesPerSector != 2352) throw new ArgumentException("Unsupported tag requested for this track", nameof(tag)); { @@ -1136,7 +1132,7 @@ namespace Aaru.DiscImages break; } case SectorTagType.CdSectorSubchannel: - switch(aaruTrack.TrackSubchannelType) + switch(aaruTrack.SubchannelType) { case TrackSubchannelType.None: throw new ArgumentException("Unsupported tag requested for this track", @@ -1165,7 +1161,7 @@ namespace Aaru.DiscImages switch(tag) { case SectorTagType.CdSectorSubchannel: - switch(aaruTrack.TrackSubchannelType) + switch(aaruTrack.SubchannelType) { case TrackSubchannelType.None: throw new ArgumentException("Unsupported tag requested for this track", @@ -1192,7 +1188,7 @@ namespace Aaru.DiscImages default: throw new FeatureSupportedButNotImplementedImageException("Unsupported track type"); } - switch(aaruTrack.TrackSubchannelType) + switch(aaruTrack.SubchannelType) { case TrackSubchannelType.None: sectorSkip += 0; @@ -1211,9 +1207,8 @@ namespace Aaru.DiscImages byte[] buffer = new byte[sectorSize * length]; - _imageStream. - Seek((long)(aaruTrack.TrackFileOffset + (sectorAddress * (sectorOffset + sectorSize + sectorSkip))), - SeekOrigin.Begin); + _imageStream.Seek((long)(aaruTrack.FileOffset + (sectorAddress * (sectorOffset + sectorSize + sectorSkip))), + SeekOrigin.Begin); if(sectorOffset == 0 && sectorSkip == 0) @@ -1228,8 +1223,8 @@ namespace Aaru.DiscImages Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize); } - if(aaruTrack.TrackSubchannelType == TrackSubchannelType.Q16Interleaved && - tag == SectorTagType.CdSectorSubchannel) + if(aaruTrack.SubchannelType == TrackSubchannelType.Q16Interleaved && + tag == SectorTagType.CdSectorSubchannel) return Subchannel.ConvertQToRaw(buffer); return buffer; @@ -1244,10 +1239,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectorsLong(ulong sectorAddress, uint length) { - foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value < - track.TrackEndSector - track.TrackStartSector + 1 select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetMap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value < + track.EndSector - track.StartSector + 1 select kvp) return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), $"Sector address {sectorAddress} not found"); @@ -1261,10 +1256,10 @@ namespace Aaru.DiscImages var aaruTrack = new Track { - TrackSequence = 0 + Sequence = 0 }; - foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.TrackSequence == track)) + foreach(Track linqTrack in Tracks.Where(linqTrack => linqTrack.Sequence == track)) { aaruTrack = linqTrack; @@ -1274,14 +1269,14 @@ namespace Aaru.DiscImages if(aaruTrack is null) throw new ArgumentOutOfRangeException(nameof(track), "Track does not exist in disc image"); - if(length + sectorAddress > aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1) + if(length + sectorAddress > aaruTrack.EndSector - aaruTrack.StartSector + 1) throw new ArgumentOutOfRangeException(nameof(length), - $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.TrackEndSector - aaruTrack.TrackStartSector + 1}), won't cross tracks"); + $"Requested more sectors ({length + sectorAddress}) than present in track ({aaruTrack.EndSector - aaruTrack.StartSector + 1}), won't cross tracks"); - uint sectorSize = (uint)aaruTrack.TrackRawBytesPerSector; + uint sectorSize = (uint)aaruTrack.RawBytesPerSector; uint sectorSkip = 0; - switch(aaruTrack.TrackSubchannelType) + switch(aaruTrack.SubchannelType) { case TrackSubchannelType.None: sectorSkip += 0; @@ -1300,7 +1295,7 @@ namespace Aaru.DiscImages byte[] buffer = new byte[sectorSize * length]; - _imageStream.Seek((long)(aaruTrack.TrackFileOffset + (sectorAddress * (sectorSize + sectorSkip))), + _imageStream.Seek((long)(aaruTrack.FileOffset + (sectorAddress * (sectorSize + sectorSkip))), SeekOrigin.Begin); if(sectorSkip == 0) @@ -1314,9 +1309,9 @@ namespace Aaru.DiscImages Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize); } - switch(aaruTrack.TrackType) + switch(aaruTrack.Type) { - case TrackType.CdMode1 when aaruTrack.TrackRawBytesPerSector == 2048: + case TrackType.CdMode1 when aaruTrack.RawBytesPerSector == 2048: { byte[] fullSector = new byte[2352]; byte[] fullBuffer = new byte[2352 * length]; @@ -1333,7 +1328,7 @@ namespace Aaru.DiscImages break; } - case TrackType.CdMode2Formless when aaruTrack.TrackRawBytesPerSector == 2336: + case TrackType.CdMode2Formless when aaruTrack.RawBytesPerSector == 2336: { byte[] fullSector = new byte[2352]; byte[] fullBuffer = new byte[2352 * length]; @@ -1360,13 +1355,12 @@ namespace Aaru.DiscImages public List GetSessionTracks(Session session) { if(Sessions.Contains(session)) - return GetSessionTracks(session.SessionSequence); + return GetSessionTracks(session.Sequence); throw new ImageNotSupportedException("Session does not exist in disc image"); } /// - public List GetSessionTracks(ushort session) => - Tracks.Where(track => track.TrackSession == session).ToList(); + public List GetSessionTracks(ushort session) => Tracks.Where(track => track.Session == session).ToList(); } } \ No newline at end of file diff --git a/Aaru.Images/GDI/Properties.cs b/Aaru.Images/GDI/Properties.cs index e8424560c..9c3b3500b 100644 --- a/Aaru.Images/GDI/Properties.cs +++ b/Aaru.Images/GDI/Properties.cs @@ -45,7 +45,7 @@ namespace Aaru.DiscImages /// public string Name => "Dreamcast GDI image"; /// - public Guid Id => new Guid("281ECBF2-D2A7-414C-8497-1A33F6DCB2DD"); + public Guid Id => new("281ECBF2-D2A7-414C-8497-1A33F6DCB2DD"); /// public ImageInfo Info => _imageInfo; /// @@ -61,28 +61,28 @@ namespace Aaru.DiscImages { get { - List tracks = new List(); + List tracks = new(); foreach(GdiTrack gdiTrack in _discImage.Tracks) { var track = new Track { - TrackDescription = null, - TrackStartSector = gdiTrack.StartSector, - TrackPregap = gdiTrack.Pregap, - TrackSession = (ushort)(gdiTrack.HighDensity ? 2 : 1), - TrackSequence = gdiTrack.Sequence, - TrackType = gdiTrack.TrackType, - TrackFilter = gdiTrack.TrackFilter, - TrackFile = gdiTrack.TrackFile, - TrackFileOffset = (ulong)gdiTrack.Offset, - TrackFileType = "BINARY", - TrackRawBytesPerSector = gdiTrack.Bps, - TrackBytesPerSector = gdiTrack.TrackType == TrackType.Data ? 2048 : 2352, - TrackSubchannelType = TrackSubchannelType.None + Description = null, + StartSector = gdiTrack.StartSector, + Pregap = gdiTrack.Pregap, + Session = (ushort)(gdiTrack.HighDensity ? 2 : 1), + Sequence = gdiTrack.Sequence, + Type = gdiTrack.TrackType, + Filter = gdiTrack.TrackFilter, + File = gdiTrack.TrackFile, + FileOffset = (ulong)gdiTrack.Offset, + FileType = "BINARY", + RawBytesPerSector = gdiTrack.Bps, + BytesPerSector = gdiTrack.TrackType == TrackType.Data ? 2048 : 2352, + SubchannelType = TrackSubchannelType.None }; - track.TrackEndSector = track.TrackStartSector + gdiTrack.Sectors - 1; + track.EndSector = track.StartSector + gdiTrack.Sectors - 1; tracks.Add(track); } diff --git a/Aaru.Images/GDI/Read.cs b/Aaru.Images/GDI/Read.cs index 9b36ff844..1ec9daeb1 100644 --- a/Aaru.Images/GDI/Read.cs +++ b/Aaru.Images/GDI/Read.cs @@ -154,7 +154,7 @@ namespace Aaru.DiscImages for(int s = 0; s < sessions.Length; s++) if(s == 0) { - sessions[s].SessionSequence = 1; + sessions[s].Sequence = 1; foreach(GdiTrack trk in _discImage.Tracks.Where(trk => !trk.HighDensity)) { @@ -175,7 +175,7 @@ namespace Aaru.DiscImages } else { - sessions[s].SessionSequence = 2; + sessions[s].Sequence = 2; foreach(GdiTrack trk in _discImage.Tracks.Where(trk => trk.HighDensity)) { @@ -844,7 +844,7 @@ namespace Aaru.DiscImages public List GetSessionTracks(Session session) { if(_discImage.Sessions.Contains(session)) - return GetSessionTracks(session.SessionSequence); + return GetSessionTracks(session.Sequence); throw new ImageNotSupportedException("Session does not exist in disc image"); } @@ -852,7 +852,7 @@ namespace Aaru.DiscImages /// public List GetSessionTracks(ushort session) { - List tracks = new List(); + List tracks = new(); bool expectedDensity; switch(session) @@ -873,22 +873,22 @@ namespace Aaru.DiscImages { var track = new Track { - TrackDescription = null, - TrackStartSector = gdiTrack.StartSector, - TrackPregap = gdiTrack.Pregap, - TrackSession = (ushort)(gdiTrack.HighDensity ? 2 : 1), - TrackSequence = gdiTrack.Sequence, - TrackType = gdiTrack.TrackType, - TrackFilter = gdiTrack.TrackFilter, - TrackFile = gdiTrack.TrackFile, - TrackFileOffset = (ulong)gdiTrack.Offset, - TrackFileType = "BINARY", - TrackRawBytesPerSector = gdiTrack.Bps, - TrackBytesPerSector = gdiTrack.TrackType == TrackType.Data ? 2048 : 2352, - TrackSubchannelType = TrackSubchannelType.None + Description = null, + StartSector = gdiTrack.StartSector, + Pregap = gdiTrack.Pregap, + Session = (ushort)(gdiTrack.HighDensity ? 2 : 1), + Sequence = gdiTrack.Sequence, + Type = gdiTrack.TrackType, + Filter = gdiTrack.TrackFilter, + File = gdiTrack.TrackFile, + FileOffset = (ulong)gdiTrack.Offset, + FileType = "BINARY", + RawBytesPerSector = gdiTrack.Bps, + BytesPerSector = gdiTrack.TrackType == TrackType.Data ? 2048 : 2352, + SubchannelType = TrackSubchannelType.None }; - track.TrackEndSector = track.TrackStartSector + gdiTrack.Sectors - 1; + track.EndSector = track.StartSector + gdiTrack.Sectors - 1; tracks.Add(track); } diff --git a/Aaru.Images/Nero/Read.cs b/Aaru.Images/Nero/Read.cs index 352e36af0..7956875ea 100644 --- a/Aaru.Images/Nero/Read.cs +++ b/Aaru.Images/Nero/Read.cs @@ -1029,50 +1029,50 @@ namespace Aaru.DiscImages // There's a pregap if(track.Indexes.ContainsKey(0)) { - track.TrackPregap = (ulong)(track.Indexes[1] - track.Indexes[0]); + track.Pregap = (ulong)(track.Indexes[1] - track.Indexes[0]); // Negative pregap, skip it if(track.Indexes[0] < 0) { - neroTrack.Length -= track.TrackPregap * neroTrack.SectorSize; - neroTrack.Offset += track.TrackPregap * neroTrack.SectorSize; - track.TrackStartSector = (ulong)track.Indexes[1]; + neroTrack.Length -= track.Pregap * neroTrack.SectorSize; + neroTrack.Offset += track.Pregap * neroTrack.SectorSize; + track.StartSector = (ulong)track.Indexes[1]; } else - track.TrackStartSector = (ulong)track.Indexes[0]; + track.StartSector = (ulong)track.Indexes[0]; } else - track.TrackStartSector = (ulong)track.Indexes[1]; + track.StartSector = (ulong)track.Indexes[1]; // Handle hidden tracks - if(neroTrack.Sequence == 1 && - track.TrackStartSector > 0) + if(neroTrack.Sequence == 1 && + track.StartSector > 0) { - neroTrack.Length += track.TrackStartSector * neroTrack.SectorSize; - neroTrack.Offset -= track.TrackStartSector * neroTrack.SectorSize; - track.TrackStartSector = 0; + neroTrack.Length += track.StartSector * neroTrack.SectorSize; + neroTrack.Offset -= track.StartSector * neroTrack.SectorSize; + track.StartSector = 0; } // Common track data - track.TrackDescription = StringHandlers.CToString(neroTrack.Isrc); - track.TrackEndSector = (neroTrack.Length / neroTrack.SectorSize) + track.TrackStartSector - 1; - track.TrackSequence = neroTrack.Sequence; - track.TrackSession = currentSession; - track.TrackType = NeroTrackModeToTrackType((DaoMode)neroTrack.Mode); - track.TrackFile = imageFilter.GetFilename(); - track.TrackFilter = imageFilter; - track.TrackFileOffset = neroTrack.Offset; - track.TrackFileType = "BINARY"; - track.TrackSubchannelType = TrackSubchannelType.None; - neroTrack.Sectors = neroTrack.Length / neroTrack.SectorSize; + track.Description = StringHandlers.CToString(neroTrack.Isrc); + track.EndSector = (neroTrack.Length / neroTrack.SectorSize) + track.StartSector - 1; + track.Sequence = neroTrack.Sequence; + track.Session = currentSession; + track.Type = NeroTrackModeToTrackType((DaoMode)neroTrack.Mode); + track.File = imageFilter.GetFilename(); + track.Filter = imageFilter; + track.FileOffset = neroTrack.Offset; + track.FileType = "BINARY"; + track.SubchannelType = TrackSubchannelType.None; + neroTrack.Sectors = neroTrack.Length / neroTrack.SectorSize; // Flags not set for this track - if(!_trackFlags.ContainsKey(track.TrackSequence)) + if(!_trackFlags.ContainsKey(track.Sequence)) { - switch(track.TrackType) + switch(track.Type) { case TrackType.Audio: - _trackFlags[track.TrackSequence] = 0; + _trackFlags[track.Sequence] = 0; break; case TrackType.Data: @@ -1080,14 +1080,14 @@ namespace Aaru.DiscImages case TrackType.CdMode2Formless: case TrackType.CdMode2Form1: case TrackType.CdMode2Form2: - _trackFlags[track.TrackSequence] = 4; + _trackFlags[track.Sequence] = 4; break; } } // If ISRC is not empty - if(!string.IsNullOrWhiteSpace(track.TrackDescription)) + if(!string.IsNullOrWhiteSpace(track.Description)) { _trackIsrCs[neroTrack.Sequence] = neroTrack.Isrc; @@ -1102,67 +1102,65 @@ namespace Aaru.DiscImages { case DaoMode.AudioAlt: case DaoMode.Audio: - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; break; case DaoMode.AudioSub: - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; - track.TrackSubchannelType = TrackSubchannelType.RawInterleaved; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; + track.SubchannelType = TrackSubchannelType.RawInterleaved; break; case DaoMode.Data: case DaoMode.DataM2F1: - track.TrackBytesPerSector = 2048; - track.TrackRawBytesPerSector = 2048; + track.BytesPerSector = 2048; + track.RawBytesPerSector = 2048; break; case DaoMode.DataM2F2: - track.TrackBytesPerSector = 2336; - track.TrackRawBytesPerSector = 2336; + track.BytesPerSector = 2336; + track.RawBytesPerSector = 2336; break; case DaoMode.DataM2Raw: - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; - rawMode2 = true; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; + rawMode2 = true; break; case DaoMode.DataM2RawSub: - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; - track.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - rawMode2 = true; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; + track.SubchannelType = TrackSubchannelType.RawInterleaved; + rawMode2 = true; break; case DaoMode.DataRaw: - track.TrackBytesPerSector = 2048; - track.TrackRawBytesPerSector = 2352; - rawMode1 = true; + track.BytesPerSector = 2048; + track.RawBytesPerSector = 2352; + rawMode1 = true; break; case DaoMode.DataRawSub: - track.TrackBytesPerSector = 2048; - track.TrackRawBytesPerSector = 2352; - track.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - rawMode1 = true; + track.BytesPerSector = 2048; + track.RawBytesPerSector = 2352; + track.SubchannelType = TrackSubchannelType.RawInterleaved; + rawMode1 = true; break; } - AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.TrackDescription = {0}", - track.TrackDescription); + AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.Description = {0}", track.Description); - AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.TrackEndSector = {0}", track.TrackEndSector); - AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.TrackPregap = {0}", track.TrackPregap); - AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.TrackSequence = {0}", track.TrackSequence); - AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.TrackSession = {0}", track.TrackSession); + AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.EndSector = {0}", track.EndSector); + AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.Pregap = {0}", track.Pregap); + AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.Sequence = {0}", track.Sequence); + AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.Session = {0}", track.Session); - AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.TrackStartSector = {0}", - track.TrackStartSector); + AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.StartSector = {0}", track.StartSector); - AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.TrackType = {0}", track.TrackType); + AaruConsole.DebugWriteLine("Nero plugin", "\t\t _track.Type = {0}", track.Type); // Check readability of sector tags if(rawMode1 || rawMode2) @@ -1180,11 +1178,11 @@ namespace Aaru.DiscImages _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorEdc); } - if(track.TrackSubchannelType == TrackSubchannelType.RawInterleaved) + if(track.SubchannelType == TrackSubchannelType.RawInterleaved) { - track.TrackSubchannelFilter = imageFilter; - track.TrackSubchannelFile = imageFilter.GetFilename(); - track.TrackSubchannelOffset = neroTrack.Offset; + track.SubchannelFilter = imageFilter; + track.SubchannelFile = imageFilter.GetFilename(); + track.SubchannelOffset = neroTrack.Offset; if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel); @@ -1196,9 +1194,9 @@ namespace Aaru.DiscImages if(currentSessionCurrentTrack == 1) currentSessionStruct = new CommonTypes.Structs.Session { - SessionSequence = currentSession, - StartSector = track.TrackStartSector, - StartTrack = track.TrackSequence + Sequence = currentSession, + StartSector = track.StartSector, + StartTrack = track.Sequence }; currentSessionCurrentTrack++; @@ -1208,29 +1206,29 @@ namespace Aaru.DiscImages currentSession++; _neroSessions.TryGetValue(currentSession, out currentSessionMaxTrack); currentSessionCurrentTrack = 1; - currentSessionStruct.EndTrack = track.TrackSequence; - currentSessionStruct.EndSector = track.TrackEndSector; + currentSessionStruct.EndTrack = track.Sequence; + currentSessionStruct.EndSector = track.EndSector; Sessions.Add(currentSessionStruct); } else if(trackCounter == _neroTracks.Count) { _neroSessions.TryGetValue(currentSession, out currentSessionMaxTrack); currentSessionCurrentTrack = 1; - currentSessionStruct.EndTrack = track.TrackSequence; - currentSessionStruct.EndSector = track.TrackEndSector; + currentSessionStruct.EndTrack = track.Sequence; + currentSessionStruct.EndSector = track.EndSector; Sessions.Add(currentSessionStruct); } // Add to offset map - _offsetmap.Add(track.TrackSequence, track.TrackStartSector); + _offsetmap.Add(track.Sequence, track.StartSector); - AaruConsole.DebugWriteLine("Nero plugin", "\t\t Offset[{0}]: {1}", track.TrackSequence, - track.TrackStartSector); + AaruConsole.DebugWriteLine("Nero plugin", "\t\t Offset[{0}]: {1}", track.Sequence, + track.StartSector); // Create partition var partition = new Partition { - Description = $"Track {track.TrackSequence}", + Description = $"Track {track.Sequence}", Size = neroTrack.EndOfTrack - neroTrack.Index1, Name = StringHandlers.CToString(neroTrack.Isrc), Sequence = partitionSequence, @@ -1244,8 +1242,8 @@ namespace Aaru.DiscImages partitionSequence++; partitionStartByte += partition.Size; - if(track.TrackEndSector + 1 > _imageInfo.Sectors) - _imageInfo.Sectors = track.TrackEndSector + 1; + if(track.EndSector + 1 > _imageInfo.Sectors) + _imageInfo.Sectors = track.EndSector + 1; trackCounter++; } @@ -1265,19 +1263,19 @@ namespace Aaru.DiscImages var track = new Track(); // Common track data - track.TrackDescription = StringHandlers.CToString(_neroTracks[1].Isrc); + track.Description = StringHandlers.CToString(_neroTracks[1].Isrc); - track.TrackEndSector = ((_imageNewFormat ? footerV2.FirstChunkOffset : footerV1.FirstChunkOffset) / - _neroTracks[1].SectorSize) - 150; + track.EndSector = ((_imageNewFormat ? footerV2.FirstChunkOffset : footerV1.FirstChunkOffset) / + _neroTracks[1].SectorSize) - 150; - track.TrackSequence = _neroTracks[1].Sequence; - track.TrackSession = currentSession; - track.TrackType = NeroTrackModeToTrackType((DaoMode)_neroTracks[1].Mode); - track.TrackFile = imageFilter.GetFilename(); - track.TrackFilter = imageFilter; - track.TrackFileType = "BINARY"; - track.TrackSubchannelType = TrackSubchannelType.None; - track.Indexes[1] = 0; + track.Sequence = _neroTracks[1].Sequence; + track.Session = currentSession; + track.Type = NeroTrackModeToTrackType((DaoMode)_neroTracks[1].Mode); + track.File = imageFilter.GetFilename(); + track.Filter = imageFilter; + track.FileType = "BINARY"; + track.SubchannelType = TrackSubchannelType.None; + track.Indexes[1] = 0; bool rawMode1 = false; bool rawMode2 = false; @@ -1287,54 +1285,54 @@ namespace Aaru.DiscImages { case DaoMode.AudioAlt: case DaoMode.Audio: - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; break; case DaoMode.AudioSub: - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; - track.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - subSize = 96; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; + track.SubchannelType = TrackSubchannelType.RawInterleaved; + subSize = 96; break; case DaoMode.Data: case DaoMode.DataM2F1: - track.TrackBytesPerSector = 2048; - track.TrackRawBytesPerSector = 2048; + track.BytesPerSector = 2048; + track.RawBytesPerSector = 2048; break; case DaoMode.DataM2F2: - track.TrackBytesPerSector = 2336; - track.TrackRawBytesPerSector = 2336; + track.BytesPerSector = 2336; + track.RawBytesPerSector = 2336; break; case DaoMode.DataM2Raw: - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; - rawMode2 = true; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; + rawMode2 = true; break; case DaoMode.DataM2RawSub: - track.TrackBytesPerSector = 2352; - track.TrackRawBytesPerSector = 2352; - track.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - rawMode2 = true; - subSize = 96; + track.BytesPerSector = 2352; + track.RawBytesPerSector = 2352; + track.SubchannelType = TrackSubchannelType.RawInterleaved; + rawMode2 = true; + subSize = 96; break; case DaoMode.DataRaw: - track.TrackBytesPerSector = 2048; - track.TrackRawBytesPerSector = 2352; - rawMode1 = true; + track.BytesPerSector = 2048; + track.RawBytesPerSector = 2352; + rawMode1 = true; break; case DaoMode.DataRawSub: - track.TrackBytesPerSector = 2048; - track.TrackRawBytesPerSector = 2352; - track.TrackSubchannelType = TrackSubchannelType.RawInterleaved; - rawMode1 = true; - subSize = 96; + track.BytesPerSector = 2048; + track.RawBytesPerSector = 2352; + track.SubchannelType = TrackSubchannelType.RawInterleaved; + rawMode1 = true; + subSize = 96; break; } @@ -1355,44 +1353,44 @@ namespace Aaru.DiscImages _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorEdc); } - if(track.TrackSubchannelType == TrackSubchannelType.RawInterleaved) + if(track.SubchannelType == TrackSubchannelType.RawInterleaved) { - track.TrackSubchannelFilter = imageFilter; - track.TrackSubchannelFile = imageFilter.GetFilename(); - track.TrackSubchannelOffset = (ulong)(150 * (track.TrackRawBytesPerSector + subSize)); + track.SubchannelFilter = imageFilter; + track.SubchannelFile = imageFilter.GetFilename(); + track.SubchannelOffset = (ulong)(150 * (track.RawBytesPerSector + subSize)); if(!_imageInfo.ReadableSectorTags.Contains(SectorTagType.CdSectorSubchannel)) _imageInfo.ReadableSectorTags.Add(SectorTagType.CdSectorSubchannel); } - track.TrackFileOffset = (ulong)(150 * (track.TrackRawBytesPerSector + subSize)); - _neroTracks[1].Offset = track.TrackFileOffset; - _neroTracks[1].Sectors = track.TrackEndSector - track.TrackStartSector + 1; + track.FileOffset = (ulong)(150 * (track.RawBytesPerSector + subSize)); + _neroTracks[1].Offset = track.FileOffset; + _neroTracks[1].Sectors = track.EndSector - track.StartSector + 1; // Add to offset map - _offsetmap.Add(track.TrackSequence, track.TrackStartSector); + _offsetmap.Add(track.Sequence, track.StartSector); // This is basically what MagicISO does with DVD images - if(track.TrackRawBytesPerSector == 2048) + if(track.RawBytesPerSector == 2048) { _imageInfo.MediaType = CommonTypes.MediaType.DVDROM; - track.TrackType = TrackType.Data; + track.Type = TrackType.Data; } - _imageInfo.Sectors = track.TrackEndSector + 1; + _imageInfo.Sectors = track.EndSector + 1; Tracks.Add(track); // Create partition var partition = new Partition { - Description = $"Track {track.TrackSequence}", - Length = track.TrackEndSector - track.TrackStartSector + 1, + Description = $"Track {track.Sequence}", + Length = track.EndSector - track.StartSector + 1, Name = StringHandlers.CToString(_neroTracks[1].Isrc), Sequence = 1, Offset = 0, Start = (ulong)track.Indexes[1], - Type = track.TrackType.ToString() + Type = track.Type.ToString() }; partition.Size = partition.Length * _neroTracks[1].SectorSize; @@ -1400,11 +1398,11 @@ namespace Aaru.DiscImages Sessions.Add(new CommonTypes.Structs.Session { - SessionSequence = 1, - StartSector = 0, - StartTrack = 1, - EndTrack = 1, - EndSector = track.TrackEndSector + Sequence = 1, + StartSector = 0, + StartTrack = 1, + EndTrack = 1, + EndSector = track.EndSector }); AaruConsole.ErrorWriteLine("Warning! This image is missing the last 150 sectors."); @@ -1415,10 +1413,10 @@ namespace Aaru.DiscImages Tracks.Count > 0xF && moreTracksThanSessionTracks && onlyOneSession && - Tracks.Any(t => t.TrackSession > 0)) + Tracks.Any(t => t.Session > 0)) { foreach(Track track in Tracks) - track.TrackSession = 1; + track.Session = 1; Sessions.Clear(); @@ -1427,11 +1425,11 @@ namespace Aaru.DiscImages Sessions.Add(new CommonTypes.Structs.Session { - EndSector = lastTrack.TrackEndSector, - StartSector = firstTrack.TrackStartSector, - SessionSequence = 1, - EndTrack = lastTrack.TrackSequence, - StartTrack = firstTrack.TrackSequence + EndSector = lastTrack.EndSector, + StartSector = firstTrack.StartSector, + Sequence = 1, + EndTrack = lastTrack.Sequence, + StartTrack = firstTrack.Sequence }); } @@ -1551,7 +1549,7 @@ namespace Aaru.DiscImages foreach(Track track in Tracks) { - track.TrackPregap = 0; + track.Pregap = 0; track.Indexes?.Clear(); } @@ -1597,10 +1595,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectors(ulong sectorAddress, uint length) { - foreach(KeyValuePair kvp in from kvp in _offsetmap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value <= - track.TrackEndSector - track.TrackStartSector select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetmap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value <= + track.EndSector - track.StartSector select kvp) return ReadSectors(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), $"Sector address {sectorAddress} not found"); @@ -1609,10 +1607,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectorsTag(ulong sectorAddress, uint length, SectorTagType tag) { - foreach(KeyValuePair kvp in from kvp in _offsetmap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value <= - track.TrackEndSector - track.TrackStartSector select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetmap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value <= + track.EndSector - track.StartSector select kvp) return ReadSectorsTag(sectorAddress - kvp.Value, length, kvp.Key, tag); throw new ArgumentOutOfRangeException(nameof(sectorAddress), $"Sector address {sectorAddress} not found"); @@ -2080,10 +2078,10 @@ namespace Aaru.DiscImages /// public byte[] ReadSectorsLong(ulong sectorAddress, uint length) { - foreach(KeyValuePair kvp in from kvp in _offsetmap where sectorAddress >= kvp.Value - from track in Tracks where track.TrackSequence == kvp.Key - where sectorAddress - kvp.Value <= - track.TrackEndSector - track.TrackStartSector select kvp) + foreach(KeyValuePair kvp in from kvp in _offsetmap where sectorAddress >= kvp.Value + from track in Tracks where track.Sequence == kvp.Key + where sectorAddress - kvp.Value <= + track.EndSector - track.StartSector select kvp) return ReadSectorsLong(sectorAddress - kvp.Value, length, kvp.Key); throw new ArgumentOutOfRangeException(nameof(sectorAddress), $"Sector address {sectorAddress} not found"); @@ -2238,11 +2236,9 @@ namespace Aaru.DiscImages } /// - public List GetSessionTracks(CommonTypes.Structs.Session session) => - GetSessionTracks(session.SessionSequence); + public List GetSessionTracks(CommonTypes.Structs.Session session) => GetSessionTracks(session.Sequence); /// - public List GetSessionTracks(ushort session) => - Tracks.Where(track => track.TrackSession == session).ToList(); + public List GetSessionTracks(ushort session) => Tracks.Where(track => track.Session == session).ToList(); } } \ No newline at end of file diff --git a/Aaru.Images/ZZZRawImage/Properties.cs b/Aaru.Images/ZZZRawImage/Properties.cs index ad72400ce..6c24d7fca 100644 --- a/Aaru.Images/ZZZRawImage/Properties.cs +++ b/Aaru.Images/ZZZRawImage/Properties.cs @@ -52,7 +52,7 @@ namespace Aaru.DiscImages // Non-random UUID to recognize this specific plugin /// - public Guid Id => new Guid("12345678-AAAA-BBBB-CCCC-123456789000"); + public Guid Id => new("12345678-AAAA-BBBB-CCCC-123456789000"); /// public ImageInfo Info => _imageInfo; /// @@ -70,37 +70,36 @@ namespace Aaru.DiscImages var trk = new Track { - TrackBytesPerSector = _rawCompactDisc ? _mode2 - ? 2336 - : 2048 : (int)_imageInfo.SectorSize, - TrackEndSector = _imageInfo.Sectors - 1, - TrackFile = _rawImageFilter?.GetFilename() ?? _basePath, - TrackFileOffset = 0, - TrackFileType = "BINARY", - TrackRawBytesPerSector = _rawCompactDisc ? 2352 : (int)_imageInfo.SectorSize, - TrackSequence = 1, - TrackStartSector = 0, - TrackSubchannelType = - _hasSubchannel ? TrackSubchannelType.RawInterleaved : TrackSubchannelType.None, - TrackType = _rawCompactDisc ? _mode2 - ? TrackType.CdMode2Formless - : TrackType.CdMode1 : TrackType.Data, - TrackSession = 1 + BytesPerSector = _rawCompactDisc ? _mode2 + ? 2336 + : 2048 : (int)_imageInfo.SectorSize, + EndSector = _imageInfo.Sectors - 1, + File = _rawImageFilter?.GetFilename() ?? _basePath, + FileOffset = 0, + FileType = "BINARY", + RawBytesPerSector = _rawCompactDisc ? 2352 : (int)_imageInfo.SectorSize, + Sequence = 1, + StartSector = 0, + SubchannelType = _hasSubchannel ? TrackSubchannelType.RawInterleaved : TrackSubchannelType.None, + Type = _rawCompactDisc ? _mode2 + ? TrackType.CdMode2Formless + : TrackType.CdMode1 : TrackType.Data, + Session = 1 }; if(_imageInfo.MediaType == MediaType.CD || _imageInfo.MediaType == MediaType.CDRW || _imageInfo.MediaType == MediaType.CDR) { - trk.TrackPregap = 150; - trk.Indexes[0] = -150; - trk.Indexes[1] = 0; + trk.Pregap = 150; + trk.Indexes[0] = -150; + trk.Indexes[1] = 0; - if(trk.TrackType == TrackType.Data) - trk.TrackType = TrackType.CdMode1; + if(trk.Type == TrackType.Data) + trk.Type = TrackType.CdMode1; } - List lst = new List + List lst = new() { trk }; @@ -119,14 +118,14 @@ namespace Aaru.DiscImages var sess = new Session { - EndSector = _imageInfo.Sectors - 1, - EndTrack = 1, - SessionSequence = 1, - StartSector = 0, - StartTrack = 1 + EndSector = _imageInfo.Sectors - 1, + EndTrack = 1, + Sequence = 1, + StartSector = 0, + StartTrack = 1 }; - List lst = new List + List lst = new() { sess }; @@ -143,7 +142,7 @@ namespace Aaru.DiscImages if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc) return null; - List parts = new List(); + List parts = new(); var part = new Partition { @@ -184,7 +183,7 @@ namespace Aaru.DiscImages { get { - List types = new List(); + List types = new(); foreach(MediaType type in Enum.GetValues(typeof(MediaType))) switch(type) diff --git a/Aaru.Images/ZZZRawImage/Read.cs b/Aaru.Images/ZZZRawImage/Read.cs index 01435cddb..fbbe04910 100644 --- a/Aaru.Images/ZZZRawImage/Read.cs +++ b/Aaru.Images/ZZZRawImage/Read.cs @@ -1268,26 +1268,26 @@ namespace Aaru.DiscImages if(_imageInfo.XmlMediaType != XmlMediaType.OpticalDisc) throw new FeatureUnsupportedImageException("Feature not supported by image format"); - if(session.SessionSequence != 1) + if(session.Sequence != 1) throw new ArgumentOutOfRangeException(nameof(session), "Only a single session is supported"); var trk = new Track { - TrackBytesPerSector = (int)_imageInfo.SectorSize, - TrackEndSector = _imageInfo.Sectors - 1, - TrackFilter = _rawImageFilter, - TrackFile = _rawImageFilter.GetFilename(), - TrackFileOffset = 0, - TrackFileType = "BINARY", - TrackRawBytesPerSector = (int)_imageInfo.SectorSize, - TrackSequence = 1, - TrackStartSector = 0, - TrackSubchannelType = TrackSubchannelType.None, - TrackType = TrackType.Data, - TrackSession = 1 + BytesPerSector = (int)_imageInfo.SectorSize, + EndSector = _imageInfo.Sectors - 1, + Filter = _rawImageFilter, + File = _rawImageFilter.GetFilename(), + FileOffset = 0, + FileType = "BINARY", + RawBytesPerSector = (int)_imageInfo.SectorSize, + Sequence = 1, + StartSector = 0, + SubchannelType = TrackSubchannelType.None, + Type = TrackType.Data, + Session = 1 }; - List lst = new List + List lst = new() { trk }; @@ -1306,21 +1306,21 @@ namespace Aaru.DiscImages var trk = new Track { - TrackBytesPerSector = (int)_imageInfo.SectorSize, - TrackEndSector = _imageInfo.Sectors - 1, - TrackFilter = _rawImageFilter, - TrackFile = _rawImageFilter.GetFilename(), - TrackFileOffset = 0, - TrackFileType = "BINARY", - TrackRawBytesPerSector = (int)_imageInfo.SectorSize, - TrackSequence = 1, - TrackStartSector = 0, - TrackSubchannelType = TrackSubchannelType.None, - TrackType = TrackType.Data, - TrackSession = 1 + BytesPerSector = (int)_imageInfo.SectorSize, + EndSector = _imageInfo.Sectors - 1, + Filter = _rawImageFilter, + File = _rawImageFilter.GetFilename(), + FileOffset = 0, + FileType = "BINARY", + RawBytesPerSector = (int)_imageInfo.SectorSize, + Sequence = 1, + StartSector = 0, + SubchannelType = TrackSubchannelType.None, + Type = TrackType.Data, + Session = 1 }; - List lst = new List + List lst = new() { trk }; diff --git a/Aaru.Tests/Images/OpticalMediaImageTest.cs b/Aaru.Tests/Images/OpticalMediaImageTest.cs index fa8841232..817572844 100644 --- a/Aaru.Tests/Images/OpticalMediaImageTest.cs +++ b/Aaru.Tests/Images/OpticalMediaImageTest.cs @@ -72,16 +72,16 @@ namespace Aaru.Tests.Images Assert.AreEqual(test.Tracks.Length, image.Tracks.Count, $"Tracks: {testFile}"); - image.Tracks.Select(t => t.TrackSession).Should(). + image.Tracks.Select(t => t.Session).Should(). BeEquivalentTo(test.Tracks.Select(s => s.Session), $"Track session: {testFile}"); - image.Tracks.Select(t => t.TrackStartSector).Should(). + image.Tracks.Select(t => t.StartSector).Should(). BeEquivalentTo(test.Tracks.Select(s => s.Start), $"Track start: {testFile}"); - image.Tracks.Select(t => t.TrackEndSector).Should(). + image.Tracks.Select(t => t.EndSector).Should(). BeEquivalentTo(test.Tracks.Select(s => s.End), $"Track end: {testFile}"); - image.Tracks.Select(t => t.TrackPregap).Should(). + image.Tracks.Select(t => t.Pregap).Should(). BeEquivalentTo(test.Tracks.Select(s => s.Pregap), $"Track pregap: {testFile}"); int trackNo = 0; @@ -91,11 +91,11 @@ namespace Aaru.Tests.Images foreach(Track currentTrack in image.Tracks) { - if(currentTrack.TrackEndSector > latestEndSector) - latestEndSector = currentTrack.TrackEndSector; + if(currentTrack.EndSector > latestEndSector) + latestEndSector = currentTrack.EndSector; if(image.Info.ReadableSectorTags.Contains(SectorTagType.CdTrackFlags)) - flags[trackNo] = image.ReadSectorTag(currentTrack.TrackSequence, + flags[trackNo] = image.ReadSectorTag(currentTrack.Sequence, SectorTagType.CdTrackFlags)[0]; trackNo++; @@ -269,7 +269,7 @@ namespace Aaru.Tests.Images // Uncomment to generate JSON file /* var contents = ReadOnlyFilesystemTest.BuildDirectory(rofs, "/"); - + var sw = new StreamWriter($"{testFile}.track{track.Number}.filesystem{i}.contents.json"); serializer.Serialize(sw, contents); sw.Close();*/ @@ -326,7 +326,7 @@ namespace Aaru.Tests.Images foreach(Track currentTrack in image.Tracks) { - ulong sectors = currentTrack.TrackEndSector - currentTrack.TrackStartSector + 1; + ulong sectors = currentTrack.EndSector - currentTrack.StartSector + 1; ulong doneSectors = 0; while(doneSectors < sectors) @@ -337,9 +337,9 @@ namespace Aaru.Tests.Images { sector = @long ? image.ReadSectorsLong(doneSectors, SECTORS_TO_READ, - currentTrack.TrackSequence) + currentTrack.Sequence) : image.ReadSectors(doneSectors, SECTORS_TO_READ, - currentTrack.TrackSequence); + currentTrack.Sequence); doneSectors += SECTORS_TO_READ; } @@ -347,9 +347,9 @@ namespace Aaru.Tests.Images { sector = @long ? image.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors), - currentTrack.TrackSequence) + currentTrack.Sequence) : image.ReadSectors(doneSectors, (uint)(sectors - doneSectors), - currentTrack.TrackSequence); + currentTrack.Sequence); doneSectors += sectors - doneSectors; } @@ -369,7 +369,7 @@ namespace Aaru.Tests.Images foreach(Track currentTrack in image.Tracks) { - ulong sectors = currentTrack.TrackEndSector - currentTrack.TrackStartSector + 1; + ulong sectors = currentTrack.EndSector - currentTrack.StartSector + 1; ulong doneSectors = 0; while(doneSectors < sectors) @@ -378,8 +378,7 @@ namespace Aaru.Tests.Images if(sectors - doneSectors >= SECTORS_TO_READ) { - sector = image.ReadSectorsTag(doneSectors, SECTORS_TO_READ, - currentTrack.TrackSequence, + sector = image.ReadSectorsTag(doneSectors, SECTORS_TO_READ, currentTrack.Sequence, SectorTagType.CdSectorSubchannel); doneSectors += SECTORS_TO_READ; @@ -387,7 +386,7 @@ namespace Aaru.Tests.Images else { sector = image.ReadSectorsTag(doneSectors, (uint)(sectors - doneSectors), - currentTrack.TrackSequence, + currentTrack.Sequence, SectorTagType.CdSectorSubchannel); doneSectors += sectors - doneSectors; diff --git a/Aaru.Tests/Issues/OpticalImageConvertIssueTest.cs b/Aaru.Tests/Issues/OpticalImageConvertIssueTest.cs index 0e1240c2e..fbf4fd0ff 100644 --- a/Aaru.Tests/Issues/OpticalImageConvertIssueTest.cs +++ b/Aaru.Tests/Issues/OpticalImageConvertIssueTest.cs @@ -122,7 +122,7 @@ namespace Aaru.Tests.Issues foreach(Track track in inputOptical.Tracks) { doneSectors = 0; - ulong trackSectors = track.TrackEndSector - track.TrackStartSector + 1; + ulong trackSectors = track.EndSector - track.StartSector + 1; while(doneSectors < trackSectors) { @@ -142,14 +142,14 @@ namespace Aaru.Tests.Issues { if(sectorsToDo == 1) { - sector = inputFormat.ReadSectorLong(doneSectors + track.TrackStartSector); - result = outputOptical.WriteSectorLong(sector, doneSectors + track.TrackStartSector); + sector = inputFormat.ReadSectorLong(doneSectors + track.StartSector); + result = outputOptical.WriteSectorLong(sector, doneSectors + track.StartSector); } else { - sector = inputFormat.ReadSectorsLong(doneSectors + track.TrackStartSector, sectorsToDo); + sector = inputFormat.ReadSectorsLong(doneSectors + track.StartSector, sectorsToDo); - result = outputOptical.WriteSectorsLong(sector, doneSectors + track.TrackStartSector, + result = outputOptical.WriteSectorsLong(sector, doneSectors + track.StartSector, sectorsToDo); } @@ -162,20 +162,20 @@ namespace Aaru.Tests.Issues { if(sectorsToDo == 1) { - sector = inputFormat.ReadSector(doneSectors + track.TrackStartSector); - result = outputOptical.WriteSector(sector, doneSectors + track.TrackStartSector); + sector = inputFormat.ReadSector(doneSectors + track.StartSector); + result = outputOptical.WriteSector(sector, doneSectors + track.StartSector); } else { - sector = inputFormat.ReadSectors(doneSectors + track.TrackStartSector, sectorsToDo); + sector = inputFormat.ReadSectors(doneSectors + track.StartSector, sectorsToDo); - result = outputOptical.WriteSectors(sector, doneSectors + track.TrackStartSector, + result = outputOptical.WriteSectors(sector, doneSectors + track.StartSector, sectorsToDo); } } Assert.IsTrue(result, - $"Error {outputOptical.ErrorMessage} writing sector {doneSectors + track.TrackStartSector}, not continuing..."); + $"Error {outputOptical.ErrorMessage} writing sector {doneSectors + track.StartSector}, not continuing..."); doneSectors += sectorsToDo; } @@ -193,16 +193,16 @@ namespace Aaru.Tests.Issues tracks[i] = new Track { Indexes = new Dictionary(), - TrackDescription = inputOptical.Tracks[i].TrackDescription, - TrackEndSector = inputOptical.Tracks[i].TrackEndSector, - TrackStartSector = inputOptical.Tracks[i].TrackStartSector, - TrackPregap = inputOptical.Tracks[i].TrackPregap, - TrackSequence = inputOptical.Tracks[i].TrackSequence, - TrackSession = inputOptical.Tracks[i].TrackSession, - TrackBytesPerSector = inputOptical.Tracks[i].TrackBytesPerSector, - TrackRawBytesPerSector = inputOptical.Tracks[i].TrackRawBytesPerSector, - TrackType = inputOptical.Tracks[i].TrackType, - TrackSubchannelType = inputOptical.Tracks[i].TrackSubchannelType + Description = inputOptical.Tracks[i].Description, + EndSector = inputOptical.Tracks[i].EndSector, + StartSector = inputOptical.Tracks[i].StartSector, + Pregap = inputOptical.Tracks[i].Pregap, + Sequence = inputOptical.Tracks[i].Sequence, + Session = inputOptical.Tracks[i].Session, + BytesPerSector = inputOptical.Tracks[i].BytesPerSector, + RawBytesPerSector = inputOptical.Tracks[i].RawBytesPerSector, + Type = inputOptical.Tracks[i].Type, + SubchannelType = inputOptical.Tracks[i].SubchannelType }; foreach(KeyValuePair idx in inputOptical.Tracks[i].Indexes) @@ -214,12 +214,12 @@ namespace Aaru.Tests.Issues { foreach(Track track in tracks) { - byte[] isrc = inputFormat.ReadSectorTag(track.TrackSequence, tag); + byte[] isrc = inputFormat.ReadSectorTag(track.Sequence, tag); if(isrc is null) continue; - isrcs[(byte)track.TrackSequence] = Encoding.UTF8.GetString(isrc); + isrcs[(byte)track.Sequence] = Encoding.UTF8.GetString(isrc); } } @@ -228,12 +228,12 @@ namespace Aaru.Tests.Issues { foreach(Track track in tracks) { - byte[] flags = inputFormat.ReadSectorTag(track.TrackSequence, tag); + byte[] flags = inputFormat.ReadSectorTag(track.Sequence, tag); if(flags is null) continue; - trackFlags[(byte)track.TrackSequence] = flags[0]; + trackFlags[(byte)track.Sequence] = flags[0]; } } @@ -267,7 +267,7 @@ namespace Aaru.Tests.Issues foreach(Track track in inputOptical.Tracks) { doneSectors = 0; - ulong trackSectors = track.TrackEndSector - track.TrackStartSector + 1; + ulong trackSectors = track.EndSector - track.StartSector + 1; byte[] sector; bool result; @@ -275,8 +275,8 @@ namespace Aaru.Tests.Issues { case SectorTagType.CdTrackFlags: case SectorTagType.CdTrackIsrc: - sector = inputFormat.ReadSectorTag(track.TrackSequence, tag); - result = outputOptical.WriteSectorTag(sector, track.TrackSequence, tag); + sector = inputFormat.ReadSectorTag(track.Sequence, tag); + result = outputOptical.WriteSectorTag(sector, track.Sequence, tag); Assert.IsTrue(result, $"Error {outputOptical.ErrorMessage} writing tag, not continuing..."); @@ -294,13 +294,13 @@ namespace Aaru.Tests.Issues if(sectorsToDo == 1) { - sector = inputFormat.ReadSectorTag(doneSectors + track.TrackStartSector, tag); + sector = inputFormat.ReadSectorTag(doneSectors + track.StartSector, tag); if(tag == SectorTagType.CdSectorSubchannel) { bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw, - MmcSubchannel.Raw, sector, doneSectors + track.TrackStartSector, 1, null, - isrcs, (byte)track.TrackSequence, ref mcn, tracks, subchannelExtents, true, + MmcSubchannel.Raw, sector, doneSectors + track.StartSector, 1, null, + isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, true, outputOptical, true, true, null, null, smallestPregapLbaPerTrack, false); if(indexesChanged) @@ -309,18 +309,18 @@ namespace Aaru.Tests.Issues result = true; } else - result = outputOptical.WriteSectorTag(sector, doneSectors + track.TrackStartSector, + result = outputOptical.WriteSectorTag(sector, doneSectors + track.StartSector, tag); } else { - sector = inputFormat.ReadSectorsTag(doneSectors + track.TrackStartSector, sectorsToDo, tag); + sector = inputFormat.ReadSectorsTag(doneSectors + track.StartSector, sectorsToDo, tag); if(tag == SectorTagType.CdSectorSubchannel) { bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw, - MmcSubchannel.Raw, sector, doneSectors + track.TrackStartSector, sectorsToDo, - null, isrcs, (byte)track.TrackSequence, ref mcn, tracks, subchannelExtents, + MmcSubchannel.Raw, sector, doneSectors + track.StartSector, sectorsToDo, + null, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, true, outputOptical, true, true, null, null, smallestPregapLbaPerTrack, false); if(indexesChanged) @@ -329,12 +329,12 @@ namespace Aaru.Tests.Issues result = true; } else - result = outputOptical.WriteSectorsTag(sector, doneSectors + track.TrackStartSector, + result = outputOptical.WriteSectorsTag(sector, doneSectors + track.StartSector, sectorsToDo, tag); } Assert.IsTrue(result, - $"Error {outputOptical.ErrorMessage} writing tag for sector {doneSectors + track.TrackStartSector}, not continuing..."); + $"Error {outputOptical.ErrorMessage} writing tag for sector {doneSectors + track.StartSector}, not continuing..."); doneSectors += sectorsToDo; } diff --git a/Aaru.Tests/Issues/OpticalImageReadIssueTest.cs b/Aaru.Tests/Issues/OpticalImageReadIssueTest.cs index c1a9246fe..793bc03bd 100644 --- a/Aaru.Tests/Issues/OpticalImageReadIssueTest.cs +++ b/Aaru.Tests/Issues/OpticalImageReadIssueTest.cs @@ -50,7 +50,7 @@ namespace Aaru.Tests.Issues foreach(Track currentTrack in inputTracks) { - ulong sectors = currentTrack.TrackEndSector - currentTrack.TrackStartSector + 1; + ulong sectors = currentTrack.EndSector - currentTrack.StartSector + 1; ulong doneSectors = 0; while(doneSectors < sectors) @@ -59,14 +59,14 @@ namespace Aaru.Tests.Issues if(sectors - doneSectors >= SECTORS_TO_READ) { - sector = opticalInput.ReadSectors(doneSectors, SECTORS_TO_READ, currentTrack.TrackSequence); + sector = opticalInput.ReadSectors(doneSectors, SECTORS_TO_READ, currentTrack.Sequence); doneSectors += SECTORS_TO_READ; } else { sector = opticalInput.ReadSectors(doneSectors, (uint)(sectors - doneSectors), - currentTrack.TrackSequence); + currentTrack.Sequence); doneSectors += sectors - doneSectors; } diff --git a/Aaru.Tests/WritableImages/WritableOpticalMediaImageTest.cs b/Aaru.Tests/WritableImages/WritableOpticalMediaImageTest.cs index 58afbc6cc..77372d2ad 100644 --- a/Aaru.Tests/WritableImages/WritableOpticalMediaImageTest.cs +++ b/Aaru.Tests/WritableImages/WritableOpticalMediaImageTest.cs @@ -69,16 +69,16 @@ namespace Aaru.Tests.WritableImages Assert.AreEqual(test.Tracks.Length, image.Tracks.Count, $"Tracks: {testFile}"); - image.Tracks.Select(t => t.TrackSession).Should(). + image.Tracks.Select(t => t.Session).Should(). BeEquivalentTo(test.Tracks.Select(s => s.Session), $"Track session: {testFile}"); - image.Tracks.Select(t => t.TrackStartSector).Should(). + image.Tracks.Select(t => t.StartSector).Should(). BeEquivalentTo(test.Tracks.Select(s => s.Start), $"Track start: {testFile}"); - image.Tracks.Select(t => t.TrackEndSector).Should(). + image.Tracks.Select(t => t.EndSector).Should(). BeEquivalentTo(test.Tracks.Select(s => s.End), $"Track end: {testFile}"); - image.Tracks.Select(t => t.TrackPregap).Should(). + image.Tracks.Select(t => t.Pregap).Should(). BeEquivalentTo(test.Tracks.Select(s => s.Pregap), $"Track pregap: {testFile}"); int trackNo = 0; @@ -88,11 +88,11 @@ namespace Aaru.Tests.WritableImages foreach(Track currentTrack in image.Tracks) { - if(currentTrack.TrackEndSector > latestEndSector) - latestEndSector = currentTrack.TrackEndSector; + if(currentTrack.EndSector > latestEndSector) + latestEndSector = currentTrack.EndSector; if(image.Info.ReadableSectorTags.Contains(SectorTagType.CdTrackFlags)) - flags[trackNo] = image.ReadSectorTag(currentTrack.TrackSequence, + flags[trackNo] = image.ReadSectorTag(currentTrack.Sequence, SectorTagType.CdTrackFlags)[0]; trackNo++; @@ -175,7 +175,7 @@ namespace Aaru.Tests.WritableImages foreach(Track track in inputFormat.Tracks) { doneSectors = 0; - ulong trackSectors = track.TrackEndSector - track.TrackStartSector + 1; + ulong trackSectors = track.EndSector - track.StartSector + 1; while(doneSectors < trackSectors) { @@ -195,15 +195,15 @@ namespace Aaru.Tests.WritableImages { if(sectorsToDo == 1) { - sector = inputFormat.ReadSectorLong(doneSectors + track.TrackStartSector); - result = outputFormat.WriteSectorLong(sector, doneSectors + track.TrackStartSector); + sector = inputFormat.ReadSectorLong(doneSectors + track.StartSector); + result = outputFormat.WriteSectorLong(sector, doneSectors + track.StartSector); } else { - sector = inputFormat.ReadSectorsLong(doneSectors + track.TrackStartSector, + sector = inputFormat.ReadSectorsLong(doneSectors + track.StartSector, sectorsToDo); - result = outputFormat.WriteSectorsLong(sector, doneSectors + track.TrackStartSector, + result = outputFormat.WriteSectorsLong(sector, doneSectors + track.StartSector, sectorsToDo); } @@ -216,20 +216,20 @@ namespace Aaru.Tests.WritableImages { if(sectorsToDo == 1) { - sector = inputFormat.ReadSector(doneSectors + track.TrackStartSector); - result = outputFormat.WriteSector(sector, doneSectors + track.TrackStartSector); + sector = inputFormat.ReadSector(doneSectors + track.StartSector); + result = outputFormat.WriteSector(sector, doneSectors + track.StartSector); } else { - sector = inputFormat.ReadSectors(doneSectors + track.TrackStartSector, sectorsToDo); + sector = inputFormat.ReadSectors(doneSectors + track.StartSector, sectorsToDo); - result = outputFormat.WriteSectors(sector, doneSectors + track.TrackStartSector, + result = outputFormat.WriteSectors(sector, doneSectors + track.StartSector, sectorsToDo); } } Assert.IsTrue(result, - $"Error {outputFormat.ErrorMessage} writing sector {doneSectors + track.TrackStartSector}..."); + $"Error {outputFormat.ErrorMessage} writing sector {doneSectors + track.StartSector}..."); doneSectors += sectorsToDo; } @@ -247,16 +247,16 @@ namespace Aaru.Tests.WritableImages tracks[i] = new Track { Indexes = new Dictionary(), - TrackDescription = inputFormat.Tracks[i].TrackDescription, - TrackEndSector = inputFormat.Tracks[i].TrackEndSector, - TrackStartSector = inputFormat.Tracks[i].TrackStartSector, - TrackPregap = inputFormat.Tracks[i].TrackPregap, - TrackSequence = inputFormat.Tracks[i].TrackSequence, - TrackSession = inputFormat.Tracks[i].TrackSession, - TrackBytesPerSector = inputFormat.Tracks[i].TrackBytesPerSector, - TrackRawBytesPerSector = inputFormat.Tracks[i].TrackRawBytesPerSector, - TrackType = inputFormat.Tracks[i].TrackType, - TrackSubchannelType = inputFormat.Tracks[i].TrackSubchannelType + Description = inputFormat.Tracks[i].Description, + EndSector = inputFormat.Tracks[i].EndSector, + StartSector = inputFormat.Tracks[i].StartSector, + Pregap = inputFormat.Tracks[i].Pregap, + Sequence = inputFormat.Tracks[i].Sequence, + Session = inputFormat.Tracks[i].Session, + BytesPerSector = inputFormat.Tracks[i].BytesPerSector, + RawBytesPerSector = inputFormat.Tracks[i].RawBytesPerSector, + Type = inputFormat.Tracks[i].Type, + SubchannelType = inputFormat.Tracks[i].SubchannelType }; foreach(KeyValuePair idx in inputFormat.Tracks[i].Indexes) @@ -268,12 +268,12 @@ namespace Aaru.Tests.WritableImages { foreach(Track track in tracks) { - byte[] isrc = inputFormat.ReadSectorTag(track.TrackSequence, tag); + byte[] isrc = inputFormat.ReadSectorTag(track.Sequence, tag); if(isrc is null) continue; - isrcs[(byte)track.TrackSequence] = Encoding.UTF8.GetString(isrc); + isrcs[(byte)track.Sequence] = Encoding.UTF8.GetString(isrc); } } @@ -283,12 +283,12 @@ namespace Aaru.Tests.WritableImages { foreach(Track track in tracks) { - byte[] flags = inputFormat.ReadSectorTag(track.TrackSequence, tag); + byte[] flags = inputFormat.ReadSectorTag(track.Sequence, tag); if(flags is null) continue; - trackFlags[(byte)track.TrackSequence] = flags[0]; + trackFlags[(byte)track.Sequence] = flags[0]; } } @@ -323,7 +323,7 @@ namespace Aaru.Tests.WritableImages foreach(Track track in inputFormat.Tracks) { doneSectors = 0; - ulong trackSectors = track.TrackEndSector - track.TrackStartSector + 1; + ulong trackSectors = track.EndSector - track.StartSector + 1; byte[] sector; bool result; @@ -331,8 +331,8 @@ namespace Aaru.Tests.WritableImages { case SectorTagType.CdTrackFlags: case SectorTagType.CdTrackIsrc: - sector = inputFormat.ReadSectorTag(track.TrackSequence, tag); - result = outputFormat.WriteSectorTag(sector, track.TrackSequence, tag); + sector = inputFormat.ReadSectorTag(track.Sequence, tag); + result = outputFormat.WriteSectorTag(sector, track.Sequence, tag); Assert.IsTrue(result, $"Error {outputFormat.ErrorMessage} writing tag, not continuing..."); @@ -351,13 +351,13 @@ namespace Aaru.Tests.WritableImages if(sectorsToDo == 1) { - sector = inputFormat.ReadSectorTag(doneSectors + track.TrackStartSector, tag); + sector = inputFormat.ReadSectorTag(doneSectors + track.StartSector, tag); if(tag == SectorTagType.CdSectorSubchannel) { bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw, - MmcSubchannel.Raw, sector, doneSectors + track.TrackStartSector, 1, - null, isrcs, (byte)track.TrackSequence, ref mcn, tracks, + MmcSubchannel.Raw, sector, doneSectors + track.StartSector, 1, + null, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, true, outputFormat, true, true, null, null, smallestPregapLbaPerTrack, false); @@ -368,19 +368,19 @@ namespace Aaru.Tests.WritableImages } else result = - outputFormat.WriteSectorTag(sector, doneSectors + track.TrackStartSector, + outputFormat.WriteSectorTag(sector, doneSectors + track.StartSector, tag); } else { - sector = inputFormat.ReadSectorsTag(doneSectors + track.TrackStartSector, + sector = inputFormat.ReadSectorsTag(doneSectors + track.StartSector, sectorsToDo, tag); if(tag == SectorTagType.CdSectorSubchannel) { bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw, - MmcSubchannel.Raw, sector, doneSectors + track.TrackStartSector, - sectorsToDo, null, isrcs, (byte)track.TrackSequence, ref mcn, tracks, + MmcSubchannel.Raw, sector, doneSectors + track.StartSector, + sectorsToDo, null, isrcs, (byte)track.Sequence, ref mcn, tracks, subchannelExtents, true, outputFormat, true, true, null, null, smallestPregapLbaPerTrack, false); @@ -391,12 +391,12 @@ namespace Aaru.Tests.WritableImages } else result = - outputFormat.WriteSectorsTag(sector, doneSectors + track.TrackStartSector, + outputFormat.WriteSectorsTag(sector, doneSectors + track.StartSector, sectorsToDo, tag); } Assert.IsTrue(result, - $"Error {outputFormat.ErrorMessage} writing tag for sector {doneSectors + track.TrackStartSector}, not continuing..."); + $"Error {outputFormat.ErrorMessage} writing tag for sector {doneSectors + track.StartSector}, not continuing..."); doneSectors += sectorsToDo; } @@ -493,17 +493,17 @@ namespace Aaru.Tests.WritableImages Assert.AreEqual(test.Tracks.Length, image.Tracks.Count, $"Tracks (output): {testFile}"); - image.Tracks.Select(t => t.TrackSession).Should(). + image.Tracks.Select(t => t.Session).Should(). BeEquivalentTo(test.Tracks.Select(s => s.Session), $"Track session (output): {testFile}"); - image.Tracks.Select(t => t.TrackStartSector).Should(). + image.Tracks.Select(t => t.StartSector).Should(). BeEquivalentTo(test.Tracks.Select(s => s.Start), $"Track start (output): {testFile}"); - image.Tracks.Select(t => t.TrackEndSector).Should(). + image.Tracks.Select(t => t.EndSector).Should(). BeEquivalentTo(test.Tracks.Select(s => s.End), $"Track end (output): {testFile}"); - image.Tracks.Select(t => t.TrackPregap).Should(). + image.Tracks.Select(t => t.Pregap).Should(). BeEquivalentTo(test.Tracks.Select(s => s.Pregap), $"Track pregap (output): {testFile}"); @@ -514,11 +514,11 @@ namespace Aaru.Tests.WritableImages foreach(Track currentTrack in image.Tracks) { - if(currentTrack.TrackEndSector > latestEndSector) - latestEndSector = currentTrack.TrackEndSector; + if(currentTrack.EndSector > latestEndSector) + latestEndSector = currentTrack.EndSector; if(image.Info.ReadableSectorTags.Contains(SectorTagType.CdTrackFlags)) - flags[trackNo] = image.ReadSectorTag(currentTrack.TrackSequence, + flags[trackNo] = image.ReadSectorTag(currentTrack.Sequence, SectorTagType.CdTrackFlags)[0]; trackNo++; @@ -543,7 +543,7 @@ namespace Aaru.Tests.WritableImages foreach(Track currentTrack in image.Tracks) { - ulong sectors = currentTrack.TrackEndSector - currentTrack.TrackStartSector + 1; + ulong sectors = currentTrack.EndSector - currentTrack.StartSector + 1; doneSectors = 0; while(doneSectors < sectors) @@ -554,9 +554,9 @@ namespace Aaru.Tests.WritableImages { sector = @long ? image.ReadSectorsLong(doneSectors, SECTORS_TO_READ, - currentTrack.TrackSequence) + currentTrack.Sequence) : image.ReadSectors(doneSectors, SECTORS_TO_READ, - currentTrack.TrackSequence); + currentTrack.Sequence); doneSectors += SECTORS_TO_READ; } @@ -564,9 +564,9 @@ namespace Aaru.Tests.WritableImages { sector = @long ? image.ReadSectorsLong(doneSectors, (uint)(sectors - doneSectors), - currentTrack.TrackSequence) + currentTrack.Sequence) : image.ReadSectors(doneSectors, (uint)(sectors - doneSectors), - currentTrack.TrackSequence); + currentTrack.Sequence); doneSectors += sectors - doneSectors; } @@ -586,7 +586,7 @@ namespace Aaru.Tests.WritableImages foreach(Track currentTrack in image.Tracks) { - ulong sectors = currentTrack.TrackEndSector - currentTrack.TrackStartSector + 1; + ulong sectors = currentTrack.EndSector - currentTrack.StartSector + 1; doneSectors = 0; while(doneSectors < sectors) @@ -595,7 +595,7 @@ namespace Aaru.Tests.WritableImages if(sectors - doneSectors >= SECTORS_TO_READ) { - sector = image.ReadSectorsTag(doneSectors, SECTORS_TO_READ, currentTrack.TrackSequence, + sector = image.ReadSectorsTag(doneSectors, SECTORS_TO_READ, currentTrack.Sequence, SectorTagType.CdSectorSubchannel); doneSectors += SECTORS_TO_READ; @@ -603,7 +603,7 @@ namespace Aaru.Tests.WritableImages else { sector = image.ReadSectorsTag(doneSectors, (uint)(sectors - doneSectors), - currentTrack.TrackSequence, + currentTrack.Sequence, SectorTagType.CdSectorSubchannel); doneSectors += sectors - doneSectors; diff --git a/Aaru/Commands/Image/Checksum.cs b/Aaru/Commands/Image/Checksum.cs index d095c80ed..216dd4e0b 100644 --- a/Aaru/Commands/Image/Checksum.cs +++ b/Aaru/Commands/Image/Checksum.cs @@ -337,8 +337,8 @@ namespace Aaru.Commands.Image ProgressTask trackTask = ctx.AddTask("Hashing sector"); /* - if(currentTrack.TrackStartSector - previousTrackEnd != 0 && wholeDisc) - for(ulong i = previousTrackEnd + 1; i < currentTrack.TrackStartSector; i++) + if(currentTrack.StartSector - previousTrackEnd != 0 && wholeDisc) + for(ulong i = previousTrackEnd + 1; i < currentTrack.StartSector; i++) { AaruConsole.Write("\rHashing track-less sector {0}", i); @@ -350,15 +350,13 @@ namespace Aaru.Commands.Image AaruConsole.DebugWriteLine("Checksum command", "Track {0} starts at sector {1} and ends at sector {2}", - currentTrack.TrackSequence, - currentTrack.TrackStartSector, - currentTrack.TrackEndSector); + currentTrack.Sequence, currentTrack.StartSector, + currentTrack.EndSector); if(separatedTracks) trackChecksum = new Checksum(enabledChecksums); - ulong sectors = - currentTrack.TrackEndSector - currentTrack.TrackStartSector + 1; + ulong sectors = currentTrack.EndSector - currentTrack.StartSector + 1; trackTask.MaxValue = sectors; @@ -371,11 +369,11 @@ namespace Aaru.Commands.Image if(sectors - doneSectors >= SECTORS_TO_READ) { sector = opticalInput.ReadSectors(doneSectors, SECTORS_TO_READ, - currentTrack.TrackSequence); + currentTrack.Sequence); trackTask.Description = string.Format("Hashing sectors {0} to {2} of track {1}", - doneSectors, currentTrack.TrackSequence, + doneSectors, currentTrack.Sequence, doneSectors + SECTORS_TO_READ); doneSectors += SECTORS_TO_READ; @@ -383,11 +381,11 @@ namespace Aaru.Commands.Image else { sector = opticalInput.ReadSectors(doneSectors, - (uint)(sectors - doneSectors), currentTrack.TrackSequence); + (uint)(sectors - doneSectors), currentTrack.Sequence); trackTask.Description = string.Format("Hashing sectors {0} to {2} of track {1}", - doneSectors, currentTrack.TrackSequence, + doneSectors, currentTrack.Sequence, doneSectors + (sectors - doneSectors)); doneSectors += sectors - doneSectors; @@ -413,7 +411,7 @@ namespace Aaru.Commands.Image foreach(ChecksumType chk in trackChecksum.End()) AaruConsole.WriteLine("[bold]Track {0}'s {1}:[/] {2}", - currentTrack.TrackSequence, chk.type, chk.Value); + currentTrack.Sequence, chk.type, chk.Value); discTask.Increment(1); } diff --git a/Aaru/Commands/Image/Convert.cs b/Aaru/Commands/Image/Convert.cs index fd3a5203b..1d7746476 100644 --- a/Aaru/Commands/Image/Convert.cs +++ b/Aaru/Commands/Image/Convert.cs @@ -787,7 +787,7 @@ namespace Aaru.Commands.Image $"Converting sectors in track {discTask.Value + 1} of {discTask.MaxValue}"; doneSectors = 0; - ulong trackSectors = track.TrackEndSector - track.TrackStartSector + 1; + ulong trackSectors = track.EndSector - track.StartSector + 1; ProgressTask trackTask = ctx.AddTask("Converting track"); trackTask.MaxValue = trackSectors; @@ -804,7 +804,7 @@ namespace Aaru.Commands.Image sectorsToDo = (uint)(trackSectors - doneSectors); trackTask.Description = - $"Converting sectors {doneSectors + track.TrackStartSector} to {doneSectors + sectorsToDo + track.TrackStartSector} in track {track.TrackSequence}"; + $"Converting sectors {doneSectors + track.StartSector} to {doneSectors + sectorsToDo + track.StartSector} in track {track.Sequence}"; bool useNotLong = false; bool result = false; @@ -813,22 +813,20 @@ namespace Aaru.Commands.Image { if(sectorsToDo == 1) { - sector = - inputFormat.ReadSectorLong(doneSectors + track.TrackStartSector); + sector = inputFormat.ReadSectorLong(doneSectors + track.StartSector); result = outputFormat.WriteSectorLong(sector, - doneSectors + track.TrackStartSector); + doneSectors + track.StartSector); } else { - sector = - inputFormat.ReadSectorsLong(doneSectors + track.TrackStartSector, - sectorsToDo); + sector = inputFormat.ReadSectorsLong(doneSectors + track.StartSector, + sectorsToDo); result = outputFormat.WriteSectorsLong(sector, - doneSectors + track.TrackStartSector, sectorsToDo); + doneSectors + track.StartSector, sectorsToDo); } if(!result && @@ -852,20 +850,18 @@ namespace Aaru.Commands.Image { if(sectorsToDo == 1) { - sector = inputFormat.ReadSector(doneSectors + track.TrackStartSector); + sector = inputFormat.ReadSector(doneSectors + track.StartSector); result = - outputFormat.WriteSector(sector, - doneSectors + track.TrackStartSector); + outputFormat.WriteSector(sector, doneSectors + track.StartSector); } else { - sector = inputFormat.ReadSectors(doneSectors + track.TrackStartSector, + sector = inputFormat.ReadSectors(doneSectors + track.StartSector, sectorsToDo); result = - outputFormat.WriteSectors(sector, - doneSectors + track.TrackStartSector, + outputFormat.WriteSectors(sector, doneSectors + track.StartSector, sectorsToDo); } } @@ -875,13 +871,13 @@ namespace Aaru.Commands.Image AaruConsole. ErrorWriteLine("Error {0} writing sector {1}, continuing...", outputFormat.ErrorMessage, - doneSectors + track.TrackStartSector); + doneSectors + track.StartSector); else { AaruConsole. ErrorWriteLine("Error {0} writing sector {1}, not continuing...", outputFormat.ErrorMessage, - doneSectors + track.TrackStartSector); + doneSectors + track.StartSector); errno = ErrorNumber.WriteError; @@ -911,17 +907,17 @@ namespace Aaru.Commands.Image { tracks[i] = new Track { - Indexes = new Dictionary(), - TrackDescription = inputOptical.Tracks[i].TrackDescription, - TrackEndSector = inputOptical.Tracks[i].TrackEndSector, - TrackStartSector = inputOptical.Tracks[i].TrackStartSector, - TrackPregap = inputOptical.Tracks[i].TrackPregap, - TrackSequence = inputOptical.Tracks[i].TrackSequence, - TrackSession = inputOptical.Tracks[i].TrackSession, - TrackBytesPerSector = inputOptical.Tracks[i].TrackBytesPerSector, - TrackRawBytesPerSector = inputOptical.Tracks[i].TrackRawBytesPerSector, - TrackType = inputOptical.Tracks[i].TrackType, - TrackSubchannelType = inputOptical.Tracks[i].TrackSubchannelType + Indexes = new Dictionary(), + Description = inputOptical.Tracks[i].Description, + EndSector = inputOptical.Tracks[i].EndSector, + StartSector = inputOptical.Tracks[i].StartSector, + Pregap = inputOptical.Tracks[i].Pregap, + Sequence = inputOptical.Tracks[i].Sequence, + Session = inputOptical.Tracks[i].Session, + BytesPerSector = inputOptical.Tracks[i].BytesPerSector, + RawBytesPerSector = inputOptical.Tracks[i].RawBytesPerSector, + Type = inputOptical.Tracks[i].Type, + SubchannelType = inputOptical.Tracks[i].SubchannelType }; foreach(KeyValuePair idx in inputOptical.Tracks[i].Indexes) @@ -933,12 +929,12 @@ namespace Aaru.Commands.Image { foreach(Track track in tracks) { - byte[] isrc = inputFormat.ReadSectorTag(track.TrackSequence, tag); + byte[] isrc = inputFormat.ReadSectorTag(track.Sequence, tag); if(isrc is null) continue; - isrcs[(byte)track.TrackSequence] = Encoding.UTF8.GetString(isrc); + isrcs[(byte)track.Sequence] = Encoding.UTF8.GetString(isrc); } } @@ -947,12 +943,12 @@ namespace Aaru.Commands.Image { foreach(Track track in tracks) { - byte[] flags = inputFormat.ReadSectorTag(track.TrackSequence, tag); + byte[] flags = inputFormat.ReadSectorTag(track.Sequence, tag); if(flags is null) continue; - trackFlags[(byte)track.TrackSequence] = flags[0]; + trackFlags[(byte)track.Sequence] = flags[0]; } } @@ -999,7 +995,7 @@ namespace Aaru.Commands.Image $"Converting tags in track {discTask.Value + 1} of {discTask.MaxValue}"; doneSectors = 0; - ulong trackSectors = track.TrackEndSector - track.TrackStartSector + 1; + ulong trackSectors = track.EndSector - track.StartSector + 1; byte[] sector; bool result; @@ -1007,8 +1003,8 @@ namespace Aaru.Commands.Image { case SectorTagType.CdTrackFlags: case SectorTagType.CdTrackIsrc: - sector = inputFormat.ReadSectorTag(track.TrackSequence, tag); - result = outputFormat.WriteSectorTag(sector, track.TrackSequence, tag); + sector = inputFormat.ReadSectorTag(track.Sequence, tag); + result = outputFormat.WriteSectorTag(sector, track.Sequence, tag); if(!result) if(force) @@ -1043,13 +1039,13 @@ namespace Aaru.Commands.Image trackTask.Description = string.Format("Converting tag {3} for sectors {0} to {1} in track {2}", - doneSectors + track.TrackStartSector, - doneSectors + sectorsToDo + track.TrackStartSector, - track.TrackSequence, tag); + doneSectors + track.StartSector, + doneSectors + sectorsToDo + track.StartSector, + track.Sequence, tag); if(sectorsToDo == 1) { - sector = inputFormat.ReadSectorTag(doneSectors + track.TrackStartSector, + sector = inputFormat.ReadSectorTag(doneSectors + track.StartSector, tag); if(tag == SectorTagType.CdSectorSubchannel) @@ -1057,8 +1053,8 @@ namespace Aaru.Commands.Image bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw, MmcSubchannel.Raw, sector, - doneSectors + track.TrackStartSector, 1, null, isrcs, - (byte)track.TrackSequence, ref mcn, tracks, + doneSectors + track.StartSector, 1, null, isrcs, + (byte)track.Sequence, ref mcn, tracks, subchannelExtents, fixSubchannelPosition, outputFormat, fixSubchannel, fixSubchannelCrc, null, null, smallestPregapLbaPerTrack, false); @@ -1071,24 +1067,23 @@ namespace Aaru.Commands.Image else result = outputFormat.WriteSectorTag(sector, - doneSectors + track.TrackStartSector, tag); + doneSectors + track.StartSector, tag); } else { - sector = - inputFormat.ReadSectorsTag(doneSectors + track.TrackStartSector, - sectorsToDo, tag); + sector = inputFormat.ReadSectorsTag(doneSectors + track.StartSector, + sectorsToDo, tag); if(tag == SectorTagType.CdSectorSubchannel) { bool indexesChanged = CompactDisc.WriteSubchannelToImage(MmcSubchannel.Raw, MmcSubchannel.Raw, sector, - doneSectors + track.TrackStartSector, sectorsToDo, - null, isrcs, (byte)track.TrackSequence, ref mcn, - tracks, subchannelExtents, fixSubchannelPosition, - outputFormat, fixSubchannel, fixSubchannelCrc, null, - null, smallestPregapLbaPerTrack, false); + doneSectors + track.StartSector, sectorsToDo, null, + isrcs, (byte)track.Sequence, ref mcn, tracks, + subchannelExtents, fixSubchannelPosition, outputFormat, + fixSubchannel, fixSubchannelCrc, null, null, + smallestPregapLbaPerTrack, false); if(indexesChanged) outputOptical.SetTracks(tracks.ToList()); @@ -1098,8 +1093,7 @@ namespace Aaru.Commands.Image else result = outputFormat.WriteSectorsTag(sector, - doneSectors + track.TrackStartSector, sectorsToDo, - tag); + doneSectors + track.StartSector, sectorsToDo, tag); } if(!result) @@ -1107,13 +1101,13 @@ namespace Aaru.Commands.Image AaruConsole. ErrorWriteLine("Error {0} writing tag for sector {1}, continuing...", outputFormat.ErrorMessage, - doneSectors + track.TrackStartSector); + doneSectors + track.StartSector); else { AaruConsole. ErrorWriteLine("Error {0} writing tag for sector {1}, not continuing...", outputFormat.ErrorMessage, - doneSectors + track.TrackStartSector); + doneSectors + track.StartSector); errno = ErrorNumber.WriteError; diff --git a/Aaru/Commands/Image/Verify.cs b/Aaru/Commands/Image/Verify.cs index 2049e90d7..b11e66b3f 100644 --- a/Aaru/Commands/Image/Verify.cs +++ b/Aaru/Commands/Image/Verify.cs @@ -242,8 +242,7 @@ namespace Aaru.Commands.Image discTask.Description = $"Checking track {discTask.Value + 1} of {inputTracks.Count}"; - ulong remainingSectors = - currentTrack.TrackEndSector - currentTrack.TrackStartSector + 1; + ulong remainingSectors = currentTrack.EndSector - currentTrack.StartSector + 1; ulong currentSector = 0; @@ -253,19 +252,19 @@ namespace Aaru.Commands.Image while(remainingSectors > 0) { trackTask.Description = - $"Checking sector {currentSectorAll} of {inputFormat.Info.Sectors}, on track {currentTrack.TrackSequence}"; + $"Checking sector {currentSectorAll} of {inputFormat.Info.Sectors}, on track {currentTrack.Sequence}"; List tempFailingLbas; List tempUnknownLbas; if(remainingSectors < 512) opticalMediaImage.VerifySectors(currentSector, (uint)remainingSectors, - currentTrack.TrackSequence, + currentTrack.Sequence, out tempFailingLbas, out tempUnknownLbas); else opticalMediaImage.VerifySectors(currentSector, 512, - currentTrack.TrackSequence, + currentTrack.Sequence, out tempFailingLbas, out tempUnknownLbas); diff --git a/Aaru/Commands/Media/Info.cs b/Aaru/Commands/Media/Info.cs index d463d109d..adc3c515c 100644 --- a/Aaru/Commands/Media/Info.cs +++ b/Aaru/Commands/Media/Info.cs @@ -632,7 +632,7 @@ namespace Aaru.Commands.Media if(tracks != null) { - uint firstLba = (uint)tracks.Min(t => t.TrackStartSector); + uint firstLba = (uint)tracks.Min(t => t.StartSector); bool supportsPqSubchannel = Dump.SupportsPqSubchannel(dev, null, null, firstLba); bool supportsRwSubchannel = Dump.SupportsRwSubchannel(dev, null, null, firstLba); @@ -649,9 +649,9 @@ namespace Aaru.Commands.Media out bool inexactPositioning, false); for(int t = 1; t < tracks.Length; t++) - tracks[t - 1].TrackEndSector = tracks[t].TrackStartSector - 1; + tracks[t - 1].EndSector = tracks[t].StartSector - 1; - tracks[^1].TrackEndSector = (ulong)lastSector; + tracks[^1].EndSector = (ulong)lastSector; AaruConsole.WriteLine(); AaruConsole.WriteLine("[bold]Track calculations:[/]"); @@ -666,8 +666,7 @@ namespace Aaru.Commands.Media foreach(Track track in tracks) AaruConsole. WriteLine("Track {0} starts at LBA {1}, ends at LBA {2}, has a pregap of {3} sectors and is of type {4}", - track.TrackSequence, track.TrackStartSector, track.TrackEndSector, - track.TrackPregap, track.TrackType); + track.Sequence, track.StartSector, track.EndSector, track.Pregap, track.Type); AaruConsole.WriteLine(); AaruConsole.WriteLine("[bold]Offsets:[/]");