Commit Graph

178 Commits

Author SHA1 Message Date
b86d4e4a8d Prepare the AudioSendStream to be hooked up to send-side BWE.
This CL contains three changes as a preparation for adding audio send streams
to the send-side BWE:
1. Audio packets are passed through the pacer with high priority. This
is needed to be able to set transport sequence numbers on the packets.
2. A feedback observer is passed to the audio stream's rtcp receiver so
that the BWE can get notified of any BWE feedback being received on the
audio feedback channel.
3. Support for the transport sequence number header extension is added
to audio send streams.

BUG=webrtc:5263,webrtc:5307
R=mflodman@webrtc.org, solenberg@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10909}
2015-12-07 09:26:32 +00:00
b572768efb - Remove calls to VoEDtmf from WVoE/MC.
- Flatten logic and make the relevant calls on VoE::Channel from AudioSendStream::SendTelephoneEvent().
- Store current payload type for telephone events in WVoMC, instead of setting it on the Channel. This should be refactored to be an AudioSendStream::Config parameter when we redo WVoMC::SetSendCodecs().

BUG=webrtc:4690
R=pthatcher@webrtc.org, tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10895}
2015-12-04 14:22:30 +00:00
1d63dd0eaa - Remove cricket::VoiceChannel::PressDtmf(); AFAICT unused.
- Remove the DF_PLAY/DF_SEND flags, only allow sending.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10872}
2015-12-02 20:35:14 +00:00
7e4e01a441 Add header extension filtering for WebRtcVoiceEngine/MediaChannel.
Rework filtering functionality to be reused for both Audio+Video.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10869}
2015-12-02 16:05:07 +00:00
2515af28e9 Removing some unnecessary string manipulation code from VoEBase::GetVersion().
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10868}
2015-12-02 14:19:44 +00:00
26c8c91de2 Using Rent-A-Codec for static Codec access in WVoE/MC.
Mostly moved code around in WebRtcVoiceEngine:
- Added new internal class WebRtcVoiceCodecs for static codec functions and the CodecPrefs.
- ConstructCodecs() -> WebRtcVoiceCodecs::SupportedCodecs().
- FindWebRtcCodec -> WebRtcVoiceCodecs::ToCodecInst().
- WebRtcVoiceMediaChannel::SetRecvCodecsInternal() folded into WebRtcVoiceMediaChannel::SetRecvCodecs() (slight logic change).
- Change to how SetRecPayloadType() is implemented in fakewebrtcvoiceengine.h (lines 460-470).

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10819}
2015-11-27 12:00:31 +00:00
bd13838ccc Remove SetVideoLogging/SetAudioLogging from ChannelManager and down the stack.
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10734}
2015-11-21 00:08:11 +00:00
7add058439 Move some receive stream configuration into webrtc::AudioReceiveStream.
Simplify creation of VoE channels and Call streams in WVoMC.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10731}
2015-11-20 17:59:40 +00:00
7e63ef0e8f Allow default audio receive channel to receive on any unsignalled SSRC.
BUG=webrtc:5208

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

Cr-Commit-Position: refs/heads/master@{#10723}
2015-11-20 08:19:50 +00:00
3a94154035 Move some send stream configuration into webrtc::AudioSendStream.
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10652}
2015-11-16 15:34:59 +00:00
5237aaf243 Convert usage of ARRAY_SIZE to arraysize.
ARRAY_SIZE is the old version of arraysize and does not cover
all the cases in C++, arraysize is a copy of Chromium's
version and thus have wider coverage.

BUG=None
R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10594}
2015-11-11 07:44:39 +00:00
be57983f4b Rename Maybe to Optional
And add examples of good and bad usage to the documentation.

R=aluebs@webrtc.org, henrik.lundin@webrtc.org, pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10588}
2015-11-10 21:34:32 +00:00
566ef247b9 Move VoiceEngineObserver into AudioSendStream so that we detect typing noises and return properly in GetStats().
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10548}
2015-11-06 23:34:58 +00:00
102c6a61bc Replace rtc:🦗:Settable with rtc::Maybe
The former is very similar to the latter, but less general (mostly in
naming).

This CL, which is the first to use Maybe at scale, also removes the implicit conversion from T to Maybe<T>, since it was agreed that the increased verbosity increased legibility.

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

Cr-Commit-Position: refs/heads/master@{#10461}
2015-10-30 09:47:44 +00:00
98f53510b2 system_wrappers: rename interface -> include
BUG=webrtc:5095
R=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10438}
2015-10-28 17:17:50 +00:00
85a0496b8c Implement AudioSendStream::GetStats().
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10424}
2015-10-27 10:35:30 +00:00
4f4ec0a927 Re-Land: Implement AudioReceiveStream::GetStats().
R=tommi@webrtc.org
BUG=webrtc:4690

Committed: a457752f4a

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

