221 Commits

Author SHA1 Message Date
Karl Wiberg
7ba22b8eea Break out the part of the iSAC codec that's used for Voice Activity Detection
The audio processing code is using parts of the iSAC codec to do voice
activity detection (VAD), but it's undesirable for it to pull in the
entire iSAC codec as a dependency. So this CL factors out the parts of
iSAC that's needed for VAD to a separate build target.

Bug: webrtc:8396
Change-Id: I884e25d8fd0bc815fca664352b0573b4b173880e
Reviewed-on: https://webrtc-review.googlesource.com/69640
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23110}
2018-05-04 08:53:34 +00:00
Karl Wiberg
bb23c838f5 GN hack to tag targets as poisonous (and use it with audio codecs)
Only specially taggged targets may transitively depend on poisonous
targets. We first apply it to audio codecs.

This makes it much clearer exactly what parts of the code still have
dependencies on the audio codecs (and we want to eventually get rid of
pretty much all of them).

Bug: webrtc:8396, webrtc:9121
Change-Id: Iba5c2e806c702b5cfe881022674705f647896d43
Reviewed-on: https://webrtc-review.googlesource.com/69520
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22979}
2018-04-23 13:41:47 +00:00
Fredrik Solenberg
104ad0b62b Remove stale dependencies from APM static lib target:
- protobuf library
- file_wrapper.h

These appear to have been left behind during the AecDump refactoring.
After this CL, APM no longer depends on zlib by default! :)

Bug: webrtc:9139
Change-Id: I12a8df2a17a575515b9c07165825f0879c4e15eb
Reviewed-on: https://webrtc-review.googlesource.com/70762
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22923}
2018-04-18 17:00:05 +00:00
Alessio Bazzica
4736d4e524 AGC2 RNN VAD: Sequence buffer
The SequenceBuffer class template implements a linear buffer with a Push
operation that is used to add a fixed size chunk of new samples into the
buffer. Its properties are its size and the size of the chunks that are
pushed. It is used to implement the pitch buffer in the RNN VAD feature
extractor, for which a ring buffer would be a painful choice.

Bug: webrtc:9076
Change-Id: I4767bf06d5a414dbed724a96ea4186ef013a1e30
Reviewed-on: https://webrtc-review.googlesource.com/70204
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22919}
2018-04-18 09:43:54 +00:00
Alex Loiko
b5c9a79e68 Activate the pre-amplifier in AudioProcessing.
It's a module for applying a gain to the capture signal.
The gain is the first processing step in APM.

After this CL, these two features work:
* The PreAmplifier can be activated with
  AudioProcessing::Config::pre_amplifier
* The PreApmlifier can be controlled after APM creation by
  AudioProcessing::SetRuntimeSetting.

What's left is a change to AecDumps and to AecDump-replay.

NOTRY=True # 1-line change, tests just passed.

Bug: webrtc:9138
Change-Id: I85b3af511695b0a9cec2eed6fee7f05080305e1d
Reviewed-on: https://webrtc-review.googlesource.com/69811
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22881}
2018-04-16 14:36:49 +00:00
Fredrik Solenberg
bbf21a3fd6 Remove dependencies on modules:module_api from AudioProcessing.
- Directly include api/audio/audio_frame.h everywhere AudioFrame is used.
- This *will* remove transient dependencies on libjpeg and a bunch of other things from the e.g. APM.
- audio_frame.h still included from module_common_types.h for backwards compatibility with clients.

Bug: webrtc:9139, webrtc:7504
Change-Id: Id96f9268c01667fbcc29a01f5c1dd25a37836897
Reviewed-on: https://webrtc-review.googlesource.com/62464
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22845}
2018-04-12 22:05:27 +00:00
Fabrice de Gans-Riberi
09a6cd5541 Prepare for |is_posix| switch in the Fuchsia build
|is_posix| will be switched to false for Fuchsia, this is a preliminary change.

Bug: chromium:812974
Change-Id: I3bfda3e056ad1e5229834286ce5d095d9204a428
Reviewed-on: https://webrtc-review.googlesource.com/65782
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Fabrice de Gans-Riberi <fdegans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#22753}
2018-04-05 17:25:39 +00:00
Alex Loiko
4ed47d0190 Noise level estimation for AGC2.
We put back the old noise estimator from LevelController. We add a few
new unit tests. We also re-arrange the code so that it fits with how
it is used in AGC2. The differences are:

