Commit Graph

863 Commits

Author SHA1 Message Date
342353780d Consolidate common_audio into a single target.
In principle should reduce gyp processing time, but the difference was not measurable. In any case, it's a good simplification that aligns with having a single common_video target.

R=bjornv@webrtc.org, kma@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3928 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-30 23:43:26 +00:00
dff69c56b0 Add AEC suppression level option to audioproc.
TBR=bjornv

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3927 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-30 23:01:09 +00:00
1acb3b33bc Add comfort noise disabling and routing mode selection to audioproc.
TBR=bjornv

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3907 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-26 00:39:27 +00:00
b7192b8247 WebRtc_Word32 -> int32_t in audio_processing/
BUG=314

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3809 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-10 07:50:54 +00:00
19da719a5f Resolves TSan v2 reports data races in voe_auto_test.
--- Note that I will add more fixes to this CL ---

BUG=1590

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3770 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-05 14:34:57 +00:00
c83a00ad49 Add some VoE and AudioProcessing mocks.
Includes a bit of shared helpers in fake_common.h.

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3722 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-25 21:20:38 +00:00
31829a7baf Fixed initialization of SPL in echo_control_mobile.
BUG=8403556 (a possible fix)
Review URL: https://webrtc-codereview.appspot.com/1220004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3687 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-19 00:25:01 +00:00
04ecd49ec5 Truncated delay quality to avoid negative return values
This forces the output of last_delay_quality to the interval [0, 1] in Q14.

BUG=none
TESTED=audioproc_unittest, trybot

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3675 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-18 14:15:12 +00:00
33f22d01f0 Fixed a crash issue in NSX module.
Run time error message for function WebRtcNsx_PrepareSpectrumNeon():  "Bad access at:  0x4f535c:  vst1.16{d16, d17, d18, d19}, [r2], r12"

Cause: "anaLen" was defined as int16_t and should have been read as such in assembly function WebRtcNsx_PrepareSpectrumNeon().

Fix: Changed anaLen's definition to int in the header file instead.

BUG=b/8382174
Review URL: https://webrtc-codereview.appspot.com/1202004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3669 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-14 21:44:12 +00:00
2951a6df4a Fixed an assembly code error in AECM for ARMv7.
Possibly related to an AECM quality issue encountered at Chrome testing.
No bug was logged.
Review URL: https://webrtc-codereview.appspot.com/1160006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3631 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-07 18:25:34 +00:00
52b57cc0d5 Fix debug file buffer bug introduced in r3574.
This correctly uses int16_t rather than float. Only affects the debug
file buffer, not the production code path.

TBR=bjornv

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3626 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-07 00:45:50 +00:00
91d11b3cdd Adds new AEC API to audio_processing.
One unit test added.
Tested with audioproc_unittest and trybots

TEST=none
BUG=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3613 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-05 16:53:09 +00:00
7f95732fe2 AEC Refactoring: Removes lint warning
Changed inlude order.

TBR=andrew@webrtc.org
TEST=none
BUG=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3604 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-04 23:47:39 +00:00
6be1e934ad Properly error check calls to AudioProcessing.
Checks must be made with "!= 0", not "== -1". Additionally:
* Clean up the function calling into AudioProcessing.
* Remove the unused _noiseWarning.
* Make the other warnings bool.

BUG=chromium:178040

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3590 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-01 18:47:28 +00:00
78693fe37c Return an error when greater than 16 kHz is used with AECM.
BUG=chromium:178040

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3587 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-01 16:36:19 +00:00
132c15de30 AEC Refactoring:
* Adds pointer to low level AecCore struct.
* Adds a simple unit test of this new call.

Tested with audioproc_unittest, trybots

TEST=none
BUG=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3577 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-27 21:03:41 +00:00
83561fb173 Fixed a bug in WebRtcNsx_PrepareSpectrumNeon() for NS in ARM Neon platform.
No written bug report.

Tested with Nexus-S. Issue disappeared with the change.
Review URL: https://webrtc-codereview.appspot.com/1126006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3575 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-27 01:16:44 +00:00
91f325586d Refactor WebRtc_CreateBuffer to return the instance.
Review URL: https://webrtc-codereview.appspot.com/1140005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3574 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-27 00:35:06 +00:00
9fbd9ca849 Force a memcpy directly from the AEC ring buffer.
Review URL: https://webrtc-codereview.appspot.com/1140004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3570 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-25 23:31:56 +00:00
9ae1354e25 Refactor ring_buffer interface, add a feature and a test.
* Add a RingBuffer typedef.
* Add the ability to force a memcpy by passing a null ptr. In some cases,
  we know we want a memcpy. This allows us to skip a potential
  intermediate memcpy.
