Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: webrtc/pc/channel.cc

Issue 2854123003: Build WebRTC with data channel only. (Closed)
Patch Set: More modular apporach. Proof of concept. Need more work. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2004 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 12 matching lines...) Expand all
23 #include "webrtc/base/trace_event.h" 23 #include "webrtc/base/trace_event.h"
24 #include "webrtc/media/base/mediaconstants.h" 24 #include "webrtc/media/base/mediaconstants.h"
25 #include "webrtc/media/base/rtputils.h" 25 #include "webrtc/media/base/rtputils.h"
26 #include "webrtc/media/engine/webrtcvoiceengine.h" 26 #include "webrtc/media/engine/webrtcvoiceengine.h"
27 #include "webrtc/p2p/base/packettransportinternal.h" 27 #include "webrtc/p2p/base/packettransportinternal.h"
28 #include "webrtc/pc/channelmanager.h" 28 #include "webrtc/pc/channelmanager.h"
29 29
30 namespace cricket { 30 namespace cricket {
31 using rtc::Bind; 31 using rtc::Bind;
32 32
33 std::vector<webrtc::RtpSource> GetSourcesImpl(
34 WebRtcVoiceMediaChannel* media_channel,
35 uint32_t ssrc);
36
33 namespace { 37 namespace {
34 // See comment below for why we need to use a pointer to a unique_ptr. 38 // See comment below for why we need to use a pointer to a unique_ptr.
35 bool SetRawAudioSink_w(VoiceMediaChannel* channel, 39 bool SetRawAudioSink_w(VoiceMediaChannel* channel,
36 uint32_t ssrc, 40 uint32_t ssrc,
37 std::unique_ptr<webrtc::AudioSinkInterface>* sink) { 41 std::unique_ptr<webrtc::AudioSinkInterface>* sink) {
38 channel->SetRawAudioSink(ssrc, std::move(*sink)); 42 channel->SetRawAudioSink(ssrc, std::move(*sink));
39 return true; 43 return true;
40 } 44 }
41 45
42 struct SendPacketMessageData : public rtc::MessageData { 46 struct SendPacketMessageData : public rtc::MessageData {
(...skipping 1558 matching lines...) Expand 10 before | Expand all | Expand 10 after
1601 return media_channel()->SetRtpReceiveParameters(ssrc, parameters); 1605 return media_channel()->SetRtpReceiveParameters(ssrc, parameters);
1602 } 1606 }
1603 1607
1604 bool VoiceChannel::GetStats(VoiceMediaInfo* stats) { 1608 bool VoiceChannel::GetStats(VoiceMediaInfo* stats) {
1605 return InvokeOnWorker(RTC_FROM_HERE, Bind(&VoiceMediaChannel::GetStats, 1609 return InvokeOnWorker(RTC_FROM_HERE, Bind(&VoiceMediaChannel::GetStats,
1606 media_channel(), stats)); 1610 media_channel(), stats));
1607 } 1611 }
1608 1612
1609 std::vector<webrtc::RtpSource> VoiceChannel::GetSources(uint32_t ssrc) const { 1613 std::vector<webrtc::RtpSource> VoiceChannel::GetSources(uint32_t ssrc) const {
1610 return worker_thread()->Invoke<std::vector<webrtc::RtpSource>>( 1614 return worker_thread()->Invoke<std::vector<webrtc::RtpSource>>(
1611 RTC_FROM_HERE, 1615 RTC_FROM_HERE, Bind(&VoiceChannel::GetSources_w, this, ssrc));
1612 Bind(&WebRtcVoiceMediaChannel::GetSources, 1616 }
1613 static_cast<WebRtcVoiceMediaChannel*>(media_channel()), ssrc)); 1617
1618 std::vector<webrtc::RtpSource> VoiceChannel::GetSources_w(uint32_t ssrc) const {
1619 RTC_DCHECK(worker_thread()->IsCurrent());
1620 return GetSourcesImpl(static_cast<WebRtcVoiceMediaChannel*>(media_channel()),
Taylor Brandstetter 2017/05/18 17:57:05 This wouldn't be necessary if GetSources was pure
Zhi Huang 2017/05/23 03:40:35 Yes. Once the circular dependency problem is solve
1621 ssrc);
1614 } 1622 }
1615 1623
1616 void VoiceChannel::StartMediaMonitor(int cms) { 1624 void VoiceChannel::StartMediaMonitor(int cms) {
1617 media_monitor_.reset(new VoiceMediaMonitor(media_channel(), worker_thread(), 1625 media_monitor_.reset(new VoiceMediaMonitor(media_channel(), worker_thread(),
1618 rtc::Thread::Current())); 1626 rtc::Thread::Current()));
1619 media_monitor_->SignalUpdate.connect( 1627 media_monitor_->SignalUpdate.connect(
1620 this, &VoiceChannel::OnMediaMonitorUpdate); 1628 this, &VoiceChannel::OnMediaMonitorUpdate);
1621 media_monitor_->Start(cms); 1629 media_monitor_->Start(cms);
1622 } 1630 }
1623 1631
(...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after
2400 2408
2401 void RtpDataChannel::OnDataChannelReadyToSend(bool writable) { 2409 void RtpDataChannel::OnDataChannelReadyToSend(bool writable) {
2402 // This is usded for congestion control to indicate that the stream is ready 2410 // This is usded for congestion control to indicate that the stream is ready
2403 // to send by the MediaChannel, as opposed to OnReadyToSend, which indicates 2411 // to send by the MediaChannel, as opposed to OnReadyToSend, which indicates
2404 // that the transport channel is ready. 2412 // that the transport channel is ready.
2405 signaling_thread()->Post(RTC_FROM_HERE, this, MSG_READYTOSENDDATA, 2413 signaling_thread()->Post(RTC_FROM_HERE, this, MSG_READYTOSENDDATA,
2406 new DataChannelReadyToSendMessageData(writable)); 2414 new DataChannelReadyToSendMessageData(writable));
2407 } 2415 }
2408 2416
2409 } // namespace cricket 2417 } // namespace cricket
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698