1. The NoiseLevelEstimator is now fully self-contained.
2. The NoiseLevelEstimator is responsible for calling SignalClassifier
   and computing the signal energy. Previously the signal type and
   energy were used in several places. It made sense to compute the
   values independently of the noise calculation.
3. Re-initialization doesn't have to be done by the caller.
4. The interface is AudioFrameView instead of AudioBuffer.

# Bots are green, nothing should break internal stuff
NOTRY=True

Bug: webrtc:7494
Change-Id: I442bdbbeb3796eb2518e96000aec9dc5a039ae6d
Reviewed-on: https://webrtc-review.googlesource.com/66380
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22738}
2018-04-04 18:23:55 +00:00
Alex Loiko
1e48e8095c Level estimation and saturation protection stub.
The level estimator (AdaptiveModeLevelEstimator) produces a biased
estimate of the speech level. In our model, we use another module
(the SaturationProtector) to compute the bias. This CL contains the
estimator and a stub of the saturation protector.

Bug: webrtc:7494
Change-Id: I0df736d0346063f544fa680b4cc84177ea548545
Reviewed-on: https://webrtc-review.googlesource.com/64820
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22641}
2018-03-28 08:41:45 +00:00
Alex Loiko
2bac896d5e Adaptive Digital gain control structure.
This CL defines the control flow of the adaptive AGC. It also defines
method and class stubs.

Contents:
1. Divide the 'agc2' build target into 'fixed_digital' and
'adaptive_digital'.
1. Update the dependencies of everything that depended on 'agc2'.
2. Define the sub-modules of the adaptive digital AGC 2. They are:
   1. Level Estimator - it gets the energy and a speech probability
      and updates a speech level estimate.
   2. Noise Estimator - it gets an immutable view of the speech frame
      and updates the noise level estimate
   3. Gain applier - it gets the speech frame, the current speech and
      noise estimates, and the speech probability. It finds a gain to
      apply and applies it.
   4. AdaptiveAgc - sets up and controls the sub-modules described
      above.

Bug: webrtc:7494
Change-Id: Ib7ccd8924e94eead0bc5f935b5d8a12e06e24fd1
Reviewed-on: https://webrtc-review.googlesource.com/64440
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22628}
2018-03-27 14:12:50 +00:00
Karl Wiberg
6a4d411023 Move file_wrapper.h to rtc_base/system/
This moves it from an API directory (system_wrappers/include/) to a
non-API directory, which is exactly what we want for utilities like
this.

BUG=webrtc:8445

Change-Id: I440974da4d347b09ff042478720d7983056b62b9
Reviewed-on: https://webrtc-review.googlesource.com/21226
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22579}
2018-03-23 11:17:15 +00:00
Patrik Höglund
7696bef463 Remove the public_deps to fileutils from test_support.
Bug: webrtc:8946
Change-Id: Ia01d8bb1b42485e29f26792b9266228743d7fd90
No-Presubmit: true
Reviewed-on: https://webrtc-review.googlesource.com/62100
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22465}
2018-03-16 09:06:27 +00:00
Ivo Creusen
2cb4105224 Moved audioproc_f interface into api directory.
The interface of the audioproc_f tool should be located in the api/ directory, so it becomes visible to the outside world.

Bug: webrtc:8732
Change-Id: Ia7475883aeb0e1f7a6afa5e791204b38dc53a8b8
Reviewed-on: https://webrtc-review.googlesource.com/61801
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22449}
2018-03-15 12:31:37 +00:00
Ivo Creusen
8c812f3fc3 Restructure the audioproc_f tool into a library with a thin executable wrapper.
This refactoring makes it easier to experiment with injectable components.

Bug: webrtc:8732
Change-Id: I2cd2a8ff80516a76aec814af02b61778915f2217
Reviewed-on: https://webrtc-review.googlesource.com/60863
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22372}
2018-03-09 18:06:04 +00:00
Sam Zackrisson
ab1aee0be4 Reland "Deprecate the adaptive level controller"
This is a reland of 6f37ed78d99daa36e964ff0a65b205f0916d9949

CQ dry run OK except for missing iOS swarming bots.
NOTRY=True

