mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
In dicformat, treat JaguarCD second session as data, compress using LZMA.
This commit is contained in:
@@ -1793,8 +1793,8 @@ namespace DiscImageChef.DiscImages
|
||||
if(BitConverter.ToUInt64(verifyCrc, 0) != blockHeader.cmpCrc64)
|
||||
{
|
||||
DicConsole.DebugWriteLine("DiscImageChef format plugin",
|
||||
"Expected block CRC {0:X16} but got {1:X16}", blockHeader.cmpCrc64,
|
||||
BitConverter.ToUInt64(verifyCrc, 0));
|
||||
"Expected block CRC {0:X16} but got {1:X16}",
|
||||
blockHeader.cmpCrc64, BitConverter.ToUInt64(verifyCrc, 0));
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -2755,6 +2755,12 @@ namespace DiscImageChef.DiscImages
|
||||
if(imageInfo.XmlMediaType == XmlMediaType.OpticalDisc && trk.TrackType == TrackType.Audio && !nocompress
|
||||
) currentBlockHeader.compression = CompressionType.Flac;
|
||||
|
||||
// JaguarCD stores data in audio tracks. FLAC is too inefficient, use LZMA there.
|
||||
if(imageInfo.MediaType == MediaType.JaguarCD && trk.TrackType == TrackType.Audio &&
|
||||
!nocompress &&
|
||||
currentBlockHeader.compression == CompressionType.Flac &&
|
||||
trk.TrackSession > 1) currentBlockHeader.compression = CompressionType.Lzma;
|
||||
|
||||
blockStream = new MemoryStream();
|
||||
decompressedStream = new MemoryStream();
|
||||
if(currentBlockHeader.compression == CompressionType.Flac)
|
||||
@@ -3629,7 +3635,7 @@ namespace DiscImageChef.DiscImages
|
||||
Crc64Context cmpCrc = new Crc64Context();
|
||||
cmpCrc.Update(lzmaProperties);
|
||||
cmpCrc.Update(blockStream.ToArray());
|
||||
blockCrc = cmpCrc.Final();
|
||||
blockCrc = cmpCrc.Final();
|
||||
prefixBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
||||
prefixBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
||||
prefixBlock.compression = CompressionType.Lzma;
|
||||
@@ -3691,7 +3697,7 @@ namespace DiscImageChef.DiscImages
|
||||
Crc64Context cmpCrc = new Crc64Context();
|
||||
cmpCrc.Update(lzmaProperties);
|
||||
cmpCrc.Update(blockStream.ToArray());
|
||||
blockCrc = cmpCrc.Final();
|
||||
blockCrc = cmpCrc.Final();
|
||||
prefixBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
||||
prefixBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
||||
prefixBlock.compression = CompressionType.Lzma;
|
||||
@@ -3759,7 +3765,7 @@ namespace DiscImageChef.DiscImages
|
||||
Crc64Context cmpCrc = new Crc64Context();
|
||||
cmpCrc.Update(lzmaProperties);
|
||||
cmpCrc.Update(blockStream.ToArray());
|
||||
blockCrc = cmpCrc.Final();
|
||||
blockCrc = cmpCrc.Final();
|
||||
subchannelBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
||||
subchannelBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
||||
subchannelBlock.compression = CompressionType.Lzma;
|
||||
@@ -3934,7 +3940,7 @@ namespace DiscImageChef.DiscImages
|
||||
Crc64Context cmpCrc = new Crc64Context();
|
||||
cmpCrc.Update(lzmaProperties);
|
||||
cmpCrc.Update(blockStream.ToArray());
|
||||
blockCrc = cmpCrc.Final();
|
||||
blockCrc = cmpCrc.Final();
|
||||
subchannelBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
||||
subchannelBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
||||
subchannelBlock.compression = CompressionType.Lzma;
|
||||
|
||||
Reference in New Issue
Block a user