| Index: content/renderer/media/media_stream_dependency_factory.cc
|
| diff --git a/content/renderer/media/media_stream_dependency_factory.cc b/content/renderer/media/media_stream_dependency_factory.cc
|
| index 4f4565646f9aa8a155ceeee710bf8af92158da70..2e48d7d2506f1cdf50a14d076d82ef9c78a58e4c 100644
|
| --- a/content/renderer/media/media_stream_dependency_factory.cc
|
| +++ b/content/renderer/media/media_stream_dependency_factory.cc
|
| @@ -10,8 +10,9 @@
|
| #include "base/utf_string_conversions.h"
|
| #include "content/renderer/media/media_stream_extra_data.h"
|
| #include "content/renderer/media/media_stream_source_extra_data.h"
|
| -#include "content/renderer/media/rtc_video_capturer.h"
|
| #include "content/renderer/media/peer_connection_handler_jsep.h"
|
| +#include "content/renderer/media/rtc_peer_connection_handler.h"
|
| +#include "content/renderer/media/rtc_video_capturer.h"
|
| #include "content/renderer/media/video_capture_impl_manager.h"
|
| #include "content/renderer/media/webrtc_audio_device_impl.h"
|
| #include "content/renderer/media/webrtc_uma_histograms.h"
|
| @@ -96,13 +97,26 @@ MediaStreamDependencyFactory::CreatePeerConnectionHandlerJsep(
|
| // webKitPeerConnection00.
|
| UpdateWebRTCMethodCount(WEBKIT_PEER_CONNECTION);
|
|
|
| - if (!EnsurePeerConnectionFactory()) {
|
| + if (!EnsurePeerConnectionFactory())
|
| return NULL;
|
| - }
|
|
|
| return new PeerConnectionHandlerJsep(client, this);
|
| }
|
|
|
| +WebKit::WebRTCPeerConnectionHandler*
|
| +MediaStreamDependencyFactory::CreateRTCPeerConnectionHandler(
|
| + WebKit::WebRTCPeerConnectionHandlerClient* client) {
|
| + // Save histogram data so we can see how much PeerConnetion is used.
|
| + // The histogram counts the number of calls to the JS API
|
| + // webKitRTCPeerConnection.
|
| + UpdateWebRTCMethodCount(WEBKIT_RTC_PEER_CONNECTION);
|
| +
|
| + if (!EnsurePeerConnectionFactory())
|
| + return NULL;
|
| +
|
| + return new RTCPeerConnectionHandler(client, this);
|
| +}
|
| +
|
| bool MediaStreamDependencyFactory::CreateNativeLocalMediaStream(
|
| WebKit::WebMediaStreamDescriptor* description) {
|
| // Creating the peer connection factory can fail if for example the audio
|
| @@ -115,7 +129,7 @@ bool MediaStreamDependencyFactory::CreateNativeLocalMediaStream(
|
| return false;
|
|
|
| std::string label = UTF16ToUTF8(description->label());
|
| - talk_base::scoped_refptr<webrtc::LocalMediaStreamInterface> native_stream =
|
| + scoped_refptr<webrtc::LocalMediaStreamInterface> native_stream =
|
| CreateLocalMediaStream(label);
|
|
|
| // Add audio tracks.
|
| @@ -133,7 +147,7 @@ bool MediaStreamDependencyFactory::CreateNativeLocalMediaStream(
|
| // TODO(perkj): Refactor the creation of audio tracks to use a proper
|
| // interface for receiving audio input data. Currently NULL is passed since
|
| // the |audio_device| is the wrong class and is unused.
|
| - talk_base::scoped_refptr<webrtc::LocalAudioTrackInterface> audio_track(
|
| + scoped_refptr<webrtc::LocalAudioTrackInterface> audio_track(
|
| CreateLocalAudioTrack(UTF16ToUTF8(source.id()), NULL));
|
| native_stream->AddTrack(audio_track);
|
| audio_track->set_enabled(audio_components[i].isEnabled());
|
| @@ -155,7 +169,7 @@ bool MediaStreamDependencyFactory::CreateNativeLocalMediaStream(
|
| NOTIMPLEMENTED();
|
| continue;
|
| }
|
| - talk_base::scoped_refptr<webrtc::LocalVideoTrackInterface> video_track(
|
| + scoped_refptr<webrtc::LocalVideoTrackInterface> video_track(
|
| CreateLocalVideoTrack(UTF16ToUTF8(source.id()),
|
| source_data->device_info().session_id));
|
| native_stream->AddTrack(video_track);
|
| @@ -173,7 +187,7 @@ bool MediaStreamDependencyFactory::CreatePeerConnectionFactory(
|
| talk_base::NetworkManager* network_manager,
|
| talk_base::PacketSocketFactory* socket_factory) {
|
| if (!pc_factory_.get()) {
|
| - talk_base::scoped_refptr<P2PPortAllocatorFactory> pa_factory =
|
| + scoped_refptr<P2PPortAllocatorFactory> pa_factory =
|
| new talk_base::RefCountedObject<P2PPortAllocatorFactory>(
|
| socket_dispatcher,
|
| network_manager,
|
| @@ -181,7 +195,7 @@ bool MediaStreamDependencyFactory::CreatePeerConnectionFactory(
|
|
|
| DCHECK(!audio_device_);
|
| audio_device_ = new WebRtcAudioDeviceImpl();
|
| - talk_base::scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
|
| + scoped_refptr<webrtc::PeerConnectionFactoryInterface> factory(
|
| webrtc::CreatePeerConnectionFactory(worker_thread,
|
| signaling_thread,
|
| pa_factory.release(),
|
| @@ -196,20 +210,29 @@ bool MediaStreamDependencyFactory::PeerConnectionFactoryCreated() {
|
| return pc_factory_.get() != NULL;
|
| }
|
|
|
| -talk_base::scoped_refptr<webrtc::PeerConnectionInterface>
|
| +scoped_refptr<webrtc::PeerConnectionInterface>
|
| MediaStreamDependencyFactory::CreatePeerConnection(
|
| const std::string& config,
|
| webrtc::PeerConnectionObserver* observer) {
|
| - return pc_factory_->CreatePeerConnection(config, observer);
|
| + return pc_factory_->CreatePeerConnection(config, observer).get();
|
| }
|
|
|
| -talk_base::scoped_refptr<webrtc::LocalMediaStreamInterface>
|
| +scoped_refptr<webrtc::PeerConnectionInterface>
|
| +MediaStreamDependencyFactory::CreatePeerConnection(
|
| + const webrtc::JsepInterface::IceServers& ice_servers,
|
| + const webrtc::MediaConstraintsInterface* constraints,
|
| + webrtc::PeerConnectionObserver* observer) {
|
| + return pc_factory_->CreatePeerConnection(
|
| + ice_servers, constraints, observer).get();
|
| +}
|
| +
|
| +scoped_refptr<webrtc::LocalMediaStreamInterface>
|
| MediaStreamDependencyFactory::CreateLocalMediaStream(
|
| const std::string& label) {
|
| - return pc_factory_->CreateLocalMediaStream(label);
|
| + return pc_factory_->CreateLocalMediaStream(label).get();
|
| }
|
|
|
| -talk_base::scoped_refptr<webrtc::LocalVideoTrackInterface>
|
| +scoped_refptr<webrtc::LocalVideoTrackInterface>
|
| MediaStreamDependencyFactory::CreateLocalVideoTrack(
|
| const std::string& label,
|
| int video_session_id) {
|
| @@ -217,15 +240,14 @@ MediaStreamDependencyFactory::CreateLocalVideoTrack(
|
| vc_manager_.get());
|
|
|
| // The video track takes ownership of |capturer|.
|
| - return pc_factory_->CreateLocalVideoTrack(label,
|
| - capturer);
|
| + return pc_factory_->CreateLocalVideoTrack(label, capturer).get();
|
| }
|
|
|
| -talk_base::scoped_refptr<webrtc::LocalAudioTrackInterface>
|
| +scoped_refptr<webrtc::LocalAudioTrackInterface>
|
| MediaStreamDependencyFactory::CreateLocalAudioTrack(
|
| const std::string& label,
|
| webrtc::AudioDeviceModule* audio_device) {
|
| - return pc_factory_->CreateLocalAudioTrack(label, audio_device);
|
| + return pc_factory_->CreateLocalAudioTrack(label, audio_device).get();
|
| }
|
|
|
| webrtc::SessionDescriptionInterface*
|
| @@ -233,6 +255,12 @@ MediaStreamDependencyFactory::CreateSessionDescription(const std::string& sdp) {
|
| return webrtc::CreateSessionDescription(sdp);
|
| }
|
|
|
| +webrtc::SessionDescriptionInterface*
|
| +MediaStreamDependencyFactory::CreateSessionDescription(const std::string& type,
|
| + const std::string& sdp) {
|
| + return webrtc::CreateSessionDescription(type, sdp);
|
| +}
|
| +
|
| webrtc::IceCandidateInterface* MediaStreamDependencyFactory::CreateIceCandidate(
|
| const std::string& sdp_mid,
|
| int sdp_mline_index,
|
|
|