Using the have_neon boolean to enable NEON code means we have to either
fully enable it or fully disable it. When using -Dneon=runtime, ideally
only the parts that support runtime checks would be built for NEON, and
those that don't would be built without NEON. Though, there are no
longer any runtime checks for NEON anywhere, so it's equivalent to 'no'
with a warning.
In general, we should use have_* variables to indicate compiler support,
and *_opt options to choose if and how we want to utilize that. Use
neon_opt to control NEON compilation and avoid modifying have_neon which
now would fully refer to compiler support.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
The MIPS-specific source for vector scaling operations fails to build on
Debian's mips64el:
[97/303] Compiling C object webrtc/common_audio/libcommon_audio.a.p/signal_processing_vector_scaling_operations_mips.c.o
FAILED: webrtc/common_audio/libcommon_audio.a.p/signal_processing_vector_scaling_operations_mips.c.o
cc [...] webrtc/common_audio/libcommon_audio.a.p/signal_processing_vector_scaling_operations_mips.c.o.d -o webrtc/common_audio/libcommon_audio.a.p/signal_processing_vector_scaling_operations_mips.c.o -c ../webrtc/common_audio/signal_processing/vector_scaling_operations_mips.c
/tmp/cc7UGPkY.s: Assembler messages:
/tmp/cc7UGPkY.s:57: Error: opcode not supported on this processor: mips64r2 (mips64r2) `extrv_r.w $3,$ac0,$8'
ninja: build stopped: subcommand failed.
The EXTRV_R.W instruction it uses is part of DSP extensions for this
architecture. In signal_processing_library.h, this function's prototype
is guarded with #if defined(MIPS_DSP_R1_LE). Guard the implementation
like that as well to fix the error.
Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
Ongoing fixes and improvements, transient suppressor is gone. Also,
dropping isac because it doesn't seem to be useful, and is just build
system deadweight now.
Upstream references:
Version: 131.0.6778.200
WebRTC: 79aff54b0fa9238ce3518dd9eaf9610cd6f22e82
Chromium: 2a19506ad24af755f2a215a4c61f775393e0db42
Some API deprecation -- ExperimentalAgc and ExperimentalNs are gone.
We're continuing to carry iSAC even though it's gone upstream, but maybe
we'll want to drop that soon.
On x86, SSE optimisations are always compiled in, and used based on
runtime checks.
On ARM, we try to autodetect NEON support (with an option of runtime
detection). This has not been build-tested on ARM yet.
This leaves MIPS to be done.
Corresponds to upstream commit 524e9b043e7e86fd72353b987c9d5f6a1ebf83e1
Update notes:
* Pull in third party license file
* Replace .gypi files with BUILD.gn to keep track of what changes
upstream
* Bunch of new filse pulled in as dependencies
* Won't build yet due to changes needed on top of these
Corresponds to upstream commit 524e9b043e7e86fd72353b987c9d5f6a1ebf83e1
Update notes:
* Moved src/ to webrtc/ to easily diff against the third_party/webrtc
in the chromium tree
* ARM/NEON/MIPS support is not yet hooked up
* Tests have not been copied