WavPack
From Wikipedia, the free encyclopedia
WavPack | |
Developer: | David Bryant |
---|---|
Latest release: | 4.40 / December 10, 2006 |
OS: | Cross-platform |
Use: | Audio codec Encoder |
License: | BSD license |
Website: | www.wavpack.com |
WavPack is a free, open source lossless audio compression format developed by David Bryant.
Contents |
[edit] Features
WavPack compression (.WV files) can compress (and restore) 8, 16, 24 & 32-bit float audio files in the .WAV file format. It also supports surround sound streams and high frequency sampling rates. Like other lossless compression schemes the data reduction varies with the source, but it is generally between 30% and 70% for typical popular music and somewhat better than that for classical music and other sources with greater dynamic range.
WavPack also incorporates a unique "hybrid" mode that provides all the advantages of lossless compression with an additional bonus: Instead of creating a single file, this mode creates both a relatively small, high-quality lossy file(.wv) that can be used all by itself, and a "correction" file(.wvc) that (when combined with the lossy file) provides full lossless restoration. For some users, this means never having to choose between lossless and lossy compression.
[edit] Summary
- Fast and efficient encoding and decoding
- Open source, released under a BSD-like license
- Multiplatform
- Error robustness
- Streaming support
- Supports multichannel audio and high resolutions
- Hybrid/lossy mode
- Hardware support
- Tagging support (ID3v1, APE tags)
- Supports RIFF chunks
- Replay Gain compatible
- Good software support
- Ability to create self extracting files for Win32 platform
- Supports 32bit float streams
- Supports embedded CUE sheets
- Includes MD5 hashes for quick integrity checking
- Can encode in both symmetrical and asymmetrical (=slower encoding to speed up decoding) modes.
[edit] History
David Bryant started development on WavPack in mid-1998, with the release of version 1.0. This first version compressed and decompressed audio losslessly, nothing else, but by then it already featured one of the best efficiency vs. speed ratio among lossless encoders.
Very soon after the release of version 1.0, Bryant released v. 2.0, which featured lossy encoding (using only quantization of prediction residue for data reduction - no psychoacoustic masking model was applied to the stream).
In 1999, the developer released version 3.0, which featured novelties such as a fast mode (with reduced compression ratio), compression of raw (headerless) PCM audio files, and error detection using a 32-bit cyclic redundancy check.
WavPack development is still going on, and a major feature added in late 3.x versions is the hybrid mode, where the encoder generates a lossy file + a correction file, so that both can be decompressed back to the original PCM stream.
WavPack 4 has been recently released. It included important changes, such as fast seeking, multichannel support, high resolution audio support, etc., turning it into one of the most full featured and modern lossless audio compressors. The latest stable version of the 4.x branch is 4.40, including new features such as improved handling of mono or almost-mono audio data and a redesigned quality system which offers very similar compression with greatly-improved efficiency. [1]
Bryant also suggest a "roadmap" that might hint on future development. [2]
[edit] Support
[edit] Software
- Custom Windows Frontend (by Speek)
- NullSoft Winamp (plugin w/ ReplayGain & Media Library support)
- foobar2000 — Advanced Audio Player (official addon, w/ ReplayGain & Cuesheets support)
- Windows Media Player (with CoreWavPack directshow filter)
- Audacious Media Player — BMP fork w/ native WavPack support
- XMMS (with Kuniklo's plugin) (source)
- LAMIP (official plugin) — Modular audio player for Linux and friends - Homepage
- Adobe Audition (and CoolEdit) (filter w/ 32-bit floats & extra info save support)
- dBpoweramp — Music Converter / Audio Player / CD Writer (official addon)
- Apollo Audio Player (plugin w/ ReplayGain support)
- MusikCube — Free Audio Player (w/ WavPack Plugin)
- Ahead Nero Burning ROM (w/ plugin)
- MrQuestionMan — Audio Identifier
- Burrrn — Burn Audio CDs directly from various formats
- Mp3tag — Universal Tag Editor
- Exact Audio Copy — CD Ripper (w/ wavpack.exe as external compression program)
- VUPlayer — free multiformat audio player/converter
- Xist (beta) — Experimental OS X player with WavPack support (source)
- XMPlay with official plugin — small, fast and powerful free Windows player
- Cog — new player for OS X with WavPack support
- Max — Ripper and encoder for Mac OS X
- Tag — Tagger for Mac OS X
- WavPack compiles for various platforms
- MPXPlay — DOS (MS-DOS, FreeDOS, DR-DOS) based player with WavPack support
- WavPack encoder/decoder compiled for DOS
- The GodFather — Tagger / Music manager
- Wavpack4Wavelab — the first-ever 3rd party file I/O plugin for the commercial/professional audio editor Steinberg WaveLab 5/6
- Easy CD-DA Extractor — Commercial CD ripper, encoder, and converter
- 1by1 and Coolplayer with the Winamp WavPack plugin
- OggdropXPd — Directly encodes from various lossless formats, including WavPack, to lossy opensource Ogg Vorbis format
- Quintessential Player with plugin
- KSP Sound Player by default
- Cockos REAPER Multitrack Recorder and Editor
- FFmpeg recently added WavPack support (this probably means one can hope for forthcoming support in, Mplayer, xine, Amarok etc.)
- WinZip 11.0 beta — uses own implementation of WavPack to compress .wav files in 'optimize for maximum compression' mode.
- VLC media player with playback support since version 0.8.6 (it currently only plays WavPack files that are muxed into a Matroska container)
- CheckWavpackFiles — Windows utility to check integrity of WavPack files in recursive batch operation
[edit] Hardware
- Players that run the open source Rockbox firmware, such as iriver H100 series, H300 series, iPod (Video, Color, Photo, Nano) and more
- Roku PhotoBridge HD with plugin
[edit] Technology
To ensure high-speed operation, WavPack uses a very simple predictor that is implemented entirely in integer math. In its "fast" mode the prediction is simply the arithmetic extrapolation of the previous two samples. For example, if the previous two samples were -10 and 20, then the prediction would be 50. For the default mode a simple adaptive factor is added to weigh the influence of the earlier sample on the prediction. In our example the resulting prediction could then vary between 20 for no influence to 50 for full influence. This weight factor is constantly updated based on the audio data's changing spectral characteristics, which is why it is called "adaptive".
The prediction generated is then subtracted from the actual sample to be encoded to generate the error value. In mono mode this value is sent directly to the coder. However, stereo signals tend to have some correlation between the two channels that can be further exploited. Therefore, two error values are calculated that represent the difference and average of the left and right error values. In the "fast" mode of operation these two new values are simply sent to the coder instead of the left and right values. In the default mode, the difference value is always sent to the coder along with one of the other three values (average, left, or right). An adaptive algorithm continuously determines the most efficient of the three to send based on the changing balance of the channels.
The developer has developed a unique data encoder for WavPack that he believes is better than Rice coding in two different areas. It is impossible to encode more efficiently than Rice coding because it represents the optimal bit coding (sometimes known as the Huffman code) for this type of data. WavPack's encoder is slightly less efficient than this, but only by about 0.15 bits/sample (or less than 1% for 16-bit data). The first advantage of WavPack's coder is that it does not require the data to be buffered ahead of encoding, instead it converts each sample directly to bitcodes. This is more computationally efficient and it is better in some applications where coding delay is critical. The second advantage is that it is easily adaptable to lossy encoding because all significant bits (except the implied "one" MSB) are transmitted directly. In this way it is possible to only transmit, for example, the 3 most significant bits (with sign) of each sample. In fact, it is possible to transmit only the sign and implied MSB for each sample with an average of only 3.65 bits/sample.
This coding scheme is used to implement the "lossy" mode of WavPack. In the "fast" mode the output of the non-adaptive decorrelator is simply rounded to the nearest codable value for the specified number of bits. In the default mode the adaptive decorrelator is used (which reduces the average noise about 1 dB) and also both the current and the next sample are considered in choosing the better of the two available codes (which reduces noise another 1 dB).
The developer has decided to not use any floating-point arithmetic in WavPack's data path because he believes that integer operations are less susceptible to subtle chip to chip variations that could corrupt the lossless nature of the compression, the Pentium floating point bug being a blatant example of this. It is possible that a lossless compressor that used floating-point math could generate different output when running on that faulty Pentium. Even disregarding actual bugs, floating-point math is complicated enough that there could be subtle differences between "correct" implementations that could cause trouble for this type of application. To further ensure confidence in the integrity of WavPack's compression, the encoder includes a 32-bit error detection code to the generated streams.
WavPack source code is very portable. It has been compiled on several Unix and Unix-like operating systems (Linux, Mac OS X, Solaris, FreeBSD, OpenBSD, NetBSD, Compaq Tru64, HP-UX...) as well as Windows, DOS, Palm OS, and OpenVMS. It works on many architectures, including x86, ARM, PowerPC, AMD64, IA-64, SPARC, DEC Alpha, PA-RISC, MIPS and Motorola 68k.
[edit] See also
[edit] External links
- Official website
- WavPack forum at Hydrogenaudio Forums
- Historical versions at ReallyRareWares
- A comparison of several Lossless Audio encoders at Hydrogenaudio Wiki.
- The Lossless Audio Blog Lossless Audio News & Information Site.
|
||||
---|---|---|---|---|
Video compression formats |
|
|||
Audio compression formats |
|
|||
Image compression formats |
|
|||
Media container formats |
|