284 Commits

Author SHA1 Message Date
aluebs@webrtc.org
a0ce9fa2a6 Call NS AnalyzeCaptureAudio before AEC
This attenuates the noise pumping generated from the NS adapting to the AEC comfort noise.

When there is echo present the AEC suppresses it and adds comfort noise. This is underestimated on purpose to avoid adding more than the original background noise. The NS has to be called after the AEC, because every non-linear processing before it can ruin its performance. Therefore the noise estimation can adapt to this comfort noise, making it less aggressive and generating noise pumping.

By putting the noise estimation analysis stage from the NS before the AEC, this effect can be avoided. This has been tested manually on recordings where noise pumping was present: Two long recordings done in our team by bjornv and kwiberg plus the most noisy (5) recordings in the QA set.

On the other hand, one risk of doing this is to not adapt to the comfort noise and therefore suppress too much. As verified in the tested files, this is not a problem in practice.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7289 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-24 14:18:03 +00:00
aluebs@webrtc.org
275dac2c1d Moved the filter calculation from analyze to process in ns_core
It makes sense to have it there if the analyze and process methods are called in different stages.
Tested over the entire QA set for bit exactness.

BUG=webrtc:3811
R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7287 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-24 13:23:49 +00:00
bjornv@webrtc.org
634c926928 audioproc: Now also writes to output file in simulation mode
After changing to use wav as default file format no output was written in simulation mode.

BUG=3359
TESTED=locally
R=aluebs@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7286 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-24 12:21:51 +00:00
bjornv@webrtc.org
ea29787df0 audio_processing/agc: Solved building with AGC_DEBUG + few style changes
webrtc did not build if AGC_DEBUG was turned on. This CL fixes that. Has no impact on performance since it is development/debug code.

* Name change to WEBRT_AGC_DEBUG_DUMP
* Added build flag agc_debug_dump to .gypi
* Added missing "%d" in printf at two places
* Some line length related style changes

Tested audioproc and modules_unittests with GYP_DEFINES=agc_debug_dump=1 webrtc/build/gyp_webrtc

BUG=N/A
TESTED=locally and trybots
R=aluebs@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7271 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-23 11:21:39 +00:00
bjornv@webrtc.org
dc0b37dcb1 modules_unittests: Turned on ApmTest.Process test for Android
The reason why ApmTest.Process breaks on Android is that two metrics over counts. I decided to add an offset and a different slack to the EXPECT_NEAR() calls that are affected. I think this is a reasonable approach since we have no more than two failing metrics. If any feature change that will make another metric fail, we should go back to the desk and find another way of solving this.

BUG=114
TESTED=locally on Nexus 7 and trybots
R=aluebs@webrtc.org, andrew@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7268 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-23 05:03:44 +00:00
aluebs@webrtc.org
bdfdc96b22 Clang-format ns_core
BUG=webrtc:3811
R=bjornv@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7257 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-22 10:59:46 +00:00
aluebs@webrtc.org
fbf3bfe172 Separate between Analyze and Process in NS
Filled the empty analyze API, separating the noise estimation from the process API.
No formatting fixes or extra refactoring has been done, to make the review process easier.
This patch has been tested for bit-exactness over the whole QA set in every aggressiveness.

BUG=webrtc:3811
R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7243 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-19 15:18:59 +00:00
aluebs@webrtc.org
fda2c2e810 Add Analyze API to NS
This adds an empty API.
In a next CL I will separate the noise estimation from the Process API and fill this function.

BUG=webrtc:3811
R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7218 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-18 09:54:06 +00:00
bjornv@webrtc.org
c75f607042 audio_processing/aec: Ported NEON optimizations of SubbandCoherence() and its sub-functions to SSE2
These optimizations were originally committed in r6860, but reverted in r6861, since it broke a bitexactness test (ApmTest.Process) in modules_unittests. That test has now been updated in r7149, hence this CL now pass the test.

BUG=3767
TESTED=manually on linux and trybots
TBR=aluebs@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7189 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-16 05:01:42 +00:00
bjornv@webrtc.org
7bb2586c55 audio_processing: Correct sample rate in aec_debug_dump
When writing to wav files in the low level flag aec_debug_dump incorrect sample rates were used for recordings using rates from 32 kHz and above. This since internally inside the AEC we process the data using 16 kHz. Any upper band is processed and combined later on.

This CL adds the correct sample rate to the recording.

