Commit Graph

65 Commits

Author SHA1 Message Date
e468bc9e60 Rename _t struct types in audio_processing.
_t names are reserved in POSIX.

R=bjornv@webrtc.org
BUG=162

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7943 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-18 09:11:33 +00:00
c5ebbd98f5 Support 48kHz in Noise Suppression
Doing the same for the 16-24kHz band than was done in the 8-16kHz.
Results look and sound as nice.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7865 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-10 19:30:57 +00:00
d1fac61e8f Remove need for assembly offset generation in aecm and ns module.
All *neon.S files in aecm and ns modules have been removed. We need no
assembly offset generation now.

Pass byte to byte conformance test for aecm and ns test in audioproc
between new NEON (written in intrinsics) version and C version on both
ARMv7 and ARM64.

BUG=3580
R=andrew@webrtc.org, jridges@masque.com

Change-Id: I05d43d0c04d00bead65ca8c8fda25f0a42394b2b

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

Patch from Zhongwei Yai <zhongwei.yao@arm.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7800 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-03 17:54:38 +00:00
a56a2c57cf Enabling building with NEON on ARM64
This patch enables NEON on ARM64 platform. Passed building both on
Android ARMv7 and Android ARM64.

BUG=3580
R=andrew@webrtc.org, jridges@masque.com

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

Patch from Zhongwei Yao <zhongwei.yao@arm.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7751 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-26 17:01:40 +00:00
d024f759a8 clear asm code and unused functions in audio processing module
BUG=
R=andrew@webrtc.org

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

Patch from Zhongwei Yao <zhongwei.yao@arm.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7671 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-10 17:19:57 +00:00
b81e304ac0 replace inline assembly WebRtcNsx_AnalysisUpdate by intrinsics.
The modification only uses the unique part of the analysis_update
 function. Pass byte to byte conformance test on both ARMv7 and AArch64,
 and the single function performance is similar with original assembly
 version on different platforms. If not specified, the code is compiled
 by GCC 4.6. The result is the "X version / C version" ratio, and the
 less is better.

| run 100k times             | cortex-a7 | cortex-a9 | cortex-a15 |
| use C as the base on each  |  (1.2Ghz) |  (1.0Ghz) |   (1.7Ghz) |
| CPU target                 |           |           |            |
|----------------------------+-----------+-----------+------------|
| Neon asm                   |    15.61% |    20.15% |     14.89% |
| Neon inline asm (LLVM 3.4) |    25.98% |    33.96% |     18.18% |
| Neon intrinsics (GCC 4.6)  |    22.06% |    27.01% |     19.24% |
| Neon intrinsics (GCC 4.8)  |    17.28% |    18.23% |     18.55% |
| Neon intrinsics (LLVM 3.4) |    21.02% |    19.98% |     16.76% |

BUG=
R=andrew@webrtc.org

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

Patch from Zhongwei Yao <zhongwei.yao@arm.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7596 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-03 17:17:51 +00:00
818c9f9e14 replace inline assembly WebRtcNsx_SynthesisUpdateNeon by intrinsics.
The modification only uses the unique part of the synthesis_update
function. Pass byte to byte conformance test both on ARMv7 and ARMv8,
and the single function performance is similar with original assembly
version on different platforms (if not specified, the code is compiled
by GCC 4.6):

| run 100k times             | cortex-a7 | cortex-a9 | cortex-a15 |
| use C as the base          |  (1.2Ghz) |  (1.0Ghz) |   (1.7Ghz) |
| (the smaller the better)   |           |           |            |
|----------------------------+-----------+-----------+------------|
| C                          |      100% |      100% |       100% |
| Neon asm                   |    15.93% |    17.01% |     12.50% |
| Neon inline asm            |    27.74% |    31.41% |     14.64% |
| Neon intrinsics (GCC 4.8)  |    17.84% |    14.10% |     13.84% |
| Neon intrinsics (LLVM 3.4) |    16.63% |    14.01% |     12.98% |

BUG=3580
R=andrew@webrtc.org

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

