A compression/decompression program that is specially designed to store and play back music files. FLAC can reduce the size of a typical audio file by up to 50%. It supports streaming audio for playback of very large files, and also supports 24-bit audio.
The key word in FLAC is “lossless,” which means that audio is encoded in FLAC without losing any of the frequency response, dynamic range or timbre of the original signal. This is in contrast to common audio compression schemes such as MP3 or AAC, which discard, or “lose,” portions of the digital audio information in order to create the smallest possible file. FLAC is often chosen over several other lossless codecs, largely because it is offered as open source code, licensed without charge to any software or hardware developer that wishes to employ it. FLAC also supports Windows and Mac operating systems as well as others: UNIX, Linux, BeOS, OS/2 and Amiga.
A FLAC encoder has the following stages:
Blocking: The input is broken up into many contiguous blocks. In FLAC, a block is one or more audio samples that span several channels, and may vary in size. The optimal size of the block is usually affected by many factors, including the sample rate, spectral characteristics over time, etc. Though FLAC allows the block size to vary within a stream, the reference encoder uses a fixed block size.
Interchannel Decorrelation: This step combines similar audio data found on multiple audio channels. In stereo audio streams, the encoder will create mid and side signals based on the average and difference (respectively) of the left and right channels. The encoder will then pass the best form of the signal to the next stage.
Prediction: The encoder tries to find a mathematical description (usually an approximate one) of each block in the signal. This description is typically much smaller than the raw signal itself. Since both the encoder and decoder know the methods of prediction, only the parameters of the predictor need be included in the compressed stream. FLAC currently uses four different predictor types, depending on the nature of the signal currently being encoded (from silence to 6 channels of surround audio at full dynamic range) and allows these to change from block to block, or even within a block, as needed.
Residual coding: If the predictor does not describe the signal exactly, the difference between the original signal and the predicted signal (called the error or residual signal) is encoded. If the predictor is effective, the residual signal will require fewer bits per sample than the original signal.
FLAC was designed to be “decoder friendly;” in other words, it plays back (decodes) files almost instantly, while encoding a file takes a little more time. Still, the encoding time is faster than the real time playback of the original file.
A number of software music players and hardware devices support FLAC. This list constantly grows and changes, so your best source of information about FLAC-compatible hardware and software is the developer’s website: http://flac.sourceforge.net/index.html. Musical groups such as Metallica, Phish and Primus offer FLAC versions of their live performances and album material on their official websites.