Chromium Code Reviews| 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/render_frame_impl.h" | 5 #include "content/renderer/render_frame_impl.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 233 #endif | 233 #endif |
| 234 | 234 |
| 235 #if defined(ENABLE_MOJO_MEDIA) | 235 #if defined(ENABLE_MOJO_MEDIA) |
| 236 #include "content/renderer/media/media_interface_provider.h" | 236 #include "content/renderer/media/media_interface_provider.h" |
| 237 #endif | 237 #endif |
| 238 | 238 |
| 239 #if defined(ENABLE_MOJO_CDM) | 239 #if defined(ENABLE_MOJO_CDM) |
| 240 #include "media/mojo/clients/mojo_cdm_factory.h" // nogncheck | 240 #include "media/mojo/clients/mojo_cdm_factory.h" // nogncheck |
| 241 #endif | 241 #endif |
| 242 | 242 |
| 243 #if BUILDFLAG(ENABLE_MOJO_MEDIA_PLAYER_RENDERER) | |
| 244 #include "content/renderer/media/android/media_player_renderer_client_factory.h" | |
| 245 #include "content/renderer/media/android/stream_texture_wrapper_impl.h" | |
| 246 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck | |
| 247 #endif | |
| 248 | |
| 243 #if defined(ENABLE_MOJO_RENDERER) | 249 #if defined(ENABLE_MOJO_RENDERER) |
| 244 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck | 250 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck |
| 245 #else | 251 #else |
| 246 #include "media/renderers/default_renderer_factory.h" | 252 #include "media/renderers/default_renderer_factory.h" |
| 247 #endif | 253 #endif |
| 248 | 254 |
| 249 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) | 255 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) |
| 250 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck | 256 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck |
| 251 #endif | 257 #endif |
| 252 | 258 |
| (...skipping 2409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2662 base::Unretained(GetContentClient()->renderer()), | 2668 base::Unretained(GetContentClient()->renderer()), |
| 2663 static_cast<RenderFrame*>(this), | 2669 static_cast<RenderFrame*>(this), |
| 2664 GetWebMediaPlayerDelegate()->has_played_media()), | 2670 GetWebMediaPlayerDelegate()->has_played_media()), |
| 2665 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), | 2671 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), |
| 2666 render_thread->GetWorkerTaskRunner(), | 2672 render_thread->GetWorkerTaskRunner(), |
| 2667 render_thread->compositor_task_runner(), context_3d_cb, | 2673 render_thread->compositor_task_runner(), context_3d_cb, |
| 2668 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, | 2674 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, |
| 2669 base::Unretained(blink::mainThreadIsolate())), | 2675 base::Unretained(blink::mainThreadIsolate())), |
| 2670 initial_cdm, media_surface_manager_); | 2676 initial_cdm, media_surface_manager_); |
| 2671 | 2677 |
| 2672 #if defined(OS_ANDROID) | 2678 #if BUILDFLAG(ENABLE_MOJO_MEDIA_PLAYER_RENDERER) |
| 2679 if (!UseWebMediaPlayerImpl(url)) { | |
| 2680 return CreateMojoMediaPlayerRenderer(client, encrypted_client, url, params); | |
| 2681 } | |
| 2682 #elif defined(OS_ANDROID) | |
| 2673 if (!UseWebMediaPlayerImpl(url)) { | 2683 if (!UseWebMediaPlayerImpl(url)) { |
| 2674 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); | 2684 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
| 2675 } | 2685 } |
| 2676 #endif // defined(OS_ANDROID) | 2686 #endif // defined(OS_ANDROID) |
| 2677 | 2687 |
| 2678 #if defined(ENABLE_MOJO_RENDERER) | 2688 #if defined(ENABLE_MOJO_RENDERER) |
| 2679 std::unique_ptr<media::RendererFactory> media_renderer_factory( | 2689 auto media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
| 2680 new media::MojoRendererFactory( | 2690 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2681 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2691 base::Unretained(render_thread)), |
| 2682 base::Unretained(render_thread)), | 2692 GetMediaInterfaceProvider()); |
| 2683 GetMediaInterfaceProvider())); | |
| 2684 #else | 2693 #else |
| 2685 std::unique_ptr<media::RendererFactory> media_renderer_factory( | 2694 auto media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
| 2686 new media::DefaultRendererFactory( | 2695 media_log, GetDecoderFactory(), |
| 2687 media_log, GetDecoderFactory(), | 2696 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2688 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2697 base::Unretained(render_thread))); |
| 2689 base::Unretained(render_thread)))); | |
| 2690 #endif // defined(ENABLE_MOJO_RENDERER) | 2698 #endif // defined(ENABLE_MOJO_RENDERER) |
| 2691 | 2699 |
| 2692 if (!url_index_.get() || url_index_->frame() != frame_) | 2700 if (!url_index_.get() || url_index_->frame() != frame_) |
| 2693 url_index_.reset(new media::UrlIndex(frame_)); | 2701 url_index_.reset(new media::UrlIndex(frame_)); |
| 2694 | 2702 |
| 2695 // TODO(miu): In a soon-upcoming change, call GetRemoterFactory()->Create() to | 2703 // TODO(miu): In a soon-upcoming change, call GetRemoterFactory()->Create() to |
| 2696 // allow the local media pipeline to receive notifications about when Media | 2704 // allow the local media pipeline to receive notifications about when Media |
| 2697 // Remoting can take place. Control logic in/around WebMediaPlayerImpl will | 2705 // Remoting can take place. Control logic in/around WebMediaPlayerImpl will |
| 2698 // implement media.mojom.RemotingSource. http://crbug.com/643964 | 2706 // implement media.mojom.RemotingSource. http://crbug.com/643964 |
| 2699 | 2707 |
| (...skipping 3489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6189 if (!media_player_manager_) | 6197 if (!media_player_manager_) |
| 6190 media_player_manager_ = new RendererMediaPlayerManager(this); | 6198 media_player_manager_ = new RendererMediaPlayerManager(this); |
| 6191 return media_player_manager_; | 6199 return media_player_manager_; |
| 6192 } | 6200 } |
| 6193 | 6201 |
| 6194 RendererMediaSessionManager* RenderFrameImpl::GetMediaSessionManager() { | 6202 RendererMediaSessionManager* RenderFrameImpl::GetMediaSessionManager() { |
| 6195 if (!media_session_manager_) | 6203 if (!media_session_manager_) |
| 6196 media_session_manager_ = new RendererMediaSessionManager(this); | 6204 media_session_manager_ = new RendererMediaSessionManager(this); |
| 6197 return media_session_manager_; | 6205 return media_session_manager_; |
| 6198 } | 6206 } |
| 6207 #endif // defined(OS_ANDROID) | |
| 6199 | 6208 |
| 6200 #endif // defined(OS_ANDROID) | 6209 #if BUILDFLAG(ENABLE_MOJO_MEDIA_PLAYER_RENDERER) |
| 6210 WebMediaPlayer* RenderFrameImpl::CreateMojoMediaPlayerRenderer( | |
|
liberato (no reviews please)
2016/10/06 14:55:46
lots of this is common to the normal wmpi case. i
tguilbert
2016/10/11 18:54:33
I had found that, for the time being, it was clear
| |
| 6211 WebMediaPlayerClient* client, | |
| 6212 WebMediaPlayerEncryptedMediaClient* encrypted_client, | |
| 6213 blink::WebURL url, | |
| 6214 const media::WebMediaPlayerParams& params) { | |
| 6215 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | |
| 6216 | |
| 6217 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | |
| 6218 media::MojoRendererFactory::GetGpuFactoriesCB(), | |
| 6219 GetRemoteInterfaces()->get()); | |
| 6220 | |
| 6221 auto media_renderer_factory = | |
| 6222 base::MakeUnique<MediaPlayerRendererClientFactory>( | |
| 6223 render_thread->compositor_task_runner(), | |
| 6224 std::move(mojo_renderer_factory), | |
| 6225 base::Bind(&StreamTextureWrapperImpl::Create, | |
| 6226 render_thread->GetStreamTexureFactory(), | |
| 6227 base::ThreadTaskRunnerHandle::Get())); | |
| 6228 | |
| 6229 if (!url_index_.get() || url_index_->frame() != frame_) | |
| 6230 url_index_.reset(new media::UrlIndex(frame_)); | |
| 6231 | |
| 6232 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | |
| 6233 frame_, client, encrypted_client, | |
| 6234 GetWebMediaPlayerDelegate()->AsWeakPtr(), | |
| 6235 std::move(media_renderer_factory), url_index_, params); | |
| 6236 | |
| 6237 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); | |
| 6238 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); | |
| 6239 media_player->EnableFallbackMediaPlayer(url); | |
| 6240 | |
| 6241 return media_player; | |
| 6242 } | |
| 6243 #endif // BUILDFLAG(ENABLE_MOJO_MEDIA_PLAYER_RENDERER) | |
| 6201 | 6244 |
| 6202 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 6245 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
| 6203 if (!media_permission_dispatcher_) { | 6246 if (!media_permission_dispatcher_) { |
| 6204 media_permission_dispatcher_.reset(new MediaPermissionDispatcher(base::Bind( | 6247 media_permission_dispatcher_.reset(new MediaPermissionDispatcher(base::Bind( |
| 6205 &RenderFrameImpl::GetInterface<blink::mojom::PermissionService>, | 6248 &RenderFrameImpl::GetInterface<blink::mojom::PermissionService>, |
| 6206 base::Unretained(this)))); | 6249 base::Unretained(this)))); |
| 6207 } | 6250 } |
| 6208 return media_permission_dispatcher_.get(); | 6251 return media_permission_dispatcher_.get(); |
| 6209 } | 6252 } |
| 6210 | 6253 |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6431 // event target. Potentially a Pepper plugin will receive the event. | 6474 // event target. Potentially a Pepper plugin will receive the event. |
| 6432 // In order to tell whether a plugin gets the last mouse event and which it | 6475 // In order to tell whether a plugin gets the last mouse event and which it |
| 6433 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6476 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
| 6434 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6477 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
| 6435 // |pepper_last_mouse_event_target_|. | 6478 // |pepper_last_mouse_event_target_|. |
| 6436 pepper_last_mouse_event_target_ = nullptr; | 6479 pepper_last_mouse_event_target_ = nullptr; |
| 6437 #endif | 6480 #endif |
| 6438 } | 6481 } |
| 6439 | 6482 |
| 6440 } // namespace content | 6483 } // namespace content |
| OLD | NEW |