Cr-Commit-Position: refs/heads/master@{#10369}
2015-10-22 08:49:39 +00:00
c96df779b0 - Introduce internal classes WebRtcAudio[Send|Receive]Stream in WebRtcVoiceMediaChannel.
- Remove WebRtcVoiceMediaChannel::WebRtcVoiceChannelRenderer
- Create webrtc::AudioSendStreams.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10361}
2015-10-21 20:02:00 +00:00
0a617e22a4 Remove the default send channel in WVoE.
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10344}
2015-10-20 22:49:45 +00:00
43e83d44f0 Revert of Implement AudioReceiveStream::GetStats(). (patchset #19 id:360001 of https://codereview.webrtc.org/1390753002/ )
Reason for revert:
webrtc_perf_tests started failing on Win32 Release, Mac32 Release and Linux64 Release (all running large tests). These were not caught by try bots.

Original issue's description:
> Implement AudioReceiveStream::GetStats().
>
> R=tommi@webrtc.org
> TBR=hta@webrtc.org
> BUG=webrtc:4690
>
> Committed: a457752f4a

TBR=tommi@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10340}
2015-10-20 13:41:06 +00:00
a457752f4a Implement AudioReceiveStream::GetStats().
R=tommi@webrtc.org
TBR=hta@webrtc.org
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10338}
2015-10-20 13:01:55 +00:00
112a3d81db Added functions on libjingle API to start and stop the recording of an RtcEventLog.
BUG=webrtc:4741

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

Cr-Commit-Position: refs/heads/master@{#10297}
2015-10-16 09:22:23 +00:00
c1aeaf0dc3 Wire up packet_id / send time callbacks to webrtc via libjingle.
BUG=webrtc:4173

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

Cr-Commit-Position: refs/heads/master@{#10289}
2015-10-15 14:26:17 +00:00
1ac561447e Remove default receive channel from WVoE; baby step 3.
Get rid of default receive channel.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10262}
2015-10-13 10:58:25 +00:00
8fb30c328b Remove default receive channel from WVoE; baby step 2.
Rename voe_channel_ to default_send_channel_id_.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10261}
2015-10-13 10:07:07 +00:00
d4cec0d8fa Remove MediaChannel::SetRemoteRenderer().
This is following discussion in: https://codereview.webrtc.org/1385893002/diff/60001/talk/media/webrtc/webrtcvoiceengine.cc#newcode2410

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10237}
2015-10-09 15:55:54 +00:00
98c68865e7 - Remove AudioTrackRenderer.
- Remove AddChannel/RemoveChannel from AudioRenderer interface.

BUG=webrtc:4690

Committed: https://crrev.com/1c0bb386b67835feb5934f503dddfe0912bce3ac
Cr-Commit-Position: refs/heads/master@{#10226}

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

Cr-Commit-Position: refs/heads/master@{#10235}
2015-10-09 10:27:42 +00:00
4bac9c53da Change SetOutputScaling to set a single level, not left/right levels.
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10234}
2015-10-09 09:32:58 +00:00
0b67546d8c Remove default receive channel from WVoE; baby step 1.
Rx AGC config bits copied from https://codereview.webrtc.org/1315903004.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10233}
2015-10-09 08:37:17 +00:00
eefbc3bbd7 Revert of Remove AudioTrackRenderer (patchset #3 id:40001 of https://codereview.webrtc.org/1399553003/ )
Reason for revert:
Breaks Chrome since its build files were not updated prior to file removal.

Original issue's description:
> - Remove AudioTrackRenderer.
> - Remove AddChannel/RemoveChannel from AudioRenderer interface.
>
> BUG=webrtc:4690
>
> Committed: https://crrev.com/1c0bb386b67835feb5934f503dddfe0912bce3ac
> Cr-Commit-Position: refs/heads/master@{#10226}

TBR=tommi@webrtc.org,solenberg@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10228}
2015-10-08 20:10:40 +00:00
1c0bb386b6 - Remove AudioTrackRenderer.
- Remove AddChannel/RemoveChannel from AudioRenderer interface.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10226}
2015-10-08 19:49:53 +00:00
0c4e06b4c6 Use suffixed {uint,int}{8,16,32,64}_t types.
Removes the use of uint8, etc. in favor of uint8_t.

BUG=webrtc:5024
R=henrik.lundin@webrtc.org, henrikg@webrtc.org, perkj@webrtc.org, solenberg@webrtc.org, stefan@webrtc.org, tina.legrand@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10196}
2015-10-07 10:23:32 +00:00
d97ec30ce4 Remove default receive channel from WVoE; baby step 0.
Cleanup + add thread checker DCHECKs to various method in WebRtcVoiceEngine/MediaChannel.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10194}
2015-10-07 08:40:38 +00:00
5b14b42e93 Remove unused SignalMediaError and infrastructure.
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10133}
2015-10-01 11:10:40 +00:00
dfc8f4ff87 Change 'mute' parameter of MediaChannel::SetAudioSend()/SetVideoSend() to 'enable'.
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10130}
2015-10-01 09:32:41 +00:00
63b345441a Simplify handling of options in WebRtcVoiceMediaEngine.
Also removes unnecessary typedef ChannelList.

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10107}
2015-09-29 13:06:36 +00:00
4a3ccad29e Remove SetAudioDelayOffset() and friends.
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10047}
2015-09-24 10:53:14 +00:00
61e933eac7 Remove ChannelManager::GetCapabilities()
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10045}
2015-09-24 08:45:41 +00:00
c14f5ff60f Improving support for Android Audio Effects in WebRTC.
Now also supports AGC and NS effects and adds the possibility
to override default settings.

