http://www.haskell.org/bz/mm.zip
i glad to present first open-source multimedia compression library
which allows to add MM compresion features to any open-source compressor
or archiver. the library provided under GPL license and includes 3 modules:
mmdet - multimedia detection. this module allows to examine raw chunk
of data and determine number of channels and width of data samples.
returned result may be, for example, "skip 2 bytes at start of file and
encode rest of data as 6 channels of 24-bit values". floating-point values
and values with non-intel byte order are not recognized. you've also
provided with results of simple order-0 and lz+order0 compression which
allows you to decide whether it has meaning to use MM compression at all.
MMDET module relies on comparison of applying order-0 model to original
data and data after MM preprocessing (substraction of successive values).
additionally, recognition by file header is available, although at this
moment only .WAV file headers are supported
tta - this module based on TrueAudio lossless audio codec developed by
Alexander Djourik and Pavel Zhilin (http://www.true-audio.com/) version 2.0
mmdet module (both WAV header method and entropy tests) used to determine
structure of wave file. Like an original TTA codec, 8, 16 and 24 bits integer
and 32-bit floating-point samples are supported. Unfortunately, in some
rare cases 24-bit compression leads to program crash and 32-bit FP compression
decodes "00 00 80 3F" values as "00 00 00 00" so probably high-precision
samples support will be disabled in FreeArc release
mm - simple multimedia data preprocessor which doesn't reduce data size
but only substracts successive values. running grzip or ppmd on its output
allows to provide compression ratio comparable with that of rar, uharc and sbc.
it uses mmdet module to determine structure of data being compressed
All modules includes main() driver which allows you to compile them as
standalone apps. Use .bat files for this purpose, while provided makefile shows
how to compile the library as part of larger application. You should also know
that mmdet standalone program display its suggestion about selection of optimal
MM model based on simple critery - which model gives the smaller output, while
tta/mm modules uses mmdet library with smarter criteria (which is slightly
different in mm and tta) which allows to pretty reliably recognize
high-precision samples (mmdet in this case may suggest, for example, using
4*8bit model instead of 1*32). You can test mm/tta autodetection features even
with WAV files by using -s switch
I thank Christian Maeder and Uwe Herklotz for their help in development of
mmdet module
ps: can you please help me fix language mistakes in this readme text?