]> git.llucax.com Git - z.facultad/75.06/jacu.git/blob - examples/ppmc/README
Algunos bugfixes que daba problema con el signo y conversion de char a unsigned...
[z.facultad/75.06/jacu.git] / examples / ppmc / README
1
2                                 PPMC
3
4
5 TABLE OF CONTENTS
6 -Description
7 -Compiling
8 -Files included in this release
9 -Timing
10 -Author
11 -Disclaimer
12
13
14 DESCRIPTION
15 This is the source code of an implementation of ppmc.
16 The data structures used are hash tables instead of a context trie.
17
18 A file is compressed and decompressed like that:
19 ppmc inputfile compressedfile
20 unppmc compressedfile outputfile
21
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.
26
27 For further information read ac_ppmc.html also included in the package, for
28 the latest version visit http://www.ross.net/arturocampos
29
30
31 COMPILING
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):
35 ppmc.c
36 ppmcdata.c
37 ppmcmain.c
38 range.c
39
40 And for the decoder (call this project unppmc)
41 ppmc.c
42 ppmcdata.c
43 range.c
44 unppmc.c
45
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.
50
51
52 FILES INCLUDED IN THIS RELEASE
53 In the zip file ac_ppmc_html.zip you should find:
54
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 
68
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)
76
77 The executables were compiled with Djgpp 2.95 using only the switch -O6.
78
79
80 TIMING
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
84 this release.
85 If you are interested on compiling it with Djgpp, my original version used the
86 following code:
87
88  struct time ppmc_time, ppmc_time2;
89  double _time2, _time;
90
91  // Get current time
92  gettime(&ppmc_time);
93
94  //Compress file
95
96
97  // Print bpb and kbyps
98  gettime(&ppmc_time2);
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));
104
105
106 AUTHOR
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
110
111
112 DISCLAIMER
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.
116
117
118                               Arturo San Emeterio Campos, Barcelona 04-Jan-2000