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> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
12 #include "base/debug/trace_event.h" | 12 #include "base/debug/trace_event.h" |
13 #include "base/lazy_instance.h" | 13 #include "base/lazy_instance.h" |
14 #include "base/logging.h" | 14 #include "base/logging.h" |
15 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
16 #include "base/metrics/histogram.h" | 16 #include "base/metrics/histogram.h" |
17 #include "base/stl_util.h" | 17 #include "base/stl_util.h" |
18 #include "base/strings/utf_string_conversions.h" | 18 #include "base/strings/utf_string_conversions.h" |
| 19 #include "base/thread_task_runner_handle.h" |
19 #include "content/public/common/content_switches.h" | 20 #include "content/public/common/content_switches.h" |
20 #include "content/renderer/media/media_stream_track.h" | 21 #include "content/renderer/media/media_stream_track.h" |
21 #include "content/renderer/media/peer_connection_tracker.h" | 22 #include "content/renderer/media/peer_connection_tracker.h" |
22 #include "content/renderer/media/remote_media_stream_impl.h" | 23 #include "content/renderer/media/remote_media_stream_impl.h" |
23 #include "content/renderer/media/rtc_data_channel_handler.h" | 24 #include "content/renderer/media/rtc_data_channel_handler.h" |
24 #include "content/renderer/media/rtc_dtmf_sender_handler.h" | 25 #include "content/renderer/media/rtc_dtmf_sender_handler.h" |
25 #include "content/renderer/media/rtc_media_constraints.h" | 26 #include "content/renderer/media/rtc_media_constraints.h" |
26 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" | 27 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h" |
27 #include "content/renderer/media/webrtc/webrtc_media_stream_adapter.h" | 28 #include "content/renderer/media/webrtc/webrtc_media_stream_adapter.h" |
28 #include "content/renderer/media/webrtc_audio_capturer.h" | 29 #include "content/renderer/media/webrtc_audio_capturer.h" |
(...skipping 793 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
822 if (!webrtc_channel) { | 823 if (!webrtc_channel) { |
823 DLOG(ERROR) << "Could not create native data channel."; | 824 DLOG(ERROR) << "Could not create native data channel."; |
824 return NULL; | 825 return NULL; |
825 } | 826 } |
826 if (peer_connection_tracker_) | 827 if (peer_connection_tracker_) |
827 peer_connection_tracker_->TrackCreateDataChannel( | 828 peer_connection_tracker_->TrackCreateDataChannel( |
828 this, webrtc_channel.get(), PeerConnectionTracker::SOURCE_LOCAL); | 829 this, webrtc_channel.get(), PeerConnectionTracker::SOURCE_LOCAL); |
829 | 830 |
830 ++num_data_channels_created_; | 831 ++num_data_channels_created_; |
831 | 832 |
832 return new RtcDataChannelHandler(webrtc_channel); | 833 return new RtcDataChannelHandler(base::ThreadTaskRunnerHandle::Get(), |
| 834 webrtc_channel); |
833 } | 835 } |
834 | 836 |
835 blink::WebRTCDTMFSenderHandler* RTCPeerConnectionHandler::createDTMFSender( | 837 blink::WebRTCDTMFSenderHandler* RTCPeerConnectionHandler::createDTMFSender( |
836 const blink::WebMediaStreamTrack& track) { | 838 const blink::WebMediaStreamTrack& track) { |
837 TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::createDTMFSender"); | 839 TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::createDTMFSender"); |
838 DVLOG(1) << "createDTMFSender."; | 840 DVLOG(1) << "createDTMFSender."; |
839 | 841 |
840 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); | 842 MediaStreamTrack* native_track = MediaStreamTrack::GetTrack(track); |
841 if (!native_track || | 843 if (!native_track || |
842 track.source().type() != blink::WebMediaStreamSource::TypeAudio) { | 844 track.source().type() != blink::WebMediaStreamSource::TypeAudio) { |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1019 | 1021 |
1020 void RTCPeerConnectionHandler::OnDataChannel( | 1022 void RTCPeerConnectionHandler::OnDataChannel( |
1021 webrtc::DataChannelInterface* data_channel) { | 1023 webrtc::DataChannelInterface* data_channel) { |
1022 TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::OnDataChannel"); | 1024 TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::OnDataChannel"); |
1023 if (peer_connection_tracker_) | 1025 if (peer_connection_tracker_) |
1024 peer_connection_tracker_->TrackCreateDataChannel( | 1026 peer_connection_tracker_->TrackCreateDataChannel( |
1025 this, data_channel, PeerConnectionTracker::SOURCE_REMOTE); | 1027 this, data_channel, PeerConnectionTracker::SOURCE_REMOTE); |
1026 | 1028 |
1027 DVLOG(1) << "RTCPeerConnectionHandler::OnDataChannel " | 1029 DVLOG(1) << "RTCPeerConnectionHandler::OnDataChannel " |
1028 << data_channel->label(); | 1030 << data_channel->label(); |
1029 client_->didAddRemoteDataChannel(new RtcDataChannelHandler(data_channel)); | 1031 client_->didAddRemoteDataChannel(new RtcDataChannelHandler( |
| 1032 base::ThreadTaskRunnerHandle::Get(), data_channel)); |
1030 } | 1033 } |
1031 | 1034 |
1032 void RTCPeerConnectionHandler::OnRenegotiationNeeded() { | 1035 void RTCPeerConnectionHandler::OnRenegotiationNeeded() { |
1033 TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::OnRenegotiationNeeded"); | 1036 TRACE_EVENT0("webrtc", "RTCPeerConnectionHandler::OnRenegotiationNeeded"); |
1034 if (peer_connection_tracker_) | 1037 if (peer_connection_tracker_) |
1035 peer_connection_tracker_->TrackOnRenegotiationNeeded(this); | 1038 peer_connection_tracker_->TrackOnRenegotiationNeeded(this); |
1036 client_->negotiationNeeded(); | 1039 client_->negotiationNeeded(); |
1037 } | 1040 } |
1038 | 1041 |
1039 PeerConnectionTracker* RTCPeerConnectionHandler::peer_connection_tracker() { | 1042 PeerConnectionTracker* RTCPeerConnectionHandler::peer_connection_tracker() { |
1040 return peer_connection_tracker_; | 1043 return peer_connection_tracker_; |
1041 } | 1044 } |
1042 | 1045 |
1043 webrtc::SessionDescriptionInterface* | 1046 webrtc::SessionDescriptionInterface* |
1044 RTCPeerConnectionHandler::CreateNativeSessionDescription( | 1047 RTCPeerConnectionHandler::CreateNativeSessionDescription( |
1045 const blink::WebRTCSessionDescription& description, | 1048 const blink::WebRTCSessionDescription& description, |
1046 webrtc::SdpParseError* error) { | 1049 webrtc::SdpParseError* error) { |
1047 std::string sdp = base::UTF16ToUTF8(description.sdp()); | 1050 std::string sdp = base::UTF16ToUTF8(description.sdp()); |
1048 std::string type = base::UTF16ToUTF8(description.type()); | 1051 std::string type = base::UTF16ToUTF8(description.type()); |
1049 webrtc::SessionDescriptionInterface* native_desc = | 1052 webrtc::SessionDescriptionInterface* native_desc = |
1050 dependency_factory_->CreateSessionDescription(type, sdp, error); | 1053 dependency_factory_->CreateSessionDescription(type, sdp, error); |
1051 | 1054 |
1052 LOG_IF(ERROR, !native_desc) << "Failed to create native session description." | 1055 LOG_IF(ERROR, !native_desc) << "Failed to create native session description." |
1053 << " Type: " << type << " SDP: " << sdp; | 1056 << " Type: " << type << " SDP: " << sdp; |
1054 | 1057 |
1055 return native_desc; | 1058 return native_desc; |
1056 } | 1059 } |
1057 | 1060 |
1058 } // namespace content | 1061 } // namespace content |
OLD | NEW |