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

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

Issue 1840563002: Revert of media: Enable Unified Media Pipeline for MSE and EME on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | media/base/media.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 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 #include "content/renderer/media/android/stream_texture_factory_impl.h" 207 #include "content/renderer/media/android/stream_texture_factory_impl.h"
208 #include "content/renderer/media/android/webmediaplayer_android.h" 208 #include "content/renderer/media/android/webmediaplayer_android.h"
209 #include "content/renderer/media/android/webmediasession_android.h" 209 #include "content/renderer/media/android/webmediasession_android.h"
210 #include "media/base/android/media_codec_util.h" 210 #include "media/base/android/media_codec_util.h"
211 #include "third_party/WebKit/public/platform/WebFloatPoint.h" 211 #include "third_party/WebKit/public/platform/WebFloatPoint.h"
212 #else 212 #else
213 #include "cc/blink/context_provider_web_context.h" 213 #include "cc/blink/context_provider_web_context.h"
214 #endif 214 #endif
215 215
216 #if defined(ENABLE_PEPPER_CDMS) 216 #if defined(ENABLE_PEPPER_CDMS)
217 #include "content/renderer/media/cdm/render_cdm_factory.h"
218 #include "content/renderer/media/cdm/pepper_cdm_wrapper_impl.h" 217 #include "content/renderer/media/cdm/pepper_cdm_wrapper_impl.h"
219 #elif defined(ENABLE_BROWSER_CDMS) 218 #elif defined(ENABLE_BROWSER_CDMS)
220 #include "content/renderer/media/cdm/render_cdm_factory.h"
221 #include "content/renderer/media/cdm/renderer_cdm_manager.h" 219 #include "content/renderer/media/cdm/renderer_cdm_manager.h"
222 #endif 220 #endif
223 221
224 #if defined(ENABLE_MOJO_MEDIA) 222 #if defined(ENABLE_MOJO_MEDIA)
225 #include "content/renderer/media/media_interface_provider.h" 223 #include "content/renderer/media/media_interface_provider.h"
226 #endif 224 #endif
227 225
228 #if defined(ENABLE_MOJO_CDM) 226 #if defined(ENABLE_MOJO_CDM)
229 #include "media/mojo/services/mojo_cdm_factory.h" // nogncheck 227 #include "media/mojo/services/mojo_cdm_factory.h" // nogncheck
228 #else
229 #include "content/renderer/media/cdm/render_cdm_factory.h"
230 #endif 230 #endif
231 231
232 #if defined(ENABLE_MOJO_RENDERER) 232 #if defined(ENABLE_MOJO_RENDERER)
233 #include "media/mojo/services/mojo_renderer_factory.h" // nogncheck 233 #include "media/mojo/services/mojo_renderer_factory.h" // nogncheck
234 #else 234 #else
235 #include "media/renderers/default_renderer_factory.h" 235 #include "media/renderers/default_renderer_factory.h"
236 #endif 236 #endif
237 237
238 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) 238 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER)
239 #include "media/mojo/services/mojo_decoder_factory.h" // nogncheck 239 #include "media/mojo/services/mojo_decoder_factory.h" // nogncheck
(...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 main_resource_ssl_status.security_bits != ssl_status.security_bits || 753 main_resource_ssl_status.security_bits != ssl_status.security_bits ||
754 main_resource_ssl_status.connection_status != 754 main_resource_ssl_status.connection_status !=
755 ssl_status.connection_status); 755 ssl_status.connection_status);
756 } 756 }
757 757
758 #if defined(OS_ANDROID) 758 #if defined(OS_ANDROID)
759 // Returns true if WMPI should be used for playback, false otherwise. 759 // Returns true if WMPI should be used for playback, false otherwise.
760 // 760 //
761 // Note that HLS and MP4 detection are pre-redirect and path-based. It is 761 // Note that HLS and MP4 detection are pre-redirect and path-based. It is
762 // possible to load such a URL and find different content. 762 // possible to load such a URL and find different content.
763 bool UseWebMediaPlayerImpl(const GURL& url) { 763 bool UseWebMediaPlayerImpl(blink::WebMediaPlayer::LoadType load_type,
764 const GURL& url) {
765 if (load_type == blink::WebMediaPlayer::LoadTypeMediaSource)
766 return media::IsUnifiedMediaPipelineEnabledForMse();
767
764 // WMPI does not support HLS. 768 // WMPI does not support HLS.
765 if (media::MediaCodecUtil::IsHLSPath(url)) 769 if (media::MediaCodecUtil::IsHLSPath(url))
766 return false; 770 return false;
767 771
768 // Don't use WMPI if the container likely contains a codec we can't decode in 772 // Don't use WMPI if the container likely contains a codec we can't decode in
769 // software and platform decoders are not available. 773 // software and hardware decoders are not available.
770 if (base::EndsWith(url.path(), ".mp4", 774 if (base::EndsWith(url.path(), ".mp4",
771 base::CompareCase::INSENSITIVE_ASCII) && 775 base::CompareCase::INSENSITIVE_ASCII) &&
772 !media::HasPlatformDecoderSupport()) { 776 !media::HasPlatformDecoderSupport()) {
773 return false; 777 return false;
774 } 778 }
775 779
776 // Otherwise enable WMPI if indicated via experiment or command line. 780 // Otherwise enable WMPI if indicated via experiment or command line.
777 return media::IsUnifiedMediaPipelineEnabled(); 781 return media::IsUnifiedMediaPipelineEnabled();
778 } 782 }
779 #endif // defined(OS_ANDROID) 783 #endif // defined(OS_ANDROID)
780 784
781 #if defined(ENABLE_MOJO_CDM)
782 // Returns whether mojo CDM should be used at runtime. Note that even when mojo
783 // CDM is enabled at compile time (ENABLE_MOJO_CDM is defined), there are cases
784 // where we want to choose other CDM types. For example, on Android when we use
785 // WebMediaPlayerAndroid, we still want to use ProxyMediaKeys. In the future,
786 // when we experiment mojo CDM on desktop, we will choose between mojo CDM and
787 // pepper CDM at runtime.
788 // TODO(xhwang): Remove this when we use mojo CDM for all remote CDM cases by
789 // default.
790 bool UseMojoCdm() {
791 #if defined(OS_ANDROID)
792 return media::IsUnifiedMediaPipelineEnabled();
793 #else
794 return true;
795 #endif
796 }
797 #endif // defined(ENABLE_MOJO_CDM)
798
799 } // namespace 785 } // namespace
800 786
801 // static 787 // static
802 RenderFrameImpl* RenderFrameImpl::Create(RenderViewImpl* render_view, 788 RenderFrameImpl* RenderFrameImpl::Create(RenderViewImpl* render_view,
803 int32_t routing_id) { 789 int32_t routing_id) {
804 DCHECK(routing_id != MSG_ROUTING_NONE); 790 DCHECK(routing_id != MSG_ROUTING_NONE);
805 CreateParams params(render_view, routing_id); 791 CreateParams params(render_view, routing_id);
806 792
807 if (g_create_render_frame_impl) 793 if (g_create_render_frame_impl)
808 return g_create_render_frame_impl(params); 794 return g_create_render_frame_impl(params);
(...skipping 1580 matching lines...) Expand 10 before | Expand all | Expand 10 after
2389 2375
2390 WebPluginParams params_to_use = params; 2376 WebPluginParams params_to_use = params;
2391 params_to_use.mimeType = WebString::fromUTF8(mime_type); 2377 params_to_use.mimeType = WebString::fromUTF8(mime_type);
2392 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */); 2378 return CreatePlugin(frame, info, params_to_use, nullptr /* throttler */);
2393 #else 2379 #else
2394 return NULL; 2380 return NULL;
2395 #endif // defined(ENABLE_PLUGINS) 2381 #endif // defined(ENABLE_PLUGINS)
2396 } 2382 }
2397 2383
2398 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( 2384 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
2385 blink::WebMediaPlayer::LoadType load_type,
2399 const blink::WebURL& url, 2386 const blink::WebURL& url,
2400 WebMediaPlayerClient* client, 2387 WebMediaPlayerClient* client,
2401 WebMediaPlayerEncryptedMediaClient* encrypted_client, 2388 WebMediaPlayerEncryptedMediaClient* encrypted_client,
2402 WebContentDecryptionModule* initial_cdm, 2389 WebContentDecryptionModule* initial_cdm,
2403 const blink::WebString& sink_id, 2390 const blink::WebString& sink_id,
2404 WebMediaSession* media_session) { 2391 WebMediaSession* media_session) {
2405 #if defined(VIDEO_HOLE) 2392 #if defined(VIDEO_HOLE)
2406 if (!contains_media_player_) { 2393 if (!contains_media_player_) {
2407 render_view_->RegisterVideoHoleFrame(this); 2394 render_view_->RegisterVideoHoleFrame(this);
2408 contains_media_player_ = true; 2395 contains_media_player_ = true;
(...skipping 26 matching lines...) Expand all
2435 static_cast<RenderFrame*>(this), 2422 static_cast<RenderFrame*>(this),
2436 GetWebMediaPlayerDelegate()->has_played_media()), 2423 GetWebMediaPlayerDelegate()->has_played_media()),
2437 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), 2424 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(),
2438 render_thread->GetWorkerTaskRunner(), 2425 render_thread->GetWorkerTaskRunner(),
2439 render_thread->compositor_task_runner(), context_3d_cb, 2426 render_thread->compositor_task_runner(), context_3d_cb,
2440 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, 2427 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory,
2441 base::Unretained(blink::mainThreadIsolate())), 2428 base::Unretained(blink::mainThreadIsolate())),
2442 initial_cdm, media_surface_manager_, media_session); 2429 initial_cdm, media_surface_manager_, media_session);
2443 2430
2444 #if defined(OS_ANDROID) 2431 #if defined(OS_ANDROID)
2445 if (!UseWebMediaPlayerImpl(url)) 2432 if (!UseWebMediaPlayerImpl(load_type, url))
2446 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); 2433 return CreateAndroidWebMediaPlayer(client, encrypted_client, params);
2447 #endif // defined(OS_ANDROID) 2434 #endif // defined(OS_ANDROID)
2448 2435
2449 #if defined(ENABLE_MOJO_RENDERER) 2436 #if defined(ENABLE_MOJO_RENDERER)
2450 scoped_ptr<media::RendererFactory> media_renderer_factory( 2437 scoped_ptr<media::RendererFactory> media_renderer_factory(
2451 new media::MojoRendererFactory(GetMediaInterfaceProvider())); 2438 new media::MojoRendererFactory(GetMediaInterfaceProvider()));
2452 #else 2439 #else
2453 scoped_ptr<media::RendererFactory> media_renderer_factory = 2440 scoped_ptr<media::RendererFactory> media_renderer_factory =
2454 GetContentClient()->renderer()->CreateMediaRendererFactory( 2441 GetContentClient()->renderer()->CreateMediaRendererFactory(
2455 this, render_thread->GetGpuFactories(), media_log); 2442 this, render_thread->GetGpuFactories(), media_log);
(...skipping 3454 matching lines...) Expand 10 before | Expand all | Expand 10 after
5910 #if defined(OS_ANDROID) 5897 #if defined(OS_ANDROID)
5911 // Hardware-secure codecs are only supported if secure surfaces are enabled. 5898 // Hardware-secure codecs are only supported if secure surfaces are enabled.
5912 return render_view_->renderer_preferences_ 5899 return render_view_->renderer_preferences_
5913 .use_video_overlay_for_embedded_encrypted_video; 5900 .use_video_overlay_for_embedded_encrypted_video;
5914 #else 5901 #else
5915 return false; 5902 return false;
5916 #endif // defined(OS_ANDROID) 5903 #endif // defined(OS_ANDROID)
5917 } 5904 }
5918 5905
5919 media::CdmFactory* RenderFrameImpl::GetCdmFactory() { 5906 media::CdmFactory* RenderFrameImpl::GetCdmFactory() {
5920 if (cdm_factory_) 5907 #if defined(ENABLE_BROWSER_CDMS)
5921 return cdm_factory_.get(); 5908 if (!cdm_manager_)
5909 cdm_manager_ = new RendererCdmManager(this);
5910 #endif // defined(ENABLE_BROWSER_CDMS)
5911
5912 if (!cdm_factory_) {
5913 DCHECK(frame_);
5922 5914
5923 #if defined(ENABLE_MOJO_CDM) 5915 #if defined(ENABLE_MOJO_CDM)
5924 if (UseMojoCdm()) {
5925 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider())); 5916 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaInterfaceProvider()));
5926 return cdm_factory_.get(); 5917 #else
5918 cdm_factory_.reset(new RenderCdmFactory(
5919 #if defined(ENABLE_PEPPER_CDMS)
5920 base::Bind(&PepperCdmWrapperImpl::Create, frame_)
5921 #elif defined(ENABLE_BROWSER_CDMS)
5922 cdm_manager_
5923 #endif
5924 ));
5925 #endif // defined(ENABLE_MOJO_CDM)
5927 } 5926 }
5928 #endif // defined(ENABLE_MOJO_CDM)
5929
5930 #if defined(ENABLE_PEPPER_CDMS)
5931 DCHECK(frame_);
5932 cdm_factory_.reset(
5933 new RenderCdmFactory(base::Bind(&PepperCdmWrapperImpl::Create, frame_)));
5934 #elif defined(ENABLE_BROWSER_CDMS)
5935 if (!cdm_manager_)
5936 cdm_manager_ = new RendererCdmManager(this);
5937 cdm_factory_.reset(new RenderCdmFactory(cdm_manager_));
5938 #endif // defined(ENABLE_PEPPER_CDMS)
5939 5927
5940 return cdm_factory_.get(); 5928 return cdm_factory_.get();
5941 } 5929 }
5942 5930
5943 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() { 5931 media::DecoderFactory* RenderFrameImpl::GetDecoderFactory() {
5944 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER) 5932 #if defined(ENABLE_MOJO_AUDIO_DECODER) || defined(ENABLE_MOJO_VIDEO_DECODER)
5945 if (!decoder_factory_) { 5933 if (!decoder_factory_) {
5946 decoder_factory_.reset( 5934 decoder_factory_.reset(
5947 new media::MojoDecoderFactory(GetMediaInterfaceProvider())); 5935 new media::MojoDecoderFactory(GetMediaInterfaceProvider()));
5948 } 5936 }
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
6013 int match_count, 6001 int match_count,
6014 int ordinal, 6002 int ordinal,
6015 const WebRect& selection_rect, 6003 const WebRect& selection_rect,
6016 bool final_status_update) { 6004 bool final_status_update) {
6017 Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, match_count, 6005 Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, match_count,
6018 selection_rect, ordinal, 6006 selection_rect, ordinal,
6019 final_status_update)); 6007 final_status_update));
6020 } 6008 }
6021 6009
6022 } // namespace content 6010 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | media/base/media.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698