-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
uses code from https://github.com/dolkensp/unp4k to read file from .p…
…4k container
- Loading branch information
Showing
76 changed files
with
27,689 additions
and
108 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
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 || outStream == null) { | ||
throw new Exception("Null Stream"); | ||
} | ||
|
||
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 || outStream == null) { | ||
throw new Exception("Null Stream"); | ||
} | ||
|
||
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(); | ||
} | ||
} | ||
} | ||
|
||
} | ||
} |
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,121 @@ | ||
namespace ICSharpCode.SharpZipLib.BZip2 | ||
{ | ||
/// <summary> | ||
/// Defines internal values for both compression and decompression | ||
/// </summary> | ||
internal sealed 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; | ||
|
||
private BZip2Constants() | ||
{ | ||
} | ||
} | ||
} |
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,36 @@ | ||
using System; | ||
|
||
namespace ICSharpCode.SharpZipLib.BZip2 | ||
{ | ||
/// <summary> | ||
/// BZip2Exception represents exceptions specific to BZip2 classes and code. | ||
/// </summary> | ||
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) | ||
{ | ||
} | ||
} | ||
} |
Oops, something went wrong.