* Add a stress test.

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3567 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-25 17:07:35 +00:00
2f9bd247ad Ported assembly coding in APM from Android to iOS.
Bugs=none
Test=trybots, and offline file bit-exact tests.
Review URL: https://webrtc-codereview.appspot.com/1066009

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3563 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-23 04:16:59 +00:00
60f83131e4 AEC refactoring: Moved typedefs to _internal.h
* This was actually part of r3553
* Tested with audioproc_unittest, trybots

TBR=andrew@webrtc.org
TEST=none
BUG=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3556 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-21 16:12:24 +00:00
56a9ec30e9 Refactoring AEC: AecCore struct made private
* Added aec_core_internal.h for private variables.
* Moved aec_t struct to aec_core_internal.h
* Name change aec_t -> AecCore
* Moved additional declarations to aec_core_internal.h
* Tested with audioproc_unittest and trybots

TEST=none
BUG=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3553 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-20 22:38:47 +00:00
71e91f3b64 Refactor AEC: PowerLevel
* Style changes
* Tested with audioproc_unittest and trybots

TEST=none
BUG=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3551 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-20 19:24:50 +00:00
4d1cfae622 Added a pointer getter to the system_delay variable.
Tested with audioproc_unittest, trybots

TEST=None
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3549 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-20 17:31:38 +00:00
47b274de44 Refactoring AEC: Added a SetConfigCore function
* Configuraion parameters now passed down the AEC Core struct.
* Tested with audioproc_unittest and on trybots.

TEST=none
BUG=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3548 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-20 17:09:47 +00:00
716fd90ff2 Moved out buffer handling to ProcessFrame()
Tested with audioproc_unittest, trybots and verified bit exactness on recording data base.

TEST=none
BUG=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3547 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-20 16:59:41 +00:00
ee7202f7a4 Removed unused get_config function. The configuration is already stored and handled in the audio processing module, so there is no need for this functionality.
Tested with audioproc_unittest and on trybots.

TEST=none
BUG=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3546 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-20 16:36:59 +00:00
0a480cbe4d Added getter for far_time_buf in AEC. Only used in AEC debug dump.
TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3539 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-19 21:41:27 +00:00
5fc829200c This refactoring CL moves the nlp_mode member value from aecpc_t to aec_t, since it it never used at that level. Further, I removed two suppression variables by depending on nlp_mode directly.
TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3538 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-19 21:06:52 +00:00
cea70f4055 * Name change
* Removed WebRtcAec_ function name prepending on private function.

TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3537 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-19 21:03:10 +00:00
b4cd342eb9 This refactoring CL contains an API to get low level echo metrics stats.
TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3523 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-15 18:40:34 +00:00
21a2fc902d This Cl includes
* A getter for echo_state
* Style changes, such as changes to int where appropriate

TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3522 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-15 17:01:03 +00:00
325f625137 Moved the actual calculations to aec_core to avoid passing up low level members.
TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3521 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-15 15:21:02 +00:00
6f6acd9f80 Duplicated sampling frequency multiplier to aecpc_t struct to avoid a getter.
TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3517 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-14 21:17:12 +00:00
7267ffde56 Moved debug file handling to aec_core from echo_cancellation.c. This removes dependency on low level member variables.
TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3515 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-14 17:56:23 +00:00
3e10249f20 Added delay estimation test to audio processing unit tests.
The test verifies that we get proper delay metrics when inserting delayed versions of the same file to far-end and near-end.
Failure of the test has been verified through a missmatch between AEC delay buffer size and test buffer size.
Also added a missing file rewind to another test and removed some lint warnings.

TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3514 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-14 15:29:09 +00:00
00ab7cf4fd Fix perf output for audioproc and iSAC fixed-point tests
The measurement and trace entries had been mixed up in the calls to webrtc::test::PrintResult, resulting in the plotted graphs were named after the metric. The parameter names are quite confusing which probably led to this.

BUG=none
TEST=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3496 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-02-11 12:33:03 +00:00
ac46c6dac3 Replaced relative path to reference from <(webrtc_root).
Changed to proper include paths in AECM and NSX.
Tested on trybots.

BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3450 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-31 21:06:16 +00:00
7ded92b71e Re-committing r3428
TBR=ajm
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3436 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-30 16:16:59 +00:00
e12b1b562c Revert 3428
> Delay estimator wrapper API changes. This should finalize the changes to delay estimator making it work for multi-probe.
> 
> The changes are summarized here:
> 
> delay_estimator.*
> -----------------
> Replaced assert() with correct error check. This is consistent with previous versions of the delay_estimator, i.e., to check for valid parameters where they are actually used and not high up in a wrapper layer.
> 
> delay_estimator_internal.h
> --------------------------
> Pulled out the far-end part of DelayEstimator struct and put it in DelayEstimatorFarend. The only common parameter is spectrum_size, which we store in both and thereby avoiding having a Farend pointer in DelayEstimator.
> 
> delay_estimator_wrapper.*
> -------------------------
> Added and updated descriptions. From Free(), Create(), Init() the far-end parts have been put in separate Farend versions. Same goes for the Process() which now has an AddFarSpectrum() version.
> The flow of calls should be something like (in pseudo-code)
> 
> far* = CreateFarend(history_size)
> near* = Create(far, lookahead)
> InitFarend(far)
> Init(near)
> while call ongoing
>   AddFarSpectrum(far, far_spectrum)
>   Process(near, near_spectrum)
> end while
> Free(near)
> FreeFarend(far)
> 
> delay_estimator_unittest.cc
> ---------------------------
> Added farend support setting up calls as mentioned above.
> 
> aecm_core.*
> -----------
> Cleaned up some lint warnings.
> Added delay_estimator_farend pointer. Called Create(), Init() and Free() in above mentioned order.
> If AddFarSpectrumFix() was not successfully done, we end and return -1. This is what we would have done for Process().
> 
> aec_core.*
> ----------
> Cleaned up some lint warnings.
> Added delay_estimator_farend pointer. Calls in proper order. Since we only use the delay estimator for logging there is no error handling. We only call Process() if AddFarSpectrum() was successful though.
> 
> TEST=audioproc_unittest, trybots
> BUG=None
> 
> Review URL: https://webrtc-codereview.appspot.com/1076006

TBR=bjornv@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/1062008

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3429 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-29 21:30:26 +00:00
61ec7daa57 Delay estimator wrapper API changes. This should finalize the changes to delay estimator making it work for multi-probe.
The changes are summarized here:

delay_estimator.*
-----------------
Replaced assert() with correct error check. This is consistent with previous versions of the delay_estimator, i.e., to check for valid parameters where they are actually used and not high up in a wrapper layer.

delay_estimator_internal.h
--------------------------
Pulled out the far-end part of DelayEstimator struct and put it in DelayEstimatorFarend. The only common parameter is spectrum_size, which we store in both and thereby avoiding having a Farend pointer in DelayEstimator.

delay_estimator_wrapper.*
-------------------------
Added and updated descriptions. From Free(), Create(), Init() the far-end parts have been put in separate Farend versions. Same goes for the Process() which now has an AddFarSpectrum() version.
The flow of calls should be something like (in pseudo-code)

far* = CreateFarend(history_size)
near* = Create(far, lookahead)
InitFarend(far)
Init(near)
while call ongoing
  AddFarSpectrum(far, far_spectrum)
  Process(near, near_spectrum)
end while
Free(near)
FreeFarend(far)

delay_estimator_unittest.cc
---------------------------
Added farend support setting up calls as mentioned above.

aecm_core.*
-----------
Cleaned up some lint warnings.
Added delay_estimator_farend pointer. Called Create(), Init() and Free() in above mentioned order.
If AddFarSpectrumFix() was not successfully done, we end and return -1. This is what we would have done for Process().

aec_core.*
----------
Cleaned up some lint warnings.
Added delay_estimator_farend pointer. Calls in proper order. Since we only use the delay estimator for logging there is no error handling. We only call Process() if AddFarSpectrum() was successful though.

TEST=audioproc_unittest, trybots
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3428 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-29 18:55:59 +00:00
63e0964039 Fix webrtc compilation errors for Chrome Win64
Mostly disabling warnings in the gyp files.

BUG=1348
BUG=http://crbug.com/166496
BUG=http://crbug.com/167187

Review URL: https://webrtc-codereview.appspot.com/1063011
Patch from Justin Schuh <jschuh@chromium.org>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3423 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-29 06:45:22 +00:00
8526459a2e Added tests for multiple near-end support.
TEST=trybots, audioproc_unittest
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3417 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-25 22:33:17 +00:00
57f3a11958 Short CL: only name change.
From |handle| to |self| for consistency.

BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3416 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-25 22:02:15 +00:00
94c213af1a Separated far-end handling in BinaryDelayEstimator.
This CL is one step in a larger change of the DelayEstimator where we will open up for multiple near-end signals.

This particular CL separates the low level far-end parts without affecting the usage externally. This is a first step towards separating the far-end and near-end parts giving the user the control.

BUG=None
TEST=audioproc_unittests, trybots

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3415 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-25 15:53:41 +00:00
16d540eff1 Fixed text relocation code related to ARM assembly code.
Refer to WebRTC issue 1300.
Review URL: https://webrtc-codereview.appspot.com/1055004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3409 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-25 03:18:05 +00:00
ae1a58bba4 Replace AudioFrame's operator= with CopyFrom().
Enforce DISALLOW_COPY_AND_ASSIGN to catch offenders.

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3395 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-22 04:44:30 +00:00
bb599b7089 This CL includes part of changes in a larger one. The final goal is to allow multiple delay estimators using the same reference (far-end) to save computational complexity.
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3391 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-18 23:16:46 +00:00
a2d8b75f29 An API to get the internal estimation quality in the delay estimator has been added. Unit tests have been updated. There is no impact to other parts in WebRTC.
BUG=None

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3390 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-18 21:54:15 +00:00