BUG=3359
TESTED=locally on 44.1 kHz recordings on Linux
R=aluebs@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7182 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-15 13:23:07 +00:00
aluebs@webrtc.org
4b049fcabe Remove developing code in ns_core
This defines were hardcoded and the code inside of the ifdefs was never used.

BUG=webrtc:3763
R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7153 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-11 11:19:56 +00:00
bjornv@webrtc.org
8dd60cc855 audio_processing_unittests: Enabled ApmTest.Process for all platforms but Android
During porting some neon optimizations to sse2 the ApmTest.Process failed despite bit exact outputs. The reason is that with float data between component, as to previously truncating to int, we get small deviations in logged metrics. This affected a noise probability to a small fraction, which is not a particular bug.

This CL change the comparison from EXPECT_EQ() to EXPECT_NEAR() which then as a result makes the test run on Mac and Windows as well.

For int values a deviation of 1 is acceptable, which would include any rounding errors.
For float values a deviation of 0.0005 is chosen by looking at current test stats for the affected platforms/optimizations.

BUG=114
TESTED=locally on linux with and without sse2 optimizations and trybots
R=aluebs@webrtc.org, andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7149 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-11 08:36:35 +00:00
brettw@chromium.org
87ff9c8efa Fix up configs applying to GN build.
The audio_processing target didn't have the build configs applying to it which led to some logging errors.

TBR=kjellander

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7125 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-09 23:34:56 +00:00
andrew@webrtc.org
641bda6f9c Initialize ChannelBuffer's memory to avoid uninitialized reads.
Removed the zero out memset in this change:
https://review.webrtc.org/24469004/

assuming it was unneeded. Dr. Memory taught me that assupmtion was
invalid. linux_memcheck try runs might have caught this, if they
weren't flaking out on unrelated stuff.

TBR=claguna@google.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7113 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-08 23:11:44 +00:00
andrew@webrtc.org
17454f79dc Add ctors to ChannelBuffer to enable copying on construction.
Also:
- Fix the constness of some parameters.
- Add more const overloads.
- Use DCHECK in place of assert.
- Removed an unnecessary memset.

R=claguna@google.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7107 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-08 20:27:04 +00:00
bjornv@webrtc.org
37c39f3784 audio_processing: Removed use of macro WEBRTC_SPL_UMUL_16_16
The macro replaced is a trivial multiplication after explicit casts to uint16_t and uint32_t. This CL replaces its use with "*" and adds explicit casts if necessary.

Affected components:
* AECMobile
* AGC
* Noise Suppression (fixed point version)

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7101 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-08 11:21:56 +00:00
kjellander@webrtc.org
6d08ca6379 GN: Prefix WebRTC specific variables with "rtc_"
BUG=3441
TESTED=Trybots + Running GN in a Chromium checkout with
src/third_party/webrtc symlinked to the WebRTC checkout
with this CL applied, both with the default GN settings
and using: --args="os=\"android\" cpu_arch=\"arm\""

R=brettw@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7095 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-07 17:36:10 +00:00
bjornv@webrtc.org
c2c4117477 common_audio: Replaced WEBRTC_SPL_LSHIFT_U32 with << in audio_processing
Affected components:
* AECMobile
  - Added a help function since the same operation was performed several times.
* Auto Gain Control
* Noise Suppression (fixed point)

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7076 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-05 06:01:53 +00:00
aluebs@webrtc.org
021e76fd39 Add support for WAV output in audioproc
The default output is a WAV file, except if the --pcm_output flag is set.

BUG=webrtc:3359
R=bjornv@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7069 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-04 18:12:00 +00:00
aluebs@webrtc.org
bac072667b Use the sample rate as a temporary solution to unpack aecdumps with wrong sizes
The sizes saved in the aecdumps were always the input length, and this is not necessarily true when there is a change in sample rate. But the sample rates dumped are correct, so we can calculate the sizes from them knowing that we use 10ms chunks.

BUG=webrtc:3359
R=bjornv@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7039 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-03 13:39:01 +00:00
aluebs@webrtc.org
74cf916924 Fix issues in audioproc for float aecdumps
* The right buffer size is used to dump to file when the output sample rate is different from the input one.
* The percentage of processed chunks is calculated correctly when float data available.

