CUETools FLAC encoders comparison

From CUETools
Jump to navigation Jump to search
Cuetools-flacencoders.png

Builtin FLAC encoding libraries

CUETools has three builtin FLAC encoders, and supports additional external encoders.

libFLAC

libFLAC is a reference FLAC 1.3.4 implementation from xiph.org.

Its main advantage is that it's a standard implementation that almost everybody else uses, so it's less likely to cause any problems, but it's less efficient than others.

cuetools (former libFlake)

libFlake is written specially for CUETools and is loosely based on Justin Ruggles' flake encoder.

It's faster than libFLAC and can achieve slightly better compression ratios.

FLACCL (former FlaCuda)

FLACCL uses hardware acceleration to achieve faster compression. It requires an OpenCL-capable GPU.

Compression levels

libFLAC has compression levels 0—8, where 0 is the fastest and 8 provides the best compression ratio. The levels are actually aliases for certain combinations of technical command-line options.

libFlake and FlaCuda are tuned differently, so libFlake -5 might in fact compress better than libFLAC -8. They also support additional compression levels 9–11, however their use is not recommended, because those levels produce "non-subset" files which might not be supported by certain decoders.

FLAC specifies a subset of itself as the Subset format. The purpose of this is to ensure that any streams encoded according to the Subset are truly "streamable", meaning that a decoder that cannot seek within the stream can still pick up in the middle of the stream and start decoding. It also makes hardware decoder implementations more practical by limiting the encoding parameters such that decoder buffer sizes and other resource requirements can be easily determined. flac generates Subset streams by default unless the "--lax" command-line option is used.