Chromium Code Reviews| 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 2711 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2884 // a new player id which is used to collate logs on the browser side. | 2885 // a new player id which is used to collate logs on the browser side. |
| 2885 std::unique_ptr<media::MediaLog> media_log( | 2886 std::unique_ptr<media::MediaLog> media_log( |
| 2886 new RenderMediaLog(url::Origin(security_origin).GetURL())); | 2887 new RenderMediaLog(url::Origin(security_origin).GetURL())); |
| 2887 | 2888 |
| 2888 bool use_fallback_path = false; | 2889 bool use_fallback_path = false; |
| 2889 #if defined(OS_ANDROID) | 2890 #if defined(OS_ANDROID) |
| 2890 use_fallback_path = UseMediaPlayerRenderer(url); | 2891 use_fallback_path = UseMediaPlayerRenderer(url); |
| 2891 #endif // defined(OS_ANDROID) | 2892 #endif // defined(OS_ANDROID) |
| 2892 | 2893 |
| 2893 std::unique_ptr<media::RendererFactory> media_renderer_factory; | 2894 std::unique_ptr<media::RendererFactory> media_renderer_factory; |
| 2895 media::RendererFactorySelector::FactoryType factory_type; | |
| 2894 if (use_fallback_path) { | 2896 if (use_fallback_path) { |
| 2895 #if defined(OS_ANDROID) | 2897 #if defined(OS_ANDROID) |
| 2896 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | 2898 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
| 2897 media::MojoRendererFactory::GetGpuFactoriesCB(), | 2899 media::MojoRendererFactory::GetGpuFactoriesCB(), |
| 2898 GetRemoteInterfaces()->get()); | 2900 GetRemoteInterfaces()->get()); |
| 2899 | 2901 |
| 2900 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>( | 2902 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>( |
| 2901 render_thread->compositor_task_runner(), | 2903 render_thread->compositor_task_runner(), |
| 2902 std::move(mojo_renderer_factory), | 2904 std::move(mojo_renderer_factory), |
| 2903 base::Bind(&StreamTextureWrapperImpl::Create, | 2905 base::Bind(&StreamTextureWrapperImpl::Create, |
| 2904 render_thread->EnableStreamTextureCopy(), | 2906 render_thread->EnableStreamTextureCopy(), |
| 2905 render_thread->GetStreamTexureFactory(), | 2907 render_thread->GetStreamTexureFactory(), |
| 2906 base::ThreadTaskRunnerHandle::Get())); | 2908 base::ThreadTaskRunnerHandle::Get())); |
| 2909 | |
| 2910 factory_type = media::RendererFactorySelector::FactoryType::MEDIA_PLAYER; | |
| 2907 #endif // defined(OS_ANDROID) | 2911 #endif // defined(OS_ANDROID) |
| 2908 } else { | 2912 } else { |
| 2909 #if defined(ENABLE_MOJO_RENDERER) | 2913 #if defined(ENABLE_MOJO_RENDERER) |
| 2910 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2914 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
| 2911 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 2915 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 2912 switches::kDisableMojoRenderer)) { | 2916 switches::kDisableMojoRenderer)) { |
| 2913 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2917 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
| 2914 media_log.get(), GetDecoderFactory(), | 2918 media_log.get(), GetDecoderFactory(), |
| 2915 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2919 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2916 base::Unretained(render_thread))); | 2920 base::Unretained(render_thread))); |
| 2921 | |
| 2922 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT; | |
| 2917 } | 2923 } |
| 2918 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2924 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
| 2919 if (!media_renderer_factory) { | 2925 if (!media_renderer_factory) { |
| 2920 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | 2926 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
| 2921 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2927 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2922 base::Unretained(render_thread)), | 2928 base::Unretained(render_thread)), |
| 2923 GetMediaInterfaceProvider()); | 2929 GetMediaInterfaceProvider()); |
| 2930 | |
| 2931 factory_type = media::RendererFactorySelector::FactoryType::MOJO; | |
| 2924 } | 2932 } |
| 2925 #else | 2933 #else |
| 2926 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2934 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
| 2927 media_log.get(), GetDecoderFactory(), | 2935 media_log.get(), GetDecoderFactory(), |
| 2928 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2936 base::Bind(&RenderThreadImpl::GetGpuFactories, |
| 2929 base::Unretained(render_thread))); | 2937 base::Unretained(render_thread))); |
| 2938 | |
| 2939 factory_type = media::RendererFactorySelector::FactoryType::DEFAULT; | |
| 2930 #endif // defined(ENABLE_MOJO_RENDERER) | 2940 #endif // defined(ENABLE_MOJO_RENDERER) |
| 2931 } | 2941 } |
| 2932 | 2942 |
| 2933 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2943 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
| 2934 media_renderer_factory = | 2944 media_renderer_factory = |
| 2935 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( | 2945 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( |
| 2936 std::move(media_renderer_factory), std::move(remoting_controller)); | 2946 std::move(media_renderer_factory), std::move(remoting_controller)); |
|
ncarter (slow)
2017/04/24 17:14:33
This step looks little strange to me -- since the
tguilbert
2017/04/24 19:31:16
It does :) One of the RendererFactorySelector's go
ncarter (slow)
2017/04/24 19:50:29
lgtm then
| |
| 2947 | |
| 2948 factory_type = media::RendererFactorySelector::FactoryType::ADAPTIVE; | |
| 2937 #endif | 2949 #endif |
| 2938 | 2950 |
| 2939 if (!url_index_.get() || url_index_->frame() != frame_) | 2951 if (!url_index_.get() || url_index_->frame() != frame_) |
| 2940 url_index_.reset(new media::UrlIndex(frame_)); | 2952 url_index_.reset(new media::UrlIndex(frame_)); |
| 2941 | 2953 |
| 2954 auto factory_selector = base::MakeUnique<media::RendererFactorySelector>(); | |
| 2955 | |
| 2956 factory_selector->AddFactory(factory_type, std::move(media_renderer_factory)); | |
| 2957 factory_selector->SetBaseFactoryType(factory_type); | |
| 2958 | |
| 2942 std::unique_ptr<media::WebMediaPlayerParams> params( | 2959 std::unique_ptr<media::WebMediaPlayerParams> params( |
| 2943 new media::WebMediaPlayerParams( | 2960 new media::WebMediaPlayerParams( |
| 2944 std::move(media_log), | 2961 std::move(media_log), |
| 2945 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2962 base::Bind(&ContentRendererClient::DeferMediaLoad, |
| 2946 base::Unretained(GetContentClient()->renderer()), | 2963 base::Unretained(GetContentClient()->renderer()), |
| 2947 static_cast<RenderFrame*>(this), | 2964 static_cast<RenderFrame*>(this), |
| 2948 GetWebMediaPlayerDelegate()->has_played_media()), | 2965 GetWebMediaPlayerDelegate()->has_played_media()), |
| 2949 audio_renderer_sink, render_thread->GetMediaThreadTaskRunner(), | 2966 audio_renderer_sink, render_thread->GetMediaThreadTaskRunner(), |
| 2950 render_thread->GetWorkerTaskRunner(), | 2967 render_thread->GetWorkerTaskRunner(), |
| 2951 render_thread->compositor_task_runner(), context_3d_cb, | 2968 render_thread->compositor_task_runner(), context_3d_cb, |
| 2952 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, | 2969 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, |
| 2953 base::Unretained(blink::MainThreadIsolate())), | 2970 base::Unretained(blink::MainThreadIsolate())), |
| 2954 initial_cdm, media_surface_manager_, media_observer, | 2971 initial_cdm, media_surface_manager_, media_observer, |
| 2955 max_keyframe_distance_to_disable_background_video, | 2972 max_keyframe_distance_to_disable_background_video, |
| 2956 max_keyframe_distance_to_disable_background_video_mse, | 2973 max_keyframe_distance_to_disable_background_video_mse, |
| 2957 GetWebkitPreferences().enable_instant_source_buffer_gc, | 2974 GetWebkitPreferences().enable_instant_source_buffer_gc, |
| 2958 GetContentClient()->renderer()->AllowMediaSuspend(), | 2975 GetContentClient()->renderer()->AllowMediaSuspend(), |
| 2959 embedded_media_experience_enabled)); | 2976 embedded_media_experience_enabled)); |
| 2960 | 2977 |
| 2961 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2978 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
| 2962 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), | 2979 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), |
| 2963 std::move(media_renderer_factory), url_index_, std::move(params)); | 2980 std::move(factory_selector), url_index_, std::move(params)); |
| 2964 | 2981 |
| 2965 #if defined(OS_ANDROID) // WMPI_CAST | 2982 #if defined(OS_ANDROID) // WMPI_CAST |
| 2966 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); | 2983 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); |
| 2967 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); | 2984 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); |
| 2968 media_player->SetUseFallbackPath(use_fallback_path); | 2985 media_player->SetUseFallbackPath(use_fallback_path); |
| 2969 #endif // defined(OS_ANDROID) | 2986 #endif // defined(OS_ANDROID) |
| 2970 | 2987 |
| 2971 return media_player; | 2988 return media_player; |
| 2972 } | 2989 } |
| 2973 | 2990 |
| (...skipping 4005 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 6979 policy(info.default_policy), | 6996 policy(info.default_policy), |
| 6980 replaces_current_history_item(info.replaces_current_history_item), | 6997 replaces_current_history_item(info.replaces_current_history_item), |
| 6981 history_navigation_in_new_child_frame( | 6998 history_navigation_in_new_child_frame( |
| 6982 info.is_history_navigation_in_new_child_frame), | 6999 info.is_history_navigation_in_new_child_frame), |
| 6983 client_redirect(info.is_client_redirect), | 7000 client_redirect(info.is_client_redirect), |
| 6984 cache_disabled(info.is_cache_disabled), | 7001 cache_disabled(info.is_cache_disabled), |
| 6985 form(info.form), | 7002 form(info.form), |
| 6986 source_location(info.source_location) {} | 7003 source_location(info.source_location) {} |
| 6987 | 7004 |
| 6988 } // namespace content | 7005 } // namespace content |
| OLD | NEW |