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)
|
if(BitConverter.ToUInt64(verifyCrc, 0) != blockHeader.cmpCrc64)
|
||||||
{
|
{
|
||||||
DicConsole.DebugWriteLine("DiscImageChef format plugin",
|
DicConsole.DebugWriteLine("DiscImageChef format plugin",
|
||||||
"Expected block CRC {0:X16} but got {1:X16}", blockHeader.cmpCrc64,
|
"Expected block CRC {0:X16} but got {1:X16}",
|
||||||
BitConverter.ToUInt64(verifyCrc, 0));
|
blockHeader.cmpCrc64, BitConverter.ToUInt64(verifyCrc, 0));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2755,6 +2755,12 @@ namespace DiscImageChef.DiscImages
|
|||||||
if(imageInfo.XmlMediaType == XmlMediaType.OpticalDisc && trk.TrackType == TrackType.Audio && !nocompress
|
if(imageInfo.XmlMediaType == XmlMediaType.OpticalDisc && trk.TrackType == TrackType.Audio && !nocompress
|
||||||
) currentBlockHeader.compression = CompressionType.Flac;
|
) 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();
|
blockStream = new MemoryStream();
|
||||||
decompressedStream = new MemoryStream();
|
decompressedStream = new MemoryStream();
|
||||||
if(currentBlockHeader.compression == CompressionType.Flac)
|
if(currentBlockHeader.compression == CompressionType.Flac)
|
||||||
@@ -3629,7 +3635,7 @@ namespace DiscImageChef.DiscImages
|
|||||||
Crc64Context cmpCrc = new Crc64Context();
|
Crc64Context cmpCrc = new Crc64Context();
|
||||||
cmpCrc.Update(lzmaProperties);
|
cmpCrc.Update(lzmaProperties);
|
||||||
cmpCrc.Update(blockStream.ToArray());
|
cmpCrc.Update(blockStream.ToArray());
|
||||||
blockCrc = cmpCrc.Final();
|
blockCrc = cmpCrc.Final();
|
||||||
prefixBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
prefixBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
||||||
prefixBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
prefixBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
||||||
prefixBlock.compression = CompressionType.Lzma;
|
prefixBlock.compression = CompressionType.Lzma;
|
||||||
@@ -3691,7 +3697,7 @@ namespace DiscImageChef.DiscImages
|
|||||||
Crc64Context cmpCrc = new Crc64Context();
|
Crc64Context cmpCrc = new Crc64Context();
|
||||||
cmpCrc.Update(lzmaProperties);
|
cmpCrc.Update(lzmaProperties);
|
||||||
cmpCrc.Update(blockStream.ToArray());
|
cmpCrc.Update(blockStream.ToArray());
|
||||||
blockCrc = cmpCrc.Final();
|
blockCrc = cmpCrc.Final();
|
||||||
prefixBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
prefixBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
||||||
prefixBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
prefixBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
||||||
prefixBlock.compression = CompressionType.Lzma;
|
prefixBlock.compression = CompressionType.Lzma;
|
||||||
@@ -3759,7 +3765,7 @@ namespace DiscImageChef.DiscImages
|
|||||||
Crc64Context cmpCrc = new Crc64Context();
|
Crc64Context cmpCrc = new Crc64Context();
|
||||||
cmpCrc.Update(lzmaProperties);
|
cmpCrc.Update(lzmaProperties);
|
||||||
cmpCrc.Update(blockStream.ToArray());
|
cmpCrc.Update(blockStream.ToArray());
|
||||||
blockCrc = cmpCrc.Final();
|
blockCrc = cmpCrc.Final();
|
||||||
subchannelBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
subchannelBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
||||||
subchannelBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
subchannelBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
||||||
subchannelBlock.compression = CompressionType.Lzma;
|
subchannelBlock.compression = CompressionType.Lzma;
|
||||||
@@ -3934,7 +3940,7 @@ namespace DiscImageChef.DiscImages
|
|||||||
Crc64Context cmpCrc = new Crc64Context();
|
Crc64Context cmpCrc = new Crc64Context();
|
||||||
cmpCrc.Update(lzmaProperties);
|
cmpCrc.Update(lzmaProperties);
|
||||||
cmpCrc.Update(blockStream.ToArray());
|
cmpCrc.Update(blockStream.ToArray());
|
||||||
blockCrc = cmpCrc.Final();
|
blockCrc = cmpCrc.Final();
|
||||||
subchannelBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
subchannelBlock.cmpLength = (uint)blockStream.Length + LZMA_PROPERTIES_LENGTH;
|
||||||
subchannelBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
subchannelBlock.cmpCrc64 = BitConverter.ToUInt64(blockCrc, 0);
|
||||||
subchannelBlock.compression = CompressionType.Lzma;
|
subchannelBlock.compression = CompressionType.Lzma;
|
||||||
|
|||||||
Reference in New Issue
Block a user