Commit Graph

139 Commits

Author SHA1 Message Date
7437588168 Adding locking to webrtc::voe::Channel to fix race conditions
Some members are accessed from the video processing thread for the
VoEVideoSync interface, and thus need to be protected. This is a
problem that TSan sometimes reports.

Also moved UpdatePlayoutTimestamp to private section since
it's only needed internally. And renamed least_required_delay_ms
to LeastRequiredDelayMs, since it no longer just returns a cached
value.

BUG=webrtc:4663

Review URL: https://codereview.webrtc.org/1263223002

Cr-Commit-Position: refs/heads/master@{#9706}
2015-08-13 19:09:18 +00:00
d436298332 Remove ResetStatistics from RTP feedback.
BUG=
R=asapersson@webrtc.org, stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1213603002

Cr-Commit-Position: refs/heads/master@{#9548}
2015-07-07 15:32:56 +00:00
c3f4dbc40b Remove rtp_rtcp/ dump functionality.
Removes RTP dumping from VideoEngine and VoiceEngine.

BUG=1695
R=henrika@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9234}
2015-05-20 12:10:56 +00:00
2013aeced2 Propagating RTT from send-only channel to receive-only channel.
This is important for obtaining ntp time at receiver-only channel, which does not have RTT directly.

BUG=3978

TEST=chromium with hangout calls
R=henrika@webrtc.org, mflodman@webrtc.org, stefan@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9186}
2015-05-13 12:14:36 +00:00
300eeb68f5 Remove VideoEngine interfaces.
Removes ViE interfaces, _impl.cc files, managers (such as
ViEChannelManager and ViEInputManager) as well as ViESharedData.

Interfaces necessary to implement observers have been moved to a
corresponding header (such as vie_channel.h).

BUG=1695, 4491
R=mflodman@webrtc.org, solenberg@webrtc.org
TBR=pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9179}
2015-05-12 14:51:08 +00:00
adf89b7e33 Added SetBitRate function to VoE API to allow changing the audio bitrate.
If the requested bitrate is not valid for the codec, the codec will decide on
an appropriate value.
Updated VoE command line tool to use new SetBitRate function.
Includes unittests for SetBitRate function.

BUG=
R=henrik.lundin@webrtc.org, henrika@webrtc.org, kwiberg@webrtc.org, pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9115}
2015-04-29 14:03:45 +00:00
9b2e1144df Supporting Opus DTX in Voice Engine.
Opus DTX is an Opus specific feature. It does not require WebRTC VAD/DTX, therefore is not set by VoECodec::SetVADStatus(), but rather a dedicated API.

BUG=1014
R=henrika@webrtc.org, pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8716}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8716 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-13 09:38:55 +00:00
e9217b4bdb Remove WebRtcACMEncodingType
The parameter was not needed; it was sufficient with a bool indicating
speech or not speech. This change propagates to the InFrameType
callback function. Some tests are updated too.

COAUTHOR=kwiberg@webrtc.org
R=minyue@webrtc.org
TBR=henrika@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8626}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8626 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-06 07:51:21 +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
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
0a7d4eed98 Remove usage of BitrateController in VoiceEngine.
Bitrate controller is used in VoiceEngine to smoothen the fraction loss
from RTCP report blocks. This CL removes the usage of the
BitrateController and calculates its own fraction loss average insted.
This introduces some duplicated code between BitrateController and
Channel, but removes processing overhead and the incorrect bandwidth
estimation numbers reported by the bitrate controller.

BUG=4310
TEST=voe_cmd_test with network simulator
R=minyue@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#8386}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8386 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-17 12:57:44 +00:00
456f01441a Re-allowing RED in voice engine.
Path of audio RED packets was blocked in r4692 by accident. It ought be enabled again.

BUG=3619
R=henrika@webrtc.org, stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8137 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-23 11:58:42 +00:00
8315d7de85 Remove dual stream functionality in VoiceEngine
This is old code that is no longer in use. The clean-up is part of the
ACM redesign work. The corresponding code in ACM will be deleted in a
follow-up CL.

