-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[CompressionLibrary] - Implements local fork of ICSharp ZipLib and lz…
…o.net Comes with booth accuracy and endianness fixes.
- Loading branch information
1 parent
e170afd
commit d88197d
Showing
92 changed files
with
35,565 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
79 changes: 79 additions & 0 deletions
79
BackendServices/CompressionLibrary/ICSharpCode.SharpZipLib/BZip2/BZip2.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
using System; | ||
using System.IO; | ||
|
||
namespace ICSharpCode.SharpZipLib.BZip2 | ||
{ | ||
/// <summary> | ||
/// An example class to demonstrate compression and decompression of BZip2 streams. | ||
/// </summary> | ||
public static class BZip2 | ||
{ | ||
/// <summary> | ||
/// Decompress the <paramref name="inStream">input</paramref> writing | ||
/// uncompressed data to the <paramref name="outStream">output stream</paramref> | ||
/// </summary> | ||
/// <param name="inStream">The readable stream containing data to decompress.</param> | ||
/// <param name="outStream">The output stream to receive the decompressed data.</param> | ||
/// <param name="isStreamOwner">Both streams are closed on completion if true.</param> | ||
public static void Decompress(Stream inStream, Stream outStream, bool isStreamOwner) | ||
{ | ||
if (inStream == null) | ||
throw new ArgumentNullException(nameof(inStream)); | ||
|
||
if (outStream == null) | ||
throw new ArgumentNullException(nameof(outStream)); | ||
|
||
try | ||
{ | ||
using (BZip2InputStream bzipInput = new BZip2InputStream(inStream)) | ||
{ | ||
bzipInput.IsStreamOwner = isStreamOwner; | ||
Core.StreamUtils.Copy(bzipInput, outStream, new byte[4096]); | ||
} | ||
} | ||
finally | ||
{ | ||
if (isStreamOwner) | ||
{ | ||
// inStream is closed by the BZip2InputStream if stream owner | ||
outStream.Dispose(); | ||
} | ||
} | ||
} | ||
|
||
/// <summary> | ||
/// Compress the <paramref name="inStream">input stream</paramref> sending | ||
/// result data to <paramref name="outStream">output stream</paramref> | ||
/// </summary> | ||
/// <param name="inStream">The readable stream to compress.</param> | ||
/// <param name="outStream">The output stream to receive the compressed data.</param> | ||
/// <param name="isStreamOwner">Both streams are closed on completion if true.</param> | ||
/// <param name="level">Block size acts as compression level (1 to 9) with 1 giving | ||
/// the lowest compression and 9 the highest.</param> | ||
public static void Compress(Stream inStream, Stream outStream, bool isStreamOwner, int level) | ||
{ | ||
if (inStream == null) | ||
throw new ArgumentNullException(nameof(inStream)); | ||
|
||
if (outStream == null) | ||
throw new ArgumentNullException(nameof(outStream)); | ||
|
||
try | ||
{ | ||
using (BZip2OutputStream bzipOutput = new BZip2OutputStream(outStream, level)) | ||
{ | ||
bzipOutput.IsStreamOwner = isStreamOwner; | ||
Core.StreamUtils.Copy(inStream, bzipOutput, new byte[4096]); | ||
} | ||
} | ||
finally | ||
{ | ||
if (isStreamOwner) | ||
{ | ||
// outStream is closed by the BZip2OutputStream if stream owner | ||
inStream.Dispose(); | ||
} | ||
} | ||
} | ||
} | ||
} |
117 changes: 117 additions & 0 deletions
117
BackendServices/CompressionLibrary/ICSharpCode.SharpZipLib/BZip2/BZip2Constants.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
namespace ICSharpCode.SharpZipLib.BZip2 | ||
{ | ||
/// <summary> | ||
/// Defines internal values for both compression and decompression | ||
/// </summary> | ||
internal static class BZip2Constants | ||
{ | ||
/// <summary> | ||
/// Random numbers used to randomise repetitive blocks | ||
/// </summary> | ||
public readonly static int[] RandomNumbers = { | ||
619, 720, 127, 481, 931, 816, 813, 233, 566, 247, | ||
985, 724, 205, 454, 863, 491, 741, 242, 949, 214, | ||
733, 859, 335, 708, 621, 574, 73, 654, 730, 472, | ||
419, 436, 278, 496, 867, 210, 399, 680, 480, 51, | ||
878, 465, 811, 169, 869, 675, 611, 697, 867, 561, | ||
862, 687, 507, 283, 482, 129, 807, 591, 733, 623, | ||
150, 238, 59, 379, 684, 877, 625, 169, 643, 105, | ||
170, 607, 520, 932, 727, 476, 693, 425, 174, 647, | ||
73, 122, 335, 530, 442, 853, 695, 249, 445, 515, | ||
909, 545, 703, 919, 874, 474, 882, 500, 594, 612, | ||
641, 801, 220, 162, 819, 984, 589, 513, 495, 799, | ||
161, 604, 958, 533, 221, 400, 386, 867, 600, 782, | ||
382, 596, 414, 171, 516, 375, 682, 485, 911, 276, | ||
98, 553, 163, 354, 666, 933, 424, 341, 533, 870, | ||
227, 730, 475, 186, 263, 647, 537, 686, 600, 224, | ||
469, 68, 770, 919, 190, 373, 294, 822, 808, 206, | ||
184, 943, 795, 384, 383, 461, 404, 758, 839, 887, | ||
715, 67, 618, 276, 204, 918, 873, 777, 604, 560, | ||
951, 160, 578, 722, 79, 804, 96, 409, 713, 940, | ||
652, 934, 970, 447, 318, 353, 859, 672, 112, 785, | ||
645, 863, 803, 350, 139, 93, 354, 99, 820, 908, | ||
609, 772, 154, 274, 580, 184, 79, 626, 630, 742, | ||
653, 282, 762, 623, 680, 81, 927, 626, 789, 125, | ||
411, 521, 938, 300, 821, 78, 343, 175, 128, 250, | ||
170, 774, 972, 275, 999, 639, 495, 78, 352, 126, | ||
857, 956, 358, 619, 580, 124, 737, 594, 701, 612, | ||
669, 112, 134, 694, 363, 992, 809, 743, 168, 974, | ||
944, 375, 748, 52, 600, 747, 642, 182, 862, 81, | ||
344, 805, 988, 739, 511, 655, 814, 334, 249, 515, | ||
897, 955, 664, 981, 649, 113, 974, 459, 893, 228, | ||
433, 837, 553, 268, 926, 240, 102, 654, 459, 51, | ||
686, 754, 806, 760, 493, 403, 415, 394, 687, 700, | ||
946, 670, 656, 610, 738, 392, 760, 799, 887, 653, | ||
978, 321, 576, 617, 626, 502, 894, 679, 243, 440, | ||
680, 879, 194, 572, 640, 724, 926, 56, 204, 700, | ||
707, 151, 457, 449, 797, 195, 791, 558, 945, 679, | ||
297, 59, 87, 824, 713, 663, 412, 693, 342, 606, | ||
134, 108, 571, 364, 631, 212, 174, 643, 304, 329, | ||
343, 97, 430, 751, 497, 314, 983, 374, 822, 928, | ||
140, 206, 73, 263, 980, 736, 876, 478, 430, 305, | ||
170, 514, 364, 692, 829, 82, 855, 953, 676, 246, | ||
369, 970, 294, 750, 807, 827, 150, 790, 288, 923, | ||
804, 378, 215, 828, 592, 281, 565, 555, 710, 82, | ||
896, 831, 547, 261, 524, 462, 293, 465, 502, 56, | ||
661, 821, 976, 991, 658, 869, 905, 758, 745, 193, | ||
768, 550, 608, 933, 378, 286, 215, 979, 792, 961, | ||
61, 688, 793, 644, 986, 403, 106, 366, 905, 644, | ||
372, 567, 466, 434, 645, 210, 389, 550, 919, 135, | ||
780, 773, 635, 389, 707, 100, 626, 958, 165, 504, | ||
920, 176, 193, 713, 857, 265, 203, 50, 668, 108, | ||
645, 990, 626, 197, 510, 357, 358, 850, 858, 364, | ||
936, 638 | ||
}; | ||
|
||
/// <summary> | ||
/// When multiplied by compression parameter (1-9) gives the block size for compression | ||
/// 9 gives the best compression but uses the most memory. | ||
/// </summary> | ||
public const int BaseBlockSize = 100000; | ||
|
||
/// <summary> | ||
/// Backend constant | ||
/// </summary> | ||
public const int MaximumAlphaSize = 258; | ||
|
||
/// <summary> | ||
/// Backend constant | ||
/// </summary> | ||
public const int MaximumCodeLength = 23; | ||
|
||
/// <summary> | ||
/// Backend constant | ||
/// </summary> | ||
public const int RunA = 0; | ||
|
||
/// <summary> | ||
/// Backend constant | ||
/// </summary> | ||
public const int RunB = 1; | ||
|
||
/// <summary> | ||
/// Backend constant | ||
/// </summary> | ||
public const int GroupCount = 6; | ||
|
||
/// <summary> | ||
/// Backend constant | ||
/// </summary> | ||
public const int GroupSize = 50; | ||
|
||
/// <summary> | ||
/// Backend constant | ||
/// </summary> | ||
public const int NumberOfIterations = 4; | ||
|
||
/// <summary> | ||
/// Backend constant | ||
/// </summary> | ||
public const int MaximumSelectors = (2 + (900000 / GroupSize)); | ||
|
||
/// <summary> | ||
/// Backend constant | ||
/// </summary> | ||
public const int OvershootBytes = 20; | ||
} | ||
} |
54 changes: 54 additions & 0 deletions
54
BackendServices/CompressionLibrary/ICSharpCode.SharpZipLib/BZip2/BZip2Exception.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
using System; | ||
using System.Runtime.Serialization; | ||
|
||
namespace ICSharpCode.SharpZipLib.BZip2 | ||
{ | ||
/// <summary> | ||
/// BZip2Exception represents exceptions specific to BZip2 classes and code. | ||
/// </summary> | ||
[Serializable] | ||
public class BZip2Exception : SharpZipBaseException | ||
{ | ||
/// <summary> | ||
/// Initialise a new instance of <see cref="BZip2Exception" />. | ||
/// </summary> | ||
public BZip2Exception() | ||
{ | ||
} | ||
|
||
/// <summary> | ||
/// Initialise a new instance of <see cref="BZip2Exception" /> with its message string. | ||
/// </summary> | ||
/// <param name="message">A <see cref="string"/> that describes the error.</param> | ||
public BZip2Exception(string message) | ||
: base(message) | ||
{ | ||
} | ||
|
||
/// <summary> | ||
/// Initialise a new instance of <see cref="BZip2Exception" />. | ||
/// </summary> | ||
/// <param name="message">A <see cref="string"/> that describes the error.</param> | ||
/// <param name="innerException">The <see cref="Exception"/> that caused this exception.</param> | ||
public BZip2Exception(string message, Exception innerException) | ||
: base(message, innerException) | ||
{ | ||
} | ||
|
||
/// <summary> | ||
/// Initializes a new instance of the BZip2Exception class with serialized data. | ||
/// </summary> | ||
/// <param name="info"> | ||
/// The System.Runtime.Serialization.SerializationInfo that holds the serialized | ||
/// object data about the exception being thrown. | ||
/// </param> | ||
/// <param name="context"> | ||
/// The System.Runtime.Serialization.StreamingContext that contains contextual information | ||
/// about the source or destination. | ||
/// </param> | ||
protected BZip2Exception(SerializationInfo info, StreamingContext context) | ||
: base(info, context) | ||
{ | ||
} | ||
} | ||
} |
Oops, something went wrong.