OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/media/rtc_peer_connection_handler.h" | 5 #include "content/renderer/media/rtc_peer_connection_handler.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 11 matching lines...) Expand all Loading... | |
22 #include "content/public/common/content_features.h" | 22 #include "content/public/common/content_features.h" |
23 #include "content/public/common/content_switches.h" | 23 #include "content/public/common/content_switches.h" |
24 #include "content/renderer/media/media_stream_constraints_util.h" | 24 #include "content/renderer/media/media_stream_constraints_util.h" |
25 #include "content/renderer/media/media_stream_track.h" | 25 #include "content/renderer/media/media_stream_track.h" |
26 #include "content/renderer/media/peer_connection_tracker.h" | 26 #include "content/renderer/media/peer_connection_tracker.h" |
27 #include "content/renderer/media/remote_media_stream_impl.h" | 27 #include "content/renderer/media/remote_media_stream_impl.h" |
28 #include "content/renderer/media/rtc_certificate.h" | 28 #include "content/renderer/media/rtc_certificate.h" |
29 #include "content/renderer/media/rtc_data_channel_handler.h" | 29 #include "content/renderer/media/rtc_data_channel_handler.h" |
30 #include "content/renderer/media/rtc_dtmf_sender_handler.h" | 30 #include "content/renderer/media/rtc_dtmf_sender_handler.h" |
31 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" | 31 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" |
32 #include "content/renderer/media/webrtc/rtc_rtp_receiver.h" | |
32 #include "content/renderer/media/webrtc/rtc_stats.h" | 33 #include "content/renderer/media/webrtc/rtc_stats.h" |
33 #include "content/renderer/media/webrtc/webrtc_media_stream_adapter.h" | 34 #include "content/renderer/media/webrtc/webrtc_media_stream_adapter.h" |
34 #include "content/renderer/media/webrtc_audio_device_impl.h" | 35 #include "content/renderer/media/webrtc_audio_device_impl.h" |
35 #include "content/renderer/media/webrtc_uma_histograms.h" | 36 #include "content/renderer/media/webrtc_uma_histograms.h" |
36 #include "content/renderer/render_thread_impl.h" | 37 #include "content/renderer/render_thread_impl.h" |
37 #include "media/base/media_switches.h" | 38 #include "media/base/media_switches.h" |
38 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" | 39 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
39 #include "third_party/WebKit/public/platform/WebRTCAnswerOptions.h" | 40 #include "third_party/WebKit/public/platform/WebRTCAnswerOptions.h" |
40 #include "third_party/WebKit/public/platform/WebRTCConfiguration.h" | 41 #include "third_party/WebKit/public/platform/WebRTCConfiguration.h" |
41 #include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h" | 42 #include "third_party/WebKit/public/platform/WebRTCDataChannelInit.h" |
(...skipping 1585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1627 | 1628 |
1628 void RTCPeerConnectionHandler::getStats( | 1629 void RTCPeerConnectionHandler::getStats( |
1629 std::unique_ptr<blink::WebRTCStatsReportCallback> callback) { | 1630 std::unique_ptr<blink::WebRTCStatsReportCallback> callback) { |
1630 DCHECK(thread_checker_.CalledOnValidThread()); | 1631 DCHECK(thread_checker_.CalledOnValidThread()); |
1631 signaling_thread()->PostTask(FROM_HERE, | 1632 signaling_thread()->PostTask(FROM_HERE, |
1632 base::Bind(&GetRTCStatsOnSignalingThread, | 1633 base::Bind(&GetRTCStatsOnSignalingThread, |
1633 base::ThreadTaskRunnerHandle::Get(), native_peer_connection_, | 1634 base::ThreadTaskRunnerHandle::Get(), native_peer_connection_, |
1634 base::Passed(&callback))); | 1635 base::Passed(&callback))); |
1635 } | 1636 } |
1636 | 1637 |
1638 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> | |
1639 RTCPeerConnectionHandler::getReceivers() { | |
1640 DCHECK(thread_checker_.CalledOnValidThread()); | |
1641 TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::getReceivers"); | |
1642 | |
1643 std::vector<rtc::scoped_refptr<webrtc::RtpReceiverInterface>> | |
1644 webrtc_receivers = native_peer_connection_->GetReceivers(); | |
1645 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> web_receivers( | |
1646 webrtc_receivers.size()); | |
1647 for (size_t i = 0; i < webrtc_receivers.size(); ++i) { | |
1648 rtc::scoped_refptr<webrtc::MediaStreamTrackInterface> webrtc_track = | |
1649 webrtc_receivers[i]->track(); | |
1650 DCHECK(webrtc_track); | |
1651 if (webrtc_track->kind() == webrtc::MediaStreamTrackInterface::kAudioKind) { | |
1652 web_receivers[i].reset(new RTCRtpReceiver( | |
Taylor_Brandstetter
2017/03/24 18:13:07
If I understand correctly: this method will create
hbos_chromium
2017/03/27 14:55:19
You understand correctly.
There are comments in W
| |
1653 webrtc_receivers[i].get(), GetRemoteAudioTrack(webrtc_track->id()))); | |
1654 } else { | |
1655 web_receivers[i].reset(new RTCRtpReceiver( | |
1656 webrtc_receivers[i].get(), GetRemoteVideoTrack(webrtc_track->id()))); | |
1657 } | |
1658 } | |
1659 return web_receivers; | |
1660 } | |
1661 | |
1637 void RTCPeerConnectionHandler::CloseClientPeerConnection() { | 1662 void RTCPeerConnectionHandler::CloseClientPeerConnection() { |
1638 DCHECK(thread_checker_.CalledOnValidThread()); | 1663 DCHECK(thread_checker_.CalledOnValidThread()); |
1639 if (!is_closed_) | 1664 if (!is_closed_) |
1640 client_->closePeerConnection(); | 1665 client_->closePeerConnection(); |
1641 } | 1666 } |
1642 | 1667 |
1643 void RTCPeerConnectionHandler::StartEventLog(IPC::PlatformFileForTransit file, | 1668 void RTCPeerConnectionHandler::StartEventLog(IPC::PlatformFileForTransit file, |
1644 int64_t max_file_size_bytes) { | 1669 int64_t max_file_size_bytes) { |
1645 DCHECK(thread_checker_.CalledOnValidThread()); | 1670 DCHECK(thread_checker_.CalledOnValidThread()); |
1646 DCHECK(file != IPC::InvalidPlatformFileForTransit()); | 1671 DCHECK(file != IPC::InvalidPlatformFileForTransit()); |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1987 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, | 2012 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
1988 base::WaitableEvent::InitialState::NOT_SIGNALED); | 2013 base::WaitableEvent::InitialState::NOT_SIGNALED); |
1989 thread->PostTask(FROM_HERE, | 2014 thread->PostTask(FROM_HERE, |
1990 base::Bind(&RunSynchronousClosure, closure, | 2015 base::Bind(&RunSynchronousClosure, closure, |
1991 base::Unretained(trace_event_name), | 2016 base::Unretained(trace_event_name), |
1992 base::Unretained(&event))); | 2017 base::Unretained(&event))); |
1993 event.Wait(); | 2018 event.Wait(); |
1994 } | 2019 } |
1995 } | 2020 } |
1996 | 2021 |
2022 blink::WebMediaStreamTrack RTCPeerConnectionHandler::GetRemoteAudioTrack( | |
2023 const std::string& track_id) const { | |
2024 DCHECK(thread_checker_.CalledOnValidThread()); | |
2025 blink::WebString id = blink::WebString::fromUTF8(track_id); | |
2026 for (const auto& remote_stream_pair : remote_streams_) { | |
Taylor_Brandstetter
2017/03/24 18:13:07
May be a corner case, but someone could remove the
hbos_chromium
2017/03/27 14:55:19
The case of adding or removing tracks to streams i
Taylor_Brandstetter
2017/03/27 21:39:01
Sounds like a reasonable plan. I'm happy as long a
| |
2027 blink::WebMediaStreamTrack web_track = | |
2028 remote_stream_pair.second->webkit_stream().getAudioTrack(id); | |
2029 if (!web_track.isNull()) | |
2030 return web_track; | |
2031 } | |
2032 return blink::WebMediaStreamTrack(); | |
2033 } | |
2034 | |
2035 blink::WebMediaStreamTrack RTCPeerConnectionHandler::GetRemoteVideoTrack( | |
2036 const std::string& track_id) const { | |
2037 DCHECK(thread_checker_.CalledOnValidThread()); | |
2038 blink::WebString id = blink::WebString::fromUTF8(track_id); | |
2039 for (const auto& remote_stream_pair : remote_streams_) { | |
2040 blink::WebMediaStreamTrack web_track = | |
2041 remote_stream_pair.second->webkit_stream().getVideoTrack(id); | |
2042 if (!web_track.isNull()) | |
2043 return web_track; | |
2044 } | |
2045 return blink::WebMediaStreamTrack(); | |
2046 } | |
2047 | |
1997 void RTCPeerConnectionHandler::ReportICEState( | 2048 void RTCPeerConnectionHandler::ReportICEState( |
1998 webrtc::PeerConnectionInterface::IceConnectionState new_state) { | 2049 webrtc::PeerConnectionInterface::IceConnectionState new_state) { |
1999 DCHECK(thread_checker_.CalledOnValidThread()); | 2050 DCHECK(thread_checker_.CalledOnValidThread()); |
2000 if (ice_state_seen_[new_state]) | 2051 if (ice_state_seen_[new_state]) |
2001 return; | 2052 return; |
2002 ice_state_seen_[new_state] = true; | 2053 ice_state_seen_[new_state] = true; |
2003 UMA_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.ConnectionState", new_state, | 2054 UMA_HISTOGRAM_ENUMERATION("WebRTC.PeerConnection.ConnectionState", new_state, |
2004 webrtc::PeerConnectionInterface::kIceConnectionMax); | 2055 webrtc::PeerConnectionInterface::kIceConnectionMax); |
2005 } | 2056 } |
2006 | 2057 |
2007 void RTCPeerConnectionHandler::ResetUMAStats() { | 2058 void RTCPeerConnectionHandler::ResetUMAStats() { |
2008 DCHECK(thread_checker_.CalledOnValidThread()); | 2059 DCHECK(thread_checker_.CalledOnValidThread()); |
2009 num_local_candidates_ipv6_ = 0; | 2060 num_local_candidates_ipv6_ = 0; |
2010 num_local_candidates_ipv4_ = 0; | 2061 num_local_candidates_ipv4_ = 0; |
2011 ice_connection_checking_start_ = base::TimeTicks(); | 2062 ice_connection_checking_start_ = base::TimeTicks(); |
2012 memset(ice_state_seen_, 0, sizeof(ice_state_seen_)); | 2063 memset(ice_state_seen_, 0, sizeof(ice_state_seen_)); |
2013 } | 2064 } |
2014 } // namespace content | 2065 } // namespace content |
OLD | NEW |