feat: use dotnet embedded zlib for compress/decompress
This commit is contained in:
@@ -52,7 +52,7 @@ namespace BallanceTasEditor.Backend {
|
|||||||
var totalByte = seq.GetCount() * SIZEOF_RAW_TAS_FRAME;
|
var totalByte = seq.GetCount() * SIZEOF_RAW_TAS_FRAME;
|
||||||
fs.Write(BitConverter.GetBytes(totalByte), 0, SIZEOF_I32);
|
fs.Write(BitConverter.GetBytes(totalByte), 0, SIZEOF_I32);
|
||||||
|
|
||||||
using (var zo = new Ionic.Zlib.ZlibStream(fs, Ionic.Zlib.CompressionMode.Compress, Ionic.Zlib.CompressionLevel.Level9, true)) {
|
using (var zo = new System.IO.Compression.ZLibStream(fs, System.IO.Compression.CompressionLevel.SmallestSize, true)) {
|
||||||
foreach (var item in seq) {
|
foreach (var item in seq) {
|
||||||
var rawItem = item.ToRaw();
|
var rawItem = item.ToRaw();
|
||||||
zo.Write(BitConverter.GetBytes(rawItem.TimeDelta), 0, SIZEOF_F32);
|
zo.Write(BitConverter.GetBytes(rawItem.TimeDelta), 0, SIZEOF_F32);
|
||||||
@@ -101,8 +101,8 @@ namespace BallanceTasEditor.Backend {
|
|||||||
ArgumentOutOfRangeException.ThrowIfNotEqual(remainder, 0);
|
ArgumentOutOfRangeException.ThrowIfNotEqual(remainder, 0);
|
||||||
|
|
||||||
using (var mem = new MemoryStream()) {
|
using (var mem = new MemoryStream()) {
|
||||||
using (var zo = new Ionic.Zlib.ZlibStream(mem, Ionic.Zlib.CompressionMode.Decompress, true)) {
|
using (var zo = new System.IO.Compression.ZLibStream(fs, System.IO.Compression.CompressionMode.Decompress, true)) {
|
||||||
CopyStream(fs, zo);
|
zo.CopyTo(mem);
|
||||||
zo.Close();
|
zo.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,17 +132,6 @@ namespace BallanceTasEditor.Backend {
|
|||||||
//zo.Close();
|
//zo.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private const int STREAM_COPY_CHUNK_SIZE = 10240;
|
|
||||||
|
|
||||||
private static void CopyStream(Stream origin, Stream target) {
|
|
||||||
var buffer = new byte[STREAM_COPY_CHUNK_SIZE];
|
|
||||||
int len;
|
|
||||||
while ((len = origin.Read(buffer, 0, STREAM_COPY_CHUNK_SIZE)) > 0) {
|
|
||||||
target.Write(buffer, 0, len);
|
|
||||||
}
|
|
||||||
//target.Flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
private sealed class EnumerableMemoryStream : IExactSizeEnumerable<TasFrame> {
|
private sealed class EnumerableMemoryStream : IExactSizeEnumerable<TasFrame> {
|
||||||
public EnumerableMemoryStream(MemoryStream mem, int frameCnt) {
|
public EnumerableMemoryStream(MemoryStream mem, int frameCnt) {
|
||||||
m_MemoryStream = mem;
|
m_MemoryStream = mem;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CommunityToolkit.HighPerformance" Version="8.4.0" />
|
<PackageReference Include="CommunityToolkit.HighPerformance" Version="8.4.0" />
|
||||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" />
|
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.1" />
|
||||||
<PackageReference Include="DotNetZip" Version="1.9.1.8" />
|
|
||||||
<PackageReference Include="OneOf" Version="3.0.271" />
|
<PackageReference Include="OneOf" Version="3.0.271" />
|
||||||
<PackageReference Include="System.Configuration.ConfigurationManager" Version="10.0.5" />
|
<PackageReference Include="System.Configuration.ConfigurationManager" Version="10.0.5" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user