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

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

Issue 2769153005: Remove |use_fallback_path_| from WMPI (Closed)
Patch Set: Addressed comment Created 3 years, 8 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 2875 matching lines...) Expand 10 before | Expand all | Expand 10 after
2886 base::TimeDelta::FromMilliseconds(base::GetFieldTrialParamByFeatureAsInt( 2886 base::TimeDelta::FromMilliseconds(base::GetFieldTrialParamByFeatureAsInt(
2887 media::kBackgroundVideoTrackOptimization, 2887 media::kBackgroundVideoTrackOptimization,
2888 "max_keyframe_distance_media_source_ms", 2888 "max_keyframe_distance_media_source_ms",
2889 base::TimeDelta::FromSeconds(10).InMilliseconds())); 2889 base::TimeDelta::FromSeconds(10).InMilliseconds()));
2890 2890
2891 // This must be created for every new WebMediaPlayer, each instance generates 2891 // This must be created for every new WebMediaPlayer, each instance generates
2892 // a new player id which is used to collate logs on the browser side. 2892 // a new player id which is used to collate logs on the browser side.
2893 std::unique_ptr<media::MediaLog> media_log( 2893 std::unique_ptr<media::MediaLog> media_log(
2894 new RenderMediaLog(url::Origin(security_origin).GetURL())); 2894 new RenderMediaLog(url::Origin(security_origin).GetURL()));
2895 2895
2896 bool use_fallback_path = false; 2896 auto factory_selector = base::MakeUnique<media::RendererFactorySelector>();
2897
2897 #if defined(OS_ANDROID) 2898 #if defined(OS_ANDROID)
2898 use_fallback_path = UseMediaPlayerRenderer(url); 2899 // The only MojoRendererService that is registered at the RenderFrameHost
2900 // level uses the MediaPlayerRenderer as its underlying media::Renderer.
2901 auto mojo_media_player_renderer_factory =
2902 base::MakeUnique<media::MojoRendererFactory>(
2903 media::MojoRendererFactory::GetGpuFactoriesCB(),
2904 GetRemoteInterfaces()->get());
2905
2906 // Always give |factory_selector| a MediaPlayerRendererClient factory. WMPI
2907 // might fallback to it if the final redirected URL is an HLS url.
2908 factory_selector->AddFactory(
2909 media::RendererFactorySelector::FactoryType::MEDIA_PLAYER,
2910 base::MakeUnique<MediaPlayerRendererClientFactory>(
2911 render_thread->compositor_task_runner(),
2912 std::move(mojo_media_player_renderer_factory),
2913 base::Bind(&StreamTextureWrapperImpl::Create,
2914 render_thread->EnableStreamTextureCopy(),
2915 render_thread->GetStreamTexureFactory(),
2916 base::ThreadTaskRunnerHandle::Get())));
2917
2918 factory_selector->SetUseMediaPlayer(UseMediaPlayerRenderer(url));
2899 #endif // defined(OS_ANDROID) 2919 #endif // defined(OS_ANDROID)
2900 2920
2921 // |factory_type| will be overwritten in all possible path below, and the
2922 // DEFAULT value is not accurate. However, this prevents the compiler from
2923 // issuing a -Wsometimes-uninitialized warning.
2924 // TODO(tguilbert): Remove |factory_type|, and clean up the logic. The work is
2925 // already completed and incrementally being submitted. See crbug.com/663503.
2926 auto factory_type = media::RendererFactorySelector::FactoryType::DEFAULT;
2901 std::unique_ptr<media::RendererFactory> media_renderer_factory; 2927 std::unique_ptr<media::RendererFactory> media_renderer_factory;
2902 media::RendererFactorySelector::FactoryType factory_type;
2903 if (use_fallback_path) {
2904 #if defined(OS_ANDROID)
2905 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>(
2906 media::MojoRendererFactory::GetGpuFactoriesCB(),
2907 GetRemoteInterfaces()->get());
2908 2928
2909 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>(
2910 render_thread->compositor_task_runner(),
2911 std::move(mojo_renderer_factory),
2912 base::Bind(&StreamTextureWrapperImpl::Create,
2913 render_thread->EnableStreamTextureCopy(),
2914 render_thread->GetStreamTexureFactory(),
2915 base::ThreadTaskRunnerHandle::Get()));
2916 #endif // defined(OS_ANDROID)
2917
2918 // TODO(tguilbert): Move this line back into an #if defined(OS_ANDROID).
2919 // This will never be reached, unless we are on Android. Moving this line
2920 // outside of the #if/#endif block fixes a "sometimes-uninitialized" error
2921 // on desktop. This will be fixed with the next CL for crbug.com/663503.
2922 factory_type = media::RendererFactorySelector::FactoryType::MEDIA_PLAYER;
2923 } else {
2924 #if defined(ENABLE_MOJO_RENDERER) 2929 #if defined(ENABLE_MOJO_RENDERER)
2925 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) 2930 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION)
2926 if (base::CommandLine::ForCurrentProcess()->HasSwitch( 2931 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
2927 switches::kDisableMojoRenderer)) { 2932 switches::kDisableMojoRenderer)) {
2928 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>(
2929 media_log.get(), GetDecoderFactory(),
2930 base::Bind(&RenderThreadImpl::GetGpuFactories,
2931 base::Unretained(render_thread)));
2932
2933 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT;
2934 }
2935 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION)
2936 if (!media_renderer_factory) {
2937 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>(
2938 base::Bind(&RenderThreadImpl::GetGpuFactories,
2939 base::Unretained(render_thread)),
2940 GetMediaInterfaceProvider());
2941
2942 factory_type = media::RendererFactorySelector::FactoryType::MOJO;
2943 }
2944 #else
2945 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( 2933 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>(
2946 media_log.get(), GetDecoderFactory(), 2934 media_log.get(), GetDecoderFactory(),
2947 base::Bind(&RenderThreadImpl::GetGpuFactories, 2935 base::Bind(&RenderThreadImpl::GetGpuFactories,
2948 base::Unretained(render_thread))); 2936 base::Unretained(render_thread)));
2949 2937
2950 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT; 2938 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT;
2939 }
2940 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION)
2941 if (!media_renderer_factory) {
2942 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>(
2943 base::Bind(&RenderThreadImpl::GetGpuFactories,
2944 base::Unretained(render_thread)),
2945 GetMediaInterfaceProvider());
2946
2947 factory_type = media::RendererFactorySelector::FactoryType::MOJO;
2948 }
2949 #else
2950 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>(
2951 media_log.get(), GetDecoderFactory(),
2952 base::Bind(&RenderThreadImpl::GetGpuFactories,
2953 base::Unretained(render_thread)));
2954
2955 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT;
2951 #endif // defined(ENABLE_MOJO_RENDERER) 2956 #endif // defined(ENABLE_MOJO_RENDERER)
2952 }
2953 2957
2954 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) 2958 #if BUILDFLAG(ENABLE_MEDIA_REMOTING)
2955 media_renderer_factory = 2959 media_renderer_factory =
2956 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( 2960 base::MakeUnique<media::remoting::AdaptiveRendererFactory>(
2957 std::move(media_renderer_factory), std::move(remoting_controller)); 2961 std::move(media_renderer_factory), std::move(remoting_controller));
2958 2962
2959 factory_type = media::RendererFactorySelector::FactoryType::ADAPTIVE; 2963 factory_type = media::RendererFactorySelector::FactoryType::ADAPTIVE;
2960 #endif 2964 #endif
2961 2965
2962 if (!url_index_.get() || url_index_->frame() != frame_) 2966 if (!url_index_.get() || url_index_->frame() != frame_)
2963 url_index_.reset(new media::UrlIndex(frame_)); 2967 url_index_.reset(new media::UrlIndex(frame_));
2964 2968
2965 auto factory_selector = base::MakeUnique<media::RendererFactorySelector>();
2966
2967 factory_selector->AddFactory(factory_type, std::move(media_renderer_factory)); 2969 factory_selector->AddFactory(factory_type, std::move(media_renderer_factory));
2968 factory_selector->SetBaseFactoryType(factory_type); 2970 factory_selector->SetBaseFactoryType(factory_type);
2969 2971
2970 std::unique_ptr<media::WebMediaPlayerParams> params( 2972 std::unique_ptr<media::WebMediaPlayerParams> params(
2971 new media::WebMediaPlayerParams( 2973 new media::WebMediaPlayerParams(
2972 std::move(media_log), 2974 std::move(media_log),
2973 base::Bind(&ContentRendererClient::DeferMediaLoad, 2975 base::Bind(&ContentRendererClient::DeferMediaLoad,
2974 base::Unretained(GetContentClient()->renderer()), 2976 base::Unretained(GetContentClient()->renderer()),
2975 static_cast<RenderFrame*>(this), 2977 static_cast<RenderFrame*>(this),
2976 GetWebMediaPlayerDelegate()->has_played_media()), 2978 GetWebMediaPlayerDelegate()->has_played_media()),
2977 audio_renderer_sink, render_thread->GetMediaThreadTaskRunner(), 2979 audio_renderer_sink, render_thread->GetMediaThreadTaskRunner(),
2978 render_thread->GetWorkerTaskRunner(), 2980 render_thread->GetWorkerTaskRunner(),
2979 render_thread->compositor_task_runner(), context_3d_cb, 2981 render_thread->compositor_task_runner(), context_3d_cb,
2980 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, 2982 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory,
2981 base::Unretained(blink::MainThreadIsolate())), 2983 base::Unretained(blink::MainThreadIsolate())),
2982 initial_cdm, media_surface_manager_, media_observer, 2984 initial_cdm, media_surface_manager_, media_observer,
2983 max_keyframe_distance_to_disable_background_video, 2985 max_keyframe_distance_to_disable_background_video,
2984 max_keyframe_distance_to_disable_background_video_mse, 2986 max_keyframe_distance_to_disable_background_video_mse,
2985 GetWebkitPreferences().enable_instant_source_buffer_gc, 2987 GetWebkitPreferences().enable_instant_source_buffer_gc,
2986 GetContentClient()->renderer()->AllowMediaSuspend(), 2988 GetContentClient()->renderer()->AllowMediaSuspend(),
2987 embedded_media_experience_enabled)); 2989 embedded_media_experience_enabled));
2988 2990
2989 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( 2991 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl(
2990 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), 2992 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(),
2991 std::move(factory_selector), url_index_, std::move(params)); 2993 std::move(factory_selector), url_index_, std::move(params));
2992 2994
2993 #if defined(OS_ANDROID) // WMPI_CAST 2995 #if defined(OS_ANDROID) // WMPI_CAST
2994 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); 2996 media_player->SetMediaPlayerManager(GetMediaPlayerManager());
2995 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); 2997 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor());
2996 media_player->SetUseFallbackPath(use_fallback_path);
2997 #endif // defined(OS_ANDROID) 2998 #endif // defined(OS_ANDROID)
2998 2999
2999 return media_player; 3000 return media_player;
3000 } 3001 }
3001 3002
3002 blink::WebApplicationCacheHost* RenderFrameImpl::CreateApplicationCacheHost( 3003 blink::WebApplicationCacheHost* RenderFrameImpl::CreateApplicationCacheHost(
3003 blink::WebApplicationCacheHostClient* client) { 3004 blink::WebApplicationCacheHostClient* client) {
3004 if (!frame_ || !frame_->View()) 3005 if (!frame_ || !frame_->View())
3005 return NULL; 3006 return NULL;
3006 3007
(...skipping 4019 matching lines...) Expand 10 before | Expand all | Expand 10 after
7026 policy(info.default_policy), 7027 policy(info.default_policy),
7027 replaces_current_history_item(info.replaces_current_history_item), 7028 replaces_current_history_item(info.replaces_current_history_item),
7028 history_navigation_in_new_child_frame( 7029 history_navigation_in_new_child_frame(
7029 info.is_history_navigation_in_new_child_frame), 7030 info.is_history_navigation_in_new_child_frame),
7030 client_redirect(info.is_client_redirect), 7031 client_redirect(info.is_client_redirect),
7031 cache_disabled(info.is_cache_disabled), 7032 cache_disabled(info.is_cache_disabled),
7032 form(info.form), 7033 form(info.form),
7033 source_location(info.source_location) {} 7034 source_location(info.source_location) {}
7034 7035
7035 } // namespace content 7036 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/android/media_player_renderer_client_factory.cc ('k') | media/base/media_url_demuxer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698