Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright 2012 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 670 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 681 } | 681 } |
| 682 // TODO(deadbeef): Support adding a track to two different senders. | 682 // TODO(deadbeef): Support adding a track to two different senders. |
| 683 if (FindSenderForTrack(track) != senders_.end()) { | 683 if (FindSenderForTrack(track) != senders_.end()) { |
| 684 LOG(LS_ERROR) << "Sender for track " << track->id() << " already exists."; | 684 LOG(LS_ERROR) << "Sender for track " << track->id() << " already exists."; |
| 685 return nullptr; | 685 return nullptr; |
| 686 } | 686 } |
| 687 | 687 |
| 688 // TODO(deadbeef): Support adding a track to multiple streams. | 688 // TODO(deadbeef): Support adding a track to multiple streams. |
| 689 rtc::scoped_refptr<RtpSenderInterface> new_sender; | 689 rtc::scoped_refptr<RtpSenderInterface> new_sender; |
| 690 if (track->kind() == MediaStreamTrackInterface::kAudioKind) { | 690 if (track->kind() == MediaStreamTrackInterface::kAudioKind) { |
| 691 new_sender = RtpSenderProxy::Create( | 691 new_sender = RtpSenderSignallingProxy::Create( |
|
tommi
2016/04/08 09:00:22
ah, I didn't think through my class-renaming sugge
| |
| 692 signaling_thread(), | 692 signaling_thread(), |
| 693 new AudioRtpSender(static_cast<AudioTrackInterface*>(track), | 693 new AudioRtpSender(static_cast<AudioTrackInterface*>(track), |
| 694 session_.get(), stats_.get())); | 694 session_.get(), stats_.get())); |
| 695 if (!streams.empty()) { | 695 if (!streams.empty()) { |
| 696 new_sender->set_stream_id(streams[0]->label()); | 696 new_sender->set_stream_id(streams[0]->label()); |
| 697 } | 697 } |
| 698 const TrackInfo* track_info = FindTrackInfo( | 698 const TrackInfo* track_info = FindTrackInfo( |
| 699 local_audio_tracks_, new_sender->stream_id(), track->id()); | 699 local_audio_tracks_, new_sender->stream_id(), track->id()); |
| 700 if (track_info) { | 700 if (track_info) { |
| 701 new_sender->SetSsrc(track_info->ssrc); | 701 new_sender->SetSsrc(track_info->ssrc); |
| 702 } | 702 } |
| 703 } else if (track->kind() == MediaStreamTrackInterface::kVideoKind) { | 703 } else if (track->kind() == MediaStreamTrackInterface::kVideoKind) { |
| 704 new_sender = RtpSenderProxy::Create( | 704 new_sender = RtpSenderSignallingProxy::Create( |
| 705 signaling_thread(), | 705 signaling_thread(), |
| 706 new VideoRtpSender(static_cast<VideoTrackInterface*>(track), | 706 new VideoRtpSender(static_cast<VideoTrackInterface*>(track), |
| 707 session_.get())); | 707 session_.get())); |
| 708 if (!streams.empty()) { | 708 if (!streams.empty()) { |
| 709 new_sender->set_stream_id(streams[0]->label()); | 709 new_sender->set_stream_id(streams[0]->label()); |
| 710 } | 710 } |
| 711 const TrackInfo* track_info = FindTrackInfo( | 711 const TrackInfo* track_info = FindTrackInfo( |
| 712 local_video_tracks_, new_sender->stream_id(), track->id()); | 712 local_video_tracks_, new_sender->stream_id(), track->id()); |
| 713 if (track_info) { | 713 if (track_info) { |
| 714 new_sender->SetSsrc(track_info->ssrc); | 714 new_sender->SetSsrc(track_info->ssrc); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 752 LOG(LS_ERROR) << "CreateDtmfSender is called with a non local audio track."; | 752 LOG(LS_ERROR) << "CreateDtmfSender is called with a non local audio track."; |
| 753 return NULL; | 753 return NULL; |
| 754 } | 754 } |
| 755 | 755 |
| 756 rtc::scoped_refptr<DtmfSenderInterface> sender( | 756 rtc::scoped_refptr<DtmfSenderInterface> sender( |
| 757 DtmfSender::Create(track, signaling_thread(), session_.get())); | 757 DtmfSender::Create(track, signaling_thread(), session_.get())); |
| 758 if (!sender.get()) { | 758 if (!sender.get()) { |
| 759 LOG(LS_ERROR) << "CreateDtmfSender failed on DtmfSender::Create."; | 759 LOG(LS_ERROR) << "CreateDtmfSender failed on DtmfSender::Create."; |
| 760 return NULL; | 760 return NULL; |
| 761 } | 761 } |
| 762 return DtmfSenderProxy::Create(signaling_thread(), sender.get()); | 762 return DtmfSenderSignallingProxy::Create(signaling_thread(), sender.get()); |
| 763 } | 763 } |
| 764 | 764 |
| 765 rtc::scoped_refptr<RtpSenderInterface> PeerConnection::CreateSender( | 765 rtc::scoped_refptr<RtpSenderInterface> PeerConnection::CreateSender( |
| 766 const std::string& kind, | 766 const std::string& kind, |
| 767 const std::string& stream_id) { | 767 const std::string& stream_id) { |
| 768 TRACE_EVENT0("webrtc", "PeerConnection::CreateSender"); | 768 TRACE_EVENT0("webrtc", "PeerConnection::CreateSender"); |
| 769 rtc::scoped_refptr<RtpSenderInterface> new_sender; | 769 rtc::scoped_refptr<RtpSenderInterface> new_sender; |
| 770 if (kind == MediaStreamTrackInterface::kAudioKind) { | 770 if (kind == MediaStreamTrackInterface::kAudioKind) { |
| 771 new_sender = RtpSenderProxy::Create( | 771 new_sender = RtpSenderSignallingProxy::Create( |
| 772 signaling_thread(), new AudioRtpSender(session_.get(), stats_.get())); | 772 signaling_thread(), new AudioRtpSender(session_.get(), stats_.get())); |
| 773 } else if (kind == MediaStreamTrackInterface::kVideoKind) { | 773 } else if (kind == MediaStreamTrackInterface::kVideoKind) { |
| 774 new_sender = RtpSenderProxy::Create(signaling_thread(), | 774 new_sender = RtpSenderSignallingProxy::Create( |
| 775 new VideoRtpSender(session_.get())); | 775 signaling_thread(), new VideoRtpSender(session_.get())); |
| 776 } else { | 776 } else { |
| 777 LOG(LS_ERROR) << "CreateSender called with invalid kind: " << kind; | 777 LOG(LS_ERROR) << "CreateSender called with invalid kind: " << kind; |
| 778 return new_sender; | 778 return new_sender; |
| 779 } | 779 } |
| 780 if (!stream_id.empty()) { | 780 if (!stream_id.empty()) { |
| 781 new_sender->set_stream_id(stream_id); | 781 new_sender->set_stream_id(stream_id); |
| 782 } | 782 } |
| 783 senders_.push_back(new_sender); | 783 senders_.push_back(new_sender); |
| 784 return new_sender; | 784 return new_sender; |
| 785 } | 785 } |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 844 if (!channel.get()) { | 844 if (!channel.get()) { |
| 845 return nullptr; | 845 return nullptr; |
| 846 } | 846 } |
| 847 | 847 |
| 848 // Trigger the onRenegotiationNeeded event for every new RTP DataChannel, or | 848 // Trigger the onRenegotiationNeeded event for every new RTP DataChannel, or |
| 849 // the first SCTP DataChannel. | 849 // the first SCTP DataChannel. |
| 850 if (session_->data_channel_type() == cricket::DCT_RTP || first_datachannel) { | 850 if (session_->data_channel_type() == cricket::DCT_RTP || first_datachannel) { |
| 851 observer_->OnRenegotiationNeeded(); | 851 observer_->OnRenegotiationNeeded(); |
| 852 } | 852 } |
| 853 | 853 |
| 854 return DataChannelProxy::Create(signaling_thread(), channel.get()); | 854 return DataChannelSignallingProxy::Create(signaling_thread(), channel.get()); |
| 855 } | 855 } |
| 856 | 856 |
| 857 void PeerConnection::CreateOffer(CreateSessionDescriptionObserver* observer, | 857 void PeerConnection::CreateOffer(CreateSessionDescriptionObserver* observer, |
| 858 const MediaConstraintsInterface* constraints) { | 858 const MediaConstraintsInterface* constraints) { |
| 859 TRACE_EVENT0("webrtc", "PeerConnection::CreateOffer"); | 859 TRACE_EVENT0("webrtc", "PeerConnection::CreateOffer"); |
| 860 if (!VERIFY(observer != nullptr)) { | 860 if (!VERIFY(observer != nullptr)) { |
| 861 LOG(LS_ERROR) << "CreateOffer - observer is NULL."; | 861 LOG(LS_ERROR) << "CreateOffer - observer is NULL."; |
| 862 return; | 862 return; |
| 863 } | 863 } |
| 864 RTCOfferAnswerOptions options; | 864 RTCOfferAnswerOptions options; |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1275 } | 1275 } |
| 1276 default: | 1276 default: |
| 1277 RTC_DCHECK(false && "Not implemented"); | 1277 RTC_DCHECK(false && "Not implemented"); |
| 1278 break; | 1278 break; |
| 1279 } | 1279 } |
| 1280 } | 1280 } |
| 1281 | 1281 |
| 1282 void PeerConnection::CreateAudioReceiver(MediaStreamInterface* stream, | 1282 void PeerConnection::CreateAudioReceiver(MediaStreamInterface* stream, |
| 1283 const std::string& track_id, | 1283 const std::string& track_id, |
| 1284 uint32_t ssrc) { | 1284 uint32_t ssrc) { |
| 1285 receivers_.push_back(RtpReceiverProxy::Create( | 1285 receivers_.push_back(RtpReceiverSignallingProxy::Create( |
| 1286 signaling_thread(), | 1286 signaling_thread(), |
| 1287 new AudioRtpReceiver(stream, track_id, ssrc, session_.get()))); | 1287 new AudioRtpReceiver(stream, track_id, ssrc, session_.get()))); |
| 1288 } | 1288 } |
| 1289 | 1289 |
| 1290 void PeerConnection::CreateVideoReceiver(MediaStreamInterface* stream, | 1290 void PeerConnection::CreateVideoReceiver(MediaStreamInterface* stream, |
| 1291 const std::string& track_id, | 1291 const std::string& track_id, |
| 1292 uint32_t ssrc) { | 1292 uint32_t ssrc) { |
| 1293 receivers_.push_back(RtpReceiverProxy::Create( | 1293 receivers_.push_back(RtpReceiverSignallingProxy::Create( |
| 1294 signaling_thread(), | 1294 signaling_thread(), |
| 1295 new VideoRtpReceiver(stream, track_id, factory_->worker_thread(), ssrc, | 1295 new VideoRtpReceiver(stream, track_id, factory_->worker_thread(), ssrc, |
| 1296 session_.get()))); | 1296 session_.get()))); |
| 1297 } | 1297 } |
| 1298 | 1298 |
| 1299 // TODO(deadbeef): Keep RtpReceivers around even if track goes away in remote | 1299 // TODO(deadbeef): Keep RtpReceivers around even if track goes away in remote |
| 1300 // description. | 1300 // description. |
| 1301 void PeerConnection::DestroyReceiver(const std::string& track_id) { | 1301 void PeerConnection::DestroyReceiver(const std::string& track_id) { |
| 1302 auto it = FindReceiverForTrack(track_id); | 1302 auto it = FindReceiverForTrack(track_id); |
| 1303 if (it == receivers_.end()) { | 1303 if (it == receivers_.end()) { |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1378 MediaStreamInterface* stream) { | 1378 MediaStreamInterface* stream) { |
| 1379 auto sender = FindSenderForTrack(track); | 1379 auto sender = FindSenderForTrack(track); |
| 1380 if (sender != senders_.end()) { | 1380 if (sender != senders_.end()) { |
| 1381 // We already have a sender for this track, so just change the stream_id | 1381 // We already have a sender for this track, so just change the stream_id |
| 1382 // so that it's correct in the next call to CreateOffer. | 1382 // so that it's correct in the next call to CreateOffer. |
| 1383 (*sender)->set_stream_id(stream->label()); | 1383 (*sender)->set_stream_id(stream->label()); |
| 1384 return; | 1384 return; |
| 1385 } | 1385 } |
| 1386 | 1386 |
| 1387 // Normal case; we've never seen this track before. | 1387 // Normal case; we've never seen this track before. |
| 1388 rtc::scoped_refptr<RtpSenderInterface> new_sender = RtpSenderProxy::Create( | 1388 rtc::scoped_refptr<RtpSenderInterface> new_sender = |
| 1389 signaling_thread(), | 1389 RtpSenderSignallingProxy::Create( |
| 1390 new AudioRtpSender(track, stream->label(), session_.get(), stats_.get())); | 1390 signaling_thread(), new AudioRtpSender(track, stream->label(), |
| 1391 session_.get(), stats_.get())); | |
| 1391 senders_.push_back(new_sender); | 1392 senders_.push_back(new_sender); |
| 1392 // If the sender has already been configured in SDP, we call SetSsrc, | 1393 // If the sender has already been configured in SDP, we call SetSsrc, |
| 1393 // which will connect the sender to the underlying transport. This can | 1394 // which will connect the sender to the underlying transport. This can |
| 1394 // occur if a local session description that contains the ID of the sender | 1395 // occur if a local session description that contains the ID of the sender |
| 1395 // is set before AddStream is called. It can also occur if the local | 1396 // is set before AddStream is called. It can also occur if the local |
| 1396 // session description is not changed and RemoveStream is called, and | 1397 // session description is not changed and RemoveStream is called, and |
| 1397 // later AddStream is called again with the same stream. | 1398 // later AddStream is called again with the same stream. |
| 1398 const TrackInfo* track_info = | 1399 const TrackInfo* track_info = |
| 1399 FindTrackInfo(local_audio_tracks_, stream->label(), track->id()); | 1400 FindTrackInfo(local_audio_tracks_, stream->label(), track->id()); |
| 1400 if (track_info) { | 1401 if (track_info) { |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 1420 MediaStreamInterface* stream) { | 1421 MediaStreamInterface* stream) { |
| 1421 auto sender = FindSenderForTrack(track); | 1422 auto sender = FindSenderForTrack(track); |
| 1422 if (sender != senders_.end()) { | 1423 if (sender != senders_.end()) { |
| 1423 // We already have a sender for this track, so just change the stream_id | 1424 // We already have a sender for this track, so just change the stream_id |
| 1424 // so that it's correct in the next call to CreateOffer. | 1425 // so that it's correct in the next call to CreateOffer. |
| 1425 (*sender)->set_stream_id(stream->label()); | 1426 (*sender)->set_stream_id(stream->label()); |
| 1426 return; | 1427 return; |
| 1427 } | 1428 } |
| 1428 | 1429 |
| 1429 // Normal case; we've never seen this track before. | 1430 // Normal case; we've never seen this track before. |
| 1430 rtc::scoped_refptr<RtpSenderInterface> new_sender = RtpSenderProxy::Create( | 1431 rtc::scoped_refptr<RtpSenderInterface> new_sender = |
| 1431 signaling_thread(), | 1432 RtpSenderSignallingProxy::Create( |
| 1432 new VideoRtpSender(track, stream->label(), session_.get())); | 1433 signaling_thread(), |
| 1434 new VideoRtpSender(track, stream->label(), session_.get())); | |
| 1433 senders_.push_back(new_sender); | 1435 senders_.push_back(new_sender); |
| 1434 const TrackInfo* track_info = | 1436 const TrackInfo* track_info = |
| 1435 FindTrackInfo(local_video_tracks_, stream->label(), track->id()); | 1437 FindTrackInfo(local_video_tracks_, stream->label(), track->id()); |
| 1436 if (track_info) { | 1438 if (track_info) { |
| 1437 new_sender->SetSsrc(track_info->ssrc); | 1439 new_sender->SetSsrc(track_info->ssrc); |
| 1438 } | 1440 } |
| 1439 } | 1441 } |
| 1440 | 1442 |
| 1441 void PeerConnection::OnVideoTrackRemoved(VideoTrackInterface* track, | 1443 void PeerConnection::OnVideoTrackRemoved(VideoTrackInterface* track, |
| 1442 MediaStreamInterface* stream) { | 1444 MediaStreamInterface* stream) { |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1592 // The sync_label is the MediaStream label and the |stream.id| is the | 1594 // The sync_label is the MediaStream label and the |stream.id| is the |
| 1593 // track id. | 1595 // track id. |
| 1594 const std::string& stream_label = params.sync_label; | 1596 const std::string& stream_label = params.sync_label; |
| 1595 const std::string& track_id = params.id; | 1597 const std::string& track_id = params.id; |
| 1596 uint32_t ssrc = params.first_ssrc(); | 1598 uint32_t ssrc = params.first_ssrc(); |
| 1597 | 1599 |
| 1598 rtc::scoped_refptr<MediaStreamInterface> stream = | 1600 rtc::scoped_refptr<MediaStreamInterface> stream = |
| 1599 remote_streams_->find(stream_label); | 1601 remote_streams_->find(stream_label); |
| 1600 if (!stream) { | 1602 if (!stream) { |
| 1601 // This is a new MediaStream. Create a new remote MediaStream. | 1603 // This is a new MediaStream. Create a new remote MediaStream. |
| 1602 stream = MediaStreamProxy::Create(rtc::Thread::Current(), | 1604 stream = MediaStreamSignallingProxy::Create( |
| 1603 MediaStream::Create(stream_label)); | 1605 rtc::Thread::Current(), MediaStream::Create(stream_label)); |
| 1604 remote_streams_->AddStream(stream); | 1606 remote_streams_->AddStream(stream); |
| 1605 new_streams->AddStream(stream); | 1607 new_streams->AddStream(stream); |
| 1606 } | 1608 } |
| 1607 | 1609 |
| 1608 const TrackInfo* track_info = | 1610 const TrackInfo* track_info = |
| 1609 FindTrackInfo(*current_tracks, stream_label, track_id); | 1611 FindTrackInfo(*current_tracks, stream_label, track_id); |
| 1610 if (!track_info) { | 1612 if (!track_info) { |
| 1611 current_tracks->push_back(TrackInfo(stream_label, track_id, ssrc)); | 1613 current_tracks->push_back(TrackInfo(stream_label, track_id, ssrc)); |
| 1612 OnRemoteTrackSeen(stream_label, track_id, ssrc, media_type); | 1614 OnRemoteTrackSeen(stream_label, track_id, ssrc, media_type); |
| 1613 } | 1615 } |
| 1614 } | 1616 } |
| 1615 | 1617 |
| 1616 // Add default track if necessary. | 1618 // Add default track if necessary. |
| 1617 if (default_track_needed) { | 1619 if (default_track_needed) { |
| 1618 rtc::scoped_refptr<MediaStreamInterface> default_stream = | 1620 rtc::scoped_refptr<MediaStreamInterface> default_stream = |
| 1619 remote_streams_->find(kDefaultStreamLabel); | 1621 remote_streams_->find(kDefaultStreamLabel); |
| 1620 if (!default_stream) { | 1622 if (!default_stream) { |
| 1621 // Create the new default MediaStream. | 1623 // Create the new default MediaStream. |
| 1622 default_stream = MediaStreamProxy::Create( | 1624 default_stream = MediaStreamSignallingProxy::Create( |
| 1623 rtc::Thread::Current(), MediaStream::Create(kDefaultStreamLabel)); | 1625 rtc::Thread::Current(), MediaStream::Create(kDefaultStreamLabel)); |
| 1624 remote_streams_->AddStream(default_stream); | 1626 remote_streams_->AddStream(default_stream); |
| 1625 new_streams->AddStream(default_stream); | 1627 new_streams->AddStream(default_stream); |
| 1626 } | 1628 } |
| 1627 std::string default_track_id = (media_type == cricket::MEDIA_TYPE_AUDIO) | 1629 std::string default_track_id = (media_type == cricket::MEDIA_TYPE_AUDIO) |
| 1628 ? kDefaultAudioTrackLabel | 1630 ? kDefaultAudioTrackLabel |
| 1629 : kDefaultVideoTrackLabel; | 1631 : kDefaultVideoTrackLabel; |
| 1630 const TrackInfo* default_track_info = | 1632 const TrackInfo* default_track_info = |
| 1631 FindTrackInfo(*current_tracks, kDefaultStreamLabel, default_track_id); | 1633 FindTrackInfo(*current_tracks, kDefaultStreamLabel, default_track_id); |
| 1632 if (!default_track_info) { | 1634 if (!default_track_info) { |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1858 uint32_t remote_ssrc) { | 1860 uint32_t remote_ssrc) { |
| 1859 rtc::scoped_refptr<DataChannel> channel( | 1861 rtc::scoped_refptr<DataChannel> channel( |
| 1860 InternalCreateDataChannel(label, nullptr)); | 1862 InternalCreateDataChannel(label, nullptr)); |
| 1861 if (!channel.get()) { | 1863 if (!channel.get()) { |
| 1862 LOG(LS_WARNING) << "Remote peer requested a DataChannel but" | 1864 LOG(LS_WARNING) << "Remote peer requested a DataChannel but" |
| 1863 << "CreateDataChannel failed."; | 1865 << "CreateDataChannel failed."; |
| 1864 return; | 1866 return; |
| 1865 } | 1867 } |
| 1866 channel->SetReceiveSsrc(remote_ssrc); | 1868 channel->SetReceiveSsrc(remote_ssrc); |
| 1867 observer_->OnDataChannel( | 1869 observer_->OnDataChannel( |
| 1868 DataChannelProxy::Create(signaling_thread(), channel)); | 1870 DataChannelSignallingProxy::Create(signaling_thread(), channel)); |
| 1869 } | 1871 } |
| 1870 | 1872 |
| 1871 rtc::scoped_refptr<DataChannel> PeerConnection::InternalCreateDataChannel( | 1873 rtc::scoped_refptr<DataChannel> PeerConnection::InternalCreateDataChannel( |
| 1872 const std::string& label, | 1874 const std::string& label, |
| 1873 const InternalDataChannelInit* config) { | 1875 const InternalDataChannelInit* config) { |
| 1874 if (IsClosed()) { | 1876 if (IsClosed()) { |
| 1875 return nullptr; | 1877 return nullptr; |
| 1876 } | 1878 } |
| 1877 if (session_->data_channel_type() == cricket::DCT_NONE) { | 1879 if (session_->data_channel_type() == cricket::DCT_NONE) { |
| 1878 LOG(LS_ERROR) | 1880 LOG(LS_ERROR) |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1989 const std::string& label, | 1991 const std::string& label, |
| 1990 const InternalDataChannelInit& config) { | 1992 const InternalDataChannelInit& config) { |
| 1991 rtc::scoped_refptr<DataChannel> channel( | 1993 rtc::scoped_refptr<DataChannel> channel( |
| 1992 InternalCreateDataChannel(label, &config)); | 1994 InternalCreateDataChannel(label, &config)); |
| 1993 if (!channel.get()) { | 1995 if (!channel.get()) { |
| 1994 LOG(LS_ERROR) << "Failed to create DataChannel from the OPEN message."; | 1996 LOG(LS_ERROR) << "Failed to create DataChannel from the OPEN message."; |
| 1995 return; | 1997 return; |
| 1996 } | 1998 } |
| 1997 | 1999 |
| 1998 observer_->OnDataChannel( | 2000 observer_->OnDataChannel( |
| 1999 DataChannelProxy::Create(signaling_thread(), channel)); | 2001 DataChannelSignallingProxy::Create(signaling_thread(), channel)); |
| 2000 } | 2002 } |
| 2001 | 2003 |
| 2002 RtpSenderInterface* PeerConnection::FindSenderById(const std::string& id) { | 2004 RtpSenderInterface* PeerConnection::FindSenderById(const std::string& id) { |
| 2003 auto it = | 2005 auto it = |
| 2004 std::find_if(senders_.begin(), senders_.end(), | 2006 std::find_if(senders_.begin(), senders_.end(), |
| 2005 [id](const rtc::scoped_refptr<RtpSenderInterface>& sender) { | 2007 [id](const rtc::scoped_refptr<RtpSenderInterface>& sender) { |
| 2006 return sender->id() == id; | 2008 return sender->id() == id; |
| 2007 }); | 2009 }); |
| 2008 return it != senders_.end() ? it->get() : nullptr; | 2010 return it != senders_.end() ? it->get() : nullptr; |
| 2009 } | 2011 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2058 DataChannel* PeerConnection::FindDataChannelBySid(int sid) const { | 2060 DataChannel* PeerConnection::FindDataChannelBySid(int sid) const { |
| 2059 for (const auto& channel : sctp_data_channels_) { | 2061 for (const auto& channel : sctp_data_channels_) { |
| 2060 if (channel->id() == sid) { | 2062 if (channel->id() == sid) { |
| 2061 return channel; | 2063 return channel; |
| 2062 } | 2064 } |
| 2063 } | 2065 } |
| 2064 return nullptr; | 2066 return nullptr; |
| 2065 } | 2067 } |
| 2066 | 2068 |
| 2067 } // namespace webrtc | 2069 } // namespace webrtc |
| OLD | NEW |