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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
214 | 214 |
215 #if defined(ENABLE_WEBRTC) | 215 #if defined(ENABLE_WEBRTC) |
216 #include "content/renderer/media/rtc_peer_connection_handler.h" | 216 #include "content/renderer/media/rtc_peer_connection_handler.h" |
217 #endif | 217 #endif |
218 | 218 |
219 #if defined(OS_ANDROID) | 219 #if defined(OS_ANDROID) |
220 #include <cpu-features.h> | 220 #include <cpu-features.h> |
221 | 221 |
222 #include "content/renderer/android/app_web_message_port_client.h" | 222 #include "content/renderer/android/app_web_message_port_client.h" |
223 #include "content/renderer/java/gin_java_bridge_dispatcher.h" | 223 #include "content/renderer/java/gin_java_bridge_dispatcher.h" |
| 224 #include "content/renderer/media/android/media_player_renderer_client_factory.h" |
224 #include "content/renderer/media/android/renderer_media_player_manager.h" | 225 #include "content/renderer/media/android/renderer_media_player_manager.h" |
225 #include "content/renderer/media/android/renderer_surface_view_manager.h" | 226 #include "content/renderer/media/android/renderer_surface_view_manager.h" |
226 #include "content/renderer/media/android/stream_texture_factory.h" | 227 #include "content/renderer/media/android/stream_texture_factory.h" |
| 228 #include "content/renderer/media/android/stream_texture_wrapper_impl.h" |
227 #include "content/renderer/media/android/webmediaplayer_android.h" | 229 #include "content/renderer/media/android/webmediaplayer_android.h" |
228 #include "media/base/android/media_codec_util.h" | 230 #include "media/base/android/media_codec_util.h" |
| 231 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck |
229 #include "third_party/WebKit/public/platform/WebFloatPoint.h" | 232 #include "third_party/WebKit/public/platform/WebFloatPoint.h" |
230 #endif | 233 #endif |
231 | 234 |
232 #if BUILDFLAG(ENABLE_PEPPER_CDMS) | 235 #if BUILDFLAG(ENABLE_PEPPER_CDMS) |
233 #include "content/renderer/media/cdm/pepper_cdm_wrapper_impl.h" | 236 #include "content/renderer/media/cdm/pepper_cdm_wrapper_impl.h" |
234 #include "content/renderer/media/cdm/render_cdm_factory.h" | 237 #include "content/renderer/media/cdm/render_cdm_factory.h" |
235 #endif | 238 #endif |
236 | 239 |
237 #if defined(ENABLE_MOJO_MEDIA) | 240 #if defined(ENABLE_MOJO_MEDIA) |
238 #include "content/renderer/media/media_interface_provider.h" | 241 #include "content/renderer/media/media_interface_provider.h" |
(...skipping 2491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2730 base::Unretained(GetContentClient()->renderer()), | 2733 base::Unretained(GetContentClient()->renderer()), |
2731 static_cast<RenderFrame*>(this), | 2734 static_cast<RenderFrame*>(this), |
2732 GetWebMediaPlayerDelegate()->has_played_media()), | 2735 GetWebMediaPlayerDelegate()->has_played_media()), |
2733 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), | 2736 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), |
2734 render_thread->GetWorkerTaskRunner(), | 2737 render_thread->GetWorkerTaskRunner(), |
2735 render_thread->compositor_task_runner(), context_3d_cb, | 2738 render_thread->compositor_task_runner(), context_3d_cb, |
2736 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, | 2739 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, |
2737 base::Unretained(blink::mainThreadIsolate())), | 2740 base::Unretained(blink::mainThreadIsolate())), |
2738 initial_cdm, media_surface_manager_, media_observer); | 2741 initial_cdm, media_surface_manager_, media_observer); |
2739 | 2742 |
| 2743 bool use_fallback_path = false; |
2740 #if defined(OS_ANDROID) | 2744 #if defined(OS_ANDROID) |
2741 if (!UseWebMediaPlayerImpl(url)) { | 2745 use_fallback_path = !UseWebMediaPlayerImpl(url); |
| 2746 |
| 2747 if (use_fallback_path && |
| 2748 !base::FeatureList::IsEnabled(media::kAndroidMediaPlayerRenderer)) { |
2742 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); | 2749 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
2743 } | 2750 } |
2744 #endif // defined(OS_ANDROID) | 2751 #endif // defined(OS_ANDROID) |
2745 | 2752 |
| 2753 std::unique_ptr<media::RendererFactory> media_renderer_factory; |
| 2754 if (use_fallback_path) { |
| 2755 #if defined(OS_ANDROID) |
| 2756 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
| 2757 media::MojoRendererFactory::GetGpuFactoriesCB(), |
| 2758 GetRemoteInterfaces()->get()); |
| 2759 |
| 2760 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>( |
| 2761 render_thread->compositor_task_runner(), |
| 2762 std::move(mojo_renderer_factory), |
| 2763 base::Bind(&StreamTextureWrapperImpl::Create, |
| 2764 render_thread->GetStreamTexureFactory(), |
| 2765 base::ThreadTaskRunnerHandle::Get())); |
| 2766 #endif // defined(OS_ANDROID) |
| 2767 } else { |
2746 #if defined(ENABLE_MOJO_RENDERER) | 2768 #if defined(ENABLE_MOJO_RENDERER) |
2747 std::unique_ptr<media::RendererFactory> media_renderer_factory( | 2769 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
2748 new media::MojoRendererFactory( | 2770 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2749 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2771 base::Unretained(render_thread)), |
2750 base::Unretained(render_thread)), | 2772 GetMediaInterfaceProvider()); |
2751 GetMediaInterfaceProvider())); | |
2752 #else | 2773 #else |
2753 std::unique_ptr<media::RendererFactory> media_renderer_factory( | 2774 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2754 new media::DefaultRendererFactory( | 2775 media_log, GetDecoderFactory(), |
2755 media_log, GetDecoderFactory(), | 2776 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2756 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2777 base::Unretained(render_thread))); |
2757 base::Unretained(render_thread)))); | |
2758 #endif | 2778 #endif |
| 2779 } |
2759 | 2780 |
2760 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2781 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2761 media::RemotingController* remoting_controller_ptr = | 2782 media::RemotingController* remoting_controller_ptr = |
2762 remoting_controller.get(); | 2783 remoting_controller.get(); |
2763 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( | 2784 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( |
2764 std::move(media_renderer_factory), std::move(remoting_controller)); | 2785 std::move(media_renderer_factory), std::move(remoting_controller)); |
2765 #endif | 2786 #endif |
2766 | 2787 |
2767 if (!url_index_.get() || url_index_->frame() != frame_) | 2788 if (!url_index_.get() || url_index_->frame() != frame_) |
2768 url_index_.reset(new media::UrlIndex(frame_)); | 2789 url_index_.reset(new media::UrlIndex(frame_)); |
2769 | 2790 |
2770 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2791 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
2771 frame_, client, encrypted_client, | 2792 frame_, client, encrypted_client, |
2772 GetWebMediaPlayerDelegate()->AsWeakPtr(), | 2793 GetWebMediaPlayerDelegate()->AsWeakPtr(), |
2773 std::move(media_renderer_factory), url_index_, params); | 2794 std::move(media_renderer_factory), url_index_, params); |
2774 | 2795 |
2775 #if defined(OS_ANDROID) // WMPI_CAST | 2796 #if defined(OS_ANDROID) // WMPI_CAST |
2776 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); | 2797 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); |
2777 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); | 2798 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); |
| 2799 media_player->SetUseFallbackPath(use_fallback_path); |
2778 #endif // defined(OS_ANDROID) | 2800 #endif // defined(OS_ANDROID) |
2779 | 2801 |
2780 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2802 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2781 remoting_controller_ptr->SetSwitchRendererCallback(base::Bind( | 2803 remoting_controller_ptr->SetSwitchRendererCallback(base::Bind( |
2782 &media::WebMediaPlayerImpl::ScheduleRestart, media_player->AsWeakPtr())); | 2804 &media::WebMediaPlayerImpl::ScheduleRestart, media_player->AsWeakPtr())); |
2783 #endif | 2805 #endif |
2784 | |
2785 return media_player; | 2806 return media_player; |
2786 } | 2807 } |
2787 | 2808 |
2788 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( | 2809 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( |
2789 blink::WebApplicationCacheHostClient* client) { | 2810 blink::WebApplicationCacheHostClient* client) { |
2790 if (!frame_ || !frame_->view()) | 2811 if (!frame_ || !frame_->view()) |
2791 return NULL; | 2812 return NULL; |
2792 return new RendererWebApplicationCacheHostImpl( | 2813 return new RendererWebApplicationCacheHostImpl( |
2793 RenderViewImpl::FromWebView(frame_->view()), client, | 2814 RenderViewImpl::FromWebView(frame_->view()), client, |
2794 RenderThreadImpl::current()->appcache_dispatcher()->backend_proxy()); | 2815 RenderThreadImpl::current()->appcache_dispatcher()->backend_proxy()); |
(...skipping 3501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6296 frame_, client, encrypted_client, | 6317 frame_, client, encrypted_client, |
6297 GetWebMediaPlayerDelegate()->AsWeakPtr(), GetMediaPlayerManager(), | 6318 GetWebMediaPlayerDelegate()->AsWeakPtr(), GetMediaPlayerManager(), |
6298 stream_texture_factory, routing_id_, enable_texture_copy, params); | 6319 stream_texture_factory, routing_id_, enable_texture_copy, params); |
6299 } | 6320 } |
6300 | 6321 |
6301 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { | 6322 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
6302 if (!media_player_manager_) | 6323 if (!media_player_manager_) |
6303 media_player_manager_ = new RendererMediaPlayerManager(this); | 6324 media_player_manager_ = new RendererMediaPlayerManager(this); |
6304 return media_player_manager_; | 6325 return media_player_manager_; |
6305 } | 6326 } |
6306 | |
6307 #endif // defined(OS_ANDROID) | 6327 #endif // defined(OS_ANDROID) |
6308 | 6328 |
6309 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 6329 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
6310 if (!media_permission_dispatcher_) { | 6330 if (!media_permission_dispatcher_) { |
6311 media_permission_dispatcher_.reset(new MediaPermissionDispatcher(base::Bind( | 6331 media_permission_dispatcher_.reset(new MediaPermissionDispatcher(base::Bind( |
6312 &RenderFrameImpl::GetInterface<blink::mojom::PermissionService>, | 6332 &RenderFrameImpl::GetInterface<blink::mojom::PermissionService>, |
6313 base::Unretained(this)))); | 6333 base::Unretained(this)))); |
6314 } | 6334 } |
6315 return media_permission_dispatcher_.get(); | 6335 return media_permission_dispatcher_.get(); |
6316 } | 6336 } |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6540 // event target. Potentially a Pepper plugin will receive the event. | 6560 // event target. Potentially a Pepper plugin will receive the event. |
6541 // In order to tell whether a plugin gets the last mouse event and which it | 6561 // In order to tell whether a plugin gets the last mouse event and which it |
6542 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6562 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
6543 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6563 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
6544 // |pepper_last_mouse_event_target_|. | 6564 // |pepper_last_mouse_event_target_|. |
6545 pepper_last_mouse_event_target_ = nullptr; | 6565 pepper_last_mouse_event_target_ = nullptr; |
6546 #endif | 6566 #endif |
6547 } | 6567 } |
6548 | 6568 |
6549 } // namespace content | 6569 } // namespace content |
OLD | NEW |