Patch from Zhongwei Yao <zhongwei.yao@arm.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7586 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-31 22:07:35 +00:00
ffeaeed8c1 Make NSinst_t* const and rename to self in ns_core
This is only to make the code more readable and maintainable.
It generates a bit-exact output.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7550 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-28 22:52:09 +00:00
8b1b23f8f8 Make local functions static and dropWebRtcNs_ in ns_core
This is only to make the code more readable and maintainable.
It generates bit-exact output.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7548 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-28 21:06:57 +00:00
28b54671cb Make all comments whole sentences in ns_core
This is done to make the code more readable.
It generates bit-exact output.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7547 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-28 20:56:53 +00:00
7e19a11a71 Break out WebRtcNs_ComputeDdUpdate function in ns_core
This is done in order to make the code more readible and maintainable.
It generates bit-exact output.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7514 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-23 19:54:33 +00:00
f8ea0d5518 Break out WebRtcNs_UpdateNoise function in ns_core
This is done in order to make the code more readible and maintainable.
It generates bit-exact output.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7513 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-23 19:49:42 +00:00
799e88ae19 Break out FFT function in ns_core
This is done in order to make the code more readible and maintainable.
This introduces an error of only +1 and -1.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7512 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-23 19:36:42 +00:00
8454ad88ed Break out ComputeSnr function in ns_core
This is done in order to make the code more readible and maintainable.
The output is bit-exact.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7511 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-23 19:34:14 +00:00
67cf1d742b Break out WebRtcNs_Windowing function in ns_core
This is done in order to make the code more readible and maintainable.
This introduces only +1 and -1 errors.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7488 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-21 22:35:40 +00:00
0e7099244c Break out WebRtcNs_Energy function in ns_core
This is done in order to make the code more readible and maintainable.
This generates bit-exact output.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7487 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-21 22:14:10 +00:00
7634c09406 Break out WebRtcNs_IFFT function in ns_core
This is done in order to make the code more readible and maintainable.
This creates bit-exact output.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7486 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-21 21:27:00 +00:00
333e2556ed Break out WebRtcNs_UpdateBuffer function in ns_core
This is done in order to make the code more readible and maintainable.
It generates bit-exact output.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7483 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-21 20:33:09 +00:00
f87c0aff7f audio_processing: Replaced macro WEBRTC_SPL_RSHIFT_W32 with >>
Also includes a typo in a comment.
Affects
* aecm
* hpf

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7456 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-15 12:51:23 +00:00
8dc00d76af audio_processing/ns: Replaced macro WEBRTC_SPL_RSHIFT_W32 with >>
Affects fixed point version of Noise Suppression.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7454 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-15 09:31:40 +00:00
b6af4283ca Adjust speech probability in NS when echo
The average speech probability for the higher band is multiplied by the quotient of the process and analyze powers, to avoid thinking that suppressed echo is speech. In order to do this both magnitudes, alanyze and process, needed to be stored. This also was used to calculate different previous STSA estimates for analyze and process.
This CL was tested on two long team member recordings (bjornv and kwiberg) and the noisiest (5) recordings from the QA set.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7437 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-13 20:48:05 +00:00
d4fe824862 audio_processing: Replaced macro WEBRTC_SPL_RSHIFT_W16 with >>
The implementation of WEBRTC_SPL_RSHIFT_W16 is simply >>. This CL removes the macro usage in audio_processing and signal_processing.

Affected components:
* aecm
* agc
* nsx

Indirectly affecting (through signal_processing changes)
* codecs/cng
* codecs/isac/fix
* codecs/isac/main

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7432 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-13 13:01:13 +00:00
348eac641e audio_processing: Replaced WEBRTC_SPL_RSHIFT_U32 with >>
A trivial macro that is replaced. Affected components:
* AGC
* NSx

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7366 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-02 08:07:05 +00:00
23ec8372a6 audio_processing: Removed usage of macro WEBRTC_SPL_MUL
WEBRTC_SPL_MUL is a trivial multiplication after casting to int32_t. This is already taken care of by the compiler which makes the macro unnecessary.

Affected components:
* AGC
* NSx

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7330 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-30 09:29:28 +00:00
750423c722 audio_processing: Replaced trivial macro WEBRTC_SPL_LSHIFT_W32 with <<
Affected components:
* AECM
* AGC
* HPF
* NSx

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7329 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-30 09:26:36 +00:00
d71118194f audio_processing: Replaced macro WEBRTC_SPL_LSHIFT_W16 with <<
A trivial macro that serves no purpose. Affected components are:
* audio_processing/nsx
* audio_processing/agc
* audio_processing/aecm
* common_audio/LpcToReflCoef

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7321 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-29 10:56:27 +00:00
384d05f362 Remove the different block lengths in ns_core
Relanding the CL: https://webrtc-codereview.appspot.com/30539004/
It had to be reverted because some development code was uploaded by mistake.

