mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Simplify some struct type names.
This commit is contained in:
@@ -52,7 +52,7 @@ namespace Aaru.DiscImages
|
||||
bool _isCd;
|
||||
uint _lostPregap;
|
||||
bool _negativeEnd;
|
||||
/// <summary>Dictionary, index is track #, value is TrackFile</summary>
|
||||
/// <summary>Dictionary, index is track #, value is File</summary>
|
||||
Dictionary<uint, ulong> _offsetMap;
|
||||
SectorBuilder _sectorBuilder;
|
||||
bool _separateTracksWriting;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace Aaru.DiscImages
|
||||
/// <inheritdoc />
|
||||
public string Name => "CDRWin cuesheet";
|
||||
/// <inheritdoc />
|
||||
public Guid Id => new Guid("664568B2-15D4-4E64-8A7A-20BDA8B8386F");
|
||||
public Guid Id => new("664568B2-15D4-4E64-8A7A-20BDA8B8386F");
|
||||
/// <inheritdoc />
|
||||
public string Format => "CDRWin CUESheet";
|
||||
/// <inheritdoc />
|
||||
@@ -74,7 +74,7 @@ namespace Aaru.DiscImages
|
||||
{
|
||||
get
|
||||
{
|
||||
List<Track> tracks = new List<Track>();
|
||||
List<Track> 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;
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace Aaru.DiscImages
|
||||
|
||||
int trackCount = 0;
|
||||
|
||||
Dictionary<byte, int> leadouts = new Dictionary<byte, int>();
|
||||
Dictionary<byte, int> leadouts = new();
|
||||
|
||||
while(_cueStream.Peek() >= 0)
|
||||
{
|
||||
@@ -323,7 +323,7 @@ namespace Aaru.DiscImages
|
||||
{
|
||||
existingDump.Extents = new List<ExtentType>(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<ushort, int> newIndexes = new Dictionary<ushort, int>();
|
||||
Dictionary<ushort, int> newIndexes = new();
|
||||
|
||||
foreach(KeyValuePair<ushort, int> 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<Track> 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");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public List<Track> 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();
|
||||
}
|
||||
}
|
||||
@@ -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<Track>();
|
||||
|
||||
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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user