BUG=webrtc:3359
R=bjornv@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7036 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-03 11:05:01 +00:00
bjornv@webrtc.org
48f2568d89 audio_processing/nsx: Bug fix that could cause divide by zero
In the fixed point version of the Noise Suppression. At one place we subtract a value in the wrong Q-domain, which later may cause a divide by zero. Going through the floating point code that particular variable should be zero if this happens, which is what the old code tried to accomplish, but in an awkward way.

The bug has been there since development, so the likelihood of actually get a divide by zero is very small.

BUG=chromium:407812
R=ljubomir.papuga@gmail.com, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7035 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-03 07:58:37 +00:00
aluebs@webrtc.org
841f58f64c Unpacking aecdumps generates wav files
BUG=webrtc:3359
R=andrew@webrtc.org, bjornv@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7018 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-02 07:51:51 +00:00
kjellander@webrtc.org
524b8f7304 GN: Implement voice engine, common audio, audio coding and audio processing
NOTICE: Assembly offsets generation for audio processing will
not be ported to GN and the process of removing them is tracked
in https://code.google.com/p/webrtc/issues/detail?id=3580.

The GN files are based upon the GYP files as of r7009.

BUG=3441
TESTED=Passing builds with:
gn gen out/Default --args="build_with_chromium=false" && ninja -C out/Default
gn gen out/Default --args="build_with_chromium=false is_debug=true" && ninja -C out/Default
gn gen out/Default --args="build_with_chromium=false aec_debug_dump=true" && ninja -C out/Default
gn gen out/Default --args="build_with_chromium=false aec_untrusted_delay_for_testing=true" && ninja -C out/Default
gn gen out/Default --args="build_with_chromium=false prefer_fixed_point=true" && ninja -C out/Default
gn gen out/Default --args="build_with_chromium=false os=\"android\" cpu_arch=\"arm\" is_clang=false" && ninja -C out/Default
gn gen out/Default --args="build_with_chromium=false os=\"android\" cpu_arch=\"arm\" arm_version=7 is_clang=false" && ninja -C out/Default

I don't know how to setup the mips toolchain to test the following, but it's out of scope for the GN effort for now:
gn gen out/Default --args="build_with_chromium=false cpu_arch=\"mipsel\" mips_dsp_rev=0" && ninja -C out/Default
gn gen out/Default --args="build_with_chromium=false cpu_arch=\"mipsel\" mips_dsp_rev=1" && ninja -C out/Default
gn gen out/Default --args="build_with_chromium=false cpu_arch=\"mipsel\" mips_dsp_rev=2" && ninja -C out/Default

Compilation of Chromium's 'all' target with src/third_party/webrtc
symlinked to the WebRTC checkout with this CL applied, both
with the default GN settings and using
--args="is_debug=false os=\"android\" cpu_arch=\"arm\""

R=andrew@webrtc.org, brettw@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7012 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-31 20:32:53 +00:00
andrew@webrtc.org
a22485eaf0 MIPS optimizations for AEC audio processing module
Added new optimizations for MIPS that were removed in r6797.
For more information about this see https://code.google.com/p/webrtc/source/detail?r=6797

R=andrew@webrtc.org, djordje.pesut@imgtec.com

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

Patch from Ljubomir Papuga <ljubomir.papuga@mips.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7010 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-29 17:51:28 +00:00
andrew@webrtc.org
af7fdfcde8 Add LTO support for Android Chromium.
This is to add support for a Link-Time Optimizations experiment in Android Chromium. As it is disabled by default, it won't change anything for most configurations.
BUG=chromium:407544
R=andrew@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7009 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-29 17:41:13 +00:00
bjornv@webrtc.org
df9fef6638 common_audio: Removed macro WEBRTC_SPL_DIV
The macro has no built-in divide by zero check. The only thing that is done is casting to int32_t.
In addition a bug was discovered where it was supposed to do a division with rounding, but instead did a division with truncation + addition by 2. This is corrected in this CL.

BUG=3348,3353
TESTED=locally on Linux
R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6998 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-28 12:57:32 +00:00
aluebs@webrtc.org
59a1b1b928 Fix the different samples per channel in aecdump
BUG=webrtc:3359
R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6996 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-28 10:43:09 +00:00
bjornv@webrtc.org
4f71e22bf9 Refactoring common_audio/signal_processing: Remove macro WEBRTC_SPL_UDIV
This macro is a direct use of the division operator without checking for division by zero. Hence, it is dangerous to use.
This CL replaces the macro with '/' at place.

