105 lines
5.4 KiB
Plaintext
105 lines
5.4 KiB
Plaintext
////////////////////////////////////////////////////////////////////////////
|
|
// **** WAVPACK **** //
|
|
// Hybrid Lossless Wavefile Compressor //
|
|
// Copyright (c) 1998 - 2013 Conifer Software. //
|
|
// All Rights Reserved. //
|
|
// Distributed under the BSD Software License (see license.txt) //
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
This package contains all the source code required to build the WavPack
|
|
command-line programs and the WavPack library and it has been tested on many
|
|
platforms.
|
|
|
|
On Windows there are solution and project files for Visual Studio 2008 and
|
|
additional sourcecode to build the CoolEdit/Audition plugin and the winamp
|
|
plugin. The CoolEdit/Audition plugin provides a good example for using the
|
|
library to both read and write WavPack files. Both 32-bit and 64-bit
|
|
platforms are provided.
|
|
|
|
To build everything on Linux, type:
|
|
|
|
1. ./configure [--enable-mmx] [--enable-man]
|
|
2. make
|
|
3. make install (optionally, to install into /usr/local/bin)
|
|
|
|
If you are using the code directly from SVN (rather than a distribution)
|
|
then you will need to do a ./autogen.sh before the configure step. For
|
|
processors that support MMX, use the --enable-mmx switch to utilize MMX
|
|
intrinsics to speed up encoding of stereo 24-bit (and higher) audio.
|
|
|
|
Notes:
|
|
|
|
1. There are two documentation files contained in the distribution:
|
|
|
|
doc/library_use.txt contains a detailed description of the API provided
|
|
by WavPack library appropriate for read and writing
|
|
WavPack files
|
|
|
|
doc/file_format.txt contains a description of the WavPack file format,
|
|
including details needed for parsing WavPack blocks
|
|
and interpreting the block header and flags
|
|
|
|
There is also a description of the WavPack algorithms in the forth edition
|
|
of David Salomon's book "Data Compression: The Complete Reference". The
|
|
section on WavPack can be found here:
|
|
|
|
www.wavpack.com/WavPack.pdf
|
|
|
|
2. This code is designed to be easy to port to other platforms. File I/O is
|
|
done with streams and all file functions (except "fopen") are handled in
|
|
a wrapper in the "utils.c" module. The code is endian-independent.
|
|
|
|
To maintain compatibility on various platforms, the following conventions
|
|
are used: A "short" must be 16-bits and an "int" must be 32-bits.
|
|
The "long" type is not used. The "char" type must be 8-bits, signed or
|
|
unsigned.
|
|
|
|
3. For WavPack file decoding, a library interface in "wputils.c" provides all
|
|
the functionality required for both the winamp plugin and the "wvunpack"
|
|
command-line program (including the transparent decoding of "correction"
|
|
files). There is also an alternate entry point that uses reader callbacks
|
|
for all input, although in this case it is the caller's responsibility to
|
|
to open the "correction" file. The header file "include/wavpack.h"
|
|
includes everything needed while hiding all the WavPack internals from the
|
|
application.
|
|
|
|
4. For WavPack file creation, the library interface in "wputils.c" provides
|
|
all the functionality for both the Audition filter and the "wavpack"
|
|
command-line program. No file I/O is performed by the library when creating
|
|
WavPack files. Instead, the user supplies a "write_block" function that
|
|
accepts completed WavPack blocks. It is also possible to append APEv2 tags
|
|
to WavPack files during creation and edit APEv2 tags on existing files
|
|
(although there is no support currently for "binary" fields in the tags).
|
|
|
|
5. The following #define's can be optionally used to eliminate some functionality
|
|
to create smaller binaries. It is important that they must be specified
|
|
the same for the compilation of ALL files:
|
|
|
|
NO_UNPACK no unpacking of audio samples from WavPack files
|
|
(also don't include unpack.c)
|
|
NO_PACK no creating WavPack files from raw audio data
|
|
(also don't include pack.c, extra1.c and extra2.c)
|
|
INFO_ONLY to obtain information from WavPack files, but not audio
|
|
(also don't include pack.c, extra1.c and extra2.c)
|
|
NO_SEEKING to not allow seeking to a specific sample index (unpack only)
|
|
NO_USE_FSTREAMS to not open WavPack files by name using fstreams
|
|
NO_TAGS to not read specified fields from ID3v1 and APEv2 tags and
|
|
create APEv2 tags
|
|
VER4_ONLY to only handle WavPack files from versions 4.0 onward
|
|
WIN32 required for Win32 platform
|
|
|
|
6. There are alternate versions of this library available specifically designed
|
|
for "resource limited" CPUs or hardware encoding and decoding. There is the
|
|
"tiny decoder" library which works with less than 32k of code and less than
|
|
4k of data and has assembly language optimizations for the ARM and Freescale
|
|
ColdFire CPUs. The "tiny encoder" is also designed for embedded use and
|
|
handles the pure lossless, lossy, and hybrid lossless modes. Neither of the
|
|
"tiny" versions use any memory allocation functions nor do they require
|
|
floating-point arithmetic support.
|
|
|
|
For applications requiring very low latency, there is a special version of
|
|
the library that supports a variation on the regular WavPack block format
|
|
to facilitate this.
|
|
|
|
7. Questions or comments should be directed to david@wavpack.com
|