R=magjed@webrtc.org, pbos@webrtc.org, sophiechang@chromium.org
TBR=perkj
BUG=NONE

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

Cr-Commit-Position: refs/heads/master@{#10030}
2015-09-23 12:09:40 +00:00
d5c75b1a0b Reduce LS_INFO spam from voice_engine/.
Removes ShouldIgnoreTrace from WebRtcVoiceEngine and removes the spammy
log instances instead. Also removes trace-style logging from getters
(::GetLocalSSRC() for instance would print what SSRC it got, spamming
the log).

BUG=
R=henrika@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10028}
2015-09-23 11:24:43 +00:00
7d173362d0 Remove the [Un]RegisterVoiceProcessor() API.
BUG=webrtc:4690
R=pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10027}
2015-09-23 10:23:31 +00:00
09677342ae Remove VoEFile from VoeWrapper and the remaining places in libjingle where it was being used.
BUG=webrtc:4690
R=pbos@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#10026}
2015-09-23 10:05:47 +00:00
c1a1b353ec Remove the SetLocalMonitor() API.
BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#10020}
2015-09-22 20:31:28 +00:00
22011c1b54 Remove Channel::SetRingbackTone() and Channel::PlayRingbackTone(), and the code beneath it (within libjingle).
BUG=webrtc:4690
TBR=juberti

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

Cr-Commit-Position: refs/heads/master@{#10011}
2015-09-22 10:12:49 +00:00
b071a19019 Full use of NnChannel::SetSendParameters and NnChannel::SetRecvParameters.
SetOptions(), SetMaxBandwidth(), Set[Send|Recv]RtpHeaderExtensions(), Set[Send|Recv]Codecs() are now private.

BUG=webrtc:4690
R=pbos@webrtc.org, pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9973}
2015-09-17 14:43:06 +00:00
91d6edef35 Add RTC_ prefix to (D)CHECKs and related macros.
We must remove dependency on Chromium, i.e. we can't use Chromium's base/logging.h. That means we need to define these macros in WebRTC also when doing Chromium builds. And this causes redefinition.

Alternative solutions:
* Check if we already have defined e.g. CHECK, and don't define them in that case. This makes us depend on include order in Chromium, which is not acceptable.
* Don't allow using the macros in WebRTC headers. Error prone since if someone adds it there by mistake it may compile fine, but later break if a header in added or order is changed in Chromium. That will be confusing and hard to enforce.
* Ensure that headers that are included by an embedder don't include our macros. This would require some heavy refactoring to be maintainable and enforcable.
* Changes in Chromium for this is obviously not an option.

BUG=chromium:468375
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#9964}
2015-09-17 07:24:51 +00:00
709ed67c38 Move instantiation of webrtc::Call into a MediaController class so that it can be used for both audio and video media channels.
I'm not super happy with the GetVoE() function added on MediaEngineInterface, but this will eventually be gone, once webrtc::Call owns the shared VoE state (or initially, maps ADM* to an implicitly created VoE).

BUG=webrtc:4690
R=pbos@webrtc.org, pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9939}
2015-09-15 10:26:45 +00:00
1dd98f3219 - Rename VoiceChannel::MuteStream() -> SetAudioSend() (incl. media channel)
- Rename VideoChannel::MuteStream() -> SetVideoSend() (incl. media channel)
- Collapse NnChannel::SetChannelOptions() into the above.
- Collapse VoiceChannel::SetLocalRenderer into SetAudioSend().

BUG=webrtc:4690

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

Cr-Commit-Position: refs/heads/master@{#9915}
2015-09-10 08:57:20 +00:00
68786d2040 Wire up PacketTime to ReceiveStreams.
BUG=webrtc:4758

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

Cr-Commit-Position: refs/heads/master@{#9892}
2015-09-08 12:36:23 +00:00
86d907cffd Refactor the AudioDevice for iOS and improve the performance and stability
This CL contains major modifications of the audio output parts for WebRTC on iOS:
- general code cleanup
- improves thread handling (added thread checks, remove critical section, atomic ops etc.)
- reduces loopback latency of iPhone 6 from ~90ms to ~60ms ;-)
- improves selection of audio parameters on iOS
- reduces complexity by removing complex and redundant delay estimates
- now instead uses fixed delay estimates if for some reason the SW EAC must be used
- adds AudioFineBuffer to compensate for differences in native output buffer size and
  the 10ms size used by WebRTC. Same class as is used today on Android and we have unit tests for
  this class (the old code was buggy and we have several issue reports of crashes related to it)

Similar improvements will be done for the recording sid as well in a separate CL.
I will also add support for 48kHz in an upcoming CL since that will improve Opus performance.

BUG=webrtc:4796,webrtc:4817,webrtc:4954, webrtc:4212
TEST=AppRTC demo and iOS modules_unittests using --gtest_filter=AudioDevice*
R=pbos@webrtc.org, tkchin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#9875}
2015-09-07 14:10:10 +00:00