28 Commits

Author SHA1 Message Date
henrika@webrtc.org
6b02eea6ac Removes parts of the webrtc::VoEFile sub API as part of a clean-up operation where the goal is to remove unused APIs.
BUG=3206
R=niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6103 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-12 12:24:10 +00:00
andrew@webrtc.org
e44a84d851 Only clamp to 16 kHz when AECM is enabled.
Otherwise we could needlessly downsample to 16 kHz (rather than 32 kHz)
when HW AEC is used.

BUG=3259
R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6033 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-30 18:58:23 +00:00
andrew@webrtc.org
8f69330310 Replace scoped_array<T> with scoped_ptr<T[]>.
scoped_array is deprecated. This was done using a Chromium clang tool:
http://src.chromium.org/viewvc/chrome/trunk/src/tools/clang/rewrite_scoped_ar...

except for the few not-built-on-Linux files which were updated manually.

TESTED=trybots
BUG=2515
R=niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5985 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-25 23:10:28 +00:00
henrika@webrtc.org
66803489f9 Removes parts of the VoEBase sub API as part of a clean-up operation where the goal is to remove unused APIs.
BUG=3206
R=henrik.lundin@webrtc.org, juberti@webrtc.org, niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5928 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-17 10:45:01 +00:00
andrew@webrtc.org
40ee3d07ed Consolidate audio conversion from Channel and TransmitMixer.
Replace the two versions with a single DownConvertToCodecFormat. As
mentioned in comments, this could be further consolidated with
RemixAndResample but we should write a full audio converter class in
that case.

Along the way:
- Fix the bug present in Channel::Demultiplex with mono input and a
stereo codec.
- Remove the 32 kHz max from the OnDataAvailable path. This avoids a
48 -> 32 -> 48 conversion when VoE is passed 48 kHz audio; instead we
get a straight pass-through to ACM. The 32 kHz conversion is still
needed in the RecordedDataIsAvailable path until APM natively supports
48 kHz.
- Merge resampler improvements from ACM1 to ACM2. This allows ACM to
handle 44.1 kHz audio passed to VoE and was originally done here:
https://webrtc-codereview.appspot.com/1590004
- Reuse the RemixAndResample unit tests for DownConvertToCodecFormat.
- Remove unused functions from utility.cc.

BUG=3155,3000,b/12867572
TESTED=voe_cmd_test using both the OnDataAvailable and
RecordedDataIsAvailable paths, with a captured audio format of all
combinations of {44.1,48} kHz and {1,2} channels, running through all
codecs, and finally using both ACM1 and ACM2.

R=henrika@webrtc.org, turaj@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5843 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-03 21:56:01 +00:00
henrika@webrtc.org
620d444c0b Extends max sample rate from 96kHz to 192kHz on the input side.
TEST=apprtc in Chrome using this WebRTC version and a device on Windows which can capture at 192kHz
BUG=725
R=andrew@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5828 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-02 07:22:34 +00:00
henrika@webrtc.org
944cbeb292 Resolves TSan v2 warnings in voe_auto_test.
See bug report for details.

BUG=1590
R=tommi@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5714 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-18 10:32:33 +00:00
andrew@webrtc.org
75dd2885c5 Add an interface for accepting keypress signals to AudioProcessing.
R=aluebs@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5529 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-11 20:52:30 +00:00
henrikg@webrtc.org
c693704cc2 Move out typing detection to its own class.
This will allow an embedder to use it directly.

Adding inertia/hangover time between updates of the reported detection status to the algorithm, controlled by a parameter. That is usually desired and this way a consumer of
the class don't have to implement that. (VoiceEngine will let it be 1, which results in the same behavior as before, and keep controlling the hangover itself.)

R=andrew@webrtc.org, niklas.enbom@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5462 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-30 09:50:46 +00:00
andrew@webrtc.org
023cc5abc7 Minor voice engine improvements around AGC.
- Remove one unneeded lock in CaptureLevel(), as the call to this
method should always come on the same thread as PrepareDemux().
- Remove check on analog AGC before doing volume calculations. Saves a
bit of code. Instead check if the incoming volume is set to zero, which
is a potentially common occurrence as it indicates no volume is
available.

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

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5366 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-11 01:25:53 +00:00
andrew@webrtc.org
60730cfe3c Remove the requirement to call set_sample_rate_hz and friends.
Instead have ProcessStream transparently handle changes to the stream
audio parameters (sample rate and channels). This removes two locks
per 10 ms ProcessStream call taken by VoiceEngine (four total with the
audio level indicator.)

Also, prepare future improvements by having the splitting filter take
a length parameter. This will allow it to work at different sample
rates. Remove the useless splitting_filter wrapper.

TESTED=voe_cmd_test with audio processing enabled and switching between
codecs; unit tests.

R=aluebs@webrtc.org, bjornv@webrtc.org, turaj@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5346 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-07 17:45:09 +00:00
andrew@webrtc.org
6c264cc92e Clean up AudioProcessing defaults and errors.
- Remove unneeded #defines and switch the remainder to consts.
- All AudioProcessing components are disabled by default, so remove
explicit disables.
- AudioProcessing uses a rational 16 kHz mono default, so no need to
explictly initialize.
- Add assert(false) to real-time errors which should not occur.

