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/media_stream_impl.h" | 5 #include "content/renderer/media/media_stream_impl.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/metrics/histogram.h" | 11 #include "base/metrics/histogram.h" |
12 #include "base/synchronization/waitable_event.h" | 12 #include "base/synchronization/waitable_event.h" |
13 #include "base/utf_string_conversions.h" | 13 #include "base/utf_string_conversions.h" |
14 #include "content/renderer/media/capture_video_decoder.h" | 14 #include "content/renderer/media/capture_video_decoder.h" |
15 #include "content/renderer/media/media_stream_dependency_factory.h" | 15 #include "content/renderer/media/media_stream_dependency_factory.h" |
16 #include "content/renderer/media/media_stream_dispatcher.h" | 16 #include "content/renderer/media/media_stream_dispatcher.h" |
17 #include "content/renderer/media/peer_connection_handler.h" | 17 #include "content/renderer/media/peer_connection_handler.h" |
18 #include "content/renderer/media/peer_connection_handler_jsep.h" | 18 #include "content/renderer/media/peer_connection_handler_jsep.h" |
19 #include "content/renderer/media/video_capture_impl_manager.h" | 19 #include "content/renderer/media/video_capture_impl_manager.h" |
20 #include "content/renderer/media/video_capture_module_impl.h" | 20 #include "content/renderer/media/video_capture_module_impl.h" |
| 21 #include "content/renderer/media/video_capture_relay.h" |
21 #include "content/renderer/media/webrtc_audio_device_impl.h" | 22 #include "content/renderer/media/webrtc_audio_device_impl.h" |
22 #include "content/renderer/p2p/ipc_network_manager.h" | 23 #include "content/renderer/p2p/ipc_network_manager.h" |
23 #include "content/renderer/p2p/ipc_socket_factory.h" | 24 #include "content/renderer/p2p/ipc_socket_factory.h" |
24 #include "content/renderer/p2p/socket_dispatcher.h" | 25 #include "content/renderer/p2p/socket_dispatcher.h" |
25 #include "jingle/glue/thread_wrapper.h" | 26 #include "jingle/glue/thread_wrapper.h" |
26 #include "media/base/message_loop_factory.h" | 27 #include "media/base/message_loop_factory.h" |
27 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | 28 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
28 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaStreamRegistr
y.h" | 29 #include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaStreamRegistr
y.h" |
29 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" | 30 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" |
30 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre
amComponent.h" | 31 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebMediaStre
amComponent.h" |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
279 security_origin); | 280 security_origin); |
280 } | 281 } |
281 | 282 |
282 void MediaStreamImpl::cancelUserMediaRequest( | 283 void MediaStreamImpl::cancelUserMediaRequest( |
283 const WebKit::WebUserMediaRequest& user_media_request) { | 284 const WebKit::WebUserMediaRequest& user_media_request) { |
284 DCHECK(CalledOnValidThread()); | 285 DCHECK(CalledOnValidThread()); |
285 // TODO(grunell): Implement. | 286 // TODO(grunell): Implement. |
286 NOTIMPLEMENTED(); | 287 NOTIMPLEMENTED(); |
287 } | 288 } |
288 | 289 |
| 290 bool MediaStreamImpl::IsMediaStream(const WebKit::WebURL url) { |
| 291 DCHECK(CalledOnValidThread()); |
| 292 WebKit::WebMediaStreamDescriptor descriptor( |
| 293 WebKit::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
| 294 if (descriptor.isNull()) |
| 295 return false; // This is not a valid stream. |
| 296 |
| 297 return GetLocalMediaStream(descriptor); // || |
| 298 //FindPeerConnectionByStream(descriptor); |
| 299 } |
| 300 |
| 301 scoped_refptr<webkit_media::VideoFrameProvider> |
| 302 MediaStreamImpl::GetVideoFrameProvider( |
| 303 const GURL& url, const base::Closure& paint_cb) { |
| 304 DCHECK(CalledOnValidThread()); |
| 305 VLOG(1) << "MediaStreamImpl::GetVideoFrameProvider 1, url = " << url.spec(); |
| 306 WebKit::WebMediaStreamDescriptor descriptor( |
| 307 WebKit::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
| 308 if (descriptor.isNull()) |
| 309 return NULL; // This is not a valid stream. |
| 310 VLOG(1) << "MediaStreamImpl::GetVideoFrameProvider 2"; |
| 311 |
| 312 scoped_refptr<webkit_media::VideoFrameProvider> video_frame_provider; |
| 313 webrtc::LocalMediaStreamInterface* local_stream = |
| 314 GetLocalMediaStream(descriptor); |
| 315 if (local_stream) { |
| 316 if (!local_stream->video_tracks() || |
| 317 local_stream->video_tracks()->count() == 0) |
| 318 return NULL; |
| 319 |
| 320 int video_session_id = |
| 321 media_stream_dispatcher_->video_session_id(local_stream->label(), 0); |
| 322 media::VideoCaptureCapability capability; |
| 323 capability.width = kVideoCaptureWidth; |
| 324 capability.height = kVideoCaptureHeight; |
| 325 capability.frame_rate = kVideoCaptureFramePerSecond; |
| 326 capability.expected_capture_delay = 0; |
| 327 capability.color = media::VideoCaptureCapability::kI420; |
| 328 capability.interlaced = false; |
| 329 video_frame_provider = new VideoCaptureRelay( |
| 330 video_session_id, |
| 331 vc_manager_.get(), |
| 332 capability, |
| 333 paint_cb); |
| 334 } |
| 335 VLOG(1) << "MediaStreamImpl::GetVideoFrameProvider 3"; |
| 336 return video_frame_provider; |
| 337 } |
| 338 |
289 scoped_refptr<media::VideoDecoder> MediaStreamImpl::GetVideoDecoder( | 339 scoped_refptr<media::VideoDecoder> MediaStreamImpl::GetVideoDecoder( |
290 const GURL& url, | 340 const GURL& url, |
291 media::MessageLoopFactory* message_loop_factory) { | 341 media::MessageLoopFactory* message_loop_factory) { |
292 DCHECK(CalledOnValidThread()); | 342 DCHECK(CalledOnValidThread()); |
293 WebKit::WebMediaStreamDescriptor descriptor( | 343 WebKit::WebMediaStreamDescriptor descriptor( |
294 WebKit::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 344 WebKit::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
295 if (descriptor.isNull()) | 345 if (descriptor.isNull()) |
296 return NULL; // This is not a valid stream. | 346 return NULL; // This is not a valid stream. |
297 | 347 |
298 webrtc::LocalMediaStreamInterface* local_stream = | 348 webrtc::LocalMediaStreamInterface* local_stream = |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 MediaStreamImpl::VideoRendererWrapper::VideoRendererWrapper( | 654 MediaStreamImpl::VideoRendererWrapper::VideoRendererWrapper( |
605 RTCVideoDecoder* decoder) | 655 RTCVideoDecoder* decoder) |
606 : rtc_video_decoder_(decoder) { | 656 : rtc_video_decoder_(decoder) { |
607 } | 657 } |
608 | 658 |
609 MediaStreamImpl::VideoRendererWrapper::~VideoRendererWrapper() { | 659 MediaStreamImpl::VideoRendererWrapper::~VideoRendererWrapper() { |
610 } | 660 } |
611 | 661 |
612 MediaStreamImpl::LocalMediaStreamInfo::~LocalMediaStreamInfo() { | 662 MediaStreamImpl::LocalMediaStreamInfo::~LocalMediaStreamInfo() { |
613 } | 663 } |
OLD | NEW |