-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathReadme.txt
365 lines (273 loc) · 14.3 KB
/
Readme.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
packARC v0.7RC18 (12/17/2014)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
packARC is an archiver program specially designed for lossless further
compression of media files in the JPEG, MP3, BMP and PNM formats. It
contains all of my latest developments, the packJPG, packMP3, packPNM
and packARI algorithms with an easy to use command line interface.
Typical further compression for JPEG is ~20%, for MP3 it is ~16% and for
PNM, BMP and other file types it is highly dependent on the contents of
the file.
packARC creates .pja archives, which may contain several files of
arbitrary file type. In general packARC is not as efficient as ZIP, RAR,
or 7z when compressing generic files, but it performs very good for JPG,
MP3, BMP and PNM-files.
Besides the archiver program, packARC, this package also contains the
source code for packJPG, packMP3, packPNM, and packARI. packJPG,
packMP3, packPNM and packARI do not create archives, but compress JPG,
MP3, PNM or, in the case of packARI, generic files on a file by file
basis.
LGPL v3 license and special permissions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
All programs in this package are free software; you can redistribute
them and/or modify them under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either version 3
of the License, or (at your option) any later version.
The package is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
General Public License for more details at
http://www.gnu.org/copyleft/lgpl.html.
If the LGPL v3 license is not compatible with your software project you
might contact us and ask for a special permission to use packARC or the
packANY library under different conditions. In any case, usage of the
packARC algorithm under the LGPL v3 or above is highly advised and
special permissions will only be given where necessary on a case by case
basis. This offer is aimed mainly at closed source freeware developers
seeking to add packARC support to their software projects.
Copyright 2006...2016 by HTW Aalen University and Matthias Stirner.
Compression algorithms and file types
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
packARC contains four unique compression algorithms, packJPG, packMP3,
packPNM and packARI in one easy to use command line interface. Files
will be compressed into either the regular PJA (packJPG Archive) or SFX
(self extracting archive) formats. SFX archives are executable files
that extract their own contents upon execution.
packARC will handle any type of file. Folders specified as file name are
recursed and all contained files added to the archive while preserving
relative folder structure. For regular files, the compression algorithm
to use is decided on a per file base, automatically analyzing each file
before adding it to the archive.
The packJPG algorithm handles image files in the JPEG file format.
Basically all types of JPEG files, baseline, extended sequential,
progressive, CMYK and YCbCr are supported by packJPG.
The packMP3 algorithm handles audio files in the MPEG-1 Audio Layer III
format. Files in MPEG-2/2.5 Audio Layer III format are not supported.
You may distinguish these from MPEG-1 Audio Layer III by their sample
rates. Only MPEG-1 Audio Layer III supports sample rates of 32kHz and
above.
The packPNM algorithm handles image files in the BMP format and the PPM
8bit/16bit, PGM 8bit/16bit and PBM binary formats (the respective ASCII
based formats are not supported). Unless the image file has structural
errors it will always be compressed using the packPNM algorithm.
All other and unrecognized files are handled by the packARI algorithm,
which consists of arithmetic coding with a simple variable order
statistical model.
Usage of packARC
~~~~~~~~~~~~~~~~
The following paragraphs explain the general usage of packARC. In these
praragraphs, [] is used for required paramters, <> is used for optional
parameters.
You may create a new PJA archive or add files to an existing archive
using this command:
"packARC a <switches> [name_of_archive] [file(s)_to_add]"
When extracting, specifying files to extract is optional as indicated by
the <>. If you leave it blank, all files inside the archive are
extracted. To extract files from an existing archive use this command:
"packARC x <switches> [name_of_archive] <file(s)_to_extract>"
packARC can extract archive contents to memory and compare extracted
CRC32s with original CRCs, making sure that all files inside the archive
are ok. To test archive integrity, use this command:
"packARC t [name_of_archive]"
To convert an existing regular archive to SFX (self extracting archive)
format or to convert an SFX archive to regular archive format use the
following command. packARC will automatically choose the direction of
the conversion based on the format of the input archive.
"packARC c [name_of_archive]"
You may delete unwanted files from an archive using the delete command.
Use this syntax:
"packARC d [name_of_archive] [file(s)_to_delete]"
To list the contents of an archive, use the list command:
"packARC l <switches> [name_of_archive]"
packARC handles SFX archives the same way as it handles regular
archives. You may use all of the mentioned commands on either regular
packARC archives or on packARC SFX archives created in any OS. packARC
is also compatible with archives written using previous release
versions. You can edit, extract, test, convert and add to archives
created with older versions, too.
packARC supports wildcards like "*.*" and drag and drop of multiple
files. When dropping an archive file, that file is extracted in place.
When dropping multiple files and/or non-archive files, a new SFX archive
file is created using the name of the first file in the list and all
files are added to it. Existing archive files won't be changed or
overwritten in the process.
In default mode, existing files are never overwritten, neither inside,
nor outside the archive. packARC skips these files instead. You may
configure this behaviour to your liking using command line switches
"-o", "-s" and "-r" (see below).
Usage examples:
Add all files matching "*.jpg" to archive "image.pja":
"packARC a images.pja *.jpg"
Extract all files from archive "media.pja":
"packARC x media.pja"
Delete file "unneeded.txt" from archive "SFX.exe":
"packARC d SFX.exe unneeded.txt"
Convert archive "archive.pja" to SFX format:
"packARC c archive.pja"
List contents of archive "myfiles.exe":
"packARC l myfiles.exe"
Command line switches
~~~~~~~~~~~~~~~~~~~~~
-o overwrite existing files
-s skip existing files (default)
-r rename on existing files
-i (with x) ignore crc errors
-sfx (with a) create sfx archive
-sl (with l) simple list format
-csv (with l) CSV list format
-np no pause after processing.
When adding or extracting, existing files are skipped by default. If you
want packARC to overwrite files, use "-o". If the command line parameter
"-r" is used and a filename is already in use, packARC will create a new
filename by adding underscores to the original filename instead. As an
example, if "lena.jpg" already existed, the new file would be called
"lena_.jpg when "-r" is used.
By default, packARC checks extracted files using CRC32. If the check
fails, packARC does not extract the file in question and moves on to the
next file instead. In theory the check should never fail, but it may
happen with corrupted archives. If you want to disable the CRC32 check
for any reason use the parameter "-i".
If you want to create a new SFX archive, you don't need to create a
regular one first using "a", then convert it it using "c". Just use the
switch "-sfx" in conjunction with "a" to create a SFX archive right
away.
You can change the format of the file listing with "l". For a simpler
list format use switch "sl". For CSV compatible output use switch "csv".
Usage examples:
Add all files matching "newfile??.bin", overwriting existing files:
"packARC a -o archive.pja newfile??.bin"
Create new SFX archive adding all files matching "*.mp3":
"packARC a -sfx music.exe *.mp3"
Extract archive, skipping CRC32 check and renaming on existing files:
"packARC x -r -i photos.pja"
List contents of archive using the CSV list format:
"packARC l -csv compressed.exe"
Known Limitations
~~~~~~~~~~~~~~~~~
Although packARC can handle any type of file, it was mainly designed
with media files MP3 and JPEG in mind. It will reasonably compress the
occasional TXT, PDF, DOC or any other file, but it is not intended to be
used for large files such as ISOs. If the files that you want to archive
don't consist mainly of JPEGs or MP3s you might want to consider using
something else, such as Matt Mahoney's excellent PAQ8 series of
archivers from http://www.mattmahoney.net/dc/.
There is low error tolerance for JPEG and MP3 files. Even if a file can
be perfectly processed by image viewer or audio player software, it
might not be standard compliant. If a file is not 100% standard
compliant, it won't be processed with the appropriate media compression
algorithm. The generic algorithm is used instead, thus generating output
of bigger size than you might expect. You may check the archive file
listing to see which algorithm was used for the file included in an
archive.
If you try to drag and drop too many files in Microsoft Windows at once,
there might be a windowed error message about missing privileges. In
that case you can try it again with less files or consider using the
command prompt. packARC has been tested to work properly with thousands
of files from the command line. This issue also happens with drag and
drop in other applications, so it might not be a limitation of packARC
but a limitation of Windows.
Please note that, although being well-tested, packARC is still in an
early stage and shouldn't be used for backup of important data! You
should at least verify an archive before deleting your copies of the
files inside.
Developer Info / How To Compile
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The packARC and packANY library sources are provided "as is". Except for
these notes and the inline comments you are on your own compiling and
using the source code. Note that due to SFX support and the separate
packANY library, packARC cannot be build by GCC "make" alone.
That being said, compiling packARC is really not all too difficult, and
there also several Makefiles for different OSes and use cases included
as well as a Windows .BAT file - kindly provided by Prof. Dr. Gerhard
Seelmann - to handle the whole process under Microsoft Windows.
If you want full packARC support for your own software project, I
suggest to take a look at the "pja_archiver.cpp" and "pja_archiver.h"
source files first. These two include all the interfaces you will need.
If you are only interested in specific compression functionality (f.e.
packPNM), note that the respective sources can also be compiled
standalone.
History
~~~~~~~
v0.7beta18 (12/17/2014) (public)
- fixed MultiArc friendly file list format
v0.7beta17 (11/21/2014) (public)
- updated packMP3 library to new version (now licensed under LGPL v3)
- packARC is now open source under the terms of the LGPL v3
- added MultiArc friendly file list format
- some minor bugfixes
v0.7beta16 (02/25/2014) (public)
- improved/fixed temp file handling in Linux
- fixed some more possible file name creation bugs
v0.7beta15 (02/24/2014) (public)
- improved Linux compilation script (actually working now)
- added Linux 32bit executable ('packARC.lxe')
- updated all compression libraries to their newest versions
- fixed some Linux specific stuff
- fixed a bug in SFX file name creation
v0.7beta13 (01/13/2014) (public)
- updated packJPG and packPNM libraries
- fixed segmentation fault error
- SFX archives may now have any extension
- improved batch compilation script for MSDOS (thanks to Se)
- added compilation script for Linux (thanks to Se)
v0.7beta11 (12/07/2013) (public)
- updated packJPG, packPNM and packMP3 libraries
- packARC is now completely open source under the GPL v3
v0.7beta (04/06/2013) (public)
- packMP3 algorithm added
- packPNM algorithm added (updated to v1.6)
- packARI algorithm added
- support for folder recursion
- support for archives >2GB
- backwards compatibility preserved
- new icons for archiver, SFX and PJA files
- several bugfixes and improvements
v0.3 (11/11/2011) (public)
- first release alongside packJPG v2.5
- contains support for compressing JPEGs using the packJPG library
- contains support for storing other files
- all basic archiver functionality included
- no support for directory recursion yet
Acknowledgements
~~~~~~~~~~~~~~~~
packJPG, packMP3, packPNM, packARI and packARC are the result of
countless hours of research and development. packJPG is part of my final
year project for HTW Aalen University, packMP3 is part of my master
thesis for Ratisbon University.
Prof. Dr. Gerhard Seelmann from HTW Aalen University introduced me to
the field of data compression when I was still studying in Aalen. He
supported my development of packJPG and various other compression
program with his extensive knowledge in the field of data compression.
Without him, neither of my compression programs would have been
possible.
Prof. Dr. Christian Wolff supervised my master thesis at Ratisbon
University. Thanks go to him for giving me such an interesting topic to
work on and for all the helpful advice during my time working on the
thesis.
Thanks goes to Stephan Busch of SqueezeChart.com fame for spending many,
many hours beta-testing packMP3 and several other of my compression
programs. He's the one to thank for my software running smoothly and not
causing you any trouble.
The official developer blog for packJPG is hosted by encode.ru.
packARC uses UPX compression for smaller executable sizes. UPX is freely
available from http://upx.sourceforge.net/.
Original packJPG logos and icons are designed by Michael Kaufmann.
Contact
~~~~~~~
Matthias Stirner's official homepage:
http://www.matthias.stirner.com
The official home of packARC and packJPG:
http://packjpg.encode.ru
For questions and bug reports:
packjpg (at) matthiasstirner.com
____________________________________
packMP3 by Matthias Stirner, 01/2016