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

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

Issue 2387293007: Register MediaPlayerRenderer service (Closed)
Patch Set: 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 222 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698