Subject: CVS commit: pkgsrc/audio/flac
From: Thomas Klausner
Date: 2022-09-11 14:29:54
Message id: 20220911122954.76849FA90@cvs.NetBSD.org

Log Message:
flac: update to 1.4.0.

## FLAC 1.4.0

As there have been changes to the library interfaces, the libFLAC version number \ 
is incremented to 12, the libFLAC++ version number is incremented to 10. As some \ 
changes were breaking, the version age numbers (see [libtool \ 
versioning](https://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning)) \ 
have been reset to 0. For more details on the changes to the API, see the \ 
[porting \ 
guide](https://xiph.org/flac/api/group__porting__1__3__4__to__1__4__0.html).

The XMMS plugin and 'common' plugin code (used only by the XMMS plugin) are \ 
deprecated, they will be removed in a future release.

* General:
    * It is now possible to limit the minimum bitrate of a FLAC file generated \ 
by libFLAC and with the `flac` tool to 1 bit/sample. This function can be used \ 
to aid live streaming, for example for internet radio
    * Encoding files with sample rates up to 1'048'575Hz is now possible. (Con \ 
Kolivas)
    * Compression of preset -3 through -8 was slightly improved at the cost of a \ 
small decrease in encoding speed by increasing the precision with which \ 
autocorrelation was calculated (Martijn van Beurden)
    * Encoding speed of preset -0, -1 and -2 was slightly improved
    * Compression of presets -1 and -4 was slighly improved on certain material \ 
by changing the adaptive mid-side heuristics
    * Speedups specifically targeting 64-bit ARMv8 devices using NEON were \ 
integrated (Ronen Gvili, Martijn van Beurden)
    * Speedups for x86_64 CPUs having the FMA instruction set extention are added
    * Encoding and decoding of 32-bit PCM is now possible
* (Ogg) FLAC format:
    * The FLAC format document is being rewritten by the IETF CELLAR working \ 
group. The latest draft can be found on \ 
[https://datatracker.ietf.org/doc/draft-ietf-cellar-flac/](https://datatracker.ietf.org/doc/draft-ietf-cellar-flac/)
    * The FLAC format document specifies no bounds for the residual. In other to \ 
match current decoder implementations, it is proposed to bound the residual to \ 
the range provided by a 32-bit int signed two's complement. This limit must be \ 
checked by FLAC encoders as to keep FLAC decoders free from the complexity of \ 
being to decode a residual exceeding a 32-bit int.
    * There is now a set of files available to test whether a FLAC decoder \ 
implements the format correctly. This FLAC decoder testbench can be found at \ 
[https://github.com/ietf-wg-cellar/flac-test-files](https://github.com/ietf-wg-cellar/flac-test-files). \ 
Also, results of testing hard- and software can be found here at \ 
[https://wiki.hydrogenaud.io/index.php?title=FLAC_decoder_testbench](https://wiki.hydrogenaud.io/index.php?title=FLAC_decoder_testbench).
* flac:
    * The option --limit-min-bitrate was added to aid streaming, see [github \ 
#264](https://github.com/xiph/flac/pull/264)
    * The option --keep-foreign-metadata-if-present is added. This option works \ 
the same as --keep-foreign-metadata, but does return a warning instead of an \ 
error if no foreign metadata was found to store or restore
    * The warning returned by the foreign metadata handling is now clearer in \ 
case a user tries to restore foreign metadata of the wrong type, for example \ 
decoding a FLAC file containing AIFF foreign metadata to a WAV file
    * A problem when using the analyse function causing the first frame to have \ 
a wrong size and offset was fixed
    * Fix bug where channel mask of a file is unintentionally reused when \ 
several files are processed with one command
    * The order of compression-related commands is no longer important, i.e. \ 
-8ep gives the same result as -ep8. Previously, a compression level (like -8) \ 
would override a more specific setting (like -e or -p). This is no longer the \ 
case
    * flac now checks the block-align property of WAV files to ensure \ 
non-standard WAV files (for which flac has no handling) are not mangled
* metaflac:
    * (none)
* build system:
    * MSVC and Makefile.lite build system files have been removed. Building with \ 
MSVC (Visual Studio) can be done by using CMake
    * Various CMake improvements, especially for creating MSVC build files \ 
(Martijn van Beurden, martinRenou, CookiePLMonster, David Callu, Tyler Dunn, \ 
Cameron Cawley)
    * Various fixes for MinGW (Martijn van Beurden, Cameron Cawley)
    * Removed obsolete autotools macro's to silence warnings
    * Fixes for FreeBSD PowerPC (pkubaj)
    * Fixed some compiler warnings (Martijn van Beurden, Tyler Dunn)
    * Fix building with uclibc (Fabrice Fontaine)
* testing/validation:
    * Addition of new encoder fuzzer, adding fuzzing for 8, 24 and 32-bit inputs
    * Addition of new decoder fuzzer, adding coverage of seeking code
    * Addition of metadata fuzzer, adding coverage of metadata APIs
    * Various improvements to fuzzers to improve code coverage, fuzzing speed \ 
and stability
    * Many changes to test suite to improve cross-platform compatibility (Rosen \ 
Penev)
    * Windows CI now also builds the whole test suite
    * Clang-format file added (Rosen Penev)
    * Add warning on using v141_xp platform toolset with /MT (Martijn van \ 
Beurden, Paul Sanders)
* libraries:
    * Various seeking fixes (Martijn van Beurden, Robert Kausch)
    * Various bugs fixed found by fuzzing
    * On decoding, it is now checked whether residuals can be contained by a \ 
32-bit int, preventing integer overflow
    * Add check that samples supplied to libFLAC actually fall within the bps set
    * Add checks when parsing metadata blocks to not allocate excessive amounts \ 
of memory and not overread
    * Undocumented Windows-only utf8 functions are no longer exported to the DLL \ 
interface
    * Removed all assembler and intrinsics code from the decoder to improve \ 
fuzzing, as they provided only a small speed benefit
    * The bitwriter buffer is limited in size to 2^24 bytes, so it cannot write \ 
excessively large files. This is a backup in case another bug in this area \ 
creeps (back) in.
    * The metadata iterations should now never return a vorbiscomment entry with \ 
NULL as an entry, now always at least an empty string is returned
* documentation:
    * Removed html documentation and generate man pages from markdown
* Interface changes:
    * libFLAC:
        * Addition of FLAC__stream_encoder_set_limit_min_bitrate() and \ 
FLAC__stream_encoder_get_limit_min_bitrate(), see [github \ 
#264](https://github.com/xiph/flac/pull/264)
        * get_client_data_from_decoder is renamed \ 
FLAC__get_decoder_client_data(), see [github \ 
#124](https://github.com/xiph/flac/pull/124)
        * All API functions taking a filename as an argument now take UTF-8 \ 
filenames on Windows, and no longer accept filenames using the current codepage
        * FLAC__Frame struct has changed: warmup samples are now stored in \ 
FLAC__int64 instead of FLAC__int32 types, and verbatim samples can now be stored \ 
in either FLAC__int32 or FLAC__int64 depending on whether samples fix the former \ 
or latter
        * The FLAC__StreamMetadata struct now has a tag, so it can be forward \ 
declared
    * libFLAC++:
        * Addition of ::set_limit_min_bitrate() and ::get_limit_min_bitrate(), \ 
see [github #264](https://github.com/xiph/flac/pull/264)
        * All API functions taking a filename as an argument now take UTF-8 \ 
filenames on Windows, and no longer accept filenames using the current codepage
        * The ::FLAC__Frame struct has changed, see the libFLAC interface change.

Files:
RevisionActionfile
1.58modifypkgsrc/audio/flac/Makefile
1.16modifypkgsrc/audio/flac/PLIST
1.14modifypkgsrc/audio/flac/buildlink3.mk
1.33modifypkgsrc/audio/flac/distinfo
1.1removepkgsrc/audio/flac/patches/patch-configure.ac
1.2removepkgsrc/audio/flac/patches/patch-src_libFLAC_cpu.c