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 201 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
212 #endif | 212 #endif |
213 | 213 |
214 #if defined(ENABLE_WEBRTC) | 214 #if defined(ENABLE_WEBRTC) |
215 #include "content/renderer/media/rtc_peer_connection_handler.h" | 215 #include "content/renderer/media/rtc_peer_connection_handler.h" |
216 #endif | 216 #endif |
217 | 217 |
218 #if defined(OS_ANDROID) | 218 #if defined(OS_ANDROID) |
219 #include <cpu-features.h> | 219 #include <cpu-features.h> |
220 | 220 |
221 #include "content/renderer/java/gin_java_bridge_dispatcher.h" | 221 #include "content/renderer/java/gin_java_bridge_dispatcher.h" |
222 #include "content/renderer/media/android/media_player_renderer_client_factory.h" | |
222 #include "content/renderer/media/android/renderer_media_player_manager.h" | 223 #include "content/renderer/media/android/renderer_media_player_manager.h" |
223 #include "content/renderer/media/android/renderer_surface_view_manager.h" | 224 #include "content/renderer/media/android/renderer_surface_view_manager.h" |
224 #include "content/renderer/media/android/stream_texture_factory.h" | 225 #include "content/renderer/media/android/stream_texture_factory.h" |
226 #include "content/renderer/media/android/stream_texture_wrapper_impl.h" | |
225 #include "content/renderer/media/android/webmediaplayer_android.h" | 227 #include "content/renderer/media/android/webmediaplayer_android.h" |
226 #include "media/base/android/media_codec_util.h" | 228 #include "media/base/android/media_codec_util.h" |
229 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck | |
227 #include "third_party/WebKit/public/platform/WebFloatPoint.h" | 230 #include "third_party/WebKit/public/platform/WebFloatPoint.h" |
228 #endif | 231 #endif |
229 | 232 |
230 #if defined(ENABLE_PEPPER_CDMS) | 233 #if defined(ENABLE_PEPPER_CDMS) |
231 #include "content/renderer/media/cdm/pepper_cdm_wrapper_impl.h" | 234 #include "content/renderer/media/cdm/pepper_cdm_wrapper_impl.h" |
232 #include "content/renderer/media/cdm/render_cdm_factory.h" | 235 #include "content/renderer/media/cdm/render_cdm_factory.h" |
233 #endif | 236 #endif |
234 | 237 |
235 #if defined(ENABLE_MOJO_MEDIA) | 238 #if defined(ENABLE_MOJO_MEDIA) |
236 #include "content/renderer/media/media_interface_provider.h" | 239 #include "content/renderer/media/media_interface_provider.h" |
(...skipping 2452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2689 base::Unretained(GetContentClient()->renderer()), | 2692 base::Unretained(GetContentClient()->renderer()), |
2690 static_cast<RenderFrame*>(this), | 2693 static_cast<RenderFrame*>(this), |
2691 GetWebMediaPlayerDelegate()->has_played_media()), | 2694 GetWebMediaPlayerDelegate()->has_played_media()), |
2692 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), | 2695 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), |
2693 render_thread->GetWorkerTaskRunner(), | 2696 render_thread->GetWorkerTaskRunner(), |
2694 render_thread->compositor_task_runner(), context_3d_cb, | 2697 render_thread->compositor_task_runner(), context_3d_cb, |
2695 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, | 2698 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, |
2696 base::Unretained(blink::mainThreadIsolate())), | 2699 base::Unretained(blink::mainThreadIsolate())), |
2697 initial_cdm, media_surface_manager_); | 2700 initial_cdm, media_surface_manager_); |
2698 | 2701 |
2702 bool use_fallback_path = false; | |
2699 #if defined(OS_ANDROID) | 2703 #if defined(OS_ANDROID) |
2700 if (!UseWebMediaPlayerImpl(url)) { | 2704 use_fallback_path = !UseWebMediaPlayerImpl(url); |
2705 | |
2706 if (use_fallback_path && | |
2707 !base::FeatureList::IsEnabled(media::kEnableMediaPlayerRenderer)) { | |
2701 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); | 2708 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
2702 } | 2709 } |
2703 #endif // defined(OS_ANDROID) | 2710 #endif // defined(OS_ANDROID) |
2704 | 2711 |
2712 std::unique_ptr<media::RendererFactory> media_renderer_factory; | |
2713 if (use_fallback_path) { | |
2714 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | |
2715 media::MojoRendererFactory::GetGpuFactoriesCB(), | |
2716 GetRemoteInterfaces()->get()); | |
2717 | |
2718 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>( | |
2719 render_thread->compositor_task_runner(), | |
2720 std::move(mojo_renderer_factory), | |
2721 base::Bind(&StreamTextureWrapperImpl::Create, | |
2722 render_thread->GetStreamTexureFactory(), | |
2723 base::ThreadTaskRunnerHandle::Get())); | |
2724 } else { | |
xhwang
2016/10/12 20:14:15
Drive-by comment: Does it make sense to put this b
tguilbert
2016/10/12 21:46:24
I think the compiler is smart enough, but I don't
| |
2705 #if defined(ENABLE_MOJO_RENDERER) | 2725 #if defined(ENABLE_MOJO_RENDERER) |
2706 std::unique_ptr<media::RendererFactory> media_renderer_factory( | 2726 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
2707 new media::MojoRendererFactory( | 2727 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2708 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2728 base::Unretained(render_thread)), |
2709 base::Unretained(render_thread)), | 2729 GetMediaInterfaceProvider()); |
2710 GetMediaInterfaceProvider())); | |
2711 #else | 2730 #else |
2712 std::unique_ptr<media::RendererFactory> media_renderer_factory( | 2731 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2713 new media::DefaultRendererFactory( | 2732 media_log, GetDecoderFactory(), |
2714 media_log, GetDecoderFactory(), | 2733 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2715 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2734 base::Unretained(render_thread))); |
2716 base::Unretained(render_thread)))); | |
2717 #endif // defined(ENABLE_MOJO_RENDERER) | 2735 #endif // defined(ENABLE_MOJO_RENDERER) |
2736 } | |
2718 | 2737 |
2719 if (!url_index_.get() || url_index_->frame() != frame_) | 2738 if (!url_index_.get() || url_index_->frame() != frame_) |
2720 url_index_.reset(new media::UrlIndex(frame_)); | 2739 url_index_.reset(new media::UrlIndex(frame_)); |
2721 | 2740 |
2722 // TODO(miu): In a soon-upcoming change, call GetRemoterFactory()->Create() to | 2741 // TODO(miu): In a soon-upcoming change, call GetRemoterFactory()->Create() to |
2723 // allow the local media pipeline to receive notifications about when Media | 2742 // allow the local media pipeline to receive notifications about when Media |
2724 // Remoting can take place. Control logic in/around WebMediaPlayerImpl will | 2743 // Remoting can take place. Control logic in/around WebMediaPlayerImpl will |
2725 // implement media.mojom.RemotingSource. http://crbug.com/643964 | 2744 // implement media.mojom.RemotingSource. http://crbug.com/643964 |
2726 | 2745 |
2727 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2746 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
2728 frame_, client, encrypted_client, | 2747 frame_, client, encrypted_client, |
2729 GetWebMediaPlayerDelegate()->AsWeakPtr(), | 2748 GetWebMediaPlayerDelegate()->AsWeakPtr(), |
2730 std::move(media_renderer_factory), url_index_, params); | 2749 std::move(media_renderer_factory), url_index_, params); |
2731 | 2750 |
2732 #if defined(OS_ANDROID) // WMPI_CAST | 2751 #if defined(OS_ANDROID) // WMPI_CAST |
2733 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); | 2752 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); |
2734 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); | 2753 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); |
2754 media_player->SetUseFallbackPath(use_fallback_path); | |
2735 #endif | 2755 #endif |
2736 | 2756 |
2737 return media_player; | 2757 return media_player; |
2738 } | 2758 } |
2739 | 2759 |
2740 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( | 2760 blink::WebApplicationCacheHost* RenderFrameImpl::createApplicationCacheHost( |
2741 blink::WebApplicationCacheHostClient* client) { | 2761 blink::WebApplicationCacheHostClient* client) { |
2742 if (!frame_ || !frame_->view()) | 2762 if (!frame_ || !frame_->view()) |
2743 return NULL; | 2763 return NULL; |
2744 return new RendererWebApplicationCacheHostImpl( | 2764 return new RendererWebApplicationCacheHostImpl( |
(...skipping 3497 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6242 frame_, client, encrypted_client, | 6262 frame_, client, encrypted_client, |
6243 GetWebMediaPlayerDelegate()->AsWeakPtr(), GetMediaPlayerManager(), | 6263 GetWebMediaPlayerDelegate()->AsWeakPtr(), GetMediaPlayerManager(), |
6244 stream_texture_factory, routing_id_, enable_texture_copy, params); | 6264 stream_texture_factory, routing_id_, enable_texture_copy, params); |
6245 } | 6265 } |
6246 | 6266 |
6247 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { | 6267 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { |
6248 if (!media_player_manager_) | 6268 if (!media_player_manager_) |
6249 media_player_manager_ = new RendererMediaPlayerManager(this); | 6269 media_player_manager_ = new RendererMediaPlayerManager(this); |
6250 return media_player_manager_; | 6270 return media_player_manager_; |
6251 } | 6271 } |
6252 | |
6253 #endif // defined(OS_ANDROID) | 6272 #endif // defined(OS_ANDROID) |
6254 | 6273 |
6255 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 6274 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
6256 if (!media_permission_dispatcher_) { | 6275 if (!media_permission_dispatcher_) { |
6257 media_permission_dispatcher_.reset(new MediaPermissionDispatcher(base::Bind( | 6276 media_permission_dispatcher_.reset(new MediaPermissionDispatcher(base::Bind( |
6258 &RenderFrameImpl::GetInterface<blink::mojom::PermissionService>, | 6277 &RenderFrameImpl::GetInterface<blink::mojom::PermissionService>, |
6259 base::Unretained(this)))); | 6278 base::Unretained(this)))); |
6260 } | 6279 } |
6261 return media_permission_dispatcher_.get(); | 6280 return media_permission_dispatcher_.get(); |
6262 } | 6281 } |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6484 // event target. Potentially a Pepper plugin will receive the event. | 6503 // event target. Potentially a Pepper plugin will receive the event. |
6485 // In order to tell whether a plugin gets the last mouse event and which it | 6504 // In order to tell whether a plugin gets the last mouse event and which it |
6486 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets | 6505 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets |
6487 // the event, it will notify us via DidReceiveMouseEvent() and set itself as | 6506 // the event, it will notify us via DidReceiveMouseEvent() and set itself as |
6488 // |pepper_last_mouse_event_target_|. | 6507 // |pepper_last_mouse_event_target_|. |
6489 pepper_last_mouse_event_target_ = nullptr; | 6508 pepper_last_mouse_event_target_ = nullptr; |
6490 #endif | 6509 #endif |
6491 } | 6510 } |
6492 | 6511 |
6493 } // namespace content | 6512 } // namespace content |
OLD | NEW |