Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(286)

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 2387293007: Register MediaPlayerRenderer service (Closed)
Patch Set: Addressed comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698