8 -Files included in this release
15 This is the source code of an implementation of ppmc.
16 The data structures used are hash tables instead of a context trie.
18 A file is compressed and decompressed like that:
19 ppmc inputfile compressedfile
20 unppmc compressedfile outputfile
22 I don't recommend to use this for compressing vital information, because it
23 hasn't been fully tested, and moreover, the machine where the decompressor is
24 being run, must have at least as much memory as the encoder had. I recommend
25 to use this compressor only for researching pourposes.
27 For further information read ac_ppmc.html also included in the package, for
28 the latest version visit http://www.ross.net/arturocampos
32 The source code is in the C programming language, and was successfully
33 compiled with Djgpp version 2.02, a project was made which included the
34 following files for the encoder (call this project ppmc):
40 And for the decoder (call this project unppmc)
46 Then you just have to hit F9 and wait. I tried to do makefiles, however there
47 was something wrong and it didn't worked. If someone has any idea about it, or
48 how to compile this source for other compilers, please let me know it, so in
49 the next release I can include makefiles.
52 FILES INCLUDED IN THIS RELEASE
53 In the zip file ac_ppmc_html.zip you should find:
55 readme.txt -> The file you're reading now.
56 ac_ppmc.html -> article which explains ppmc and the data structures used
57 ppmc.c -> This is the main file which includes all the routines used
58 by both the encoder and decoder's model.
59 range.c -> The encoder and decoder's routines.
60 ppmcmain.c -> The main routine for the compressor
61 unppmc.c -> The main routine for the decompressor
62 ppmcdata.c -> Global data structures. (used mainly by ppmc.c)
63 ppmc.h -> Declarations of routines
64 ppmcdata.h -> Declarations of global data and structures
65 range.h -> Declarations of the routines for the range encoder and decoder
66 ppmc.exe -> A compiled version of the compressor
67 unppmc.exe -> A compiled version of the decompressor
69 All this files are the implementation of ppmc order-4 using lazy exclusions.
70 In the /exclusion directory you can find the same files (unless readme) but
71 for ppmc order-4 using full exclusion.
72 I thought there was no need to include the files for ppmc-o3h, because they
73 are nothing else than ppmc with lazy exclusions, using only order-2 (and
74 lowers) but instead of using the hash key for order-2 it uses the one for
75 order-3. (you also have to take care about o3_byte, of course)
77 The executables were compiled with Djgpp 2.95 using only the switch -O6.
81 The standard function to get the
82 time "time()", has a maximum precision of seconds. This is not enough for
83 testing the speed of a compressor. Due to this timing was not included in
85 If you are interested on compiling it with Djgpp, my original version used the
88 struct time ppmc_time, ppmc_time2;
97 // Print bpb and kbyps
99 printf("%s at %f bpb in ",argv[1],((float)filesize(file_output)/(float)size_file_input)*(float)8);
100 _time=((ppmc_time.ti_min)*60)+(ppmc_time.ti_sec)+(((double)ppmc_time.ti_hund)/100);
101 _time2=((ppmc_time2.ti_min)*60)+(ppmc_time2.ti_sec)+(((double)ppmc_time2.ti_hund)/100);
102 if((_time2-_time)!=0)
103 printf("%f kbytes/seconds.", ((float)size_file_input/(float)1024)/(_time2-_time));
107 This code was made by Arturo San Emeterio Campos, you can find his home page
108 at: http://www.ross.net/arturocampos
109 And his email is: arturo-campos@mixmail.com
113 Copyright (c) Arturo San Emeterio Campos 1999. All rights reserved. Permission
114 is granted to make verbatim copies of this files for private use only. There
115 is ABSOLUTELY NO WARRANTY. Use it at your OWN RISK.
118 Arturo San Emeterio Campos, Barcelona 04-Jan-2000