BUG=3348,3353
TESTED=locally on linux and trybots
R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6976 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-26 10:25:10 +00:00
pbos@webrtc.org
047a46f8b4 Remove Android.mk build files.
These files are generally not maintained and break, some contain files
that don't exist anymore and do not build anymore. If we need to add
some of these back we should really set up a bot for them.

R=andrew@webrtc.org, glaznev@webrtc.org, henrike@webrtc.org
BUG=

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6974 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-26 08:48:51 +00:00
bjornv@webrtc.org
926707b167 Refactoring common_audio: Replace trivial multiplication macro
This multiplication macro literally use the '*' operator, so there is no need for it.

BUG=3348,3353
TESTED=locally on linux and trybots
R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6964 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-25 11:42:42 +00:00
bjornv@webrtc.org
6e71d17bc9 Refactoring common_audio/signal_processing: Replaces trivial macros
The macros WEBRTC_SPL_ADD_SAT_W16 and WEBRTC_SPL_ADD_SAT_W32 make direct use of the corresponding functions WebRtcSpl_AddSatW16() and WebRtcSpl_AddSatW32().
This CL replaces these macros in the code.

BUG=3348,3353
TESTED=locally on linux and trybots
R=kwiberg@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6960 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-25 07:44:52 +00:00
kwiberg@webrtc.org
584cd8da4b Fix WEBRTC_AEC_DEBUG_DUMP (broken by int16->float conversion)
And in the process, make it dump WAV files instead of raw PCM.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6959 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-25 06:26:04 +00:00
thakis@chromium.org
add54ad770 Convert nsx_core_neon.S to unified syntax.
That way, it builds with both gcc and clang's integrated assembler.
No intentional behavior change.

BUG=chromium:124610
R=andrew@webrtc.org, johannkoenig@google.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6945 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-21 02:23:26 +00:00
andrew@webrtc.org
71d9572e9c Minor bug fix and cosmetic changes in AEC MIPS optimizations.
Minor bug fix in WebRtcAec_FilterAdaptation_mips, which did not manifest with
gcc 4.7.2, but it did with version 4.9.0. While there, also made some cosmetic
changes to comply with Chromium coding style.

R=andrew@webrtc.org

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

Patch from Ljubomir Papuga <lpapuga@mips.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6931 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-19 15:42:50 +00:00
andrew@webrtc.org
a1ad844229 Precompute the AEC FFT tables, rather than initializing at run-time.
These global arrays are shared amongst all AEC instances, and were at
serious risk of data races. A Chromium TSAN bot recently caught this.

Also move the function pointer selection for optimization to
create-time. (Ideally this would only be done once.)

BUG=chromium:404133,1503
R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6922 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-18 19:02:51 +00:00
andrew@webrtc.org
d798095a37 replace inline assembly WebRtcNsx_PrepareSpectrumNeon by intrinsics.
The modification only uses the unique part of the spectrum (as is done for the C and asm code). It passes
byte to byte conformance test, and the single function performance
(if not specified, the code is compiled by GCC 4.6) on different
platforms:

| run 100k times             | cortex-a7 | cortex-a9 | cortex-a15 |
| use C as the base on each  |  (1.2Ghz) |  (1.0Ghz) |   (1.7Ghz) |
| CPU target                 |           |           |            |
|----------------------------+-----------+-----------+------------|
| C                          |      100% |      100% |       100% |
| Neon asm                   |       18% |       14% |        19% |
| Neon inline asm            |       31% |       25% |        27% |
| Neon intrinsic (GCC 4.6)   |       33% |       27% |        42% |
| Neon intrinscis (GCC 4.8)  |       17% |       14% |        19% |
| Neon intrinsics (LLVM 3.3) |       15% |       13% |        18% |

BUG=
R=andrew@webrtc.org

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

Patch from Joe Yu <joe.yu@arm.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6920 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-18 17:46:45 +00:00
bjornv@webrtc.org
820f8e9ca7 modules/audio_processing: Moves declaration of kDelayDiffOffsetSamples
audio_processing did not compile when aec_untrusted_delay_for_testing=1 was set. The constant kDelayDiffOffsetSamples was declared only for Mac when WEBRTC_UNTRUSTED_DELAY was automatically turned on.

Moving the declaration outside the ifdef makes it build with the flag on for any platform.

