Martijn van Beurden
43bc8101ce
Switch default bitreader/bitwriter word size to 64-bit
2023-03-27 22:10:00 +02:00
Martijn van Beurden
00cb41ee03
Add use of x86 BMI2 to bitreader_read_rice_signed_block
2023-03-27 22:10:00 +02:00
Martijn van Beurden
75d596a234
Only calculate mid-side signal when necessary ( #567 )
...
The calculation of the mid-side signal components is moved, so this
is only performed when necessary. This gives a speed up of about
2% for preset 1 on a representative sample
2023-03-27 11:58:49 +02:00
Martijn van Beurden
68f605bd28
Fix mistakes in _compute_best_predictor_limit_residual_intrin_* ( #572 )
...
I made a few mistakes in these functions, adding instead of or-ing
and xor-ing instead of or-ing. The issue linked below seems to
relate to something completely different, but it is in fact a
result of triggering these mistakes further down the line.
Credit: Oss-Fuzz
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=57071
2023-03-20 19:21:23 +01:00
Martijn van Beurden
6633d2f9bf
Set stdin/stdout to binary on Windows for binary input/output
...
Also fix tests on Windows
2023-03-19 22:37:40 +01:00
Martijn van Beurden
c10b059588
Limit hexdump characters to what is allowed in UTF-8
...
CI tests failed on MacOS printf using a non-UTF8 locale, printing
characters for bytes values above 127. To have a consistent
interface, only print characters with a byte value lower than
128.
2023-03-19 22:37:40 +01:00
Martijn van Beurden
6fa51a7acc
Fix error of metaflac --append testing, add troubleshooting
2023-03-19 22:37:40 +01:00
Martijn van Beurden
436a3577dc
Add tests for metaflac --append
2023-03-19 22:37:40 +01:00
Martijn van Beurden
0b3d86ebc3
Check is_last flags on writing a chain
2023-03-19 22:37:40 +01:00
Martijn van Beurden
21bf406fda
Add checks so metaflac --append doesn't create invalid files
...
Checks are added that no streaminfo or seektable blocks can be
added, and no vorbis comment block is one already exists
2023-03-19 22:37:40 +01:00
Martijn van Beurden
8e563a697d
Add --append option to metaflac
2023-03-19 22:37:40 +01:00
Martijn van Beurden
b11677e052
Add API function FLAC__metadata_object_set_raw
...
Add an API function to directly input binary FLAC data to get a
FLAC__StreamMetadata struct. The use mirrors
FLAC__metadata_object_get_raw
2023-03-19 22:37:40 +01:00
Martijn van Beurden
904d027518
Add test for metaflac --data-format=binary-headerless
2023-03-19 22:37:40 +01:00
Martijn van Beurden
b3b9176330
Add data-format option to metaflac, enabling binary output
2023-03-19 22:37:40 +01:00
Martijn van Beurden
b54eabdf0d
Add API function FLAC__metadata_object_get_raw
...
Add an API function to directly output binary FLAC data corresponding
to a certain FLAC__StreamMetadata struct
2023-03-19 22:37:40 +01:00
Martijn van Beurden
eed37c39fa
Enable fuzzer_tool_metaflac to fuzz with stdin
2023-03-19 18:31:16 +01:00
Martijn van Beurden
5b145aff12
Convert asserts into explicit checks
...
An assert checking whether the bit depth of a FLAC file was valid
was triggered by fuzzing. This assert is converted to a explicit
check.
Similarly, an assert was triggered with a file of sample rate 0
when trying to add seekpoints spaced with seconds.
2023-03-19 18:31:16 +01:00
Martijn van Beurden
b5c763d908
Fix double free in iconvert code
2023-03-19 18:31:16 +01:00
Martijn van Beurden
eba4b6f63b
Check whether exceeding max seekpoints on growing seektable
2023-03-19 18:31:16 +01:00
Martijn van Beurden
ae1db7147a
Fix problems reading vorbis comment data being ignored
2023-03-19 18:31:16 +01:00
Martijn van Beurden
ac39a0078d
Improve fuzzer_tool_metaflac
2023-03-19 18:31:16 +01:00
Martijn van Beurden
2568bf69aa
Fix metaflac memory leak
2023-03-19 18:31:16 +01:00
Martijn van Beurden
5f39e88a88
Fix strlen being used on uninitialized data
2023-03-19 18:31:16 +01:00
Martijn van Beurden
cad22e0e3a
Prevent strcmp being used on invalid data
2023-03-19 18:31:16 +01:00
Martijn van Beurden
67d2e1ee4c
Add fuzzer for metaflac command-line tool
2023-03-19 18:31:16 +01:00
Martijn van Beurden
e683286bb4
Add use of stdin to fuzzer_tool_flac, and redirect stdout
2023-03-18 22:55:35 +01:00
Martijn van Beurden
0e1535ccce
Check for invalid blocksize (65536)
2023-03-18 22:55:35 +01:00
Martijn van Beurden
f4220895bb
Fix null dereference
...
Credit: Oss-Fuzz
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=57032
2023-03-18 22:55:35 +01:00
Martijn van Beurden
9593b949c2
Try to unblock fuzzer_tool_flac by resetting global variables
2023-03-18 22:55:35 +01:00
Harish Mahendrakar
9c83e6e434
Add missing *local_fixed_compute_best_predictor_wide member
2023-03-11 15:47:17 +01:00
Martijn van Beurden
383512d551
Try to make tool_flac fuzzer not only fuzz with arguments
2023-03-09 14:31:49 +01:00
Martijn van Beurden
6db29d1050
Check for got_stream_info instead of samplerate being 0
...
Credit: Oss-Fuzz
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56427
2023-03-09 14:31:49 +01:00
Martijn van Beurden
4d6d8b342f
Speed up set_partitioned_rice_
2023-03-08 12:26:44 +01:00
Martijn van Beurden
e2faeb80ec
Check for 0 samples before outputting gnuplot data
...
Credit: Oss-Fuzz
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56339
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56374
2023-03-07 06:49:45 +01:00
Martijn van Beurden
07471c89e7
Swap small and large loop for further speed up in format_input
2023-03-06 11:15:02 +01:00
Martijn van Beurden
724a8aa32e
Further speed up format_input for 24-bit PCM by about 25%
2023-03-06 11:15:02 +01:00
Martijn van Beurden
6884355d87
Speed up format_input for 24-bit PCM by 50%
2023-03-06 11:15:02 +01:00
Martijn van Beurden
2b66d94b34
Speed up format_input for 32-bit PCM
2023-03-06 11:15:02 +01:00
Martijn van Beurden
2b84e8593d
Write SANE extended zero to remove assert
...
Simply ignoring this assert (as production code does) results in
an endless loop.
Credit: Oss-Fuzz
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56323
2023-03-03 16:35:31 +01:00
Martijn van Beurden
fe19b113a9
Fix use of undefined value in flac
...
Credit: Oss-Fuzz
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56327
2023-03-03 16:35:31 +01:00
Martijn van Beurden
3857234f2b
Fix memory leak in flac on foreign metadata object
...
Credit: Oss-Fuzz
Issue: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56305
2023-03-03 16:35:31 +01:00
Martijn van Beurden
4d21da1183
Add FLAC__fixed_compute_best_predictor_limit_residual_intrin_avx2
...
This function seems to execute twice as fast as
FLAC__fixed_compute_best_predictor_limit_residual_intrin_sse42 and
5x as fast as plain C
2023-02-27 17:22:17 +01:00
Martijn van Beurden
d24b45515e
Add fixed_compute_best_predictor_limit_residual_intrin_sse42
...
I couldn't find a fixed_compute_best_predictor_wide_intrin_sse42
that was faster than plain C, but I was able to find a working
variant for this function. Execution time is halved.
2023-02-27 17:22:17 +01:00
Martijn van Beurden
f6fb70442e
Add fixed_compute_best_predictor_wide_intrin_avx2
...
This function executes twice as fast as plain C, test with Intel
Xeon E-2224G
2023-02-27 17:22:17 +01:00
Martijn van Beurden
3173fc064f
Remove fixed_compute_best_predictor_wide_intrin
...
Profiling revealed that this intrinsic is about 50% slower than
plain C on my Intel Xeon E-2224G.
2023-02-27 17:22:17 +01:00
Martijn van Beurden
2db6c1d138
Fix mistake in use of bitwriter_grow_
2023-02-26 15:10:10 +01:00
Martijn van Beurden
9f3894f0d5
Change FLAC__bitwriter_write_rice_signed_block for 64-bit words
2023-02-26 15:10:10 +01:00
Martijn van Beurden
b698ed45f3
Rewrite FLAC__bitwriter_write_rice_signed_block for 32 bit words
...
Using a very different approach: instead of trying to write a full
32-bit bitwriter word, a 64-bit buffer is filled, of which the
first 32 bits are copied to the bitwriter as soon as they are
filled. This way, only very large symbols have to be splitted.
This approach is considerably simpler, and the fast path is taken
much more often.
2023-02-26 15:10:10 +01:00
Zhipeng Xue
a336ea5264
Fix potential resource leak
2023-02-24 21:58:45 +01:00
Martijn van Beurden
9382c5375b
Add checks on re-encoding FLAC
...
While decoding from FLAC checks for changes no. of channels, bps
and sample rate, re-encoding doesn't. A fuzzer found use of
uninitialized memory because of this. A few checks are added,
although the user isn't warned on a samplerate change.
2023-02-23 06:59:11 +01:00