Commit Graph

597 Commits

Author SHA1 Message Date
e6a4793b16 AEC3: avoiding a warning in the reverberation decay estimator.
In this CL a warning is avoided in the reverberation decay estimator code. The change is bitexact.

Bug: chromium:921582
Change-Id: I5a91f4b5970a21ba6da7254cf7fad8c2d0bcac4b
Reviewed-on: https://webrtc-review.googlesource.com/c/118441
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26342}
2019-01-21 15:38:21 +00:00
5a6ae02e90 Reland "Trim down FileWrapper class to be merely a wrapper owning a FILE*"
This is a reland of 80b95de7651caa0cfeb684ffc200860989f667dc

Original change's description:
> Trim down FileWrapper class to be merely a wrapper owning a FILE*
> 
> Bug: webrtc:6463
> Change-Id: If71e2f3a75dc1863bc805ab71de1e2d33294f805
> Reviewed-on: https://webrtc-review.googlesource.com/c/117881
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Alex Loiko <aleloi@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26311}

Bug: webrtc:6463
Change-Id: I12154ef65744c1b7811974a1d871e05ed3fbbc27
Reviewed-on: https://webrtc-review.googlesource.com/c/118660
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26337}
2019-01-21 12:46:25 +00:00
466472796c Revert "Trim down FileWrapper class to be merely a wrapper owning a FILE*"
This reverts commit 80b95de7651caa0cfeb684ffc200860989f667dc.

Reason for revert: Speculative revert for downstream breakage. Possibly FileAudioDevice broken?

Original change's description:
> Trim down FileWrapper class to be merely a wrapper owning a FILE*
> 
> Bug: webrtc:6463
> Change-Id: If71e2f3a75dc1863bc805ab71de1e2d33294f805
> Reviewed-on: https://webrtc-review.googlesource.com/c/117881
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Alex Loiko <aleloi@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26311}

TBR=aleloi@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org,tommi@webrtc.org

Change-Id: I46d37afbf9acb5f62f04e09d944114c1da96eb36
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:6463
Reviewed-on: https://webrtc-review.googlesource.com/c/118380
Reviewed-by: Niels Moller <nisse@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26318}
2019-01-18 12:04:55 +00:00
80b95de765 Trim down FileWrapper class to be merely a wrapper owning a FILE*
Bug: webrtc:6463
Change-Id: If71e2f3a75dc1863bc805ab71de1e2d33294f805
Reviewed-on: https://webrtc-review.googlesource.com/c/117881
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26311}
2019-01-18 07:25:30 +00:00
f0d9cda950 Revert "AEC3: Lockless transfer of render data to the capture thread"
This reverts commit 74ba99062c48b278675cfe52643719202296fddc.

Reason for revert: Breaks downstream project.

Original change's description:
> AEC3: Lockless transfer of render data to the capture thread
> 
> This CL implements a lockless queue that replaces SwapQueue
> in the RenderWriter. This avoid stalls when the render and
> capture threads are accessing the queue at the same time.
> 
> Bug: webrtc:10205
> Change-Id: Ie7d6fcf9c80fad957e2a90537658fb730ca2ed72
> Reviewed-on: https://webrtc-review.googlesource.com/c/117643
> Reviewed-by: Per Åhgren <peah@webrtc.org>
> Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26298}

TBR=gustaf@webrtc.org,peah@webrtc.org

Change-Id: Ie76ee8835da4e44982d181a152c9ffa19ff33e23
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10205
Reviewed-on: https://webrtc-review.googlesource.com/c/118142
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26304}
2019-01-17 20:44:06 +00:00
74ba99062c AEC3: Lockless transfer of render data to the capture thread
This CL implements a lockless queue that replaces SwapQueue
in the RenderWriter. This avoid stalls when the render and
capture threads are accessing the queue at the same time.

Bug: webrtc:10205
Change-Id: Ie7d6fcf9c80fad957e2a90537658fb730ca2ed72
Reviewed-on: https://webrtc-review.googlesource.com/c/117643
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26298}
2019-01-17 14:41:18 +00:00
c25fa89e9e RNN VAD: fix pitch gain type and change pitch period type
The pitch gain type in ComputePitchGainThreshold() is wrong
(size_t instead of float).
The pitch period is an unsigned integer type, but it is safer to
switch to a signed type and add checks on the sign.

