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

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

Issue 2406483002: WIP - Add EME (Closed)
Patch Set: Addressed miu's comments. Added more tests. Created 4 years, 1 month 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
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | media/base/cdm_context.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 239 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck 250 #include "media/mojo/clients/mojo_renderer_factory.h" // nogncheck
251 #else 251 #else
252 #include "media/renderers/default_renderer_factory.h" 252 #include "media/renderers/default_renderer_factory.h"
253 #endif 253 #endif
254 254
255 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) 255 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER)
256 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck 256 #include "media/mojo/clients/mojo_decoder_factory.h" // nogncheck
257 #endif 257 #endif
258 258
259 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) 259 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
260 #include "media/remoting/remoting_controller.h" // nogncheck 260 #include "media/remoting/remoting_cdm_controller.h" // nogncheck
261 #include "media/remoting/remoting_cdm_factory.h" // nogncheck
262 #include "media/remoting/remoting_renderer_controller.h" // nogncheck
261 #include "media/remoting/remoting_renderer_factory.h" // nogncheck 263 #include "media/remoting/remoting_renderer_factory.h" // nogncheck
262 #endif 264 #endif
263 265
264 using base::Time; 266 using base::Time;
265 using base::TimeDelta; 267 using base::TimeDelta;
266 using blink::WebCachePolicy; 268 using blink::WebCachePolicy;
267 using blink::WebContentDecryptionModule; 269 using blink::WebContentDecryptionModule;
268 using blink::WebContextMenuData; 270 using blink::WebContextMenuData;
269 using blink::WebCString; 271 using blink::WebCString;
270 using blink::WebData; 272 using blink::WebData;
(...skipping 2400 matching lines...) Expand 10 before | Expand all | Expand 10 after
2671 2673
2672 WebPluginParams params_to_use = params; 2674 WebPluginParams params_to_use = params;
2673 params_to_use.mimeType = WebString::fromUTF8(mime_type); 2675 params_to_use.mimeType = WebString::fromUTF8(mime_type);
2674 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); 2676 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */);
2675 #else 2677 #else
2676 return NULL; 2678 return NULL;
2677 #endif // defined(ENABLE_PLUGINS) 2679 #endif // defined(ENABLE_PLUGINS)
2678 } 2680 }
2679 2681
2680 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) 2682 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
2681 std::unique_ptr<media::RemotingController> 2683 std::unique_ptr<media::RemotingRendererController>
2682 RenderFrameImpl::CreateRemotingController() { 2684 RenderFrameImpl::CreateRemotingRendererController() {
2683 media::mojom::RemotingSourcePtr remoting_source; 2685 media::mojom::RemotingSourcePtr remoting_source;
2684 media::mojom::RemotingSourceRequest remoting_source_request = 2686 media::mojom::RemotingSourceRequest remoting_source_request =
2685 mojo::GetProxy(&remoting_source); 2687 mojo::GetProxy(&remoting_source);
2686 media::mojom::RemoterPtr remoter; 2688 media::mojom::RemoterPtr remoter;
2687 GetRemoterFactory()->Create(std::move(remoting_source), 2689 GetRemoterFactory()->Create(std::move(remoting_source),
2688 mojo::GetProxy(&remoter)); 2690 mojo::GetProxy(&remoter));
2689 return base::MakeUnique<media::RemotingController>( 2691 return base::MakeUnique<media::RemotingRendererController>(
2690 std::move(remoting_source_request), std::move(remoter)); 2692 make_scoped_refptr(new media::RemotingSourceImpl(
2693 std::move(remoting_source_request), std::move(remoter))));
2691 } 2694 }
2692 #endif 2695 #endif
2693 2696
2694 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( 2697 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
2695 const blink::WebMediaPlayerSource& source, 2698 const blink::WebMediaPlayerSource& source,
2696 WebMediaPlayerClient* client, 2699 WebMediaPlayerClient* client,
2697 WebMediaPlayerEncryptedMediaClient* encrypted_client, 2700 WebMediaPlayerEncryptedMediaClient* encrypted_client,
2698 WebContentDecryptionModule* initial_cdm, 2701 WebContentDecryptionModule* initial_cdm,
2699 const blink::WebString& sink_id) { 2702 const blink::WebString& sink_id) {
2700 blink::WebMediaStream web_stream = 2703 blink::WebMediaStream web_stream =
(...skipping 24 matching lines...) Expand all
2725 2728
2726 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog( 2729 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog(
2727 blink::WebStringToGURL(frame_->getSecurityOrigin().toString()))); 2730 blink::WebStringToGURL(frame_->getSecurityOrigin().toString())));
2728 2731
2729 #if defined(OS_ANDROID) 2732 #if defined(OS_ANDROID)
2730 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_) 2733 if (UseWebMediaPlayerImpl(url) && !media_surface_manager_)
2731 media_surface_manager_ = new RendererSurfaceViewManager(this); 2734 media_surface_manager_ = new RendererSurfaceViewManager(this);
2732 #endif // defined(OS_ANDROID) 2735 #endif // defined(OS_ANDROID)
2733 2736
2734 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) 2737 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
2735 std::unique_ptr<media::RemotingController> remoting_controller = 2738 std::unique_ptr<media::RemotingRendererController> remoting_controller =
2736 CreateRemotingController(); 2739 CreateRemotingRendererController();
2737 base::WeakPtr<media::MediaObserver> media_observer = 2740 base::WeakPtr<media::MediaObserver> media_observer =
2738 remoting_controller->GetWeakPtr(); 2741 remoting_controller->GetWeakPtr();
2739 #else 2742 #else
2740 base::WeakPtr<media::MediaObserver> media_observer = nullptr; 2743 base::WeakPtr<media::MediaObserver> media_observer = nullptr;
2741 #endif 2744 #endif
2742 2745
2743 media::WebMediaPlayerParams params( 2746 media::WebMediaPlayerParams params(
2744 base::Bind(&ContentRendererClient::DeferMediaLoad, 2747 base::Bind(&ContentRendererClient::DeferMediaLoad,
2745 base::Unretained(GetContentClient()->renderer()), 2748 base::Unretained(GetContentClient()->renderer()),
2746 static_cast<RenderFrame*>(this), 2749 static_cast<RenderFrame*>(this),
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
2784 GetMediaInterfaceProvider()); 2787 GetMediaInterfaceProvider());
2785 #else 2788 #else
2786 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( 2789 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>(
2787 media_log, GetDecoderFactory(), 2790 media_log, GetDecoderFactory(),
2788 base::Bind(&RenderThreadImpl::GetGpuFactories, 2791 base::Bind(&RenderThreadImpl::GetGpuFactories,
2789 base::Unretained(render_thread))); 2792 base::Unretained(render_thread)));
2790 #endif 2793 #endif
2791 } 2794 }
2792 2795
2793 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) 2796 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
2794 media::RemotingController* remoting_controller_ptr = 2797 media::RemotingRendererController* remoting_controller_ptr =
2795 remoting_controller.get(); 2798 remoting_controller.get();
2796 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>( 2799 media_renderer_factory = base::MakeUnique<media::RemotingRendererFactory>(
2797 std::move(media_renderer_factory), std::move(remoting_controller)); 2800 std::move(media_renderer_factory), std::move(remoting_controller));
2798 #endif 2801 #endif
2799 2802
2800 if (!url_index_.get() || url_index_->frame() != frame_) 2803 if (!url_index_.get() || url_index_->frame() != frame_)
2801 url_index_.reset(new media::UrlIndex(frame_)); 2804 url_index_.reset(new media::UrlIndex(frame_));
2802 2805
2803 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( 2806 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl(
2804 frame_, client, encrypted_client, 2807 frame_, client, encrypted_client,
(...skipping 3568 matching lines...) Expand 10 before | Expand all | Expand 10 after
6373 if (UseMojoCdm()) { 6376 if (UseMojoCdm()) {
6374 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider())); 6377 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider()));
6375 return cdm_factory_.get(); 6378 return cdm_factory_.get();
6376 } 6379 }
6377 #endif // defined(ENABLE_MOJO_CDM) 6380 #endif // defined(ENABLE_MOJO_CDM)
6378 6381
6379 #if BUILDFLAG(ENABLE_PEPPER_CDMS) 6382 #if BUILDFLAG(ENABLE_PEPPER_CDMS)
6380 DCHECK(frame_); 6383 DCHECK(frame_);
6381 cdm_factory_.reset( 6384 cdm_factory_.reset(
6382 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_))); 6385 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_)));
6386 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
6387 cdm_factory_.reset(new media::RemotingCdmFactory(
6388 base::MakeUnique<RenderCdmFactory>(
6389 base::Bind(&PepperCdmWrapperImpl::Create, frame_)),
6390 GetRemoterFactory()));
6391 #endif // BUILDFLAG(ENABLE_MEDIA_REMOTING)
6383 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS) 6392 #endif // BUILDFLAG(ENABLE_PEPPER_CDMS)
6384 6393
6385 return cdm_factory_.get(); 6394 return cdm_factory_.get();
6386 } 6395 }
6387 6396
6388 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { 6397 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() {
6389 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) 6398 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER)
6390 if (!decoder_factory_) { 6399 if (!decoder_factory_) {
6391 decoder_factory_.reset( 6400 decoder_factory_.reset(
6392 new media::MojoDecoderFactory(GetMediaInterfaceProvider())); 6401 new media::MojoDecoderFactory(GetMediaInterfaceProvider()));
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
6565 // event target. Potentially a Pepper plugin will receive the event. 6574 // event target. Potentially a Pepper plugin will receive the event.
6566 // In order to tell whether a plugin gets the last mouse event and which it 6575 // In order to tell whether a plugin gets the last mouse event and which it
6567 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets 6576 // is, we set |pepper_last_mouse_event_target_| to null here. If a plugin gets
6568 // the event, it will notify us via DidReceiveMouseEvent() and set itself as 6577 // the event, it will notify us via DidReceiveMouseEvent() and set itself as
6569 // |pepper_last_mouse_event_target_|. 6578 // |pepper_last_mouse_event_target_|.
6570 pepper_last_mouse_event_target_ = nullptr; 6579 pepper_last_mouse_event_target_ = nullptr;
6571 #endif 6580 #endif
6572 } 6581 }
6573 6582
6574 } // namespace content 6583 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | media/base/cdm_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698