| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/webmediaplayer_ms.h" | 5 #include "content/renderer/media/webmediaplayer_ms.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <utility> | 10 #include <utility> |
| 11 | 11 |
| 12 #include "base/bind.h" | 12 #include "base/bind.h" |
| 13 #include "base/callback.h" | 13 #include "base/callback.h" |
| 14 #include "build/build_config.h" | 14 #include "build/build_config.h" |
| 15 #include "cc/blink/context_provider_web_context.h" | 15 #include "cc/blink/context_provider_web_context.h" |
| 16 #include "cc/blink/web_layer_impl.h" | 16 #include "cc/blink/web_layer_impl.h" |
| 17 #include "cc/layers/video_frame_provider_client_impl.h" | 17 #include "cc/layers/video_frame_provider_client_impl.h" |
| 18 #include "cc/layers/video_layer.h" | 18 #include "cc/layers/video_layer.h" |
| 19 #include "content/public/renderer/media_stream_audio_renderer.h" | 19 #include "content/public/renderer/media_stream_audio_renderer.h" |
| 20 #include "content/public/renderer/media_stream_renderer_factory.h" | 20 #include "content/public/renderer/media_stream_renderer_factory.h" |
| 21 #include "content/public/renderer/video_frame_provider.h" | 21 #include "content/public/renderer/video_frame_provider.h" |
| 22 #include "content/renderer/media/web_media_element_source_utils.h" |
| 22 #include "content/renderer/media/webmediaplayer_ms_compositor.h" | 23 #include "content/renderer/media/webmediaplayer_ms_compositor.h" |
| 23 #include "content/renderer/render_frame_impl.h" | 24 #include "content/renderer/render_frame_impl.h" |
| 24 #include "content/renderer/render_thread_impl.h" | 25 #include "content/renderer/render_thread_impl.h" |
| 25 #include "gpu/blink/webgraphicscontext3d_impl.h" | 26 #include "gpu/blink/webgraphicscontext3d_impl.h" |
| 26 #include "media/base/media_log.h" | 27 #include "media/base/media_log.h" |
| 27 #include "media/base/video_frame.h" | 28 #include "media/base/video_frame.h" |
| 29 #include "third_party/WebKit/public/platform/WebMediaElementSource.h" |
| 28 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" | 30 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" |
| 29 #include "third_party/WebKit/public/platform/WebRect.h" | 31 #include "third_party/WebKit/public/platform/WebRect.h" |
| 30 #include "third_party/WebKit/public/platform/WebSize.h" | 32 #include "third_party/WebKit/public/platform/WebSize.h" |
| 31 #include "third_party/WebKit/public/platform/WebURL.h" | |
| 32 | 33 |
| 33 namespace content { | 34 namespace content { |
| 34 | 35 |
| 35 WebMediaPlayerMS::WebMediaPlayerMS( | 36 WebMediaPlayerMS::WebMediaPlayerMS( |
| 36 blink::WebFrame* frame, | 37 blink::WebFrame* frame, |
| 37 blink::WebMediaPlayerClient* client, | 38 blink::WebMediaPlayerClient* client, |
| 38 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, | 39 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, |
| 39 media::MediaLog* media_log, | 40 media::MediaLog* media_log, |
| 40 scoped_ptr<MediaStreamRendererFactory> factory, | 41 scoped_ptr<MediaStreamRendererFactory> factory, |
| 41 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, | 42 const scoped_refptr<base::SingleThreadTaskRunner>& compositor_task_runner, |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 media_log_->AddEvent( | 95 media_log_->AddEvent( |
| 95 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED)); | 96 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED)); |
| 96 | 97 |
| 97 if (delegate_) { | 98 if (delegate_) { |
| 98 delegate_->PlayerGone(delegate_id_); | 99 delegate_->PlayerGone(delegate_id_); |
| 99 delegate_->RemoveObserver(delegate_id_); | 100 delegate_->RemoveObserver(delegate_id_); |
| 100 } | 101 } |
| 101 } | 102 } |
| 102 | 103 |
| 103 void WebMediaPlayerMS::load(LoadType load_type, | 104 void WebMediaPlayerMS::load(LoadType load_type, |
| 104 const blink::WebURL& url, | 105 const blink::WebMediaElementSource& source, |
| 105 CORSMode /*cors_mode*/) { | 106 CORSMode /*cors_mode*/) { |
| 106 DVLOG(1) << __FUNCTION__; | 107 DVLOG(1) << __FUNCTION__; |
| 107 DCHECK(thread_checker_.CalledOnValidThread()); | 108 DCHECK(thread_checker_.CalledOnValidThread()); |
| 108 | 109 |
| 109 // TODO(acolwell): Change this to DCHECK_EQ(load_type, LoadTypeMediaStream) | 110 // TODO(acolwell): Change this to DCHECK_EQ(load_type, LoadTypeMediaStream) |
| 110 // once Blink-side changes land. | 111 // once Blink-side changes land. |
| 111 DCHECK_NE(load_type, LoadTypeMediaSource); | 112 DCHECK_NE(load_type, LoadTypeMediaSource); |
| 113 blink::WebMediaStream web_stream = |
| 114 GetWebMediaStreamFromWebMediaElementSource(source); |
| 112 | 115 |
| 113 compositor_.reset(new WebMediaPlayerMSCompositor(compositor_task_runner_, url, | 116 compositor_.reset(new WebMediaPlayerMSCompositor(compositor_task_runner_, |
| 114 AsWeakPtr())); | 117 web_stream, AsWeakPtr())); |
| 115 | 118 |
| 116 SetNetworkState(WebMediaPlayer::NetworkStateLoading); | 119 SetNetworkState(WebMediaPlayer::NetworkStateLoading); |
| 117 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); | 120 SetReadyState(WebMediaPlayer::ReadyStateHaveNothing); |
| 118 media_log_->AddEvent(media_log_->CreateLoadEvent(url.string().utf8())); | 121 std::string stream_id = |
| 122 web_stream.isNull() ? std::string() : web_stream.id().utf8(); |
| 123 media_log_->AddEvent(media_log_->CreateLoadEvent(stream_id)); |
| 119 | 124 |
| 120 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider( | 125 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider( |
| 121 url, | 126 web_stream, base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), |
| 122 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), | |
| 123 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()), | 127 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()), |
| 124 media_task_runner_, | 128 media_task_runner_, worker_task_runner_, gpu_factories_); |
| 125 worker_task_runner_, | |
| 126 gpu_factories_); | |
| 127 | 129 |
| 128 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); | 130 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); |
| 129 | 131 |
| 130 if (frame) { | 132 if (frame) { |
| 131 audio_renderer_ = renderer_factory_->GetAudioRenderer( | 133 audio_renderer_ = renderer_factory_->GetAudioRenderer( |
| 132 url, frame->GetRoutingID(), initial_audio_output_device_id_, | 134 web_stream, frame->GetRoutingID(), initial_audio_output_device_id_, |
| 133 initial_security_origin_); | 135 initial_security_origin_); |
| 134 } | 136 } |
| 135 | 137 |
| 136 if (!video_frame_provider_ && !audio_renderer_) { | 138 if (!video_frame_provider_ && !audio_renderer_) { |
| 137 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError); | 139 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError); |
| 138 return; | 140 return; |
| 139 } | 141 } |
| 140 | 142 |
| 141 if (audio_renderer_) { | 143 if (audio_renderer_) { |
| 142 audio_renderer_->SetVolume(volume_); | 144 audio_renderer_->SetVolume(volume_); |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { | 533 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { |
| 532 return &video_renderer_; | 534 return &video_renderer_; |
| 533 } | 535 } |
| 534 | 536 |
| 535 void WebMediaPlayerMS::ResetCanvasCache() { | 537 void WebMediaPlayerMS::ResetCanvasCache() { |
| 536 DCHECK(thread_checker_.CalledOnValidThread()); | 538 DCHECK(thread_checker_.CalledOnValidThread()); |
| 537 video_renderer_.ResetCache(); | 539 video_renderer_.ResetCache(); |
| 538 } | 540 } |
| 539 | 541 |
| 540 } // namespace content | 542 } // namespace content |
| OLD | NEW |