Bug: webrtc:9076
Change-Id: If69d182071edab9750a320f0fbfac24aa8052ee0
Reviewed-on: https://webrtc-review.googlesource.com/c/117302
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26259}
2019-01-15 10:28:23 +00:00
235131303b Add noise suppression settings to AudioProcessing::Config
This Config configuration will eventually replace the AudioProcessing::noise_suppression() interface.

This also introduces a proxy NoiseSuppression, returned by AudioProcessing::noise_suppression.
Without this proxy, ApplyConfig could overwrite NS settings for clients who currently use noise_suppression(). For example, the following code will not preserve the noise suppression level:

apm->noise_suppression()->set_level(NoiseSuppression::kHigh);
auto cfg = apm->GetConfig();
apm->ApplyConfig(cfg);

The NoiseSuppression instance returned by noise_suppression() has no way to update the config inside APM, so GetConfig() will return an out-of-date config which is then re-applied. This CL adds a proxy that makes this update, by forwarding Enable() and set_level() calls to ApplyConfig().

Drive-by change: AudioProcessing::Config substructs are reordered to mirror the capture processing pipeline.

Tested: Ran ToT and this CL builds of audioproc_f and verified identical settings/aecdumps.
Bug: webrtc:9947
Change-Id: I823eade894be115c254d656562564108b2b63b1f
Reviewed-on: https://webrtc-review.googlesource.com/c/116521
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26248}
2019-01-14 16:17:19 +00:00
10542f21c8 (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries
Mechanically generated by running this command:

tools_webrtc/do-renames.sh update all-renames.txt && git cl format

Then manually updating:

tools_webrtc/sanitizers/tsan_suppressions_webrtc.cc

Bug: webrtc:10159
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I54824cd91dada8fc3ee3d098f971bc319d477833
Reviewed-on: https://webrtc-review.googlesource.com/c/115653
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26226}
2019-01-11 17:11:39 +00:00
6670a9d145 AEC3: More efficient comfort noise generation
Comfort noise was generated by picking random angles on the unit circle
for each frequency band and then obtaining points on the unit circle from
{cos(a), -sin(a)}.

In order to reduce complexity, this change introduces a randomly indexed
table of 32 elements over sin(a). cos(a) is obtained by adding an offset
corresponding to pi/2 to the index. The table is pre-scaled by sqrt(2) to
avoid later multiplications.

This change reduces the computational complexity of AEC3 by ~8% with no
audible degradation.

Bug: webrtc:10189
Change-Id: I8cfe2469022fb1fe910ab3f966e55d9d499b7161
Reviewed-on: https://webrtc-review.googlesource.com/c/116787
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26209}
2019-01-11 08:46:05 +00:00
e449805f42 APM unit test: echo path gain change events notified.
This CL adds two unit tests to make sure that, when an echo path gain
change occurs, the echo canceller is notified.
Such a change can be caused by (i) a pre-amplifier gain change or
(ii) an analog gain change.

Bug: webrtc:7494
Change-Id: Ia47cfbbc5694340cd3e760d8d3c3393f79897a9d
Reviewed-on: https://webrtc-review.googlesource.com/c/111780
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26190}
2019-01-10 11:06:24 +00:00
6c330ab63f Update some audio processing tests to new VAD API
This updates some tests to use AudioProcesing::Config() and
AudioProcessing::GetStatistics() instead.

Some tests are left with voice_detection() because
a) not all tests make sense to run both APIs in parallel, and
b) we want test coverage of the old VoiceDetection until it is removed.

Bug: webrtc:9947
Change-Id: Ifb21a1e6e931d7ad3c3a4e38f5cc4f146da3c9a3
Reviewed-on: https://webrtc-review.googlesource.com/c/116160
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26134}
2019-01-04 10:31:42 +00:00
4db667be74 Add private voice detection instance to replace public voice detector
This adds a second (!) VoiceDetection instance in APM, activated via webrtc::AudioProcessing::Config and which reports its values in the webrtc::AudioProcessingStats struct.

The alternative is to reuse the existing instance, but that would require adding a proxy interface returned by AudioProcessing::voice_detection() to update the internal config of AudioProcessingImpl when calling voice_detection()->Enable().

