OLD | NEW |
---|---|
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 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
153 #include "gin/modules/console.h" | 153 #include "gin/modules/console.h" |
154 #include "gin/modules/module_registry.h" | 154 #include "gin/modules/module_registry.h" |
155 #include "gin/modules/timer.h" | 155 #include "gin/modules/timer.h" |
156 #include "media/audio/audio_output_device.h" | 156 #include "media/audio/audio_output_device.h" |
157 #include "media/base/audio_renderer_mixer_input.h" | 157 #include "media/base/audio_renderer_mixer_input.h" |
158 #include "media/base/cdm_factory.h" | 158 #include "media/base/cdm_factory.h" |
159 #include "media/base/decoder_factory.h" | 159 #include "media/base/decoder_factory.h" |
160 #include "media/base/media.h" | 160 #include "media/base/media.h" |
161 #include "media/base/media_log.h" | 161 #include "media/base/media_log.h" |
162 #include "media/base/media_switches.h" | 162 #include "media/base/media_switches.h" |
163 #include "media/base/renderer_factory_selector.h" | |
163 #include "media/blink/url_index.h" | 164 #include "media/blink/url_index.h" |
164 #include "media/blink/webencryptedmediaclient_impl.h" | 165 #include "media/blink/webencryptedmediaclient_impl.h" |
165 #include "media/blink/webmediaplayer_impl.h" | 166 #include "media/blink/webmediaplayer_impl.h" |
166 #include "media/media_features.h" | 167 #include "media/media_features.h" |
167 #include "media/renderers/gpu_video_accelerator_factories.h" | 168 #include "media/renderers/gpu_video_accelerator_factories.h" |
168 #include "mojo/edk/js/core.h" | 169 #include "mojo/edk/js/core.h" |
169 #include "mojo/edk/js/support.h" | 170 #include "mojo/edk/js/support.h" |
170 #include "net/base/data_url.h" | 171 #include "net/base/data_url.h" |
171 #include "net/base/load_flags.h" | 172 #include "net/base/load_flags.h" |
172 #include "net/base/net_errors.h" | 173 #include "net/base/net_errors.h" |
(...skipping 2727 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2900 GetWebkitPreferences().enable_instant_source_buffer_gc, | 2901 GetWebkitPreferences().enable_instant_source_buffer_gc, |
2901 GetContentClient()->renderer()->AllowMediaSuspend(), | 2902 GetContentClient()->renderer()->AllowMediaSuspend(), |
2902 embedded_media_experience_enabled); | 2903 embedded_media_experience_enabled); |
2903 | 2904 |
2904 bool use_fallback_path = false; | 2905 bool use_fallback_path = false; |
2905 #if defined(OS_ANDROID) | 2906 #if defined(OS_ANDROID) |
2906 use_fallback_path = UseMediaPlayerRenderer(url); | 2907 use_fallback_path = UseMediaPlayerRenderer(url); |
2907 #endif // defined(OS_ANDROID) | 2908 #endif // defined(OS_ANDROID) |
2908 | 2909 |
2909 std::unique_ptr<media::RendererFactory> media_renderer_factory; | 2910 std::unique_ptr<media::RendererFactory> media_renderer_factory; |
2911 media::RendererFactorySelector::FactoryType factory_type; | |
tguilbert
2017/04/19 03:24:14
There is some extra boilerplate in this iteration,
| |
2910 if (use_fallback_path) { | 2912 if (use_fallback_path) { |
2911 #if defined(OS_ANDROID) | 2913 #if defined(OS_ANDROID) |
2912 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | 2914 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
2913 media::MojoRendererFactory::GetGpuFactoriesCB(), | 2915 media::MojoRendererFactory::GetGpuFactoriesCB(), |
2914 GetRemoteInterfaces()->get()); | 2916 GetRemoteInterfaces()->get()); |
2915 | 2917 |
2916 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>( | 2918 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>( |
2917 render_thread->compositor_task_runner(), | 2919 render_thread->compositor_task_runner(), |
2918 std::move(mojo_renderer_factory), | 2920 std::move(mojo_renderer_factory), |
2919 base::Bind(&StreamTextureWrapperImpl::Create, | 2921 base::Bind(&StreamTextureWrapperImpl::Create, |
2920 render_thread->EnableStreamTextureCopy(), | 2922 render_thread->EnableStreamTextureCopy(), |
2921 render_thread->GetStreamTexureFactory(), | 2923 render_thread->GetStreamTexureFactory(), |
2922 base::ThreadTaskRunnerHandle::Get())); | 2924 base::ThreadTaskRunnerHandle::Get())); |
2925 | |
2926 factory_type = media::RendererFactorySelector::FactoryType::MEDIA_PLAYER; | |
2923 #endif // defined(OS_ANDROID) | 2927 #endif // defined(OS_ANDROID) |
2924 } else { | 2928 } else { |
2925 #if defined(ENABLE_MOJO_RENDERER) | 2929 #if defined(ENABLE_MOJO_RENDERER) |
2926 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2930 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
2927 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 2931 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
2928 switches::kDisableMojoRenderer)) { | 2932 switches::kDisableMojoRenderer)) { |
2929 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2933 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2930 media_log, GetDecoderFactory(), | 2934 media_log, GetDecoderFactory(), |
2931 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2935 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2932 base::Unretained(render_thread))); | 2936 base::Unretained(render_thread))); |
2937 | |
2938 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT; | |
2933 } | 2939 } |
2934 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2940 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
2935 if (!media_renderer_factory) { | 2941 if (!media_renderer_factory) { |
2936 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | 2942 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
2937 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2943 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2938 base::Unretained(render_thread)), | 2944 base::Unretained(render_thread)), |
2939 GetMediaInterfaceProvider()); | 2945 GetMediaInterfaceProvider()); |
2946 | |
2947 factory_type = media::RendererFactorySelector::FactoryType::MOJO; | |
2940 } | 2948 } |
2941 #else | 2949 #else |
2942 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2950 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2943 media_log, GetDecoderFactory(), | 2951 media_log, GetDecoderFactory(), |
2944 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2952 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2945 base::Unretained(render_thread))); | 2953 base::Unretained(render_thread))); |
2954 | |
2955 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT; | |
2946 #endif // defined(ENABLE_MOJO_RENDERER) | 2956 #endif // defined(ENABLE_MOJO_RENDERER) |
2947 } | 2957 } |
2948 | 2958 |
2949 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2959 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2950 auto* const remoting_controller_ptr = remoting_controller.get(); | 2960 auto* const remoting_controller_ptr = remoting_controller.get(); |
2951 media_renderer_factory = | 2961 media_renderer_factory = |
2952 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( | 2962 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( |
2953 std::move(media_renderer_factory), std::move(remoting_controller)); | 2963 std::move(media_renderer_factory), std::move(remoting_controller)); |
2964 | |
2965 factory_type = media::RendererFactorySelector::FactoryType::ADAPTIVE; | |
2954 #endif | 2966 #endif |
2955 | 2967 |
2956 if (!url_index_.get() || url_index_->frame() != frame_) | 2968 if (!url_index_.get() || url_index_->frame() != frame_) |
2957 url_index_.reset(new media::UrlIndex(frame_)); | 2969 url_index_.reset(new media::UrlIndex(frame_)); |
2958 | 2970 |
2971 auto factory_selector = base::MakeUnique<media::RendererFactorySelector>(); | |
2972 | |
2973 factory_selector->AddFactory(factory_type, std::move(media_renderer_factory)); | |
2974 factory_selector->SetBaseFactoryType(factory_type); | |
2975 | |
2959 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2976 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
2960 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), | 2977 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), |
2961 std::move(media_renderer_factory), url_index_, params); | 2978 std::move(factory_selector), url_index_, params); |
2962 | 2979 |
2963 #if defined(OS_ANDROID) // WMPI_CAST | 2980 #if defined(OS_ANDROID) // WMPI_CAST |
2964 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); | 2981 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); |
2965 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); | 2982 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); |
2966 media_player->SetUseFallbackPath(use_fallback_path); | 2983 media_player->SetUseFallbackPath(use_fallback_path); |
2967 #endif // defined(OS_ANDROID) | 2984 #endif // defined(OS_ANDROID) |
2968 | 2985 |
2969 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2986 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2970 remoting_controller_ptr->SetDownloadPosterCallback(base::Bind( | 2987 remoting_controller_ptr->SetDownloadPosterCallback(base::Bind( |
2971 &SingleImageDownloader::DownloadImage, weak_factory_.GetWeakPtr())); | 2988 &SingleImageDownloader::DownloadImage, weak_factory_.GetWeakPtr())); |
(...skipping 4019 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6991 policy(info.default_policy), | 7008 policy(info.default_policy), |
6992 replaces_current_history_item(info.replaces_current_history_item), | 7009 replaces_current_history_item(info.replaces_current_history_item), |
6993 history_navigation_in_new_child_frame( | 7010 history_navigation_in_new_child_frame( |
6994 info.is_history_navigation_in_new_child_frame), | 7011 info.is_history_navigation_in_new_child_frame), |
6995 client_redirect(info.is_client_redirect), | 7012 client_redirect(info.is_client_redirect), |
6996 cache_disabled(info.is_cache_disabled), | 7013 cache_disabled(info.is_cache_disabled), |
6997 form(info.form), | 7014 form(info.form), |
6998 source_location(info.source_location) {} | 7015 source_location(info.source_location) {} |
6999 | 7016 |
7000 } // namespace content | 7017 } // namespace content |
OLD | NEW |