Cppcheck was incorrectly warning that `doubletmp` was being used
un-initialized. This was due to the fact that it was being used
and initialized in a pre-processor macro. Chaning the macro to
an inline function stops cppcheck from raising a warning.
When decoding to WAV, the legacy wFormatTag of WAVE_FORMAT_PCM should
only be used if the bitwidth is 8 or 16. For all other bitwidths,
use WAVEFORMATEXTENSIBLE.
Two of the test programs/scripts also needed updating.
After the removal of the OS SSE detection stuff ia32_cpu_info()
and x86_64_cpu_info() became very similar. Merging them makes
sense.
Patch-from: lvqcl <lvqcl.mail@gmail.com>
Removes FLAC__lpc_restore_signal_16_intrin_sse2() which was faster
than than C code, but not faster than MMX-accelerated ASM functions.
It's also slower than the new SSE4.1 functions that were added by
the previous patch.
Patch-from: lvqcl <lvqcl.mail@gmail.com>
This patch removes FLAC__lpc_restore_signal_16_intrin_sse2().
It's faster than C code, but not faster than MMX-accelerated
ASM functions. It's also slower than the new SSE4.1 functions
that were added by the previous patch.
So this function wasn't very useful before, and now it's
even less useful. I don't see a reason to keep it.
Patch-from: lvqcl <lvqcl.mail@gmail.com>
Accelerates decoding of non-Subset 24-bit FLAC files (where lpc_order
> 12).
The improved function is FLAC__lpc_restore_signal_wide_intrin_sse41().
It requires SSE4.1 and it's used only by 32-bit libFLAC.
Patch-from: lvqcl <lvqcl.mail@gmail.com>
GCC version 4.6 was throwing an error on `__has_attribute` which
seems to be Clang specific. Solution was to un-nest the CPP code
so that Clang is confirmed before the `__has_attribute` is hit.
When encoding a 24 bit multichannel W64 file on a 32 bit system, a
calculation could overflow resulting in a "got partial sample"
error and early termination of the encoding process.
The fix was to replace the cast to `size_t` (which is only 32 bits
on a 32 bit system) with a cast to `uin64_t`.
Thanks to Janne Hyvärinen for helping to track down the problem.
Closes: https://sourceforge.net/p/flac/bugs/453
The underscores are wrong. The comment is also correct.
Also remove the configure.ac option. Otherwise it tries to compile the
windows unicode stuff which POSIX(cygwin) does not understand.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>
Replace
a = _mm_alignr_epi8(b, a, n);
with
a = _mm_alignr_epi8(a, b, n);
The resulting code is very slightly faster and the binaries slightly
smaller.
Patch-from: lvqcl <lvqcl.mail@gmail.com>
Previously this function would abort or crash if passed `NULL` for
the encoder. Now it just returns without crashing or aborting which
is far more sane behaviour (ie much like FLAC__stream_encoder_delete).
* Furthermore, use NDEBUG globally to detect the presence
of building with more debug output information.
AX_CHECK_ENABLE_DEBUG is easier to use, and nowadays
Gnome has also switched to it from its own custom solution.
Signed-off-by: Erik de Castro Lopo <erikd@mega-nerd.com>