mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
🐛Fix cdrdao audio track endian.
This commit is contained in:
@@ -1110,7 +1110,17 @@ namespace DiscImageChef.DiscImages
|
||||
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
// cdrdao audio tracks are endian swapped corresponding to DiscImageChef
|
||||
if(dicTrack.Tracktype != CDRDAO_TRACK_TYPE_AUDIO) return buffer;
|
||||
|
||||
byte[] swapped = new byte[buffer.Length];
|
||||
for(long i = 0; i < buffer.Length; i += 2)
|
||||
{
|
||||
swapped[i] = buffer[i + 1];
|
||||
swapped[i + 1] = buffer[i];
|
||||
}
|
||||
|
||||
return swapped;
|
||||
}
|
||||
|
||||
public byte[] ReadSectorsTag(ulong sectorAddress, uint length, uint track, SectorTagType tag)
|
||||
@@ -1385,7 +1395,17 @@ namespace DiscImageChef.DiscImages
|
||||
Array.Copy(sector, 0, buffer, i * sectorSize, sectorSize);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
// cdrdao audio tracks are endian swapped corresponding to DiscImageChef
|
||||
if(dicTrack.Tracktype != CDRDAO_TRACK_TYPE_AUDIO) return buffer;
|
||||
|
||||
byte[] swapped = new byte[buffer.Length];
|
||||
for(long i = 0; i < buffer.Length; i += 2)
|
||||
{
|
||||
swapped[i] = buffer[i + 1];
|
||||
swapped[i + 1] = buffer[i];
|
||||
}
|
||||
|
||||
return swapped;
|
||||
}
|
||||
|
||||
public List<Track> GetSessionTracks(Session session)
|
||||
@@ -1615,6 +1635,19 @@ namespace DiscImageChef.DiscImages
|
||||
return false;
|
||||
}
|
||||
|
||||
// cdrdao audio tracks are endian swapped corresponding to DiscImageChef
|
||||
if(track.TrackType == TrackType.Audio)
|
||||
{
|
||||
byte[] swapped = new byte[data.Length];
|
||||
for(long i = 0; i < swapped.Length; i += 2)
|
||||
{
|
||||
swapped[i] = data[i + 1];
|
||||
swapped[i + 1] = data[i];
|
||||
}
|
||||
|
||||
data = swapped;
|
||||
}
|
||||
|
||||
trackStream.Seek((long)(track.TrackFileOffset + (sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector),
|
||||
SeekOrigin.Begin);
|
||||
trackStream.Write(data, 0, data.Length);
|
||||
@@ -1666,6 +1699,19 @@ namespace DiscImageChef.DiscImages
|
||||
return false;
|
||||
}
|
||||
|
||||
// cdrdao audio tracks are endian swapped corresponding to DiscImageChef
|
||||
if(track.TrackType == TrackType.Audio)
|
||||
{
|
||||
byte[] swapped = new byte[data.Length];
|
||||
for(long i = 0; i < swapped.Length; i += 2)
|
||||
{
|
||||
swapped[i] = data[i + 1];
|
||||
swapped[i + 1] = data[i];
|
||||
}
|
||||
|
||||
data = swapped;
|
||||
}
|
||||
|
||||
switch(track.TrackSubchannelType)
|
||||
{
|
||||
case TrackSubchannelType.None:
|
||||
@@ -1727,6 +1773,19 @@ namespace DiscImageChef.DiscImages
|
||||
return false;
|
||||
}
|
||||
|
||||
// cdrdao audio tracks are endian swapped corresponding to DiscImageChef
|
||||
if(track.TrackType == TrackType.Audio)
|
||||
{
|
||||
byte[] swapped = new byte[data.Length];
|
||||
for(long i = 0; i < swapped.Length; i += 2)
|
||||
{
|
||||
swapped[i] = data[i + 1];
|
||||
swapped[i + 1] = data[i];
|
||||
}
|
||||
|
||||
data = swapped;
|
||||
}
|
||||
|
||||
uint subchannelSize = (uint)(track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0);
|
||||
|
||||
trackStream.Seek((long)(track.TrackFileOffset + (sectorAddress - track.TrackStartSector) * (ulong)(track.TrackRawBytesPerSector + subchannelSize)),
|
||||
@@ -1774,6 +1833,19 @@ namespace DiscImageChef.DiscImages
|
||||
return false;
|
||||
}
|
||||
|
||||
// cdrdao audio tracks are endian swapped corresponding to DiscImageChef
|
||||
if(track.TrackType == TrackType.Audio)
|
||||
{
|
||||
byte[] swapped = new byte[data.Length];
|
||||
for(long i = 0; i < swapped.Length; i += 2)
|
||||
{
|
||||
swapped[i] = data[i + 1];
|
||||
swapped[i + 1] = data[i];
|
||||
}
|
||||
|
||||
data = swapped;
|
||||
}
|
||||
|
||||
uint subchannelSize = (uint)(track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0);
|
||||
|
||||
for(uint i = 0; i < length; i++)
|
||||
|
||||
Reference in New Issue
Block a user