BUG=3673
TESTED=locally and trybots
R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6866 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-11 15:39:00 +00:00
bjornv@webrtc.org
96d8b0e69f Revert 6860 "SSE2 version of SubbandCoherence()"
> SSE2 version of SubbandCoherence()
> 
> The performance gain on a x86 laptop (Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz)
> reported by audioproc is ~3.3%
> 
> The output is bit exact.
> 
> R=bjornv@webrtc.org, cd@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/18779004
> 
> Patch from Scott LaVarnway <slavarnw@gmail.com>.

TBR=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6861 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-11 12:09:13 +00:00
bjornv@webrtc.org
0db82f337f SSE2 version of SubbandCoherence()
The performance gain on a x86 laptop (Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz)
reported by audioproc is ~3.3%

The output is bit exact.

R=bjornv@webrtc.org, cd@webrtc.org

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

Patch from Scott LaVarnway <slavarnw@gmail.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6860 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-11 10:38:31 +00:00
andrew@webrtc.org
fdbe1442c5 Use C functions in aec for MIPS
With GCC 4.9, the MIPS NDK toolchain has been changed to only support 16 spregs by default - the even-numbered ones. This has been changed to support the R6 MIPS architecture. While the old behaviour could be restored by adding "-modd-spreg", this would come with a performance hit because the kernel would emulate odd-numbered spregs and missing R2 instructions.
As a result of this change, the functions removed in this CL no longer compile as there are no longer enough spregs for the compiler to assign. So we are removing these functions and they will use the C implementation until the MIPS code is rewritten.

R=andrew@webrtc.org, ljubomir.papuga@gmail.com, pasko@chromium.org

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

Patch from Fabrice de Gans-Riberi <fdegans@chromium.org>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6797 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-29 14:39:10 +00:00
kwiberg@webrtc.org
e364ac902f AudioBuffer: Optimize const accesses to arrays that autoconvert int16<->float
Specifically, when someone asks for a const pointer to the int16
version of the array, there's no need to invalidate the float version
of that array, and vice versa. (But obviously, invalidation still has
to happen when someone asks for a non-const pointer.)

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6725 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-18 07:50:29 +00:00
andrew@webrtc.org
c145668dc8 Reduce runtime of RingBufferTest by a factor of 100.
This test was needlessly long.

TBR=pbos

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6724 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 23:16:44 +00:00
aluebs@webrtc.org
4065988108 Remove unused ExperimentalNS API in AudioProcessing
R=andrew@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6718 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 11:32:09 +00:00
kwiberg@webrtc.org
2b6bc8d84f AudioBuffer: Eliminate the SplitChannelBuffer class
It's just a container for two IFChannelBuffers, and doesn't earn its
keep. The main problem is that the number of methods it needs that
just forward calls to either of its two IFChannelBuffers was already
large, and was about to grow.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6717 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 09:46:37 +00:00
aluebs@webrtc.org
2561d52460 Simplify AudioBuffer::mixed_low_pass_data API
R=andrew@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6715 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 08:27:39 +00:00
kwiberg@webrtc.org
af93fc08a1 AudioBuffer: Let ChannelBuffer handle bounds checking of channel parameter
R=aluebs@webrtc.org, minyue@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6714 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 08:18:33 +00:00
kwiberg@webrtc.org
e8ea33ccb1 nrsh1 is written before tmp321 is read, so needs to be earlyclobber
Otherwise, the compiler is allowed to put them in the same register
under the assumption that all inputs are read before any
(non-earlyclobber) output is written, which in this case would result
in nrsh2 being corrupted.

BUG=3439
R=aluebs@webrtc.org, ljubomir.papuga@gmail.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6700 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-16 08:26:48 +00:00
tommi@webrtc.org
eec6ecdb1e Landing pkasting's webrtc fixes for MSVC level 4 warnings in WebRTC.
---

Fixes for re-enabling more MSVC level 4 warnings: webrtc/ edition

This contains fixes for the following sorts of issues:
* Possibly-uninitialized local variable
* Signedness mismatch
* Assignment inside conditional

This also contains a small number of other cleanups to nearby code. In
particular several warning-disables for MSVC are removed because they don't seem
to be necessary (either that warning is not enabled or the code does not trigger
it).

BUG=crbug.com/81439
TEST=none
R=henrika@webrtc.org, pkasting@chromium.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6667 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 19:09:59 +00:00
aluebs@webrtc.org
fb2e7c22a0 Document that channels are stored contiguously in AudioBuffer
R=andrew@webrtc.org, kwiberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6661 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 11:40:48 +00:00