Complexity-wise, no reasonable client will enable both interfaces simultaneously, so the footprint is negligible.

Bug: webrtc:9947
Change-Id: I7d8e28b9bf06abab8f9c6822424bdb9d803b987d
Reviewed-on: https://webrtc-review.googlesource.com/c/115243
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26101}
2018-12-27 12:00:06 +00:00
86079a4571 Fix potential null pointer dereference.
This CL guards against null pointer dereference, as caught by
clang static analyzer [1].
It also removes a useless field initialization, which happened
to trigger a false positive from said analyser.

[1] https://chromium.googlesource.com/chromium/src/+/HEAD/docs/clang_static_analyzer.md

Bug: webrtc:8793
Bug: webrtc:9855
Change-Id: Ia0fee24395eb2df16b526bbdffa5da6275b0909a
Reviewed-on: https://webrtc-review.googlesource.com/c/115044
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Jeroen de Borst <jeroendb@webrtc.org>
Commit-Queue: Yves Gerey <yvesg@google.com>
Cr-Commit-Position: refs/heads/master@{#26091}
2018-12-21 15:36:51 +00:00
c0a67baa36 AEC3: moving the dumping of the Erle to aec state
Bug: webrtc:10154
Change-Id: I3b4cbfe218f6ed1be273f4545b159dc4d90ba587
Reviewed-on: https://webrtc-review.googlesource.com/c/115402
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26082}
2018-12-21 10:29:42 +00:00
31d8b52075 Delete unneeded includes of rtc_base/stringutils.h.
Also delete corresponding dependencies on rtc_base:stringutils.

Bug: webrtc:6424
Change-Id: I2be5e021292eea2d788c76a63cc0e4f7cefd927d
Reviewed-on: https://webrtc-review.googlesource.com/c/114544
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26057}
2018-12-19 11:04:27 +00:00
11b8703201 Base ApmTest.Process on AudioProcessingStats.output_rms_dbfs
This replaces the current usage of AudioProcessing::level_estimator()
in that test.

The unit tests that specifically test the level_estimator API are left
in place, until the level_estimator API itself is removed.

Bug: webrtc:9947
Change-Id: I73301c1478d2c9763bb49598a692142229102876
Reviewed-on: https://webrtc-review.googlesource.com/c/114550
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26049}
2018-12-18 16:45:03 +00:00
3be607f2bc Use output_dir instead of output_name
This is to make second build no-op in mac_asan builder.
e.g. https://ci.chromium.org/p/webrtc/builders/luci.webrtc.try/mac_asan/15219

We can use output_dir to override default_output_dir of executable.
https://gn.googlesource.com/gn/+/master/docs/reference.md#tool-variables


confirm no-op step for this CL does not complain.
https://ci.chromium.org/p/webrtc/builders/luci.webrtc.try/mac_asan/15305

Bug: chromium:914264
Change-Id: Ia1196280064703dcb08e208e91c704cce25a925c
Reviewed-on: https://webrtc-review.googlesource.com/c/114180
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Commit-Queue: Takuto Ikuta <tikuta@google.com>
Cr-Commit-Position: refs/heads/master@{#26013}
2018-12-14 14:22:52 +00:00
57011626bd Re-tuning of VAD in AGC2.
Changing VAD (voice activity detector) confidence threshold from 40%
to 90%. The proportion of samples classified as speech drops to ca 80%
of what it was when the threshold was 40%. Therefore,
kFullBufferSizeMs has to be increased by 1.0/0.8. We increase it from
1600ms to 2000ms.

TESTED = Did run the new and old configs on AEC dumps. With one minute
of kitchen noise, the new tuning boosted the noise by 3-4 db less.

Bug: chromium:913430
Change-Id: I4a2ebb6d1d309c6c20dd23c3685818b1b5ad4a66
Reviewed-on: https://webrtc-review.googlesource.com/c/113806
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25950}
2018-12-10 14:47:29 +00:00
a59db7481c Remove unnecessary includes of common_types.h
Bug: webrtc:7626
Change-Id: I2d9275e5dc8eea6419d3c80cd68c4a01deafa9b7
Reviewed-on: https://webrtc-review.googlesource.com/c/113524
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25940}
2018-12-07 21:21:13 +00:00
ebad1770ab Include event_wrapper.h only where used.
It's currently used only by the VCMJitterBuffer and VCMReceiver
classes. Injection is needed by the VCMReceiverTimingTest test, which
defines a subclass(!) of EventWrapper.

