Commit Graph

444 Commits

Author SHA1 Message Date
fade1790a7 Remove leaking aecdump testfiles.
Also removes tracing to file in ApmTest because it leads to remaining
files.

BUG=4258
R=bjornv@webrtc.org, kjellander@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/52469004

Cr-Commit-Position: refs/heads/master@{#9175}
2015-05-12 08:44:03 +00:00
cb05b72eb2 Add WAV and arbitrary geometry support to nlbf test.
This adds functionality from audioproc_float. The geometry parsing code
is now shared from test_utils.h. I removed the "mic_spacing" flag from
audioproc_float because it's a redundancy that I suspect isn't very
useful.

Includes a cleanup of the audio_processing test utils. They're now
packaged in targets, with the protobuf-using ones split out to avoid
requiring users to depend on protobufs.

pcm_utils is no longer needed and removed.

The primary motivation for this CL is that AudioProcessing currently
doesn't support more than two channels and we'd like a way to pass
more channels to the beamformer.

R=aluebs@webrtc.org, mgraczyk@chromium.org

Review URL: https://webrtc-codereview.appspot.com/50899004

Cr-Commit-Position: refs/heads/master@{#9157}
2015-05-08 05:17:58 +00:00
1ff218fac3 audio_processing/aec: Do not scale target delay at startup when on Android
When running AEC in extended_filter mode there is no startup phase to evaluate the reported system delay values.
Instead we simply use the first value and scale by two to avoid over compensating when synchronizing render and capture.
We don't need to be too accurate since we have extended the filter length.

On Android we use fixed (measured) reported delay values.
There is no need to be extra conservative here, because that is already built-in in the measured value.
In fact, the difference between devices is large and with such an extra conservative approach the true delay can not be caught by the filter length.
With this change we can improve performance on some devices.

BUG=4472
TESTED=offline on recordings from various devices
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/49909004

Cr-Commit-Position: refs/heads/master@{#9144}
2015-05-06 10:08:50 +00:00
532531b656 audio_processing/delay_estimator: Always update robust validation statistics
The delay estimator has a robust_validation mode used to deliver more stable delay etimates. The cost is increased reaction time when we have a delay jump.
This mode can be turned on and off on the fly, but statistics are not updated while disabled. This makes the estimator unreliable if it is enabled on the fly.

This CL makes sure the update is always done.

BUG=4472
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50889004

Cr-Commit-Position: refs/heads/master@{#9143}
2015-05-06 09:58:09 +00:00
40a6d593d2 audio_processing/tests: Adds a flag to unpack input data to text file
For quick and easy aecdump verifiation storing data as text speeds up the issue tracking process, since anyone can simply view values like mic volume.

BUG=4609
TESTED=verified unpacking an aecdump with flag --txt stores that data in text files
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50849004

Cr-Commit-Position: refs/heads/master@{#9142}
2015-05-06 08:51:47 +00:00
3cfa756f37 audio_processing/aec: Fixes an incorrect sampling rate multiplier when processing in 48 kHz
In AEC a fixed fft size is used, but processing can in the lower band be in either 8 or 16 kHz.
Therefore we need a multiplier/rate factor to, for example, map frequency bands in Hz to frequency bins.

The multiplier/rate factor can only be either 1 or 2, but when 48 kHz support was added it was assigned 3.

BUG=crbug.com/482424
R=aluebs@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/43329004

Cr-Commit-Position: refs/heads/master@{#9117}
2015-04-29 18:22:50 +00:00
beb9798ab4 audio_processing: Fixed incorrect usage of SetExtraOptions() in offline tool
The way SetExtraOptions() is used today only applies for any one configuration change. The correct way is to set it after all flags have been scanned.

The prefered way to solve this is to use gflags and scan once, followed by applying the configuration when creating audio_processing. This is what is done in the new test tool audioproc_float.cc, but there are still some things left to do before we can replace this one.

BUG=N/A
TESTED=locally
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/45279004

Cr-Commit-Position: refs/heads/master@{#9097}
2015-04-28 11:52:30 +00:00
5a92aa8440 Add 3-band filter-bank implementation
The implementation is a FIR filter bank with DCT modulation, similar to the proposed in "Multirate Signal Processing for Communication Systems" by Fredric J Harris.
The lowpass filter prototype has these characteristics:
* Passband ripple = 0.3dB
* Passband frequency = 0.147 (7kHz at 48kHz)
* Stopband attenuation = 40dB
* Stopband frequency = 0.192 (9.2kHz at 48kHz)
* Delay = 24 samples (500us at 48kHz)
* Linear phase

This filter bank does not satisfy perfect reconstruction. The SNR after analysis and synthesis (with no processing in between) is approximately 9.5dB depending on the input signal after compensating for the delay.

The performance on my workstation of AudioProcessing (with AGC and NS enabled) on a 413s recording compared to previous versions is as follows:
* Input signal has 32kHz sample rate: 3.01s
* Resampling 48kHz to 32kHz: 3.56s
* Today's temporary filter bank: 5.67s
* This filter-bank: 4.62s

BUG=webrtc:3146
R=andrew@webrtc.org, bjornv@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/48999005

Cr-Commit-Position: refs/heads/master@{#9090}
2015-04-27 18:34:16 +00:00
fb49451014 Disables mic bump-up level if not built with chromium
In http://chromegw.corp.google.com/viewvc/chrome-internal?view=rev&revision=61016 a feature to bump up low input audio levels to a fixed value of 33%. In https://webrtc-codereview.appspot.com/43109004/ a configuration to choose an arbitrary level was added, but still using 33% as default.
The original bump-up feature was added to fix audio issues in chrome, but affected also non-chrome users. This CL disables the feature for non-chrome applications.

Note that the default value is set to 0, but any value up to 12 will do. Zero was selected because it is more clear that the feature is turned off.

BUG=4529
R=andrew@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/43259004

Cr-Commit-Position: refs/heads/master@{#9048}
2015-04-22 04:39:47 +00:00
f2497cf517 Fix unknown option '-msse2' warning
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/43169004

Cr-Commit-Position: refs/heads/master@{#9016}
2015-04-16 06:57:12 +00:00
5d22c006eb Add performance tests flag to audioproc_float
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/46039004

Cr-Commit-Position: refs/heads/master@{#9012}
2015-04-15 18:26:34 +00:00
adc46c4cf7 audio_processing/agc: Adds config to set minimum microphone volume at startup
The AGC is currently bumping up the mic volume to 33% at startup if it is below that level. This is to avoid getting stuck in a poor state from which the AGC can not move, simply a too low input audio level. For some users, 33% is instead too loud.

This CL gives the user the possibility to set that level at create time.
- Extends the Config ExperimentalAgc with a startup_mic_volume for the user to set if desired. Note that the bump up does not apply to the legacy AGC and the "regular" AGC is controlled by ExperimentalAgc.
- Without any actions, the same default value as previously is used.
- In addition I removed a return value from InitializeExperimentalAgc() and InitializeTransient()

This has been tested by building Chromium on Mac and verify through apprtc that
1) startup_mic_volume = 128 bumps up to 50%.
2) startup_mic_volume = 500 (out of range) bumps up to 100%.
3) startup_mic_volume = 0 bumps up to 4%, the AGC min level.

BUG=4529
TESTED=locally
R=andrew@webrtc.org, kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/43109004

Cr-Commit-Position: refs/heads/master@{#9004}
2015-04-15 09:42:35 +00:00
0f911d71a7 Refactor audio_processing/nsx: Removed usage of macro WEBRTC_SPL_MEMCPY_W16
The macro assumes int16_t pointers, but there is no check for it.

BUG=3348,3353
TESTED=locally on Linux and trybots
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/48959004

Cr-Commit-Position: refs/heads/master@{#8987}
2015-04-13 13:45:07 +00:00
f6a99e63b6 Refactor audio_processing: Free functions return void
There is no point in returning an error when Free() fails. In fact it can only happen if we have a null pointer as object. There is further no place where the return value is used.

Affected components are
- aec
- aecm
- agc
- ns

BUG=441
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/50579004

Cr-Commit-Position: refs/heads/master@{#8966}
2015-04-10 05:56:59 +00:00
d417c93c10 Remove android_webview_build conditions.
Now that android_webview_build is no longer supported, remove build
conditionals referencing it and also remove the extra level of
indirection used to reference the cpufeatures target.

BUG=chromium:440793
R=henrika@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/44119005

Patch from Richard Coles <torne@chromium.org>.

Cr-Commit-Position: refs/heads/master@{#8963}
2015-04-09 15:36:13 +00:00
2c9c83d7ec Remove non-functional asynchronous resampling mode.
A few other cleanups, most notably using a sane parameter to specify the
number of channels.

BUG=chromium:469814
R=tina.legrand@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/46729004

Cr-Commit-Position: refs/heads/master@{#8894}
2015-03-30 17:08:28 +00:00
424694ce79 audio_processing/agc: Put entire method set_output_will_be_muted() under lock
Setting the member value output_will_be_muted_ in set_output_will_be_muted() was done before the lock.
This caused a data race.

BUG=4477
R=pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/44929004

Cr-Commit-Position: refs/heads/master@{#8877}
2015-03-27 10:30:54 +00:00
dfa36058c9 Reparent Nonlinear beamformer under beamforming interface.
R=aluebs@webrtc.org, andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/41269004

Cr-Commit-Position: refs/heads/master@{#8862}
2015-03-25 23:37:33 +00:00
bf395c1fc0 Add WebRTC Media Constraint to force using Delay Agnostic AEC on Android
If built-in Echo Cancellation is available on a device it is automatically enabled. The reason is that it in most cases performs better than the WebRTC software echo control for mobile. The drawback is that we can not develop, test and rollout the delay agnostic AEC (DA-AEC) on Android as for desktops.

This CL includes
- adding a media constraint to enable/disable DA-AEC.
- automatically turning on echo cancellation if DA-AEC is enabled.
- a fix in the AEC that enables delay estimation when DA-AEC is enabled, but delay metrics is disabled.
- sets the Config struct ReportedDelay, which controls DA-AEC internally in the AEC.

The test code to verify that it works in AppRTCDemo can be found here:
https://webrtc-codereview.appspot.com/50479004/

BUG=4472
TESTED=locally on N7, N6, Android One
R=glaznev@webrtc.org, perkj@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/48699004

Cr-Commit-Position: refs/heads/master@{#8861}
2015-03-25 21:46:10 +00:00
bd8c865f43 Remove build-time beamformer flags.
RealFourier is now unconditionally enabled since we can fall back to the
Ooura FFT. We no longer need to condition users on rtc_use_openmax_dl.

R=aluebs@webrtc.org, mgraczyk@google.com

Review URL: https://webrtc-codereview.appspot.com/50439004

Cr-Commit-Position: refs/heads/master@{#8799}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8799 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-20 00:28:42 +00:00
04c50981f8 Add the Ooura FFT to RealFourier.
We are using the Ooura FFT in a few places:
- AGC
- Transient suppression
- Noise suppression

The optimized OpenMAX DL FFT is considerably faster, but currently does
not compile everywhere, notably on iOS. This change will allow us to use
Openmax when possible and otherwise fall back to Ooura.

(Unfortunately, noise suppression won't be able to take advantage of it
since it's not C++. Upgrade time?)

R=aluebs@webrtc.org, mgraczyk@chromium.org

Review URL: https://webrtc-codereview.appspot.com/45789004

Cr-Commit-Position: refs/heads/master@{#8798}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8798 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-19 20:07:43 +00:00
0f663de2ec Rename Beamformer to NonlinearBeamformer.
R=aluebs@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/42359004

Cr-Commit-Position: refs/heads/master@{#8710}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8710 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-13 00:14:18 +00:00
e534086492 Clean up LappedTransform and Blocker.
- Remove unnecessary window member from lapped_transform.
  - Add comment indicated that Blocker does not take ownership of
    the window passed to its constructor.
  - Streamline LappedTransform constructor so members can be const.

Also use a range-based for loop in audio_processing_impl.cc for clarity.

R=aluebs@webrtc.org, andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/41229004

Cr-Commit-Position: refs/heads/master@{#8708}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8708 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-12 23:24:19 +00:00
7ef8b12a3b Refactor audio_processing/ns: Removes usage of macro WEBRTC_SPL_MUL_16_16_RSFT
The macro is defined as
#define WEBRTC_SPL_MUL_16_16_RSFT(a, b, c) \
(WEBRTC_SPL_MUL_16_16(a, b) >> (c))

where the latter macro is in C defined as
#define WEBRTC_SPL_MUL_16_16(a, b) \
((int32_t) (((int16_t)(a)) * ((int16_t)(b))))
(For definitions on ARMv7 and MIPS, see common_audio/signal_processing/include/spl_inl_{armv7,mips}.h)

The replacement consists of
- avoiding casts to int16_t if inputs already are int16_t
- adding explicit cast to <type> if result is assigned to <type> (other than int or int32_t)
- minor cleanups like remove of unnecessary parentheses and style changes

BUG=3348,3353
TESTED=Locally on Mac and trybots
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/41149004

Cr-Commit-Position: refs/heads/master@{#8666}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8666 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-10 07:10:14 +00:00
b38b009d21 Refactor audio_processing/aecm: Removed usage of macro WEBRTC_SPL_MUL_16_16_RSFT
The macro is defined as
#define WEBRTC_SPL_MUL_16_16_RSFT(a, b, c) \
(WEBRTC_SPL_MUL_16_16(a, b) >> (c))

where the latter macro is in C defined as
#define WEBRTC_SPL_MUL_16_16(a, b) \
((int32_t) (((int16_t)(a)) * ((int16_t)(b))))
(For definitions on ARMv7 and MIPS, see common_audio/signal_processing/include/spl_inl_{armv7,mips}.h)

The replacement consists of
- avoiding casts to int16_t if inputs already are int16_t
- adding explicit cast to <type> if result is assigned to <type> (other than int or int32_t)
- minor cleanups like remove of unnecessary parentheses and style changes

In addition an implicit cast from int32_t to int16_t was removed, which was a bug.

BUG=3348,3353
TESTED=Locally on Mac and trybots
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/41169004

Cr-Commit-Position: refs/heads/master@{#8665}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8665 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-10 06:40:12 +00:00
1afbdc7555 Refactor audio_processing/agc: Removes usage of macro WEBRTC_SPL_MUL_16_16_RSFT
The macro is defined as
#define WEBRTC_SPL_MUL_16_16_RSFT(a, b, c) \
(WEBRTC_SPL_MUL_16_16(a, b) >> (c))

where the latter macro is in C defined as
#define WEBRTC_SPL_MUL_16_16(a, b) \
((int32_t) (((int16_t)(a)) * ((int16_t)(b))))
(For definitions on ARMv7 and MIPS, see common_audio/signal_processing/include/spl_inl_{armv7,mips}.h)

The replacement consists of
- avoiding casts to int16_t if inputs already are int16_t
- adding explicit cast to <type> if result is assigned to <type> (other than int or int32_t)
- minor cleanups like remove of unnecessary parentheses and style changes

BUG=3348,3353
TESTED=locally on Mac and trybots
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/47449004

Cr-Commit-Position: refs/heads/master@{#8664}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8664 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-10 06:38:16 +00:00
1d88394bcb Add support for arbitrary array geometries in Beamformer
R=andrew@webrtc.org, mgraczyk@chromium.org

Review URL: https://webrtc-codereview.appspot.com/38299004

Cr-Commit-Position: refs/heads/master@{#8621}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8621 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-05 20:39:20 +00:00
d7a212e8b9 audio_processing/aec: Increased delay metrics aggregation window to five seconds
The known clients (GetStats and UMA histogram in Chrome) use at least 5 second aggregation window. There is no particular value in calculating the metrics more often.

The CL also includes a small refactoring moving a declaration inside an if statement.

BUG=2994
TEST=N/A
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/40219004

Cr-Commit-Position: refs/heads/master@{#8619}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8619 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-05 16:14:58 +00:00
14665ff7d4 Roll chromium_revision e144d30..6fdb142 (318658:318841) + remove OVERRIDE macro
Clang version changed 223108:230914
Details: e144d30..6fdb142/tools/clang/scripts/update.sh

Removes the OVERRIDE macro defined in:
* webrtc/base/common.h
* webrtc/typedefs.h

The majority of the source changes were done by running this in src/:
perl -0pi -e "s/virtual\s([^({;]*(\([^({;]*\)[^({;]*))(OVERRIDE|override)/\1override/sg" `find {talk,webrtc} -name "*.h"  -o -name "*.cc*" -o -name "*.mm*"`

which converted all:
virtual Foo() OVERRIDE
functions to:
Foo() override

Then I manually edited:
* talk/media/webrtc/fakewebrtccommon.h
* webrtc/test/fake_common.h

Remaining uses of OVERRIDE was fixed by search+replace.

Manual edits were done to fix virtual destructors that were
overriding inherited ones.

Finally a build error related to the pure virtual definitions of
Read, Write and Rewind in common_types.h required a bit of
refactoring in:
* webrtc/common_types.cc
* webrtc/common_types.h
* webrtc/system_wrappers/interface/file_wrapper.h
* webrtc/system_wrappers/source/file_impl.cc

This roll should make it possible for us to finally re-enable deadlock
detection for TSan on the buildbots.

BUG=4106
R=pbos@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/41069004

Cr-Commit-Position: refs/heads/master@{#8596}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8596 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-04 13:04:54 +00:00
6dab6d700d Let Chromium declare the mips_dsp_rev build variable.
In https://codereview.chromium.org/883253003, the mips_dsp_rev
build variable is added to Chromium's GYP and GN build files. Remove
the declarations of mips_dsp_rev from WebRTC's GYP and GN build files.

Replace mips_fpu with mips_float_abi and remove the compiler flags that
are already set by Chromium.

The main review of this was done in https://webrtc-codereview.appspot.com/39779004
but since that CL wasn't created with the right base URL, I made
this in order to be able to run WebRTC trybots properly.

BUG=446234
TBR=wtc@chromium.org

Review URL: https://webrtc-codereview.appspot.com/44549004

Cr-Commit-Position: refs/heads/master@{#8590}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8590 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-04 09:51:17 +00:00
c9ce07ed87 Add Config option to enable 48kHz support in AudioProcessing
BUG=webrtc:3146
R=andrew@webrtc.org, bjornv@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/45389004

Cr-Commit-Position: refs/heads/master@{#8563}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8563 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 20:07:51 +00:00
976c0f3043 audio_processing/aec: NEON code should not be invoked if it is detectable, but is not NEON
There exist devices with runtime checks for NEON, but where the device is not NEON. One such device is Tegra2 on which currently NEON code is running.

This fix adds a missing feature check when initializing the AEC.

BUG=4304
R=kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/42159004

Cr-Commit-Position: refs/heads/master@{#8559}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8559 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-02 16:25:51 +00:00
3aca0b0b31 Add 48kHz support to Beamformer
Doing something similar for the band 16-24kHz to what is done for the band 8-16kHz
Tested for 32kHz sample rate and the output is bitexact with how it was before this CL.

BUG=webrtc:3146
R=andrew@webrtc.org, kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/35159004

Cr-Commit-Position: refs/heads/master@{#8522}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8522 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 21:53:00 +00:00
00b8f6b364 Use base/scoped_ptr.h; system_wrappers/interface/scoped_ptr.h is going away
BUG=
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/36229004

Cr-Commit-Position: refs/heads/master@{#8517}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8517 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 14:43:50 +00:00
ac2d27d9ae Fix style violations in common_types.h and config.h
Mostly, it's about moving constructors and descructors to the .cc
files, so that they won't be inlined everywhere.

The reason this CL is so big is that a lot of code was using
common_types.h without declaring a dependency on webrtc_common, which
broke the build once common_types.h started to depend on
common_types.cc.

BUG=163
R=kjellander@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/26089004

Cr-Commit-Position: refs/heads/master@{#8516}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8516 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 14:01:28 +00:00
722739108a Roll chromium_revision b0c3ed3..2c3ffb2 (316737:317530)
Includes GN changes from
https://webrtc-codereview.appspot.com/39249004/

Android changes for JNI were required due to
https://codereview.chromium.org/843103003

Other relevant changes:
* src/buildtools: 5c5e924..93b3d0a
* src/third_party/boringssl/src: d306f16..b180ee9
* src/third_party/icu: 4e3266f..2081ee6
* src/third_party/libvpx: 5cdd302..33bbffe
* src/third_party/usrsctp/usrsctplib: 190c8cb..13718c7
* src/tools/gyp: 4d7c139..3464008
* src/tools/swarming_client: bdad118..1b7bfec
Details: b0c3ed3..2c3ffb2/DEPS

Clang version was not updated in this roll.

R=dpranke@chromium.org, phoglund@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/40079004

Cr-Commit-Position: refs/heads/master@{#8466}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8466 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 19:09:22 +00:00
661af50dd5 Small Beamformer optimization
* Don't use ConjugateDotProduct to calculate the norm.
* Only resize Matrix when needed.

This makes the Beamformer run in 93.6% the original time.
The error between the new and original output is really small and is caused by the new norm calculation.

R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/37339004

Cr-Commit-Position: refs/heads/master@{#8438}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8438 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-19 19:02:51 +00:00
27669f320b Apply good settings to Beamformer
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/33219004

Cr-Commit-Position: refs/heads/master@{#8398}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8398 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-17 19:24:37 +00:00
92a19bcbd7 Simplify mask calculation
There are only 2 things that prevent the output to be bit-exact:
* The zero initialization of the postfilter_mask_ and high_pass_postfilter_mask_, which only afects the first blocks.
* The re-tuning of the target presence estimation, since only the bins between low_average_start_bin_ and high_average_end_bin_ are of interest.
This latter was not taken into account before.

R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/35139004

Cr-Commit-Position: refs/heads/master@{#8368}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8368 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-13 19:38:22 +00:00
5d608955cf Fix bug when there are no blocks in a chunk in Beamformer
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/37119004

Cr-Commit-Position: refs/heads/master@{#8321}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8321 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-11 00:48:55 +00:00
d35a5c3506 Make ChannelBuffer aware of frequency bands
Now the ChannelBuffer has 2 separate arrays, one for the full-band data and one for the splitted one. The corresponding accessors are added to the ChannelBuffer.
This is done to avoid having to refresh the bands pointers in AudioBuffer. It will also allow us to have a general accessor like data()[band][channel][sample].
All the files using the ChannelBuffer needed to be re-factored.
Tested with modules_unittests, common_audio_unittests, audioproc, audioproc_f, voe_cmd_test.

R=andrew@webrtc.org, kwiberg@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/36999004

Cr-Commit-Position: refs/heads/master@{#8318}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8318 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-10 22:52:43 +00:00
91ba79ae3f Make sure that the norms are positive in Beamformer
This has a bit exact output, but is just to be sure that there are no nummerical errors when the covariance matrices are nearly singular.

R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/39019004

Cr-Commit-Position: refs/heads/master@{#8316}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8316 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-10 22:38:18 +00:00
b6856d2823 Apply mask smoothing in Beamformer
This generates much more aggressive postfilter masks, which remove the interference and background noise better.

R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/35089004

Cr-Commit-Position: refs/heads/master@{#8315}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8315 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-10 18:23:35 +00:00
2a44be93e8 Normalize delay-and-sum mask in Beamformer
This normalization is done in the Matlab Code but was never ported to the C++ version.

R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/37919004

Cr-Commit-Position: refs/heads/master@{#8279}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8279 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-07 02:41:41 +00:00
799e667e9f Add high frequency correction to Beamformer
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/35989004

Cr-Commit-Position: refs/heads/master@{#8278}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8278 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-07 01:07:43 +00:00
63da1dd972 audio_processing: Now records mic volume level also when using new AGC
Previously only mic level calculated by the legacy agc was logged in aecdebug dumps.
Now we log it for any agc.
In addition, it is now possible to turn on and off debug recording in the test tool voe_cmd_test.

BUG=4274
TESTED=verified using voe_cmd_test
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/39839004

Cr-Commit-Position: refs/heads/master@{#8274}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8274 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-06 19:44:46 +00:00
353c8b8c08 audio_processing/agc: Changed to correct include path in agc_unittests
The agc test_utils were moved to tools/ in r8205. The agc_unittests are currently not in use due to interface mismatches.

BUG=N/A
TBR=kjellander@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38949004

Cr-Commit-Position: refs/heads/master@{#8263}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8263 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-06 12:03:13 +00:00
ec4521cdb4 Clean up Beamformer initialization
This generates bit-exact output.

R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/37939004

Cr-Commit-Position: refs/heads/master@{#8254}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8254 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-05 18:17:11 +00:00
cc64a9cc4f voice_engine: Updates GetEcDelayMetrics() w.r.t. new metric
As of r8230 (https://webrtc-codereview.appspot.com/39739004/) a new Echo Delay Metric was added calculating the fraction of poor values that may cause the AEC to fail. There are currently two methods for GetDelayMetrics() in webrtc::AutioProcessing and one is deprecated.

This CL updates
- GetEcDelayMetrics()
- voe_auto_test
- talk/media/(fake)webrtcvoiceengine

BUG=N/A
TESTED=locally and trybots
R=pbos@webrtc.org, tina.legrand@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/41749004

Cr-Commit-Position: refs/heads/master@{#8251}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8251 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-05 12:53:24 +00:00
200ac007ef Remove temp files in audio_processing_unittest.cc.
These files are leaking, rapidly filling trybot disks.

BUG=4258
R=kjellander@webrtc.org
TBR=bjornv@webrtc.org
TEST=out/Debug/modules_unittests --gtest_filter=*AudioProcessingTest*Formats/0 && ls out

Review URL: https://webrtc-codereview.appspot.com/35979004

Cr-Commit-Position: refs/heads/master@{#8232}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8232 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-03 14:14:19 +00:00