| 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_IMPL_H_ | 5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_ |
| 6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_ | 6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 virtual void OnDeviceOpenFailed(int request_id) OVERRIDE; | 92 virtual void OnDeviceOpenFailed(int request_id) OVERRIDE; |
| 93 | 93 |
| 94 // RenderViewObserver OVERRIDE | 94 // RenderViewObserver OVERRIDE |
| 95 virtual void FrameDetached(blink::WebFrame* frame) OVERRIDE; | 95 virtual void FrameDetached(blink::WebFrame* frame) OVERRIDE; |
| 96 virtual void FrameWillClose(blink::WebFrame* frame) OVERRIDE; | 96 virtual void FrameWillClose(blink::WebFrame* frame) OVERRIDE; |
| 97 | 97 |
| 98 protected: | 98 protected: |
| 99 // Called when |source| has been stopped from JavaScript. | 99 // Called when |source| has been stopped from JavaScript. |
| 100 void OnLocalSourceStopped(const blink::WebMediaStreamSource& source); | 100 void OnLocalSourceStopped(const blink::WebMediaStreamSource& source); |
| 101 | 101 |
| 102 // Called when a MediaStream with label |label| has been ordered to stop from | 102 // These methods are virtual for test purposes. A test can override them to |
| 103 // JavaScript. The implementation must stop all sources that are not used by | |
| 104 // other MediaStreams. | |
| 105 // TODO(perkj): MediaStream::Stop has been deprecated from the spec and all | |
| 106 // applications should move to use MediaStreamTrack::Stop instead and this | |
| 107 // method be removed. | |
| 108 void OnLocalMediaStreamStop(const std::string& label); | |
| 109 | |
| 110 // This function is virtual for test purposes. A test can override this to | |
| 111 // test requesting local media streams. The function notifies WebKit that the | 103 // test requesting local media streams. The function notifies WebKit that the |
| 112 // |request| have completed and generated the MediaStream |stream|. | 104 // |request| have completed. |
| 113 virtual void CompleteGetUserMediaRequest( | 105 virtual void GetUserMediaRequestSucceeded( |
| 114 const blink::WebMediaStream& stream, | 106 const blink::WebMediaStream& stream, |
| 107 blink::WebUserMediaRequest* request_info); |
| 108 virtual void GetUserMediaRequestFailed( |
| 115 blink::WebUserMediaRequest* request_info, | 109 blink::WebUserMediaRequest* request_info, |
| 116 content::MediaStreamRequestResult result); | 110 content::MediaStreamRequestResult result); |
| 117 | 111 |
| 112 |
| 118 // Returns the WebKit representation of a MediaStream given an URL. | 113 // Returns the WebKit representation of a MediaStream given an URL. |
| 119 // This is virtual for test purposes. | 114 // This is virtual for test purposes. |
| 120 virtual blink::WebMediaStream GetMediaStream(const GURL& url); | 115 virtual blink::WebMediaStream GetMediaStream(const GURL& url); |
| 121 | 116 |
| 122 // Creates a MediaStreamVideoSource object. | 117 // Creates a MediaStreamVideoSource object. |
| 123 // This is virtual for test purposes. | 118 // This is virtual for test purposes. |
| 124 virtual MediaStreamVideoSource* CreateVideoSource( | 119 virtual MediaStreamVideoSource* CreateVideoSource( |
| 125 const StreamDeviceInfo& device, | 120 const StreamDeviceInfo& device, |
| 126 const MediaStreamSource::SourceStoppedCallback& stop_callback); | 121 const MediaStreamSource::SourceStoppedCallback& stop_callback); |
| 127 | 122 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 | 208 |
| 214 // Callback function triggered when all native versions of the | 209 // Callback function triggered when all native versions of the |
| 215 // underlying media sources and tracks have been created and started. | 210 // underlying media sources and tracks have been created and started. |
| 216 void OnCreateNativeTracksCompleted( | 211 void OnCreateNativeTracksCompleted( |
| 217 UserMediaRequestInfo* request, | 212 UserMediaRequestInfo* request, |
| 218 content::MediaStreamRequestResult result); | 213 content::MediaStreamRequestResult result); |
| 219 | 214 |
| 220 UserMediaRequestInfo* FindUserMediaRequestInfo(int request_id); | 215 UserMediaRequestInfo* FindUserMediaRequestInfo(int request_id); |
| 221 UserMediaRequestInfo* FindUserMediaRequestInfo( | 216 UserMediaRequestInfo* FindUserMediaRequestInfo( |
| 222 const blink::WebUserMediaRequest& request); | 217 const blink::WebUserMediaRequest& request); |
| 223 UserMediaRequestInfo* FindUserMediaRequestInfo(const std::string& label); | |
| 224 void DeleteUserMediaRequestInfo(UserMediaRequestInfo* request); | 218 void DeleteUserMediaRequestInfo(UserMediaRequestInfo* request); |
| 225 | 219 |
| 226 // Returns the source that use a device with |device.session_id| | 220 // Returns the source that use a device with |device.session_id| |
| 227 // and |device.device.id|. NULL if such source doesn't exist. | 221 // and |device.device.id|. NULL if such source doesn't exist. |
| 228 const blink::WebMediaStreamSource* FindLocalSource( | 222 const blink::WebMediaStreamSource* FindLocalSource( |
| 229 const StreamDeviceInfo& device) const; | 223 const StreamDeviceInfo& device) const; |
| 230 | 224 |
| 231 // Returns true if |source| exists in |user_media_requests_| | |
| 232 bool IsSourceInRequests(const blink::WebMediaStreamSource& source) const; | |
| 233 | |
| 234 void StopLocalSource(const blink::WebMediaStreamSource& source, | 225 void StopLocalSource(const blink::WebMediaStreamSource& source, |
| 235 bool notify_dispatcher); | 226 bool notify_dispatcher); |
| 236 // Stops all local sources that don't exist in exist in | |
| 237 // |user_media_requests_|. | |
| 238 void StopUnreferencedSources(bool notify_dispatcher); | |
| 239 | 227 |
| 240 scoped_refptr<WebRtcAudioRenderer> CreateRemoteAudioRenderer( | 228 scoped_refptr<WebRtcAudioRenderer> CreateRemoteAudioRenderer( |
| 241 webrtc::MediaStreamInterface* stream, int render_frame_id); | 229 webrtc::MediaStreamInterface* stream, int render_frame_id); |
| 242 scoped_refptr<WebRtcLocalAudioRenderer> CreateLocalAudioRenderer( | 230 scoped_refptr<WebRtcLocalAudioRenderer> CreateLocalAudioRenderer( |
| 243 const blink::WebMediaStreamTrack& audio_track, | 231 const blink::WebMediaStreamTrack& audio_track, |
| 244 int render_frame_id); | 232 int render_frame_id); |
| 245 | 233 |
| 246 // Returns a valid session id if a single capture device is currently open | 234 // Returns a valid session id if a single capture device is currently open |
| 247 // (and then the matching session_id), otherwise -1. | 235 // (and then the matching session_id), otherwise -1. |
| 248 // This is used to pass on a session id to a webrtc audio renderer (either | 236 // This is used to pass on a session id to a webrtc audio renderer (either |
| 249 // local or remote), so that audio will be rendered to a matching output | 237 // local or remote), so that audio will be rendered to a matching output |
| 250 // device, should one exist. | 238 // device, should one exist. |
| 251 // Note that if there are more than one open capture devices the function | 239 // Note that if there are more than one open capture devices the function |
| 252 // will not be able to pick an appropriate device and return false. | 240 // will not be able to pick an appropriate device and return false. |
| 253 bool GetAuthorizedDeviceInfoForAudioRenderer( | 241 bool GetAuthorizedDeviceInfoForAudioRenderer( |
| 254 int* session_id, int* output_sample_rate, int* output_buffer_size); | 242 int* session_id, int* output_sample_rate, int* output_buffer_size); |
| 255 | 243 |
| 256 // Weak ref to a MediaStreamDependencyFactory, owned by the RenderThread. | 244 // Weak ref to a MediaStreamDependencyFactory, owned by the RenderThread. |
| 257 // It's valid for the lifetime of RenderThread. | 245 // It's valid for the lifetime of RenderThread. |
| 258 MediaStreamDependencyFactory* dependency_factory_; | 246 MediaStreamDependencyFactory* dependency_factory_; |
| 259 | 247 |
| 260 // media_stream_dispatcher_ is a weak reference, owned by RenderView. It's | 248 // media_stream_dispatcher_ is a weak reference, owned by RenderView. It's |
| 261 // valid for the lifetime of RenderView. | 249 // valid for the lifetime of RenderView. |
| 262 MediaStreamDispatcher* media_stream_dispatcher_; | 250 MediaStreamDispatcher* media_stream_dispatcher_; |
| 263 | 251 |
| 252 LocalStreamSources local_sources_; |
| 253 |
| 264 UserMediaRequests user_media_requests_; | 254 UserMediaRequests user_media_requests_; |
| 265 | 255 |
| 266 LocalStreamSources local_sources_; | |
| 267 | |
| 268 DISALLOW_COPY_AND_ASSIGN(MediaStreamImpl); | 256 DISALLOW_COPY_AND_ASSIGN(MediaStreamImpl); |
| 269 }; | 257 }; |
| 270 | 258 |
| 271 } // namespace content | 259 } // namespace content |
| 272 | 260 |
| 273 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_ | 261 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_IMPL_H_ |
| OLD | NEW |