Original change's description:
> Deprecate the adaptive level controller
>
> Level control handled by default-on AGC.
>
> Bug: none
> Change-Id: I405daeceece12c896d41156b649fcfd556726f77
> Reviewed-on: https://webrtc-review.googlesource.com/59682
> Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
> Reviewed-by: Alex Loiko <aleloi@webrtc.org>
> Commit-Queue: Sam Zackrisson <saza@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22305}

Bug: none
Change-Id: I0b9b8e2f3457d5efd4603efbfbbc6b84651df315
Reviewed-on: https://webrtc-review.googlesource.com/60720
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22352}
2018-03-09 09:42:13 +00:00
Per Åhgren
ad09d74f67 Extend the audioproc_f input parameters to match what is supported by AEC3
This CL extends the options for the audioproc_f tool to match the options
for AEC3.

Bug: webrtc:8671
Change-Id: I39972eae33dba461b94118ec47a8560eb9cfe5a6
Reviewed-on: https://webrtc-review.googlesource.com/43120
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22344}
2018-03-08 16:04:23 +00:00
Karl Wiberg
12edf4ce34 Separate build target for rtc_base/numerics/safe_minmax.h
So that we can avoid dependency cycles.

Bug: none
Change-Id: I821d9f1319dff01403d6e4e310cbb2d4b2b125e8
Reviewed-on: https://webrtc-review.googlesource.com/60500
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22328}
2018-03-07 14:12:00 +00:00
Sam Zackrisson
52f8188f5d Revert "Deprecate the adaptive level controller"
This reverts commit 6f37ed78d99daa36e964ff0a65b205f0916d9949.

Reason for revert: <INSERT REASONING HERE>

Original change's description:
> Deprecate the adaptive level controller
> 
> Level control handled by default-on AGC.
> 
> Bug: none
> Change-Id: I405daeceece12c896d41156b649fcfd556726f77
> Reviewed-on: https://webrtc-review.googlesource.com/59682
> Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
> Reviewed-by: Alex Loiko <aleloi@webrtc.org>
> Commit-Queue: Sam Zackrisson <saza@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#22305}

TBR=solenberg@webrtc.org,saza@webrtc.org,aleloi@webrtc.org

Change-Id: Ic52f41fcbebfd2291a51b17ac788313e1ceef163
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: none
Reviewed-on: https://webrtc-review.googlesource.com/60240
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22308}
2018-03-06 11:54:22 +00:00
Sam Zackrisson
6f37ed78d9 Deprecate the adaptive level controller
Level control handled by default-on AGC.

Bug: none
Change-Id: I405daeceece12c896d41156b649fcfd556726f77
Reviewed-on: https://webrtc-review.googlesource.com/59682
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22305}
2018-03-06 10:20:01 +00:00
Sam Zackrisson
4d3644979c Add stub draft of audio generator to APM
This provides the empty shell of an AudioGenerator class.
It is intended to be used for debugging purposes and can be inserted
into the APM much like an AecDump. It allows for playing out diagnostic
audio unaffected by codecs and network jitter, while still capturing
API interaction like in a normal call.

NOTRY=True

Bug: webrtc:8882
Change-Id: I8132afc95cdba02ab233f44e22e0a5f530710ef7
Reviewed-on: https://webrtc-review.googlesource.com/53300
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22282}
2018-03-05 09:28:52 +00:00
Gustaf Ullberg
0efa941d2f Move EchoCanceller3Factory to api/auido
The AEC3 factory is now part of the WebRTC API.

Bug: webrtc:8844
Change-Id: If6f419b4ca0354e2d346c0e6474086e456ba747e
Reviewed-on: https://webrtc-review.googlesource.com/57141
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22204}
2018-02-27 14:09:59 +00:00
Gustaf Ullberg
f35c6667d6 Separate build targets for aec3 and aec3_unittests
Bug: webrtc:8844
Change-Id: Id6a98eae19aaedc87c3f402a004f58f0290d5c28
Reviewed-on: https://webrtc-review.googlesource.com/56580
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22173}
2018-02-23 13:16:16 +00:00
Per Åhgren
39f491eb4e Moved and simplifed the AEC3 API call skew estimator and added tests
This CL moves the AEC3 API call skew estimator into a separate file.
This has the advantage that it can more easily be tested.
The CL also simplifies the code and adds unittests.