Bug: webrtc:3380
Change-Id: I765be0ceac58e941928319cc426ba49f1cbdc5fa
Reviewed-on: https://webrtc-review.googlesource.com/c/113002
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25893}
2018-12-04 14:50:18 +00:00
9d54bd8898 AEC3: Fix ENR threshold for WebRTC-Aec3UseLegacyNormalSuppressorTuning
Fixes the ENR threshold used in the dominant nearend detection when
the kill-switch WebRTC-Aec3UseLegacyNormalSuppressorTuning is pulled.

Bug: webrtc:8671,chromium:911141
Change-Id: I30ee58009633b3a9e12eff692226baada624a049
Reviewed-on: https://webrtc-review.googlesource.com/c/112903
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25880}
2018-12-03 15:19:00 +00:00
de10eea6fc AEC3: Fix ENR in the dominant nearend detection
Correcting a mistake in the dominant nearend detection where
the meaning of the echo-to-nearend ratio was inversed.

Bug: webrtc:8671
Change-Id: I7f56369fad1784e256150c312b6b3dafcb9d0f71
Reviewed-on: https://webrtc-review.googlesource.com/c/112136
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25818}
2018-11-28 09:23:34 +00:00
cf69d2209b AEC3: Optimizing the Update method of the FilterAnalyzer class.
In this CL the analysis of the impulse response that is done in the FilterAnalyzed class is changed in order to reduce its complexity. Instead of analyzing the whole impulse response in each Update call a smaller region is analyzed. That region is changed at each Update call which implies that several calls are needed in order to analyze the complete impulse response.

Bug: webrtc:10032,chromium:909007
Change-Id: Ic58be34ba18485311c63e0fed9b6e892f9cb864c
Reviewed-on: https://webrtc-review.googlesource.com/c/111602
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25817}
2018-11-28 09:01:07 +00:00
14f252a1e4 AEC3: Add metrics for API call jitter
Bug: webrtc:10021,chromium:907234
Change-Id: Ic0e6ba01c8dfdd5ca8230c8579bf149693e5f151
Reviewed-on: https://webrtc-review.googlesource.com/c/111580
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25806}
2018-11-27 19:52:08 +00:00
b24c00f02d Add AudioProcessingCaptureStats and a level estimator replacement
This adds an interface for accessing stats on the capture stream, and
adds a level estimator to report one of the stats.

Bug: webrtc:9947
Change-Id: Id472534fa2e04d46c9ab700671f620584a246afb
Reviewed-on: https://webrtc-review.googlesource.com/c/109587
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25786}
2018-11-26 15:52:14 +00:00
e3abb8134f Decouple //rtc_base:rtc_base_tests_utils from gunit.
This CL decouples //rtc_base:rtc_base_tests_utils from gunit by
moving gunit helpers (rtc_base/gunit.h) and rtc_base/testclient.h
(which depends on gunit helpers) to their own build target.

It also removes some unused dependencies in the WebRTC build graph.

Bug: None
Change-Id: Ia9820e84ff697da39b351eef73c45f6e4bdf2623
Reviewed-on: https://webrtc-review.googlesource.com/c/111861
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25769}
2018-11-23 12:52:46 +00:00
777cf26328 AEC3: Clockdrift detection
This change introduces a clockdrift detector operating on the estimated
delay of the echo path delay estimator. Each time the delay estimate
changes it is compared to previous estimates. If the estimates are
slowly increasing or decreasing, clockdrift is detected.

Four different patterns are considered clockdrift:
- k, k+1, k+2, k+3
- k, k+2, k+1, k+3
- k, k-1, k-2, k-3
- k, k-2, k-1, k-3

A delay estimate history matching the three last elements in one of the
patterns is considered probable clockdrift. Matching all four elements
is considered verified clockdrift.

If the delay is constant for some time after clockdrift is detected the
clockdrift detector will revert to no detected clockdrift.

The level of clockdrift is reported via an UMA histogram.

