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);
|
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)
|
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);
|
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)
|
public List<Track> GetSessionTracks(Session session)
|
||||||
@@ -1615,6 +1635,19 @@ namespace DiscImageChef.DiscImages
|
|||||||
return false;
|
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),
|
trackStream.Seek((long)(track.TrackFileOffset + (sectorAddress - track.TrackStartSector) * (ulong)track.TrackRawBytesPerSector),
|
||||||
SeekOrigin.Begin);
|
SeekOrigin.Begin);
|
||||||
trackStream.Write(data, 0, data.Length);
|
trackStream.Write(data, 0, data.Length);
|
||||||
@@ -1666,6 +1699,19 @@ namespace DiscImageChef.DiscImages
|
|||||||
return false;
|
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)
|
switch(track.TrackSubchannelType)
|
||||||
{
|
{
|
||||||
case TrackSubchannelType.None:
|
case TrackSubchannelType.None:
|
||||||
@@ -1726,6 +1772,19 @@ namespace DiscImageChef.DiscImages
|
|||||||
ErrorMessage = "Incorrect data size";
|
ErrorMessage = "Incorrect data size";
|
||||||
return false;
|
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);
|
uint subchannelSize = (uint)(track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0);
|
||||||
|
|
||||||
@@ -1773,6 +1832,19 @@ namespace DiscImageChef.DiscImages
|
|||||||
ErrorMessage = "Incorrect data size";
|
ErrorMessage = "Incorrect data size";
|
||||||
return false;
|
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);
|
uint subchannelSize = (uint)(track.TrackSubchannelType != TrackSubchannelType.None ? 96 : 0);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user