Bug: webrtc:8671
Change-Id: I19bc31ca5666cdc87a1ed14770ef20ead1b5b80d
Reviewed-on: https://webrtc-review.googlesource.com/55860
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22144}
2018-02-22 00:52:10 +00:00
Gustaf Ullberg
2ae140ae7e BUILD.gn file for api/audio.
Targets containing files in api/audio are moved from api/BUILD.gn to
api/audio/BUILD.gn.

Bug: webrtc:8844
Change-Id: Ib7ea4b7eb3c2ea38ef8261a1fc5c2b4674985981
Reviewed-on: https://webrtc-review.googlesource.com/54360
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22074}
2018-02-19 10:38:29 +00:00
Alex Loiko
153f11e1b4 AGC2-fixed-digital: Level Estimator
This CL adds the Level Estimator of the new gain controller. The Level
Estimator divides a 10ms input frame in kSubFramesInFrame=20 sub
frames. We take the maximal sample values in every sub frame. We then
apply attack/decay smoothing. This is the final level estimate.

The results will be used with InterpolatedGainCurve (see this CL
https://webrtc-review.googlesource.com/c/src/+/51920). For every level
estimate value, we look up a gain with
InterpolatedGainCurve::LookUpGainToApply. This gain is then applied to
the signal.

Bug: webrtc:7949
Change-Id: I2b4b3894a3e945d3dd916ce516c79abacb2b18b1
Reviewed-on: https://webrtc-review.googlesource.com/52381
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22054}
2018-02-16 13:55:18 +00:00
Alex Loiko
e36e8bbf6d Add FixedGainController and move GainController2 in APM.
The FixedGainController (FGC) applies a fixed gain. It will also
control the limiter. The limiter will be landed over the next several
CLs.

The GainController2 is a 'private submodule' of APM. It will control
the new automatic gain controller (AGC). It controls the AGC through
Initialize() and ApplyConfig().

This CL contains

* build changes to make modules/audio_processing/agc2 an independent
  target

* a new MutableFloatAudioFrame which is the audio interface between
  AGC2 and APM

* move of the fixed gain application from GainController2 to
  FixedGainController.

If you are a googler, there is more information in this doc:
https://docs.google.com/document/d/1RV2Doet3MZtUPAHVva61Vjo20iyd1bmmm3aR8znWpzo/edit#

Bug: webrtc:7949
Change-Id: Ief95cbbce83c3aafe54638fd2ab881c9fb8bdc3a
Reviewed-on: https://webrtc-review.googlesource.com/50440
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22046}
2018-02-16 10:56:38 +00:00
Gustaf Ullberg
fd4ce50423 Move echo_control.h to api/audio
Bug: webrtc:8844
Change-Id: I5c2406c43ade786c26e12b3c847fed8424283df0
Reviewed-on: https://webrtc-review.googlesource.com/53700
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22031}
2018-02-15 10:43:04 +00:00
Gustaf Ullberg
3646f973c2 AEC3 includes echo_canceller3_config.h directly
Avoid including audio_processing.h from within AEC3.

Bug: webrtc:8844
Change-Id: I02c475c2fb84e2c24eac86baac3c7edaa08bebc0
Reviewed-on: https://webrtc-review.googlesource.com/53065
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22029}
2018-02-15 08:30:14 +00:00
Gustaf Ullberg
bffa3007b4 Move AEC3 configuration to its own file under api/audio
This is one of several small steps of separating APM and AEC3.

Bug: webrtc:8844
Change-Id: Ib6e518fec5f7566cab3823ab35fcede8433f8f4e
Reviewed-on: https://webrtc-review.googlesource.com/53142
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22028}
2018-02-15 08:03:54 +00:00
Mirko Bonadei
dbbb33cd00 Stop using public_deps in common_audio.
Bug: webrtc:8603
Change-Id: I315311977f2a75476a7028b8d3eaf3c98caf4178
Reviewed-on: https://webrtc-review.googlesource.com/47920
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21902}
2018-02-06 09:44:20 +00:00
Gustaf Ullberg
8e467dfa6d Move EchoControl out of audio_processing.h.
Bug: webrtc:8844
Change-Id: Id05c285e0e377774c79da8552959733f823d8bb4
Reviewed-on: https://webrtc-review.googlesource.com/47900
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21898}
2018-02-06 08:28:29 +00:00
Alex Loiko
0488fcf293 Made modules/audio_processing/vad its own target.
WHAT: made a BUILD.gn with library and tests in the Audio Processing
Module Voice Activity Detector directory. Updated depending
code. Fixed a Clang warning.