Bug: webrtc:10014
Change-Id: I1cce4d593e101a8b3fa99df6935e59b4243cb97a
Reviewed-on: https://webrtc-review.googlesource.com/c/111381
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25758}
2018-11-22 16:02:44 +00:00
ecf6315a7f AGC2 adaptive digital: remove unnecessary flag.
Bug: webrtc:7494
Change-Id: I03d854ab082cb8fcf3f01a431c06496f93d3063b
Reviewed-on: https://webrtc-review.googlesource.com/c/111601
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25729}
2018-11-21 15:01:28 +00:00
8da7b350cf AGC2 adaptive digital false by default
Avoid that the client code relies on the adaptive digital mode being
enabled by default (error prone).

Bug: webrtc:7494
Change-Id: I765fecf535cf31a2163e10595a42520473c233b6
Reviewed-on: https://webrtc-review.googlesource.com/c/111586
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25728}
2018-11-21 14:20:15 +00:00
4bc60452f7 Add output directory option for audioproc_f data dump files.
Bug: webrtc:10000
Change-Id: Iac21f826e78d6cb339c68fdeeedf9fe39920ac31
Reviewed-on: https://webrtc-review.googlesource.com/c/110904
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25713}
2018-11-20 13:30:24 +00:00
68170388f4 APM audioproc_f: flag for AGC2 adaptive level estimator.
Bug: webrtc:7494
Change-Id: I603211570a0a46d8884749dab887cd572827cca6
Reviewed-on: https://webrtc-review.googlesource.com/c/110250
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25708}
2018-11-20 12:50:23 +00:00
44974e143c AEC3: Adding a correction factor for the Erle estimation that depends on the portion of the filter that is currently in use.
In this CL a more precise estimation of the Erle is introduced. This is done by creating different estimators that are specialized in different regions of the linear filter. An estimation of which regions were used for generating the current echo estimate is performed and used for selecting the right Erle estimator.

Bug: webrtc:9961
Change-Id: Iba6eb24596c067c3c66d40df590be379d3e1bb7b
Reviewed-on: https://webrtc-review.googlesource.com/c/109400
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25707}
2018-11-20 12:28:05 +00:00
dd886082c5 AGC2 flags: remove deprecated fields.
Downstream projects adapted, clean up.

Bug: webrtc:7494
Change-Id: I019b8dd79c6bc55c900fb5595d5e2ee8aa0a2400
Reviewed-on: https://webrtc-review.googlesource.com/c/110865
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25656}
2018-11-15 13:47:24 +00:00
1724a80e2d AEC3: Turn off the specific suppressor mode for stationary render
Bug: webrtc:9998,chromium:905291
Change-Id: I0e9f029227349dcde280895d905e90cc90f3e072
Reviewed-on: https://webrtc-review.googlesource.com/c/110902
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25640}
2018-11-14 15:45:47 +00:00
1e2542f593 AGC2: adding level estimation option (RMS or peak-based).
This CL makes possible to choose the level estimation for the adaptive
digital GC of AGC2. The options are RMS (default and currently used
estimator) and peak-based (already computed, but not used).

Besides adding the new AGC2 config param for the level estimator, this CL
also refactors the config class by making it more structured.

Bug: webrtc:7494
Change-Id: I20eb558ca50f13536aa7bdea08d21de3b630f8bc
Reviewed-on: https://webrtc-review.googlesource.com/c/110144
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25620}
2018-11-13 14:32:13 +00:00
a33c89510f AEC3: Corrected erroneous if-statement that always returned true
Bug: webrtc:8671
Change-Id: I040943abd6b70a8392a88b234df518e958dd077b
Reviewed-on: https://webrtc-review.googlesource.com/c/110722
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25617}
2018-11-13 11:53:47 +00:00
20f60f0dc6 Fuzzer crash in AGC2.
Gain specified by fuzzer in APM config was too high.

Bug: chromium:901661
Change-Id: Id3ea8d23a4284a35c827bb16125902d84e37ca1e
Reviewed-on: https://webrtc-review.googlesource.com/c/110604
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Jonas Olsson <jonasolsson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25594}
2018-11-12 12:16:47 +00:00
b768e8800f Reland "Isolating APM API build target: making :api an actual target."
This reverts commit 61c6e5643e7ea058e653956980a90e033249c055.

