public static Stream DecodeLz4(Stream stream) { var decoderStream = LZ4Stream.Decode(stream); var total = decoderStream.Length; return(TempFileStream.CreateFrom(decoderStream, done => ReportProgress(done, total))); }
public TarEntryViewModel(TarFileInfo parent, TarArchiveEntry e) { this.parent = parent; Name = e.Key; getStream = new Lazy <Stream>(delegate { using (var srcStream = e.OpenEntryStream()) { if (Name.EndsWith(".img.lz4")) { return(Lz4FileInfo.DecodeLz4(srcStream)); } return(TempFileStream.CreateFrom(srcStream, done => FileInfoBase.ReportProgress(done, e.Size))); } }); }
public ZipEntryViewModel(ZipFileInfo parent, ZipArchiveEntry e) { this.parent = parent; totalSize = e.Size; Name = e.Key; getStream = new Lazy <Stream>(delegate { var transferList = parent.GetTransferList(); using (var srcStream = e.OpenEntryStream()) { if (Name.EndsWith(".new.dat")) { return(new BlockImgStream(srcStream, transferList)); } if (Name.EndsWith(".new.dat.br")) { return(new BlockImgStream( new BrotliStream(srcStream, CompressionMode.Decompress), transferList)); } return(TempFileStream.CreateFrom(srcStream, done => FileInfoBase.ReportProgress(done, totalSize))); } }); }