TBR=bjornv@webrtc.org

BUG=webrtc:3811

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7307 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-26 14:41:19 +00:00
5088377d70 Revert 7297 "Remove the different block lengths in ns_core"
> Remove the different block lengths in ns_core
> 
> This CL has bit-exact output.
> 
> What it does:
>   * Remove the blockLen10Ms, as it is hardcoded to be equal to blockLen.
>   * This makes outLen to be always zero, so it can be removed too.
>   * It also avoids the need to have an outBuf, because it is not used, so it is also removed
>   * Replaced blockLen10Ms by blockLen everywhere, since they were hardcoded to be equal.
>   * We don't need to check if outLen is zero, because it always is, so it was removed.
>   * Of course, the outBuf needs no initial set or copying around, because it is not used.
> 
> BUG=webrtc:3811
> R=bjornv@webrtc.org, kwiberg@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/30539004

TBR=aluebs@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7306 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-26 14:33:08 +00:00
5f3965783b Remove the different block lengths in ns_core
This CL has bit-exact output.

What it does:
  * Remove the blockLen10Ms, as it is hardcoded to be equal to blockLen.
  * This makes outLen to be always zero, so it can be removed too.
  * It also avoids the need to have an outBuf, because it is not used, so it is also removed
  * Replaced blockLen10Ms by blockLen everywhere, since they were hardcoded to be equal.
  * We don't need to check if outLen is zero, because it always is, so it was removed.
  * Of course, the outBuf needs no initial set or copying around, because it is not used.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7297 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-25 13:53:43 +00:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
721f970cba common_audio: Removes macro WEBRTC_SPL_LSHIFT_U16
We should avoid macros in general (see style guide) and the shift ones are particular dangerous since they assume that the user apply a non-negative shift.

Related CL: https://webrtc-codereview.appspot.com/16669004

BUG=3348,3353
TESTED=trybots and manually on linux
R=turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6444 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-16 10:30:14 +00:00
18026abd82 common_audio/signal_processing: Removes macro WEBRTC_SPL_RSHIFT_U16
This macro is only used at a few places and implies a cast to uint16_t before right shifting. All places already use uint16_t. Further, the amount of shifts applied in the macro has no sanity check for negativity, makes the macro dangerous to use.

BUG=3348,3353
TESTED=trybots and manually
R=kwiberg@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6393 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-11 06:53:20 +00:00
12cd443752 Noise suppression: Change signature to work on floats instead of ints
Internally, it already worked on floats. This patch just changes the
signature of a bunch of functions so that floats can be passed
directly from the new and improved AudioBuffer without converting the
data to int and back again first.

(The reference data to the ApmTest.Process test had to be modified
slightly; this is because the noise suppressor comes immediately after
the echo canceller, which also works on floats. If I truncate to
integers between the two steps, ApmTest.Process doesn't complain, but
of course that's exactly the sort of thing the float conversion is
supposed to let us avoid...)

BUG=
R=aluebs@webrtc.org, bjornv@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6385 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-10 11:13:09 +00:00
ea9392d5eb MIPS optimizations for NS audio processing module
R=andrew@webrtc.org

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5393 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-16 07:22:01 +00:00
d030972139 Remove unused kPowTableFrac which causes anroid clang build failure.
http://build.chromium.org/p/tryserver.chromium/builders/android_clang_dbg/builds/84322/steps/compile/logs/stdio

R=niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4981 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-16 20:32:09 +00:00
b6a6a24fda Updated WebRtcNsx_PrepareSpectrumNeon() in accordance with the new real FFT interface in APM. For reference, you can check https://webrtc-codereview.appspot.com/1830004/diff/92001/webrtc/modules/audio_processing/ns/nsx_core.c, line 594 "static void PrepareSpectrumC()".
Tested with audioproc. Bit exact.

R=andrew@webrtc.org, johannkoenig@google.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4411 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-26 16:24:34 +00:00