Reason for revert: downstream projects prepared for this change

Original change's description:
> Revert "Isolating APM API build target: making :api an actual target."
> 
> This reverts commit a7f77a7c05b5d26520fd01a773ffb2c8b15b60ff.
> 
> Reason for revert: breaking downstream
> 
> Original change's description:
> > Isolating APM API build target: making :api an actual target.
> > 
> > This CL is part of a refactoring work to unblock other CLs
> > that would generate a circular dependency when including
> > modules/audio_processing. It will also allow to easily move
> > the APM interface part under //api.
> > 
> > More in detail, this change moves the APM interface files from
> > the build target modules/audio_processing to
> > modules/audio_processing:api. It also adds :api as dependency
> > where needed.
> > 
> > Bug: webrtc:9535
> > Change-Id: I72829e22d08ba4d75985f0421e6e8bf0216ebecd
> > Reviewed-on: https://webrtc-review.googlesource.com/c/109501
> > Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> > Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
> > Reviewed-by: Niels Moller <nisse@webrtc.org>
> > Reviewed-by: Sam Zackrisson <saza@webrtc.org>
> > Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#25539}
> 
> TBR=saza@webrtc.org,alessiob@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org,kthelgason@webrtc.org
> 
> Change-Id: I974c6237311e7c06970aa62e5f6940f3aa80113d
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:9535
> Reviewed-on: https://webrtc-review.googlesource.com/c/109820
> Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
> Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25540}

TBR=saza@webrtc.org,alessiob@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org,kthelgason@webrtc.org

Change-Id: Ic8ed4cc3baf43d639ce13cae256c007728c3ad92
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9535
Reviewed-on: https://webrtc-review.googlesource.com/c/109884
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25547}
2018-11-07 14:30:06 +00:00
61c6e5643e Revert "Isolating APM API build target: making :api an actual target."
This reverts commit a7f77a7c05b5d26520fd01a773ffb2c8b15b60ff.

Reason for revert: breaking downstream

Original change's description:
> Isolating APM API build target: making :api an actual target.
> 
> This CL is part of a refactoring work to unblock other CLs
> that would generate a circular dependency when including
> modules/audio_processing. It will also allow to easily move
> the APM interface part under //api.
> 
> More in detail, this change moves the APM interface files from
> the build target modules/audio_processing to
> modules/audio_processing:api. It also adds :api as dependency
> where needed.
> 
> Bug: webrtc:9535
> Change-Id: I72829e22d08ba4d75985f0421e6e8bf0216ebecd
> Reviewed-on: https://webrtc-review.googlesource.com/c/109501
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Sam Zackrisson <saza@webrtc.org>
> Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25539}

TBR=saza@webrtc.org,alessiob@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org,kthelgason@webrtc.org

Change-Id: I974c6237311e7c06970aa62e5f6940f3aa80113d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9535
Reviewed-on: https://webrtc-review.googlesource.com/c/109820
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25540}
2018-11-07 11:28:03 +00:00
a7f77a7c05 Isolating APM API build target: making :api an actual target.
This CL is part of a refactoring work to unblock other CLs
that would generate a circular dependency when including
modules/audio_processing. It will also allow to easily move
the APM interface part under //api.

More in detail, this change moves the APM interface files from
the build target modules/audio_processing to
modules/audio_processing:api. It also adds :api as dependency
where needed.

Bug: webrtc:9535
Change-Id: I72829e22d08ba4d75985f0421e6e8bf0216ebecd
Reviewed-on: https://webrtc-review.googlesource.com/c/109501
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25539}
2018-11-07 10:34:51 +00:00
7b3c76b44f Reland "Delete rtc::Pathname"
This is a reland of 6b9dec0d16f2df59fa2820c5ec1341be52fb9f32

Original change's description:
> Delete rtc::Pathname
> 
> Bug: webrtc:6424
> Change-Id: Iec01dc5dd1426d4558983b828b67af872107d723
> Reviewed-on: https://webrtc-review.googlesource.com/c/108400
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25479}