WHY: to make it possible for a target to depend on just the VAD and
not the whole APM. There are other benefits:

* Sometimes faster compilation.

* The VAD takes up 28000 bytes of libjingle_peerconnection_so.so. Making
  a peerconnection shared object file without the VAD has to be done in
  steps. The first step is a custom target for the VAD. Hence this Cl.

Change-Id: Iea0207a0b5979db26baaf46b24beaefbb1c431af
BUG: webrtc:5716, webrtc:7494
Reviewed-on: https://webrtc-review.googlesource.com/47521
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21893}
2018-02-05 14:03:40 +00:00
Mirko Bonadei
65ce31158f Removing useless dependencies on //testing/gmock.
If a WebRTC build target requires gmock it has to include
test/gmock.h and just depend on //test:test_support.

Unfortunately //testtest_support was a leaky abstraction because it
wasn't propagating the correct -I compiler flag. To make everything
work, all the targets that use gmock started also to depend on
//testing/gmock (even if they were not including any gmock header
directly).

This CL makes //testtest_support propagate the include path up in the
dependency chain so it is possible to remove unused dependencies.

Note: all_dependent_configs should probably be used in the original
gmock target. There is an ongoing discussion about it. This CL solves
the problem on WebRTC side and it is forward compatible.

TBR=phoglund@webrtc.org

Bug: webrtc:8603
Change-Id: If08daf2ce9a6431a6e881a236743b4ec33b59ea7
Reviewed-on: https://webrtc-review.googlesource.com/44340
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21776}
2018-01-26 13:34:12 +00:00
Per Åhgren
a76ef9d0b4 Robustify the faster alignment in AEC3 to avoid resets
The faster AEC3 alignment introduced recently may in
cases cause the alignment (and the AEC3) to repeatedly
reset. This CL avoids these resets by handling buffer
issues (which are triggering the resets) separately
during the initial coarse alignment phase.



Change-Id: Idf5e2ffda2591906da8060d03ec8ca73cdaedf53
Bug: webrtc:8798,chromium:805815
Reviewed-on: https://webrtc-review.googlesource.com/43480
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21758}
2018-01-25 09:57:31 +00:00
Dan Minor
9c68613080 Update gn files to support Mozilla build
Bug: webrtc:8670
No-Presubmit: true
Change-Id: I085dc63daa8274b5068540cbf56b6330f40643fa
Reviewed-on: https://webrtc-review.googlesource.com/38920
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21624}
2018-01-16 07:51:23 +00:00
Per Kjellander
a7f2d84ad1 Revert "Revert "GN rtc_* templates: Set default visibility to webrtc_root + "/*"""
This reverts commit c73e1f437889d882cbf2987f7fb3a029a6150613.

Reason for revert: 
The problem with failed deps in chrome content/renderer had already been fixed in https://webrtc-review.googlesource.com/c/src/+/38660