BUG=3520
R=henrika@webrtc.org, pbos@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8060 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-14 16:07:26 +00:00
16825b1a82 Use int64_t more consistently for times, in particular for RTT values.
Existing code was inconsistent about whether to use uint16_t, int, unsigned int,
or uint32_t, and sometimes silently truncated one to another, or truncated
int64_t.  Because most core time-handling functions use int64_t, being
consistent about using int64_t unless otherwise necessary minimizes the number
of explicit or implicit casts.

BUG=chromium:81439
TEST=none
R=henrik.lundin@webrtc.org, holmer@google.com, tommi@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@8045 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-01-12 21:51:21 +00:00
d16e839c6d Rtp-Rtcp sender cleanup.
Some setter functions from Rtp and Rtcp Sender never return negative values. Remove return results from those functions.

Also removed const on non-pointer/reference types for related files.

BUG=
R=henrika@webrtc.org, pbos@webrtc.org, stefan@webrtc.org

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

Patch from Changbin Shao <changbin.shao@intel.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7962 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-12-19 13:49:55 +00:00
4591fbd09f Use size_t more consistently for packet/payload lengths.
See design doc at https://docs.google.com/a/chromium.org/document/d/1I6nmE9D_BmCY-IoV6MDPY2V6WYpEI-dg2apWXTfZyUI/edit?usp=sharing for more information.

This CL was reviewed and approved in pieces in the following CLs:
https://webrtc-codereview.appspot.com/24209004/
https://webrtc-codereview.appspot.com/24229004/
https://webrtc-codereview.appspot.com/24259004/
https://webrtc-codereview.appspot.com/25109004/
https://webrtc-codereview.appspot.com/26099004/
https://webrtc-codereview.appspot.com/27069004/
https://webrtc-codereview.appspot.com/27969004/
https://webrtc-codereview.appspot.com/27989004/
https://webrtc-codereview.appspot.com/29009004/
https://webrtc-codereview.appspot.com/30929004/
https://webrtc-codereview.appspot.com/30939004/
https://webrtc-codereview.appspot.com/31999004/
Committing as TBR to the original reviewers.

BUG=chromium:81439
TEST=none
TBR=pthatcher,henrik.lundin,tina.legrand,stefan,tkchin,glaznev,kjellander,perkj,mflodman,henrika,asapersson,niklas.enbom

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7726 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-20 22:28:14 +00:00
ece3890d3a Report total bitrate for all streams in GetStats.
This regression wasn't caught because I accidentally disabled multiple
streams for EndToEndTest.GetStats in a refactoring.

R=stefan@webrtc.org, xians@webrtc.org
BUG=1667

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7701 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-11-14 11:52:04 +00:00
3cefbc99f4 Mark all virtual overrides in the hierarchy of Transport as virtual + OVERRIDE.
This also marks all virtual overrides of other classes in the same files. 

This will make a subsequent change I intend to do safer, where I'll change the 
argument types of the base Transport functions, by breaking the compile if I 
miss any overrides. 

This also highlighted a number of unused functions. I've removed some of these. 

TBR=mflodman@webrtc.org, pkasting@chromium.org
BUG=none 
TEST=none

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7421 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-10 09:42:53 +00:00
4cebd84c79 Reland "Remove DTMF status methods from Voice Engine" r7276
This reverts r7277.

TBR=henrika@webrtc.org,pbos@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7353 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-10-01 08:23:21 +00:00
3987f10c11 Revert "Remove DTMF status methods from Voice Engine" r7276
This change caused some trouble.

TBR=henrika@webrtc.org,pbos@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7277 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-23 13:15:14 +00:00
bf7b9e0081 Remove DTMF status methods from Voice Engine
These methods are not used.

R=henrika@webrtc.org, pbos@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7276 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-23 12:54:04 +00:00
64a2f10f4b Remove Get/SetNetEQPlayoutMode APIs
These are not used anymore.

R=henrika@webrtc.org, pbos@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7262 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-22 14:30:10 +00:00
2b58a4433f Calculating round-trip-time in send-only channel in VoE.
TESTS=built chromium and tested with 1:1 hangout call

BUG=
R=stefan@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7147 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-11 07:51:53 +00:00
adee8f9242 Renaming SetOpusMaxBandwidth to SetOpusMaxPlaybackRate
This is to maintain the consistency with the Opus codec option "maxplaybackrate" defined in http://tools.ietf.org/html/draft-spittka-payload-rtp-opus-03

