summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Release FLAC 1.4.11.4.1Martijn van Beurden2022-09-221-1/+1
|
* Update API and tool docsMartijn van Beurden2022-09-201-6/+6
|
* Define WINAPI_FAMILY stuff on platforms that do not provide themMartijn van Beurden2022-09-202-0/+9
|
* don't call GetFileInformationByHandle on Universal Windows Platform buildsSteve Lhomme2022-09-201-0/+8
| | | | | | | | It cannot be called: https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-getfileinformationbyhandle We can get the same information with GetFileInformationByHandleEx(FileIdInfo): https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getfileinformationbyhandleex
* don't call CreateFileW on Universal Windows Platform buildsSteve Lhomme2022-09-201-0/+11
| | | | | | | | It cannot be called: https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilew There is CreateFile2 which is very similar: https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfile2
* disable console using on Universal Windows Platform buildsSteve Lhomme2022-09-201-0/+9
| | | | | | | | | | There's no support for the console. These functions cannot be used * GetStdHandle(): https://learn.microsoft.com/en-us/windows/console/getstdhandle * GetConsoleScreenBufferInfo(): https://learn.microsoft.com/en-us/windows/console/getconsolescreenbufferinfo * WriteConsoleW(): https://learn.microsoft.com/en-us/windows/console/writeconsole Instead send logs to the debug output
* Remove added empty lineMartijn van Beurden2022-09-201-1/+0
|
* stream_decoder.c: move sys/stat.h include after sys/types.h.Ozkan Sezer2022-09-201-1/+2
|
* getopt: avoid K&R function definitionsJohannes Kauffmann2022-09-201-20/+11
| | | | | | | | This avoids warnings on clang-16 such as: getopt/getopt.c:315:1: warning: a function definition without a prototype is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype] exchange (argv) ^
* [CMake] Prepend compiler flags, fix Clang compiler warningsMartijn van Beurden2022-09-172-1/+4
| | | | | | | | | Because of issue https://github.com/xiph/flac/issues/437 compiler flags are prepended instead of appended, so the user can override them without altering the CMakeLists.txt. Also, Clang doesn't support per-function optimize options, so in CMake the fma file gets that option per-file. This is not supported by automake.
* Warn user when encoding to stdout that checksum isn't written (#445)Martijn van Beurden2022-09-161-0/+7
| | | Fixes https://github.com/xiph/flac/issues/428
* Fix endianness display in endswap test (cosmetic issue)Martijn van Beurden2022-09-151-1/+1
| | | | | | As CPU_IS_LITTLE_ENDIAN is used nowehere except in test_libflac, switch to CPU_IS_BIG_ENDIAN instead, which is actually used in the code at several places. CMake didn't set the former but does set the latter.
* Remove assert that is no longer trueMartijn van Beurden2022-09-141-2/+0
| | | | This was never strictly true, but the assert fired in normal use since commit a2c8ae5
* Fix wrong format string specifier.Jörn Heusipp2022-09-141-1/+1
| | | | Fixes https://github.com/xiph/flac/issues/433
* Release FLAC 1.4.01.4.0Martijn van Beurden2022-09-091-1/+1
|
* Fix make check on MinGW when building shared libraryMartijn van Beurden2022-09-072-3/+3
|
* Protect window functions from NaNMartijn van Beurden2022-08-231-3/+21
| | | | Credit: oss-fuzz Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=47747
* Fix integer overflow in seeking codeMartijn van Beurden2022-08-201-3/+4
| | | | This issue popped up in ci-fuzz, unrelated to the PR itself.
* Fix some OOM metadata bugs, disable OOM checking in metadata fuzzingMartijn van Beurden2022-08-202-3/+7
| | | | | | For now OOM emulation in fuzzer_metadata is disabled, as I really want to get as much merged as soon as possible. Need to get back to this at some point
* Don't overwrite bad state with seek errorMartijn van Beurden2022-08-201-0/+5
| | | | | In case memory allocation fails or decoding is aborted during seeking, do not overwrite these states with a seek error
* Throw memory allocation error when side subframe allocation failsMartijn van Beurden2022-08-201-1/+6
|
* Move entropy partitioning result allocation so it can be checkedMartijn van Beurden2022-08-202-3/+22
| | | | | | | | For some reason realloc failing to allocate space to store the results of entropy partitioning was not handled at all. The realloc is moved to a spot where it is possible to set encoder state. This also moves it from deep within a loop to being called only occasionally
* Do not memset when allocation failsMartijn van Beurden2022-08-201-16/+8
| | | | Also remove some nearby unused code
* Leave metadata items untouched if resize function failsMartijn van Beurden2022-08-201-11/+25
|
* Add and use _nofree variants of safe_realloc functionsMartijn van Beurden2022-08-206-7/+7
| | | | | | | | | | | | | | | | | Parts of the code use realloc like x = safe_realloc(x, somesize); when this is the case, the safe_realloc variant used must free the old memory block in case it fails, otherwise it will leak. However, there are also instances in the code where handling is different: if (0 == (x = safe_realloc(y, somesize))) return false in this case, y should not be freed, as y is not set to NULL we could encounter double frees. Here the safe_realloc_nofree functions are used.
* Introduce subdivide_tukey apodizationMartijn van Beurden2022-08-195-24/+142
| | | | | | | | | | | | | | | Subdivide_tukey is intended to replace partial_tukey and punchout_tukey. It works in rougly the same way, but uses a more efficient algorithm, recyling more data. subdivide_tukey has 2 arguments, of which 1 is optional. The first states the maximum number of parts the signal has to be split up in, the second is the tukey parameter, divided by the max num of parts. subdivide_tukey(3) analyses audio with an unsplit block, with the block split in 2 and split in 3. Here the default p of 0.5 applies to the smallest parts, so the unsplit block effectively has a p of 0.5/3. subdivide_tukey(3/2e-1) does the same but with p of 0.2.
* Add configure option to not build programsMartijn van Beurden2022-08-131-2/+5
|
* Remove really old --explain text and reflow to fit 80 charsMartijn van Beurden2022-08-101-25/+21
| | | | | There was some help text in `flac --explain` which hasn't been correct for about 20 years already. This is removed, the rest of the text is reflowed to fit 80 chars standard terminal width
* Fix HAVE_GETAUXVAL check for FreeBSD (#410)pkubaj2022-08-071-1/+1
| | | FreeBSD doesn't have getauxval().
* Fix and warning for MSVC with Windows XP toolset (#399)Martijn van Beurden2022-08-061-1/+7
| | | | A warning and a small workaround is added for building libFLAC on MSVC with a specific Windows XP targeting toolset.
* [CMake] Don't search for libiconv and libintl on WindowsMartijn van Beurden2022-08-011-1/+3
| | | | | The functions these libs provide don't seem to be used on Windows anyway. This fixes https://github.com/xiph/flac/issues/249
* Fix decoding of 33 bps constant subframeMartijn van Beurden2022-07-311-3/+10
|
* Also add trailing nul to empty vorbis comment entriesMartijn van Beurden2022-07-283-19/+35
| | | | | | | This might fix https://github.com/xiph/flac/issues/48 I cannot check as I don't have a file to test with. Besides returning an empty string upon reading, also allocate empty strings when growing vorbiscomments
* Bulk update copyright dates to 2022Martijn van Beurden2022-07-26174-177/+177
|
* Add FMA intrinsics for autocorrelation calculationMartijn van Beurden2022-07-257-9/+130
| | | See https://github.com/xiph/flac/pull/387 for details
* Fix rolled up version of lpc_restore_signal_wideMartijn van Beurden2022-07-171-1/+1
| | | | This fixes https://github.com/xiph/flac/issues/393
* Re-add check for block alignMartijn van Beurden2022-07-161-20/+4
| | | | | | | | In 2003, in commit 94f81b0, a check was added for the block align field in WAVE. If it contradicts other parts of the header, an error was raised. This was (probably erroneously) made inactive with #if 0 in commit 13c63e4. This commit reactivates the check and removes the rest of the inactivated code.
* Revert "Enable encoder to use INT32_MIN as residual value" (#389)Martijn van Beurden2022-07-137-112/+73
| | | | | | | This reverts commit 7e0a0e572305e9004a6fa9bba3dd6be936553b03, following the change to the FLAC format proposed here: https://github.com/ietf-wg-cellar/flac-specification/pull/148 It turns out supporting use of INT32_MIN is quite a hassle.
* Only search for backslash in filename on WindowsMartijn van Beurden2022-07-131-0/+2
|
* Check first metadata block is streaminfo in level 1 metadata iteratorMartijn van Beurden2022-07-071-1/+9
| | | | | | | | | In simple_iterator_prime_input_ there was no check whether the first metadata block is a streaminfo block. As the rest of the functions operate under the assumption the first block is a streaminfo block, for example to prevent the functions from deleting the last block and being left with an iterator pointing nowhere, this check is added.
* Check chain length Ogg FLAC fileMartijn van Beurden2022-07-071-0/+6
| | | | | | | When a metadata chain was read from an Ogg FLAC file containing no metadata (but otherwise valid), an empty chain could be returned, leading to null derefencing on trying to manipulate it. This commit adds a check for the chain length
* Fix dereferencing of null pointer in metadata_iterators.cMartijn van Beurden2022-07-071-20/+23
|
* Add limits to metadata readingMartijn van Beurden2022-07-071-0/+8
| | | | | | In commit 0077d3b checks were added for metadata reading in the stream decoder. However, the metadata interface suffers from the same problems. Similar to the mentioned commit, checks are added.
* Enable encoder to use INT32_MIN as residual valueMartijn van Beurden2022-07-017-73/+112
| | | | | | As abs(INT32_MIN) is undefined, it took some extra work to enable the encoder to do this. While expected gains are zero, this is done to ensure full spec coverage in this regard
* Small fixes needed for 32-bit capability (#379)Martijn van Beurden2022-07-012-12/+12
| | | | | * Change replaygain analysis so it is able to handle 32-bit PCM * Increase FLAC__REFERENCE_CODEC_MAX_BITS_PER_SAMPLE to 32 * Fix switch-case fallthrough
* Add INT64_MAX limit to seekpointsMartijn van Beurden2022-06-291-2/+5
| | | | | | | | | | FLAC seekpoints are coded in unsigned 64-bit ints, but the code handling them uses signed 64-bit ints. Since users are unlikely to run into this limit anyway, do not use seekpoints larger than INT64_MAX Credit: Oss-Fuzz Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=48112
* Change eof handing in seeking codeMartijn van Beurden2022-06-291-14/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 3fc5ba4 replaced a seeking error with specific handling. This handling consisted of lowering the upper seek bound. However, this handling was both slow and wrong. Because it is slow it causes fuzzing timeouts. It was wrong in that if there was another valid frame in the boguss frame being read, it would no longer be reachable. This commit replaces the handling with another approach: instead of lowering the upper bound, the lower bound is raised. With this, the calculation of pos for the next seek is changed and the seeking code hopefully ends up somewhere not decoding the bogus frame. If in decoding the frame at lower bound eof is still reached, a seek error is thrown. This is reasonable, as lower bound should be after the end of the last frame (not somewhere halfway a frame) and if a corrupt frame is encountered, proper seeking cannot be reasonably expected. It could be argued that it is still possible to try and lower the upper bound by trying to decode a frame by moving one byte backward at a time, looking for a frame, but this will probably cause fuzzer timeouts and as said, proper seeking in such a stream cannot be reaonably expected. Credit: Oss-Fuzz Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=48077
* Improve foreign metadata handlingMartijn van Beurden2022-06-287-36/+119
| | | | | | Add options --keep-foreign-metadata-if-present and improve error messages when on decoding the wrong type of foreign metadata is found.
* Always take compression level as first compression settingMartijn van Beurden2022-06-271-3/+10
| | | | | | | Without this patch, the order of the arguments matter, with it it does not: specific compression settings now always override the more generic compression levels. This fixes issue https://github.com/xiph/flac/issues/20
* Increase max bitreader size to max metadata block sizeMartijn van Beurden2022-06-261-3/+5
| | | | This fixes https://github.com/xiph/flac/issues/370