| 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 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DEPENDENCY_FACTORY_H_ | 5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DEPENDENCY_FACTORY_H_ |
| 6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DEPENDENCY_FACTORY_H_ | 6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DEPENDENCY_FACTORY_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 19 matching lines...) Expand all Loading... |
| 30 } | 30 } |
| 31 | 31 |
| 32 namespace webrtc { | 32 namespace webrtc { |
| 33 class PeerConnection; | 33 class PeerConnection; |
| 34 } | 34 } |
| 35 | 35 |
| 36 namespace WebKit { | 36 namespace WebKit { |
| 37 class WebMediaStreamDescriptor; | 37 class WebMediaStreamDescriptor; |
| 38 class WebPeerConnection00Handler; | 38 class WebPeerConnection00Handler; |
| 39 class WebPeerConnection00HandlerClient; | 39 class WebPeerConnection00HandlerClient; |
| 40 class WebRTCPeerConnectionHandler; |
| 41 class WebRTCPeerConnectionHandlerClient; |
| 40 } | 42 } |
| 41 | 43 |
| 42 class WebRtcAudioDeviceImpl; | 44 class WebRtcAudioDeviceImpl; |
| 43 class VideoCaptureImplManager; | 45 class VideoCaptureImplManager; |
| 44 | 46 |
| 45 // Object factory for RTC MediaStreams and RTC PeerConnections. | 47 // Object factory for RTC MediaStreams and RTC PeerConnections. |
| 46 class CONTENT_EXPORT MediaStreamDependencyFactory | 48 class CONTENT_EXPORT MediaStreamDependencyFactory |
| 47 : NON_EXPORTED_BASE(public base::NonThreadSafe) { | 49 : NON_EXPORTED_BASE(public base::NonThreadSafe) { |
| 48 public: | 50 public: |
| 49 MediaStreamDependencyFactory( | 51 MediaStreamDependencyFactory( |
| 50 VideoCaptureImplManager* vc_manager, | 52 VideoCaptureImplManager* vc_manager, |
| 51 content::P2PSocketDispatcher* p2p_socket_dispatcher); | 53 content::P2PSocketDispatcher* p2p_socket_dispatcher); |
| 52 virtual ~MediaStreamDependencyFactory(); | 54 virtual ~MediaStreamDependencyFactory(); |
| 53 | 55 |
| 54 // Create a a PeerConnectionHandlerJsep object that implements the | 56 // Create a PeerConnectionHandlerJsep object that implements the |
| 55 // WebKit WebPeerConnection00Handler interface. | 57 // WebKit WebPeerConnection00Handler interface. |
| 56 WebKit::WebPeerConnection00Handler* CreatePeerConnectionHandlerJsep( | 58 WebKit::WebPeerConnection00Handler* CreatePeerConnectionHandlerJsep( |
| 57 WebKit::WebPeerConnection00HandlerClient* client); | 59 WebKit::WebPeerConnection00HandlerClient* client); |
| 58 | 60 |
| 61 // Create a RTCPeerConnectionHandler object that implements the |
| 62 // WebKit WebRTCPeerConnectionHandler interface. |
| 63 WebKit::WebRTCPeerConnectionHandler* CreateRTCPeerConnectionHandler( |
| 64 WebKit::WebRTCPeerConnectionHandlerClient* client); |
| 65 |
| 59 // Creates a libjingle representation of a MediaStream and stores | 66 // Creates a libjingle representation of a MediaStream and stores |
| 60 // it in the extra data field of |description| | 67 // it in the extra data field of |description| |
| 61 bool CreateNativeLocalMediaStream( | 68 bool CreateNativeLocalMediaStream( |
| 62 WebKit::WebMediaStreamDescriptor* description); | 69 WebKit::WebMediaStreamDescriptor* description); |
| 63 | 70 |
| 64 // Asks the libjingle PeerConnection factory to create a libjingle | 71 // Asks the libjingle PeerConnection factory to create a libjingle |
| 65 // PeerConnection object. | 72 // PeerConnection object. |
| 66 // The PeerConnection object is owned by PeerConnectionHandler. | 73 // The PeerConnection object is owned by PeerConnectionHandler. |
| 67 virtual talk_base::scoped_refptr<webrtc::PeerConnectionInterface> | 74 virtual scoped_refptr<webrtc::PeerConnectionInterface> |
| 68 CreatePeerConnection(const std::string& config, | 75 CreatePeerConnection(const std::string& config, |
| 69 webrtc::PeerConnectionObserver* observer); | 76 webrtc::PeerConnectionObserver* observer); |
| 70 | 77 |
| 71 // Creates a libjingle representation of a Session description. | 78 virtual scoped_refptr<webrtc::PeerConnectionInterface> |
| 79 CreatePeerConnection(const webrtc::JsepInterface::IceServers& ice_servers, |
| 80 const webrtc::MediaConstraintsInterface* constraints, |
| 81 webrtc::PeerConnectionObserver* observer); |
| 82 |
| 83 // Creates a libjingle representation of a Session description. Used by a |
| 84 // PeerConnectionHandlerJsep instance. |
| 72 virtual webrtc::SessionDescriptionInterface* CreateSessionDescription( | 85 virtual webrtc::SessionDescriptionInterface* CreateSessionDescription( |
| 73 const std::string& sdp); | 86 const std::string& sdp); |
| 74 | 87 |
| 88 // Creates a libjingle representation of a Session description. Used by a |
| 89 // RTCPeerConnectionHandler instance. |
| 90 virtual webrtc::SessionDescriptionInterface* CreateSessionDescription( |
| 91 const std::string& type, |
| 92 const std::string& sdp); |
| 93 |
| 75 // Creates a libjingle representation of an ice candidate. | 94 // Creates a libjingle representation of an ice candidate. |
| 76 virtual webrtc::IceCandidateInterface* CreateIceCandidate( | 95 virtual webrtc::IceCandidateInterface* CreateIceCandidate( |
| 77 const std::string& sdp_mid, | 96 const std::string& sdp_mid, |
| 78 int sdp_mline_index, | 97 int sdp_mline_index, |
| 79 const std::string& sdp); | 98 const std::string& sdp); |
| 80 | 99 |
| 81 protected: | 100 protected: |
| 82 // Asks the PeerConnection factory to create a Local MediaStream object. | 101 // Asks the PeerConnection factory to create a Local MediaStream object. |
| 83 virtual talk_base::scoped_refptr<webrtc::LocalMediaStreamInterface> | 102 virtual scoped_refptr<webrtc::LocalMediaStreamInterface> |
| 84 CreateLocalMediaStream(const std::string& label); | 103 CreateLocalMediaStream(const std::string& label); |
| 85 | 104 |
| 86 // Asks the PeerConnection factory to create a Local VideoTrack object. | 105 // Asks the PeerConnection factory to create a Local VideoTrack object. |
| 87 virtual talk_base::scoped_refptr<webrtc::LocalVideoTrackInterface> | 106 virtual scoped_refptr<webrtc::LocalVideoTrackInterface> |
| 88 CreateLocalVideoTrack(const std::string& label, | 107 CreateLocalVideoTrack(const std::string& label, |
| 89 int video_session_id); | 108 int video_session_id); |
| 90 | 109 |
| 91 // Asks the PeerConnection factory to create a Local AudioTrack object. | 110 // Asks the PeerConnection factory to create a Local AudioTrack object. |
| 92 virtual talk_base::scoped_refptr<webrtc::LocalAudioTrackInterface> | 111 virtual scoped_refptr<webrtc::LocalAudioTrackInterface> |
| 93 CreateLocalAudioTrack(const std::string& label, | 112 CreateLocalAudioTrack(const std::string& label, |
| 94 webrtc::AudioDeviceModule* audio_device); | 113 webrtc::AudioDeviceModule* audio_device); |
| 95 | 114 |
| 96 virtual bool EnsurePeerConnectionFactory(); | 115 virtual bool EnsurePeerConnectionFactory(); |
| 97 virtual void SetAudioDeviceSessionId(int session_id); | 116 virtual void SetAudioDeviceSessionId(int session_id); |
| 98 | 117 |
| 99 private: | 118 private: |
| 100 // Creates and deletes |pc_factory_|, which in turn is used for | 119 // Creates and deletes |pc_factory_|, which in turn is used for |
| 101 // creating PeerConnection objects. | 120 // creating PeerConnection objects. |
| 102 bool CreatePeerConnectionFactory( | 121 bool CreatePeerConnectionFactory( |
| 103 talk_base::Thread* worker_thread, | 122 talk_base::Thread* worker_thread, |
| 104 talk_base::Thread* signaling_thread, | 123 talk_base::Thread* signaling_thread, |
| 105 content::P2PSocketDispatcher* socket_dispatcher, | 124 content::P2PSocketDispatcher* socket_dispatcher, |
| 106 talk_base::NetworkManager* network_manager, | 125 talk_base::NetworkManager* network_manager, |
| 107 talk_base::PacketSocketFactory* socket_factory); | 126 talk_base::PacketSocketFactory* socket_factory); |
| 108 bool PeerConnectionFactoryCreated(); | 127 bool PeerConnectionFactoryCreated(); |
| 109 | 128 |
| 110 void InitializeWorkerThread(talk_base::Thread** thread, | 129 void InitializeWorkerThread(talk_base::Thread** thread, |
| 111 base::WaitableEvent* event); | 130 base::WaitableEvent* event); |
| 112 | 131 |
| 113 void CreateIpcNetworkManagerOnWorkerThread(base::WaitableEvent* event); | 132 void CreateIpcNetworkManagerOnWorkerThread(base::WaitableEvent* event); |
| 114 void DeleteIpcNetworkManager(); | 133 void DeleteIpcNetworkManager(); |
| 115 void CleanupPeerConnectionFactory(); | 134 void CleanupPeerConnectionFactory(); |
| 116 | 135 |
| 117 // We own network_manager_, must be deleted on the worker thread. | 136 // We own network_manager_, must be deleted on the worker thread. |
| 118 // The network manager uses |p2p_socket_dispatcher_|. | 137 // The network manager uses |p2p_socket_dispatcher_|. |
| 119 content::IpcNetworkManager* network_manager_; | 138 content::IpcNetworkManager* network_manager_; |
| 120 scoped_ptr<content::IpcPacketSocketFactory> socket_factory_; | 139 scoped_ptr<content::IpcPacketSocketFactory> socket_factory_; |
| 121 | 140 |
| 122 talk_base::scoped_refptr<webrtc::PeerConnectionFactoryInterface> pc_factory_; | 141 scoped_refptr<webrtc::PeerConnectionFactoryInterface> pc_factory_; |
| 123 | 142 |
| 124 scoped_refptr<VideoCaptureImplManager> vc_manager_; | 143 scoped_refptr<VideoCaptureImplManager> vc_manager_; |
| 125 scoped_refptr<content::P2PSocketDispatcher> p2p_socket_dispatcher_; | 144 scoped_refptr<content::P2PSocketDispatcher> p2p_socket_dispatcher_; |
| 126 scoped_refptr<WebRtcAudioDeviceImpl> audio_device_; | 145 scoped_refptr<WebRtcAudioDeviceImpl> audio_device_; |
| 127 | 146 |
| 128 // PeerConnection threads. signaling_thread_ is created from the | 147 // PeerConnection threads. signaling_thread_ is created from the |
| 129 // "current" chrome thread. | 148 // "current" chrome thread. |
| 130 talk_base::Thread* signaling_thread_; | 149 talk_base::Thread* signaling_thread_; |
| 131 talk_base::Thread* worker_thread_; | 150 talk_base::Thread* worker_thread_; |
| 132 base::Thread chrome_worker_thread_; | 151 base::Thread chrome_worker_thread_; |
| 133 | 152 |
| 134 DISALLOW_COPY_AND_ASSIGN(MediaStreamDependencyFactory); | 153 DISALLOW_COPY_AND_ASSIGN(MediaStreamDependencyFactory); |
| 135 }; | 154 }; |
| 136 | 155 |
| 137 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DEPENDENCY_FACTORY_H_ | 156 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_DEPENDENCY_FACTORY_H_ |
| OLD | NEW |