home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / utilities / utilsc / computils / !CompUtils / Resources / !Changes next >
Encoding:
Text File  |  1996-04-13  |  12.4 KB  |  251 lines

  1. Note
  2. ====
  3.  
  4. This version has been finished in something a flurry. I'm really supposed to
  5. be doing work on my Third Year final project, but I'd got bored with it. :-)
  6. Anyway, now I have to get back to work but I thought I might as well release
  7. this now because it'll probably be months before I get this much free time
  8. to work on a project.
  9.  
  10. Spelling mistakes, incomprehensible documentation, etc. are all to be
  11. expected. Don't hesitate to get in touch with me by email if you can't
  12. understand me.
  13.  
  14. Anyway, there are now really, really, really simple decompressors for you in
  15. case you're one of these people who just wants to be able to compress all
  16. the samples they're using in a program and have it up and running again 5
  17. minutes later. So now you've no excuse to waste everybody's download time
  18. with your 300K+ samples when they could be 160K or less.
  19.  
  20. Oh yes, and please don't upload this to The Plasma Sphere - that's where I
  21. put the lastest versions. I'm sick of people uploading older versions than
  22. those already on the board, and then have people download them thinking
  23. they're new because they show up in the list of new files.
  24.  
  25.  
  26. Possible future improvements
  27. ============================
  28.  
  29. - Type 6 samples to support *storage* of 16bit samples.
  30. - StrongHelp files for documentation in addition to text files.
  31. - Type 5 to be added, based on Type 4. I've already got something in mind
  32.   but a recent trial only brought compression down from 50% to about 46%
  33.   so it needs a bit more work.
  34. - Sharing of tables in Expand modules to make the universal decoder
  35.   much smaller.
  36. - All compressors to accept 16-bit linear and 8-bit VIDC as input as well
  37.   as 8-bit linear.
  38. - Optional external 12-bit lin->VIDC and VIDC->16-bit lin tables for
  39.   improved quality, plus a short utility of some sort to generate such
  40.   tables. Otherwise the internal 8-bit tables will be used.
  41. - LoadCSamp can optionally produce a voice generator that repeats the sound
  42.   automatically for background noises in games eg. engine noises.
  43.  
  44. Version 1.14
  45. ============
  46.  
  47. - Type 7 added. This is a slight variation of Type 6 with the sign of deltas
  48.   coded in a new way so as to favour positive deltas and unbalance the tree.
  49.   This yields a small increase in compression. By small I mean *small*! For
  50.   example, a 460K sample compressed down to 300K with Type 6. With Type 7
  51.   it compressed to 296K, a saving of only 4K. I had expected more than this,
  52.   but perhaps things will improve if I add the predictor I've been
  53.   considering... Certainly this technique can be applied to Type 5 when I
  54.   get round to doing it.
  55. - Type6 changed to Type6-7. I had to make the new variant into Type 7 to
  56.   maintain compatibility with the old Type 6 decoder. The new feature is
  57.   enabled by setting bit 2 of the flags, otherwise the standard Type 6
  58.   output is generated.
  59.  
  60. Version 1.13
  61. ============
  62.  
  63. - Slight changes to documentation here and there.
  64. - Addition of Type 4 decompressor and compressor. Type 5 is not yet ready.
  65. - Slight internal changes to all compressors and decompressors.
  66. - New reason code can be returned from Compress. Code 7 is used to request
  67.   claiming of the phase 1 workspace. I'm having a bit of a rethink about
  68.   this so it might change in the future, perhaps adding a similar mechanism
  69.   for the global workspace.
  70.  
  71. Version 1.12
  72. ============
  73.  
  74. - Minor bug fix to Compress. If you try to compress a file of zero length
  75.   then only the 7 byte header is actually written. Expand modified to accept
  76.   these files.
  77. - Added optional table to Type6 for use with 8-bit samples to improve
  78.   compression. Worst case it *could* increase the file size by 32 bytes, but
  79.   almost always results in a slight improvement so is well worthwhile.
  80.  
  81. Version 1.11 - beta-test release
  82. ============
  83.  
  84. - New sample type added (type 6). Slightly more efficient than types 0-3,
  85.   requires less code for the decoder and is probably faster too.
  86. - From now on, all code that is modified will adopt the version number of
  87.   the particular release of !CompUtils, rather than having individual
  88.   histories.
  89. - Minor bug fix to Expand types 0-3.
  90. - C/APCS and ObjAsm versions of Compress/Expand/ExpCode. Note that these
  91.   are patched versions of the raw code and therefore not as easy to use and
  92.   feel a little hacky. Let me know if you have any problems with them.
  93. - New management of !CompUtils sources to provide automatic updating in
  94.   future by means of Amu. Means it is now possible to develop new algorithms
  95.   without an admin explosion. Took three days to do just this, which is why
  96.   I've mentioned this, even though you aren't going to be remotely
  97.   interested. :-(
  98. - Expand header offset removed from ExpCode header and replaced with the
  99.   filetype for compressed samples.
  100. - Can now access files through a path variable, eg. CompUtils:Expand.Type6
  101. - Loads of new documentation, including a reorganisation of same.
  102. - Compress and Expand now never return error codes 4 and 7. These are now
  103.   reserved for future use. Therefore, 0-3 are valid return codes, 4-7 are
  104.   soft errors, and 8 and up are hard errors.
  105. - Various minor bug fixes
  106. - Complete rewrite of the universal Expand. Somehow it hadn't been updated
  107.   when it should and still expected a valid source buffer at the first call.
  108.   It now behaves as a normal Expand utility again.
  109. - Type 6 samples now have a logarithm mode which is more efficient than
  110.   previously. However, the linear mode is still recommended.
  111. - There is now a facility within Compress whereby multiple passes of the
  112.   source file may be used in the scanning phase. Compress can now return
  113.   reason code 4 (previously an unused error condition) which is a request
  114.   to move back to the start of the source. Unlike reason code 3 it does
  115.   *not* indicate the end of the phase, and the workspace should be left
  116.   untouched. At present no compressor uses this facility but it is expected
  117.   that Type6 might do in the near future.
  118. - Sample format now returned in Expand's header (but not in ExpCode's)
  119. - Loads of example code added
  120. - A module similar to LoadSample but it loads the sample into a block of RMA
  121.   and installs a voice generator for it. Hey presto, compressed samples can
  122.   be added to any program that wants them just by adding a few *commands to
  123.   the !Run file.
  124.  
  125.  
  126. Version 1.10 - never released (complete rewrite)
  127. ============
  128.  
  129. This is a development version distributed to any users who may be
  130. considering using !CompUtils in their own programs. The aim is to let them
  131. try out the new versions of Expand and Compress before the proper release.
  132. The code may therefore still contain bugs. Please report any problems to me
  133. a.s.a.p. The next release will be a proper release and should contain code
  134. for type 4 samples (16bit ADPCM) and possibly 5 and 6 if I have the time.
  135. The algorithms for these have already been created, but not fully
  136. implemented.
  137.  
  138. General
  139. -------
  140.  
  141. - New directory structure.
  142. - A program can reference CompUtils code by <CompUtils$Dir> during assembly.
  143. - Compression code added.
  144. - Separate code modules for compressing/expanding each sample type, plus
  145.   a code module to decompress *any* known sample type.
  146. - Sprites directory added, containing both low res and high res sprites to
  147.   be used for file icons. Any of these can be added to your own !Sprites
  148.   file.
  149. - Histories started, simply because I keep getting letters from people who
  150.   have ancient versions of this or !Compress and I can't remember what
  151.   changes I've made. From now on all that's changed (and you lot get to see
  152.   what a busy beaver I've been).
  153.   
  154. Expand
  155. ------
  156.  
  157. - Expand code now handles returning to the user in a much improved manner.
  158.   This means that you should *not* pass any source data to Expand until it
  159.   asks for it. In addition, when a reason code of 0 is returned to indicate
  160.   completion, the output buffer will *not* contain any data. Any outstanding
  161.   data would have been passed using reason code 2 (destination buffer full)
  162.   beforehand. All output buffers bar the last one will be completely full.
  163.   The last one may be partially empty, but never completely empty.
  164. - When reason code 0 is returned from Expand, +28 gives the number of bytes
  165.   that were in the last destination buffer returned, unless the buffer was
  166.   completely full, in which case +28 is 0.
  167. - +44, the number of bytes left to be decompressed is now no longer divided
  168.   by 16. After reason code 3 it is identical to +40.
  169. - +40 is the total number of output bytes not the total number of samples.
  170.   This distinction is important now as Expand can output 16bit samples,
  171.   where the number of bytes is twice the number of samples.
  172. - The output data no longer includes the sample period byte used for
  173.   Armadeus files. This can be added manually using +48, which becomes valid
  174.   after reason code 3. The output length calculated also omits this byte.
  175. - No data will be written to the output until after reason code 3 is
  176.   returned. The destination buffer pointer and length values do not need to
  177.   be set up until then.
  178. - The output buffer does not need to be a special length any more - any
  179.   non-zero size will do. Similarly, the source buffer size is unrestricted.
  180.   (Previous versions of Expand insisted the first source buffer passed was
  181.   at least 320 or so bytes long, and that all destination buffers had to be
  182.   a multiple of either 16 or 32 bytes.)
  183. - Bit 2 of the output flags is no longer relevant, so is now used to produce
  184.   16bit linear output (little endian - ie. lower byte first) instead of 8bit
  185.   if linear output is selected. Sample types 0-3 only support 8bit samples
  186.   internally, so Expand0-3 just outputs each byte twice, thus 8bit &FE
  187.   becomes 16bit &FEFE. This is really provided for forward compatability.
  188. - Bit 3 of the output flags is no longer used. Previous this was used to
  189.   downgrade the enhanced sample output flag when batches of samples were
  190.   used (mainly when !Player is playing a sequence file). This is no longer
  191.   supported. Instead, Expand returns information about the sample and how it
  192.   intends to output it on reason code 3, as follows:
  193.   
  194.   bit 31 - if set, sample format stores sample as 16 bit. This specifies
  195.            whether it would be worthwhile trying to output the sample as
  196.            16bit: if it is clear you gain nothing in quality but double the
  197.            output sample size. Of course, it is too late to alter bit 3 now.
  198.            You would have to restart the whole operation to change it.
  199.   bit 30 - if set, sample file is storing the sample as linear signed rather
  200.            than logarithmic. This is pretty much irrelevant.
  201.   bit 29 - if set, Expand intends to use the enhance output format. In this
  202.            case the output length is doubled and every other byte is formed
  203.            by interpolating its two neighbours (to reduce distortion
  204.            caused by the sampling waveform appearing in the output - a
  205.            problem with low sample rates which results in a whining noise).
  206.   bit 28 - if set, Expand is going to store the sample as 16bit rather than
  207.            8bit. It can be used in conjuction with bit 29, which would lead
  208.            to an output sample four times larger than the original Armadeus
  209.            file.
  210.  
  211. - Output can be stored as enhanced regardless of whether or not the sample
  212.   itself was compressed with the enhance flag set. (From now on, the enhance
  213.   flag in the !Compress status window will described as a linear/log
  214.   switch.) However, the output sample must be set to linear output to use
  215.   either this feature or the 16bit output (or both).
  216. - The sample period in the header is unaffected by whether or not the sample
  217.   is to be stored as enhanced, thus with enhanced output it will be twice
  218.   as large as you might expect. Use bit 29 of the output flags if this is a
  219.   problem to you.
  220. - Error codes 4-7 are considered soft errors. If you can determine and
  221.   correct the problem encountered, then you may carry on as if nothing had
  222.   happened. Error code 8 is a fatal error and you *must* abort the operation
  223.   not continue or Expand will crash.
  224.  
  225. ExpCode
  226. -------
  227.  
  228. Largely unchanged. A few small changes internally to let it use the new
  229. version of Expand.
  230.  
  231. - The restrictions that applied to the flags previously now no longer hold.
  232.   The flags are passed to Expand every time you call ExpCode, and the flags
  233.   returned from Expand are passed back to you in ExpCode's header. You can
  234.   therefore use the new status bits (28-31) for information.
  235.  
  236. LoadSample
  237. ----------
  238.  
  239. Unchanged externally, but uses the new version of ExpCode.
  240.  
  241. Compress
  242. --------
  243.  
  244. This did not exist previously, so all features are new!
  245.  
  246. !Player/!Compress
  247. -----------------
  248.  
  249. These have not yet been updated and may crash horribly when used.
  250.  
  251.