BUG=
R=tina.legrand@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7038 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-03 12:28:06 +00:00
8e24d87778 Fix race in Voice Engine's Channel where it accesses RemoteNtpTimeEstimator from both the audio playback thread and the network thread without locking.
BUG=3681
R=pbos@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7030 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-02 18:58:24 +00:00
6aac93bd9c Adding SetOpusMaxBandwidth in VoE and ACM
This is a step to solve
https://code.google.com/p/webrtc/issues/detail?id=1906

In particular, we add an API in VoE and ACM to call Opus's API of setting maximum bandwidth.

TEST = added a test in voe_cmd_test and listened to the result

BUG=
R=henrika@google.com, henrika@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6869 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-12 08:13:33 +00:00
74aaf29a0f Raw packet loss rate reported by RTP_RTCP module may vary too drastically over time. This CL is to add a filter to the value in VoE before lending it to audio coding module.
The filter is an exponential filter borrowed from video coding module.

The method is written in a new class called PacketLossProtector (not sure if the name is nice), which can be used in the future for more sophisticated logic.

BUG=
R=henrika@webrtc.org, stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6709 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-16 21:28:26 +00:00
4ef438e2de Remove the send-side cname getter APIs from voice and video engine.
These APIs aren't being used, and introduces deadlocks when using GetStats() in the new Call api. Having getters for cname at the send-side is pointless, as it's always the user who sets the cname.

R=henrika@webrtc.org, pbos@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6659 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 09:55:30 +00:00
94454b71ad Fix the chain that propagates the audio frame's rtp and ntp timestamp including:
* In AudioCodingModuleImpl::PlayoutData10Ms, don't reset the timestamp got from GetAudio.
* When there're more than one participant, set AudioFrame's RTP timestamp to 0.
* Copy ntp_time_ms_ in AudioFrame::CopyFrom method.
* In RemixAndResample, pass src frame's timestamp_ and ntp_time_ms_ to the dst frame.
* Fix how |elapsed_time_ms| is computed in channel.cc by adding GetPlayoutFrequency.

Tweaks on ntp_time_ms_:
* Init ntp_time_ms_ to -1 in AudioFrame ctor.
* When there're more than one participant, set AudioFrame's ntp_time_ms_ to an invalid value. I.e. we don't support ntp_time_ms_ in multiple participants case before the mixing is moved to chrome.

Added elapsed_time_ms to AudioFrame and pass it to chrome, where we don't have the information about the rtp timestmp's sample rate, i.e. can't convert rtp timestamp to ms.

BUG=3111
R=henrik.lundin@webrtc.org, turaj@webrtc.org, xians@webrtc.org
TBR=andrew
andrew to take another look on audio_conference_mixer_impl.cc

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6346 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-05 20:34:08 +00:00
c1a40a7b68 This CL is to adding feedback of packet loss rate to encoder in voice engine. A direct reason for doing it is to make use of Opus FEC, which can adapt itself to changes in the packet loss rate.
This CL is going to be combined with another CL in ACM, which is to be landed.

TEST=passed_try_bots
BUG=
R=stefan@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6262 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-28 09:52:06 +00:00
82c4b8531c Calculate capture ntp timestamp in local timebase for decoded audio frame.
BUG=3111
R=stefan@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6205 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-20 22:55:01 +00:00
cb711f77d2 Add interface to propagate audio capture timestamp to the renderer.
BUG=3111
R=andrew@webrtc.org, turaj@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6189 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-19 17:39:11 +00:00
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
66021e0fa2 Removes parts of the webrtc::VoERTP_RTCP sub API as part of a clean-up operation where the goal is to remove unused APIs.
BUG=3206
R=niklas.enbom@webrtc.org, solenberg@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6100 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-12 08:53:27 +00:00
382c0c209d Allow the RTP level indicator computation to work at any sample rate.
Break out the computation to a separate class, and call directly into
this from channel.cc rather than going through AudioProcessing. This
circumvents AudioProcessing's sample rate limitations.

We now compute the RMS over all samples rather than downmixing to a
single channel. This makes the call point in channel.cc easier, is
more "correct" and should have similar (negligible) complexity.

This caused slight changes in the RMS output, so the ApmTest.Process
reference has been updated. Snippet of the failing output:

[ RUN      ] ApmTest.Process
Running test 4 of 12...
Value of: rms_level
  Actual: 27
