OptimFROG Lossless WAVE Audio Coder, version 4.5alpha [27.10.2002]
Copyright (C) 1996-2002 Florin Ghido, all rights reserved.


Legal facts & Disclaimer
========================

You may copy and distribute the package through BBS, FTP and WEB
sites. Only the unmodified ZIP archive may be distributed or copied.
OptimFROG is free for personal and educational use.

You are prohibited from:

  - charging a fee or requesting donations for the package;
  - distributing or including the package or any part of it in
    another products without prior written permission of the author;
  - using the package or any part of it for commercial purposes;
  - distributing a modified package.

The package may be distributed on CD-ROM in the case where FTP sites
issue CD-ROMs of their collections.

OptimFROG IS DISTRIBUTED "AS IS". NO WARRANTY OF ANY KIND IS
EXPRESSED OR IMPLIED. YOU USE IT AT YOUR OWN RISK. THE AUTHOR WILL
NOT BE LIABLE FOR DATA LOSS, DAMAGES, LOSS OF PROFITS OR ANY OTHER
KIND OF LOSS WHILE USING OR MISUSING THIS SOFTWARE. USE OF THIS
SOFTWARE INDICATES YOU AGREED TO THIS.


What's new
==========

This is an alpha version, so it's intended mainly for testing and
bug reporting. Although it was successfully tested on around 18GB
of audio data and it uses only mathematically proven to be correct
algorithms, I am still looking for potential problems.

OptimFROG 4.5alpha has the following features:

  - new extensible compressed format
  - 64 bits large file support
  - enhanced compression compared to version 4.21
  - new optimize mode, further improving compression
    at no cost for decoding
  - ultra and insane compression modes
  - optimal support for ALL integer PCM wave formats
    up to 32 bits
  - full pipe processing
  - multiple file processing

Not yet implemented (@ mark), but will be ready soon:
  - CRC32 and recovery information
  - MD5 hash for audio data and compressed stream
  - multichannel
  - ID3 tagging
  - Replay Gain
  - raw data
  - IEEE float, uLaw and aLaw data types
  - Winamp, XMMS plug-ins and Linux version

Usage
~~~~~
There are the following commands:

--encode
  encode WAV file(s) to OFR file(s)
--decode
  decode OFR file(s) to WAV file(s)
--info
  print information about OFR file(s)
--verify
  # verify integrity of OFR file(s)
--repair
  # repair corrupted OFR file(s)
--speed
  # compute encoding and decoding speed
  for all modes
--help
  display the help message

Source files can be specified in any place. The output file name
is specified with --output name, it pairs with the last source file
found in the command line or if not specified, it is created by
removing the last source file extension and adding 'ofr'.
You can specify '-' for reading audio files from stdin (when
compressing) and for writing audio files to stdout (when
decompressing). You cannot use it for OFR files.

The default command is encode for wav files and decode for ofr files,
so you can safely skip --encode and --decode commands in most cases.

There are the following options:

--mode {fast|normal*|high|extra|best|ultra|insane}
  specify the compression mode to be used. The default value is
  normal. For normal use I recommend the normal, extra and best
  modes.
--silent
  be as silent as possible, but write error messages to stderr
--verbose
  be verbose, writing also the header information for the audio
  files, useful for debugging formats
--crc
  # compute and store CRC32 information for data blocks. If not
  specified, the CRC32 value stored will be 'NONE'
--recovery
  # add recovery information to file, for repairing header errors
  and sector level errors
--speedup {1x|2x|4x*}
  specify the speedup of the operation, done by approximating some
  computation in the engine. The default recommended value is 4x.
  Do not change this parameter unless you have to.
--seek {fast|normal*|slow}
  specify the amount of seek information that will be available in
  the compressed file. The default recommended value is normal. Do
  not change this parameter unless you have to.
--optimize {none|fast*|normal|high|best}
  specify the optimization level in the engine. In order to achieve
  optimal compression at all sample types, sample rates and audio
  content, the core compression engine has the possibility to find
  the optimal values for its parameters, at the cost of increased
  compression time ONLY.
  The default value is fast. For normal use I recommend fast and
  normal. Do not use high and best unless you have to.
--raw
  # for specifying raw input file(s)
--channelconfig {MONO|STEREO_LR}
  # specify the channel configuration, when using raw mode
--sampletype {UINT8|SINT16|SINT24|SINT32}
  # specify sample type, when using raw mode


Speed
~~~~~
Here is the approximate speed of operation when running on Athlon
XP 1800+, given in multiple of real-time performance. The decoding
times are not influenced by the optimize option used at the time of
encoding. Also, note that the none optimize option is forced by the
encoder to fast for best, ultra and insane modes.

             encode  encode   encode  decode
Optimize       none    fast   normal
             ------  ------   ------  ------
Mode
fast          25.9X   14.4X    10.4X   22.9X
normal        18.1X   10.9X     8.1X   16.9X
high          12.1X    7.8X     6.0X   11.4X
extra          8.2X    5.6X     4.3X    7.9X
best             -     3.6X     2.7X    4.9X
ultra            -     1.5X     1.2X    2.0X
insane           -     0.7X     0.6X    1.0X


Contact
=======

If you have any questions, comments, suggestions or problems
regarding OptimFROG please don't hesitate to contact me at:

  FlorinGhido@yahoo.com

You can always find the newest version of OptimFROG at:

  http://ghido.shelter.ro
  http://ghido.go.to

Copyright (C) 1996-2002 Florin Ghido, all rights reserved.