Bug: webrtc:6424
Change-Id: Ic7b42d435ffd8b93f603acebe68e8a92366bb197
Reviewed-on: https://webrtc-review.googlesource.com/c/109561
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25537}
2018-11-07 09:57:55 +00:00
c572ff3c71 Add default constructor for rtc::Event
Bug: webrtc:9962
Change-Id: Icaa91e657e6881fcb1553f354c07866109a0ea68
Reviewed-on: https://webrtc-review.googlesource.com/c/109500
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25535}
2018-11-07 08:57:50 +00:00
dc98b9b975 AEC3: Corrected include
Bug: webrtc:8671
Change-Id: I3267c4d48cb52cc7bf305ecd7ec3f3a6222276be
Reviewed-on: https://webrtc-review.googlesource.com/c/109569
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25529}
2018-11-06 18:57:19 +00:00
020e583291 AEC3: Compensate comfort noise level for loss due to filter bank
The analysis and synthesis windowing cause loss of power when
cross-fading the noise where frames are completely uncorrelated
(generated with random phase).

This CL also removes duplicate code and enables platform specific
optimizations for ARM in the comfort noise generation.

Bug: webrtc:9967,chromium:902262
Change-Id: Iffd59b301876442079d4a5f2c7fac55a3522397c
Reviewed-on: https://webrtc-review.googlesource.com/c/109581
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25526}
2018-11-06 16:17:02 +00:00
83b00f020e AEC3: Computation of comfort noise gains from suppression gains
This change corrects the computation of the comfort noise gains.

Previously the comfort noise gain of band k, CG_k, was computed
from suppression gain of band k, SG_k, as:
CG_k = 1 - SG_k

But since the two signals are uncorrelated (the comfort noise
is randomly generated), the correct gain to maintain power is:
CG_k = sqrt(1 - SG_k^2).

Bug: webrtc:9967,chromium:902262
Change-Id: I393495742163d5e658bca4ab2f7a5067ab15af01
Reviewed-on: https://webrtc-review.googlesource.com/c/109580
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25525}
2018-11-06 16:10:52 +00:00
277b6ea850 Isolating APM API build target: adding dummy :api target.
This CL is part of a refactoring work to unblock other CLs
that would generate a circular dependency when including
modules/audio_processing. It will also allow to easily move
the APM interface part under //api.

More in detail, this change adds a dummy build target named :api
in modules/audio_processing. It is needed to adapt the downstream
projects before the APM interface files are moved to the :api target.

A follow up CL will make :api an actual target and will remove
the interface files from :audio_processing.

Bug: webrtc:9535
Change-Id: Ifb4e1a0ac7e482a8a089ef858d7e9a91f974e51f
Reviewed-on: https://webrtc-review.googlesource.com/c/109585
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25523}
2018-11-06 14:44:31 +00:00
63ada787b5 Remove outdated TODO
Bug: webrtc:9535
Change-Id: I8f7a719eb9f32a91f45620453568e5f7d2264de8
Reviewed-on: https://webrtc-review.googlesource.com/c/109461
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25511}
2018-11-06 08:39:16 +00:00
c22f551842 Remove locks from AECM and move it into private_submodules_
This drops the locks and annotations in EchoControlMobileImpl,
now that the interface is no longer externally accessible.

Additionally, SetEchoPath and GetEchoPath (with surrounding code) is
removed. They are unused.

Bug: webrtc:9929
Change-Id: Ibc6751754614ed39836f6ee6835d7b53dedd828c
Reviewed-on: https://webrtc-review.googlesource.com/c/109025
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25504}
2018-11-05 16:25:09 +00:00
2039ee7dce Revert "Delete rtc::Pathname"
This reverts commit 6b9dec0d16f2df59fa2820c5ec1341be52fb9f32.

Reason for revert: speculative revert for breaking internal projects

Original change's description:
> Delete rtc::Pathname
> 
> Bug: webrtc:6424
> Change-Id: Iec01dc5dd1426d4558983b828b67af872107d723
> Reviewed-on: https://webrtc-review.googlesource.com/c/108400
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25479}

TBR=kwiberg@webrtc.org,nisse@webrtc.org

Change-Id: I3129a81a1d8e36b3e6c67572410bdc478ec4d5e9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:6424
Reviewed-on: https://webrtc-review.googlesource.com/c/109201
Reviewed-by: Qingsi Wang <qingsi@webrtc.org>
Commit-Queue: Qingsi Wang <qingsi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25490}
2018-11-02 16:30:24 +00:00