Lossless Compression

From JRiverWiki
Revision as of 10:09, 16 September 2010 by Matt (talk | contribs)

Jump to: navigation, search

Overview

Lossless audio compression is a way to store a WAV file more efficiently without losing any audio information. Popular open formats include Monkey's Audio (APE), FLAC, and WavPack. There are also proprietary formats from Apple and Microsoft.

Audio Quality

The simple fact is that lossless audio files sound identical to a corresponding WAV file.  They deliver bit-for-bit identical data to the audio engine / sound card.

Decoded PCM audio delivery (from an APE, FLAC, WAV, or any other format) happens early in the J. River audio chain, many seconds before the data is heard and completely detached from playback threads.  If the same bits are delivered on the input side (and they are, as this is the whole point of lossless compression) then it doesn't matter the source format.

Advantages Over WAV

Error detection

APE and FLAC use strong error detection to ensure that the data delivered at output time exactly matches the original data presented at encode time.

This way, if data corruption happens (more common than you might expect), you will know. With WAV, corruption will not be detected.

Tagging

Lossless formats have standard tag formats, making preserving and sharing metadata like the artist, album, cover art, etc. straight-forward.

Space savings

Lossless audio compression generally uses about half the disk space of a WAV file.

Controversy

Lossless compression is impossible

It is confusing intuitively that you could save space without losing something. However, imagine a ZIP file with a spreadsheet in it. The spreadsheet shrinks when placed in the ZIP, but can be perfectly restored.

Think of lossless compression as just using a more efficient way to store the same thing. There's a more technical explanation here: http://www.monkeysaudio.com/theory.html

It changes timings or causes jitter

As mentioned above, the J. River audio engine does file decoding (WAV, APE, FLAC, or any other format) detached from playback. The audio you hear was decoded and delivered many seconds earlier in threads not attached to actual playback.

While decoding a lossless format could cause a CPU usage difference (normally of less than 1%), it also changes the amount of file I/O required by about 50%. There's no compelling argument that either of these changes matter, or that one would be better than the other.