Original change's description:
> Revert "GN rtc_* templates: Set default visibility to webrtc_root + "/*""
> 
> This reverts commit 588c548657b3ddf76e7b3f241263eef7f5799f16.
> 
> Reason for revert: 
> 
> Breaks Chrome FYI:
> 
> /b/c/b/Linux_Builder/src/buildtools/linux64/gn gen //out/Release --check
>   -> returned 1
> ERROR at //build/split_static_library.gni:12:5: Dependency not allowed.
>     static_library(target_name) {
>     ^----------------------------
> The item //content/renderer:renderer
> can not depend on //third_party/webrtc/media:rtc_internal_video_codecs
> because it is not in //third_party/webrtc/media:rtc_internal_video_codecs's visibility list: [
>   //third_party/webrtc/*
>   //third_party/webrtc_overrides/*
> ]
> 
>  https://logs.chromium.org/v/?s=chromium%2Fbb%2Fchromium.webrtc.fyi%2FLinux_Builder%2F23560%2F%2B%2Frecipes%2Fsteps%2Fgenerate_build_files%2F0%2Fstdout
> 
> Original change's description:
> > GN rtc_* templates: Set default visibility to webrtc_root + "/*"
> > 
> > This means that by default, targets are visible to everything under
> > the WebRTC root, but not visible to anything else.
> > 
> > API targets are manually tagged with visibility "*", so that targets
> > outside the WebRTC tree can see them.
> > 
> > BUG=webrtc:8254
> > 
> > Change-Id: Icdbee6e0d22d93240ff2fb530c8f9dc48e351509
> > Reviewed-on: https://webrtc-review.googlesource.com/24140
> > Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> > Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#21548}
> 
> TBR=mbonadei@webrtc.org,kwiberg@webrtc.org
> 
> Change-Id: I06620ce3d6f67482935c22efa231dd6cab91625a
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:8254
> Reviewed-on: https://webrtc-review.googlesource.com/38760
> Reviewed-by: Per Kjellander <perkj@webrtc.org>
> Commit-Queue: Per Kjellander <perkj@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21555}

TBR=mbonadei@webrtc.org,kwiberg@webrtc.org,perkj@webrtc.org

Change-Id: I6f720078ce21bd172e0a6471bae8c4c011e4a657
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8254
Reviewed-on: https://webrtc-review.googlesource.com/38860
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21558}
2018-01-10 15:55:04 +00:00
Per Kjellander
c73e1f4378 Revert "GN rtc_* templates: Set default visibility to webrtc_root + "/*""
This reverts commit 588c548657b3ddf76e7b3f241263eef7f5799f16.

Reason for revert: 

Breaks Chrome FYI:

/b/c/b/Linux_Builder/src/buildtools/linux64/gn gen //out/Release --check
  -> returned 1
ERROR at //build/split_static_library.gni:12:5: Dependency not allowed.
    static_library(target_name) {
    ^----------------------------
The item //content/renderer:renderer
can not depend on //third_party/webrtc/media:rtc_internal_video_codecs
because it is not in //third_party/webrtc/media:rtc_internal_video_codecs's visibility list: [
  //third_party/webrtc/*
  //third_party/webrtc_overrides/*
]

 https://logs.chromium.org/v/?s=chromium%2Fbb%2Fchromium.webrtc.fyi%2FLinux_Builder%2F23560%2F%2B%2Frecipes%2Fsteps%2Fgenerate_build_files%2F0%2Fstdout

Original change's description:
> GN rtc_* templates: Set default visibility to webrtc_root + "/*"
> 
> This means that by default, targets are visible to everything under
> the WebRTC root, but not visible to anything else.
> 
> API targets are manually tagged with visibility "*", so that targets
> outside the WebRTC tree can see them.
> 
> BUG=webrtc:8254
> 
> Change-Id: Icdbee6e0d22d93240ff2fb530c8f9dc48e351509
> Reviewed-on: https://webrtc-review.googlesource.com/24140
> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
> Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21548}

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

Change-Id: I06620ce3d6f67482935c22efa231dd6cab91625a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8254
Reviewed-on: https://webrtc-review.googlesource.com/38760
Reviewed-by: Per Kjellander <perkj@webrtc.org>
Commit-Queue: Per Kjellander <perkj@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21555}
2018-01-10 15:14:54 +00:00
Karl Wiberg
588c548657 GN rtc_* templates: Set default visibility to webrtc_root + "/*"
This means that by default, targets are visible to everything under
the WebRTC root, but not visible to anything else.

API targets are manually tagged with visibility "*", so that targets
outside the WebRTC tree can see them.

BUG=webrtc:8254

Change-Id: Icdbee6e0d22d93240ff2fb530c8f9dc48e351509
Reviewed-on: https://webrtc-review.googlesource.com/24140
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21548}
2018-01-10 13:08:11 +00:00
Edward Lemur
e66572bede Reland "iOS: Save perf results under Documents/perf_result.json"
This will require a manual roll to downstream projects, since
the //test:perf_test target was introduced.

This is a reland of 10a8e7a9b5261a7e3ce19900ba3511be3b5911f8
Original change's description:
> iOS: Save perf results under Documents/perf_result.json
>
> TBR=henrika@webrtc.org
>
> Bug: webrtc:7156
> Change-Id: Ib00992cce0007e0b5c9274340df1a892f810b0c5
> Reviewed-on: https://webrtc-review.googlesource.com/29202
> Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21244}

R=henrika@webrtc.org, phoglund@webrtc.org

Bug: webrtc:7156
Change-Id: I85fc7bc5fce0894af90017b71b9952b61b523424
Reviewed-on: https://webrtc-review.googlesource.com/37643
Reviewed-by: Patrik Höglund <phoglund@google.com>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21518}
2018-01-08 14:12:42 +00:00
Patrik Höglund
6213929de5 Add missing files to audio_processing.
Bug: webrtc:7621
Change-Id: I2cab764232fc4e084ed8a489f4cf3a3ac562c894
Reviewed-on: https://webrtc-review.googlesource.com/34658
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21461}
2017-12-31 12:18:38 +00:00
Per Åhgren
11556464a6 Enforcing a stream delay of 0 to be assumed in the AEC on Chrome OS
This CL forces the AEC2 to assume a stream delay of 0, thereby
avoiding that the incorrect stream delays reported on Chrome OS
causes echo issues.

Bug: chromium:797274, chromium:797272
Change-Id: I10f295c9f1d735622c55fc56be99a14c6cdd88a2
Reviewed-on: https://webrtc-review.googlesource.com/36081
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21432}
2017-12-22 15:42:13 +00:00
Patrik Höglund
d75c8dcde9 Clean up duplication in APM gn file.
I realized I could use configs to fix some duplication that I
partially introduced.

Verified APM_DEBUG_DUMP is set appropriately by looking at the
compiler command line.

Bug: webrtc:6828
Change-Id: Ia990e2721546d65639567cd3ab788439e328c5da
Reviewed-on: https://webrtc-review.googlesource.com/34642
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21349}
2017-12-19 09:32:40 +00:00
Patrik Höglund
67c20ae571 Inlined audio_processing_neon_c.
This solves a circular dep and eliminates a target.

This means we will apply neon copts to some files that weren't before,
but I don't think that is a problem.

Bug: webrtc:6828,webrtc:7042
Change-Id: I3bb656ba5b13d6104b519c2dbf6a4b2814575b87
Reviewed-on: https://webrtc-review.googlesource.com/34183
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21330}
2017-12-18 18:08:43 +00:00
Patrik Höglund
3e113438b1 Fix circular dependencies in webrtc_common.
One reason for the circular deps is that common_types.h is a
historical dumping ground for various structs and defines that
are believed to be generally useful. I tried moving things out
that did not appear to be used downstream (StreamCounters,
RtpCounters etc) and moved the things that seemed used
(RtpHeader + supporting structs) to a new file api/rtp_headers.h.
This makes their place in the api more clear while moving out
the things that don't belong in the API in the first place.

I had to extract out typedefs.h from webrtc_common to resolve
another circular dependency. I believe checks includes typedefs,
but common depends on checks.

Bug: webrtc:7745
Change-Id: I725d49616b1ec0cdc8b74be7c078f7a4d46f084b
Reviewed-on: https://webrtc-review.googlesource.com/33001
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21295}
2017-12-15 14:33:26 +00:00
Mirko Bonadei
712989d86d Revert "Reland "iOS: Save perf results under Documents/perf_result.json""
This reverts commit 8b886bb077d54e2bf6198559557ae97b03023611.

Reason for revert: Breaks downstream projects.

Original change's description:
> Reland "iOS: Save perf results under Documents/perf_result.json"
> 
> This will require a manual roll to downstream projects, since
> the //test:perf_test target was introduced.
> 
> This is a reland of 10a8e7a9b5261a7e3ce19900ba3511be3b5911f8
> Original change's description:
> > iOS: Save perf results under Documents/perf_result.json
> >
> > TBR=henrika@webrtc.org
> >
> > Bug: webrtc:7156
> > Change-Id: Ib00992cce0007e0b5c9274340df1a892f810b0c5
> > Reviewed-on: https://webrtc-review.googlesource.com/29202
> > Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
> > Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> > Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#21244}
> 
> TBR=henrika@webrtc.org, phoglund@webrtc.org
> 
> No-Try: true
> Bug: webrtc:7156
> Change-Id: Iecdb108f605fd1c98acde4d50ab4f5a7b5f6bfaf
> Reviewed-on: https://webrtc-review.googlesource.com/32761
> Reviewed-by: Edward Lemur <ehmaldonado@webrtc.org>
> Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21252}

TBR=phoglund@webrtc.org,ehmaldonado@webrtc.org,henrika@webrtc.org

Change-Id: If4c72fa61dba3a3157fb9696b7f22664522b9467
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:7156
Reviewed-on: https://webrtc-review.googlesource.com/33040
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21279}
2017-12-14 12:51:15 +00:00
Patrik Höglund
a8005cfd8b Fix circular dependencies between optional, array_view, and rtc_base.
This splits things out of rtc_base and makes dependencies explicit.

Bug: webrtc:6828
Change-Id: Id521896c3c43595349021c857bec216e429a0c8d
Reviewed-on: https://webrtc-review.googlesource.com/32780
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21264}
2017-12-14 06:49:11 +00:00
Edward Lemur
8b886bb077 Reland "iOS: Save perf results under Documents/perf_result.json"
This will require a manual roll to downstream projects, since
the //test:perf_test target was introduced.

This is a reland of 10a8e7a9b5261a7e3ce19900ba3511be3b5911f8
Original change's description:
> iOS: Save perf results under Documents/perf_result.json
>
> TBR=henrika@webrtc.org
>
> Bug: webrtc:7156
> Change-Id: Ib00992cce0007e0b5c9274340df1a892f810b0c5
> Reviewed-on: https://webrtc-review.googlesource.com/29202
> Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21244}

TBR=henrika@webrtc.org, phoglund@webrtc.org

No-Try: true
Bug: webrtc:7156
Change-Id: Iecdb108f605fd1c98acde4d50ab4f5a7b5f6bfaf
Reviewed-on: https://webrtc-review.googlesource.com/32761
Reviewed-by: Edward Lemur <ehmaldonado@webrtc.org>
Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21252}
2017-12-13 15:16:41 +00:00
Patrik Höglund
d37709b659 Revert "Fix circular dependencies between optional, array_view, and rtc_base."
This reverts commit a9e0924fa7688c4e4558e179c6608ce1093e15f8.

Reason for revert: Breaks because of RTC_LAST_SYSTEM_ERROR

Original change's description:
> Fix circular dependencies between optional, array_view, and rtc_base.
> 
> This splits things out of rtc_base and makes dependencies explicit.
> 
> Bug: webrtc:6828
> Change-Id: Ib813c7bd9e4de7ab015acb917bc09ee7204ba7bd
> Reviewed-on: https://webrtc-review.googlesource.com/31940
> Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21245}

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

Change-Id: I1a5dcf2223f00ae7c46f9f2a12b990ab3a84397d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:6828
Reviewed-on: https://webrtc-review.googlesource.com/32760
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21251}
2017-12-13 14:56:33 +00:00
Rasmus Brandt
081c651148 Revert "iOS: Save perf results under Documents/perf_result.json"
This reverts commit 10a8e7a9b5261a7e3ce19900ba3511be3b5911f8.

Reason for revert: Speculative revert for broken downstream project.

Original change's description:
> iOS: Save perf results under Documents/perf_result.json
> 
> TBR=henrika@webrtc.org
> 
> Bug: webrtc:7156
> Change-Id: Ib00992cce0007e0b5c9274340df1a892f810b0c5
> Reviewed-on: https://webrtc-review.googlesource.com/29202
> Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
> Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
> Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21244}

TBR=phoglund@webrtc.org,ehmaldonado@webrtc.org,henrika@webrtc.org

Change-Id: Id10bbddbdfad7042a99cb52f44ac0a753c207d3b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:7156
Reviewed-on: https://webrtc-review.googlesource.com/32641
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Rasmus Brandt <brandtr@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21247}
2017-12-13 14:26:02 +00:00
Patrik Höglund
a9e0924fa7 Fix circular dependencies between optional, array_view, and rtc_base.
This splits things out of rtc_base and makes dependencies explicit.

Bug: webrtc:6828
Change-Id: Ib813c7bd9e4de7ab015acb917bc09ee7204ba7bd
Reviewed-on: https://webrtc-review.googlesource.com/31940
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21245}
2017-12-13 13:44:21 +00:00