Skip to content
/ lzmaSDK Public
forked from mdejong/lzmaSDK

lzmaSDK is an iOS port of the decoding logic from the LZMA SDK provided with 7zip

Notifications You must be signed in to change notification settings

Kirow/lzmaSDK

This branch is 12 commits behind mdejong/lzmaSDK:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

33f7480 · Nov 12, 2014

History

41 Commits
Nov 12, 2014
Feb 18, 2013
Feb 18, 2013
Jan 18, 2013
Jul 12, 2010
Jan 22, 2013
Jan 21, 2013
Apr 20, 2011
Jul 12, 2010
Jul 12, 2010
Jan 21, 2013
Jan 22, 2013
Jul 12, 2010
Apr 20, 2011
Jan 22, 2013

Repository files navigation

This directory contains the LZMA SDK customized for an embedded system (iPhone/iOS)
Only the file extraction logic was included, all code related to creating
compressed streams was removed. CRC validation was removed to
improve performance. In addition, large file support was added so that iOS
is able to decompress files as large as 650 megs using memory mapped IO.
This code is based on lzma release 9.22 beta.

The code was modified as follows:

Embedded version does not need exe branch predictors.

Bra.c
Bcj2.c
Bra86.c

File List:

7zBuf.c		7zCrc.c		7zFile.c	7zStream.c	Archive		LzHash.h	LzmaDec.h
7zBuf.h		7zCrc.h		7zFile.h	7zVersion.h	CpuArch.h	LzmaDec.c	Types.h

Removed:

(XZ file format support)
Xz.*

MtCoder.c

Ppmd7Enc.c

Sha256.*

lzma Serch (encode) functions

rm LzFind*

rm Threads.*

rm Bra*

rm Bcj2.*

rm lzmaEnc* lzma2Enc.*

The 7z.h and 7zIn.c files were modified to support memory mapping the dictionary
cache file so that large files can be decompressed without having to break archives
up into blocks. While splitting into blocks makes it possible to create an archive
with lots of little files in different blocks, it makes compression much worse.
Large file support makes it possible to get maximum compression by putting all
the files into 1 block, but the downside is that the decode process is slower
due to the use of memory mapped IO writes. See the k7zUnpackMapDictionaryInMemoryMaxNumBytes
define in 7z.h if you want to change the size at which memory mapped IO kicks in,
currently archives larger than 1 meg will use memory mapped IO.

To update to a new version of the LZMA SDK, use the update.tcl to copy over those
files that were used in this version.

The example iOS application shows how to decode a small file and how some very large
files can be decoded without using up all the memory in an iOS application. Previously,
an archive with a dictionary around 30 to 40 megs would crash an iOS device, with
the mmap logic files as large as 650 megs can be decoded without going over the
virtual memory limits on iOS.


About

lzmaSDK is an iOS port of the decoding logic from the LZMA SDK provided with 7zip

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 91.4%
  • Objective-C 7.9%
  • Tcl 0.7%