Versie 1.5.0 van de Free Lossless Audio Codec, oftewel FLAC, is verschenen. Dit geluidsbestandsformaat slaat data op zonder dat hierbij informatie verloren gaat, zoals dat wel het geval is bij bijvoorbeeld mp3, Ogg Vorbis en Opus. FLAC is beschikbaar voor diverse besturingssystemen en heeft meestal een extern programma nodig, dat als gebruikersinterface dient. In Windows kan dat bijvoorbeeld met ExactAudioCopy en foobar2000. De changelog voor deze uitgave laat de volgende veranderingen en verbeteringen zien:
Generalflac
- Multithreaded encoding is now possible in libFLAC and through the flac command line tool
- The GFDL license file is updated to version 1.3
- The markdown tool documentation is now also converted to HTML, for bundling with systems that do not read manpages (e.g. Windows)
- Decoding of chained Ogg FLAC files is now possible (philippe44, Martijn van Beurden)
- Various fixes (Sam James, Miroslav Lichvar, Cristian Rodríguez, manxorist, kgroeneveld, Lee Carré, Jevin Sweval, braheezy, Wolfgang Stöggl)
- Is is now possible in libFLAC, libFLAC++ and metaflac to write to a new file when changing metadata, instead of needing to overwrite an existing file
libFLAC and libFLAC++
- Testing mode (flac -t) now parses all metadata blocks and warns the user when ID3v1 metadata is detected
- A warning is displayed when frame numbers do not increase correctly throughout a file
- The explain option (-H or --explain) is now removed, use the manpage or html tool documentation instead
- Built-in help and tool documentation are improved (H2Swine)
- When re-encoding a FLAC file from an existing FLAC file, a check is added that the MD5 sums of both files are the same
Build system
- The library interfaces have been extended. See the porting guide (part of the API documentation)
- An error is sent when a frame is missing
- The algorithm of the 'loose mid side' option has changed. Instead of checking every few frames which option is best and keeping that for the next few frames, a fast heuristic is now used. This was necessary to enable multithreading
- Most level 0 metadata interface functions now also work with Ogg FLAC files
- When encoding Ogg FLAC files, the callback now returns a number of samples instead of always 0 (Jesper Larsson, ziplantil)
- When changing metadata, libFLAC now detects when an input file is a symlink, and will refuse to write data to it when an in-place rewrite of the metadata cannot happen
- When encoding using seektable templates, unused seekpoints (with a sample number higher than the total number of samples) are converted to placeholders
Testing/validation
- Fix building on Android with API version < 24 (Steve Lhomme)
- The microbench utility has been removed
- Enable building with emscripten (werner mendizabal)
- Minimum CMake version required (when building with CMake) is now formally 3.12
Documentation
- Improve fuzzing of allocation failures
- Various other fuzzing improvements
- The FLAC format is now specified in RFC 9639
- The foreign metadata storage format used by the flac command line tool is now properly documented