Expected: test->rms_level()
Which is: 28
Running test 5 of 12...
Value of: rms_level
  Actual: 26
Expected: test->rms_level()
Which is: 27
Running test 6 of 12...
Value of: rms_level
  Actual: 26
Expected: test->rms_level()
Which is: 27
Running test 10 of 12...
Value of: rms_level
  Actual: 27
Expected: test->rms_level()
Which is: 28
Running test 11 of 12...
Value of: rms_level
  Actual: 26
Expected: test->rms_level()
Which is: 27
Running test 12 of 12...
Value of: rms_level
  Actual: 26
Expected: test->rms_level()
Which is: 27

BUG=3290
TESTED=Chrome assert is avoided and both voe_cmd_test and apprtc
produce reasonable printed out results from RMS().

R=bjornv@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6056 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-05 18:22:21 +00:00
93fd25c20c * Add webrtc::VoERTP_RTCP::SetReceiveAudioLevelIndicationStatus.
* Cast rtp header extension to int in log in rtp_utility.cc.

BUG=3237
TEST=try bots
R=stefan@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5975 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-24 20:33:08 +00:00
f5a33f145b Resampler modifications in preparation for arbitrary audioproc rates.
- Templatize PushResampler to support int16 and float.
- Add a helper method to PushSincResampler to compute the algorithmic
delay.

This is a prerequisite of:
http://review.webrtc.org/9919004/

BUG=2894
R=turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5943 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-19 00:32:07 +00:00
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
0f7375504a Removes VoECodec sub API as part of a clean-up operation where the goal is to remove unused APIs.
BUG=3206
R=juberti@webrtc.org, niklas.enbom@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5927 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-17 10:38:08 +00:00
b9309beea4 Removes VoECallReport 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/11779004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5896 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-14 14:12:50 +00:00
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
b1f5010075 VoE changes to allow forwarding of packets from VoE to ViE BWE.
BUG=
R=mflodman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5757 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-24 10:38:25 +00:00
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
ebdb0e3ad0 Help to land 7969005 on behalf of solenberg. The review and try is done in 7969005.
- Add ability to VoE to send Absolute Sender Time header extension.
- Refactor handling of RTP header extensions in VoE to work the same as in ViE.
- Add API to enable receiving Absolute Sender Time in VoE.

This is part of the work to include audio packets in bandwidth estimation, for
better accuracy in estimates.

BUG=
TBR=solenberg@webrtc.org,henrikg@webrtc.org,stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5654 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-06 23:49:08 +00:00
b7a91fa95a Removes VoERTP_RTCP::InsertExtraRTPPacket.
Reasons for removing:

- Feels like a complete hack IMHO.
- Not used by any client.
- Unclear functionality regarding time stamp, marker bit etc.
- Causes several issues in tests due to a bad design which mainly depends on the fact that this API "breaks" an ongoing data/packet flow and it complicates the threading model and creates risks for deadlock and memory corruption. Not worth trying to fix given the very unclear benefit of maintaining the API. Better to remove the API instead.
- We also see lots of TSan races and memcheck errors related to this API.

BUG=2296,2240
R=mflodman@webrtc.org, niklas.enbom@webrtc.org, xians@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5574 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-19 08:58:08 +00:00
a07923339b Remove external encryption API for VoE.
BUG=
R=henrika@webrtc.org, henrikg@webrtc.org, phoglund@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5564 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-18 11:27:22 +00:00
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
54ae4ffb9e Add callbacks for receive channel RTCP statistics.
This allows a listener to receive new statistics as it is generated - avoiding the need to poll. This also makes handling stats from multiple RTP streams more tractable.
The change is primarily targeted at the new video engine API.

TEST=Unit test in ReceiveStatisticsTest. Integration tests to follow as call tests when fully wired up.

BUG=2235
R=henrika@webrtc.org, pbos@webrtc.org, stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5323 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-12-19 13:26:02 +00:00
167b6dfc73 Fix jitter buffer delay estimate.
BUG=b/12099925
R=niklas.enbom@webrtc.org, niklase@google.com, stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5289 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-12-13 21:05:07 +00:00
24301a67c6 Update talk to 58174641 together with http://review.webrtc.org/4319005/.
R=turaj@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5287 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-12-13 19:17:43 +00:00