TESTED=trybots
R=bjornv@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4924 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-04 17:54:09 +00:00
jiayl@webrtc.org
bf00740c92 Adds a new voice engine warning for the typing noise off state.
The old VE_TYPING_NOISE_WARNING is unchanged and fired whenever typing noise is detected.
The new VE_TYPING_NOISE_OFF_WARNING is fired when typing noise was detected and is gone now.
This is necessary for converting the typing state to a PeerConnection stats.

R=niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4770 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-17 18:09:20 +00:00
pbos@webrtc.org
676ff1ed89 Ref-counted rewrite of ChannelManager.
The complexity of the last ChannelManager and potentially usage of it as well caused race conditions and deadlocks in loopback voe_auto_test. This ref-counted solution takes no long-term locks, uses less locks overall and is significantly easier to understand.

ScopedChannel has been split up into a ChannelOwner with a reference to a channel and an Iterator over ChannelManager. Previous code was really used for both things. ChannelOwner is used as a shared pointer to a channel object, while an Iterator should work as expected.

BUG=2081
R=tommi@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4502 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-07 17:57:36 +00:00
xians@webrtc.org
8fff1f065e Merge r4394 from stable to trunk.
r4326 was mistakenly committed to stable, so this is to re-merge back to trunk.

Fixed the AGC and interface problems on the new path.

In order to make the AGC work properly, we need to cache the volume value passed
by the callback, compare it with the value returned by
shared->transmit_mixer()->CaptureLevel(). If they are the same, we need to
return 0 to indicate no volume needs changing, otherwise return the new volume.
By doing this, we avoid setting the volume all the same, which allows the users
to change the volume manually.

This patch also fixes some minor issues with the interfaces too: make the int
channel[] const, and correct the order of the input params in
channel::Demultiplex.

R=tommi@webrtc.org

BUG=[2134]
TEST=compile && manual AGC test

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4450 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-31 16:27:42 +00:00
xians@webrtc.org
2f84afad30 Merge r4326 from stable to trunk.
r4326 was mistakenly committed to stable, so this is to re-merge back to trunk.

Add new interface to support multiple sources in webrtc.
CaptureData() will be called by chrome with a flag |need_audio_processing| to
indicate if the data needs to be processed by APM or not. Different from the old
interface that will send the data to all voe channels, the new interface will
specify a list of voe channels that the data is demultiplexing to.

R=tommi@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4449 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-31 16:23:37 +00:00
pbos@webrtc.org
d900e8bea8 Proper spacing for end-of-namespace comments.
BUG=
R=mflodman@webrtc.org, tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4293 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-03 15:12:26 +00:00
pbos@webrtc.org
9213521ea9 Remove const for plain data types in voice_engine/
BUG=1644
R=henrikg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4018 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-05-14 08:31:39 +00:00
niklas.enbom@webrtc.org
3be565b502 Refactoring for typing detection
R=henrika@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3976 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-05-07 21:04:24 +00:00
andrew@webrtc.org
28e82bfec6 Replace Resampler with PushResampler in transmit_mixer.
* VoE can now exchange 44.1 kHz audio with AudioDevice.
* Changes still required in AudioDevice to remove the 44 kHz workarounds and
enable native 44.1 kHz.

BUG=webrtc:1395
TESTED=voe_cmd_test loopback running through codecs using all combinations of {8, 16, 32} kHz and {1, 2} channels, and Opus (48 kHz, stereo)
R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3930 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-05-02 00:30:36 +00:00
pbos@webrtc.org
6141e13873 WebRtc_Word32 -> int32_t in voice_engine/
BUG=314

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3792 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-09 10:09:10 +00:00
henrika@webrtc.org
bb8ada686e TSan v2 reports data races in WebRTCAudioDeviceTest.FullDuplexAudioWithAGC
BUG=226044
TEST=content_unittests in Chrome with TSan v2 enabled

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3760 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-04 08:39:09 +00:00
andrew@webrtc.org
2412085bc1 Don't upsample the capture signal early.
* Remove the unneeded _mixingFrequency.
* Rename CheckForSendCodecChanges to better elucidate its function.
* Remove an unnecessary memcpy.

Upsampling should be done late in the chain. This is practically relevant
on mobile, where the capture rate is fixed at 16 kHz. When using Opus, the
signal was upsampled to 32 kHz and was no longer compatible with AECM, which only supports up to 16 kHz.

NEEDS_QA=true
TEST=run calls with a variety of capture device rates and codecs
BUG=chromium:178040,webrtc:1446

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3594 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-02 00:14:46 +00:00
andrew@webrtc.org
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
andrew@webrtc.org
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
andrew@webrtc.org
a5e7e76def Use %d for signed value in trace.
BUG=1259
TBR=henrika

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3349 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-01-09 17:11:50 +00:00
andrew@webrtc.org
c862f49b2d Move capture level computation after all processing.
BUG=issue1065

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3057 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-11-07 19:08:03 +00:00
andrew@webrtc.org
14b43beb7c Move src/ -> webrtc/
TBR=niklas.enbom@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@2963 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-10-22 18:19:23 +00:00