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 2828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2839 sink_id.Utf8(), security_origin); | 2839 sink_id.Utf8(), security_origin); |
2840 // We need to keep a reference to the context provider (see crbug.com/610527) | 2840 // We need to keep a reference to the context provider (see crbug.com/610527) |
2841 // but media/ can't depend on cc/, so for now, just keep a reference in the | 2841 // but media/ can't depend on cc/, so for now, just keep a reference in the |
2842 // callback. | 2842 // callback. |
2843 // TODO(piman): replace media::Context3D to scoped_refptr<ContextProvider> in | 2843 // TODO(piman): replace media::Context3D to scoped_refptr<ContextProvider> in |
2844 // media/ once ContextProvider is in gpu/. | 2844 // media/ once ContextProvider is in gpu/. |
2845 media::WebMediaPlayerParams::Context3DCB context_3d_cb = base::Bind( | 2845 media::WebMediaPlayerParams::Context3DCB context_3d_cb = base::Bind( |
2846 &GetSharedMainThreadContext3D, | 2846 &GetSharedMainThreadContext3D, |
2847 RenderThreadImpl::current()->SharedMainThreadContextProvider()); | 2847 RenderThreadImpl::current()->SharedMainThreadContextProvider()); |
2848 | 2848 |
2849 // This must be created for every new WebMediaPlayer, each instance generates | |
2850 // a new player id which is used to collate logs on the browser side. | |
2851 // TODO(chcunningham, dalecurtis): This should be switched to a unique_ptr | |
2852 // owned by WebMediaPlayer to avoid this confusion. http://crbug.com/711818. | |
2853 scoped_refptr<media::MediaLog> media_log( | |
2854 new RenderMediaLog(url::Origin(security_origin).GetURL())); | |
2855 | |
2856 bool embedded_media_experience_enabled = false; | 2849 bool embedded_media_experience_enabled = false; |
2857 #if defined(OS_ANDROID) | 2850 #if defined(OS_ANDROID) |
2858 if (!UseMediaPlayerRenderer(url) && !media_surface_manager_) | 2851 if (!UseMediaPlayerRenderer(url) && !media_surface_manager_) |
2859 media_surface_manager_ = new RendererSurfaceViewManager(this); | 2852 media_surface_manager_ = new RendererSurfaceViewManager(this); |
2860 embedded_media_experience_enabled = | 2853 embedded_media_experience_enabled = |
2861 GetWebkitPreferences().embedded_media_experience_enabled; | 2854 GetWebkitPreferences().embedded_media_experience_enabled; |
2862 #endif // defined(OS_ANDROID) | 2855 #endif // defined(OS_ANDROID) |
2863 | 2856 |
2864 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2857 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2865 media::mojom::RemotingSourcePtr remoting_source; | 2858 media::mojom::RemotingSourcePtr remoting_source; |
(...skipping 14 matching lines...) Expand all Loading... |
2880 base::TimeDelta max_keyframe_distance_to_disable_background_video = | 2873 base::TimeDelta max_keyframe_distance_to_disable_background_video = |
2881 base::TimeDelta::FromMilliseconds(base::GetFieldTrialParamByFeatureAsInt( | 2874 base::TimeDelta::FromMilliseconds(base::GetFieldTrialParamByFeatureAsInt( |
2882 media::kBackgroundVideoTrackOptimization, "max_keyframe_distance_ms", | 2875 media::kBackgroundVideoTrackOptimization, "max_keyframe_distance_ms", |
2883 base::TimeDelta::FromSeconds(10).InMilliseconds())); | 2876 base::TimeDelta::FromSeconds(10).InMilliseconds())); |
2884 base::TimeDelta max_keyframe_distance_to_disable_background_video_mse = | 2877 base::TimeDelta max_keyframe_distance_to_disable_background_video_mse = |
2885 base::TimeDelta::FromMilliseconds(base::GetFieldTrialParamByFeatureAsInt( | 2878 base::TimeDelta::FromMilliseconds(base::GetFieldTrialParamByFeatureAsInt( |
2886 media::kBackgroundVideoTrackOptimization, | 2879 media::kBackgroundVideoTrackOptimization, |
2887 "max_keyframe_distance_media_source_ms", | 2880 "max_keyframe_distance_media_source_ms", |
2888 base::TimeDelta::FromSeconds(10).InMilliseconds())); | 2881 base::TimeDelta::FromSeconds(10).InMilliseconds())); |
2889 | 2882 |
2890 media::WebMediaPlayerParams params( | 2883 // This must be created for every new WebMediaPlayer, each instance generates |
2891 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2884 // a new player id which is used to collate logs on the browser side. |
2892 base::Unretained(GetContentClient()->renderer()), | 2885 std::unique_ptr<media::MediaLog> media_log( |
2893 static_cast<RenderFrame*>(this), | 2886 new RenderMediaLog(url::Origin(security_origin).GetURL())); |
2894 GetWebMediaPlayerDelegate()->has_played_media()), | |
2895 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), | |
2896 render_thread->GetWorkerTaskRunner(), | |
2897 render_thread->compositor_task_runner(), context_3d_cb, | |
2898 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, | |
2899 base::Unretained(blink::MainThreadIsolate())), | |
2900 initial_cdm, media_surface_manager_, media_observer, | |
2901 max_keyframe_distance_to_disable_background_video, | |
2902 max_keyframe_distance_to_disable_background_video_mse, | |
2903 GetWebkitPreferences().enable_instant_source_buffer_gc, | |
2904 GetContentClient()->renderer()->AllowMediaSuspend(), | |
2905 embedded_media_experience_enabled); | |
2906 | 2887 |
2907 bool use_fallback_path = false; | 2888 bool use_fallback_path = false; |
2908 #if defined(OS_ANDROID) | 2889 #if defined(OS_ANDROID) |
2909 use_fallback_path = UseMediaPlayerRenderer(url); | 2890 use_fallback_path = UseMediaPlayerRenderer(url); |
2910 #endif // defined(OS_ANDROID) | 2891 #endif // defined(OS_ANDROID) |
2911 | 2892 |
2912 std::unique_ptr<media::RendererFactory> media_renderer_factory; | 2893 std::unique_ptr<media::RendererFactory> media_renderer_factory; |
2913 if (use_fallback_path) { | 2894 if (use_fallback_path) { |
2914 #if defined(OS_ANDROID) | 2895 #if defined(OS_ANDROID) |
2915 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | 2896 auto mojo_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
2916 media::MojoRendererFactory::GetGpuFactoriesCB(), | 2897 media::MojoRendererFactory::GetGpuFactoriesCB(), |
2917 GetRemoteInterfaces()->get()); | 2898 GetRemoteInterfaces()->get()); |
2918 | 2899 |
2919 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>( | 2900 media_renderer_factory = base::MakeUnique<MediaPlayerRendererClientFactory>( |
2920 render_thread->compositor_task_runner(), | 2901 render_thread->compositor_task_runner(), |
2921 std::move(mojo_renderer_factory), | 2902 std::move(mojo_renderer_factory), |
2922 base::Bind(&StreamTextureWrapperImpl::Create, | 2903 base::Bind(&StreamTextureWrapperImpl::Create, |
2923 render_thread->EnableStreamTextureCopy(), | 2904 render_thread->EnableStreamTextureCopy(), |
2924 render_thread->GetStreamTexureFactory(), | 2905 render_thread->GetStreamTexureFactory(), |
2925 base::ThreadTaskRunnerHandle::Get())); | 2906 base::ThreadTaskRunnerHandle::Get())); |
2926 #endif // defined(OS_ANDROID) | 2907 #endif // defined(OS_ANDROID) |
2927 } else { | 2908 } else { |
2928 #if defined(ENABLE_MOJO_RENDERER) | 2909 #if defined(ENABLE_MOJO_RENDERER) |
2929 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2910 #if BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
2930 if (base::CommandLine::ForCurrentProcess()->HasSwitch( | 2911 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
2931 switches::kDisableMojoRenderer)) { | 2912 switches::kDisableMojoRenderer)) { |
2932 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2913 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2933 media_log, GetDecoderFactory(), | 2914 media_log.get(), GetDecoderFactory(), |
2934 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2915 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2935 base::Unretained(render_thread))); | 2916 base::Unretained(render_thread))); |
2936 } | 2917 } |
2937 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) | 2918 #endif // BUILDFLAG(ENABLE_RUNTIME_MEDIA_RENDERER_SELECTION) |
2938 if (!media_renderer_factory) { | 2919 if (!media_renderer_factory) { |
2939 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( | 2920 media_renderer_factory = base::MakeUnique<media::MojoRendererFactory>( |
2940 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2921 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2941 base::Unretained(render_thread)), | 2922 base::Unretained(render_thread)), |
2942 GetMediaInterfaceProvider()); | 2923 GetMediaInterfaceProvider()); |
2943 } | 2924 } |
2944 #else | 2925 #else |
2945 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( | 2926 media_renderer_factory = base::MakeUnique<media::DefaultRendererFactory>( |
2946 media_log, GetDecoderFactory(), | 2927 media_log.get(), GetDecoderFactory(), |
2947 base::Bind(&RenderThreadImpl::GetGpuFactories, | 2928 base::Bind(&RenderThreadImpl::GetGpuFactories, |
2948 base::Unretained(render_thread))); | 2929 base::Unretained(render_thread))); |
2949 #endif // defined(ENABLE_MOJO_RENDERER) | 2930 #endif // defined(ENABLE_MOJO_RENDERER) |
2950 } | 2931 } |
2951 | 2932 |
2952 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) | 2933 #if BUILDFLAG(ENABLE_MEDIA_REMOTING) |
2953 media_renderer_factory = | 2934 media_renderer_factory = |
2954 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( | 2935 base::MakeUnique<media::remoting::AdaptiveRendererFactory>( |
2955 std::move(media_renderer_factory), std::move(remoting_controller)); | 2936 std::move(media_renderer_factory), std::move(remoting_controller)); |
2956 #endif | 2937 #endif |
2957 | 2938 |
2958 if (!url_index_.get() || url_index_->frame() != frame_) | 2939 if (!url_index_.get() || url_index_->frame() != frame_) |
2959 url_index_.reset(new media::UrlIndex(frame_)); | 2940 url_index_.reset(new media::UrlIndex(frame_)); |
2960 | 2941 |
| 2942 std::unique_ptr<media::WebMediaPlayerParams> params( |
| 2943 new media::WebMediaPlayerParams( |
| 2944 std::move(media_log), |
| 2945 base::Bind(&ContentRendererClient::DeferMediaLoad, |
| 2946 base::Unretained(GetContentClient()->renderer()), |
| 2947 static_cast<RenderFrame*>(this), |
| 2948 GetWebMediaPlayerDelegate()->has_played_media()), |
| 2949 audio_renderer_sink, render_thread->GetMediaThreadTaskRunner(), |
| 2950 render_thread->GetWorkerTaskRunner(), |
| 2951 render_thread->compositor_task_runner(), context_3d_cb, |
| 2952 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, |
| 2953 base::Unretained(blink::MainThreadIsolate())), |
| 2954 initial_cdm, media_surface_manager_, media_observer, |
| 2955 max_keyframe_distance_to_disable_background_video, |
| 2956 max_keyframe_distance_to_disable_background_video_mse, |
| 2957 GetWebkitPreferences().enable_instant_source_buffer_gc, |
| 2958 GetContentClient()->renderer()->AllowMediaSuspend(), |
| 2959 embedded_media_experience_enabled)); |
| 2960 |
2961 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( | 2961 media::WebMediaPlayerImpl* media_player = new media::WebMediaPlayerImpl( |
2962 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), | 2962 frame_, client, encrypted_client, GetWebMediaPlayerDelegate(), |
2963 std::move(media_renderer_factory), url_index_, params); | 2963 std::move(media_renderer_factory), url_index_, std::move(params)); |
2964 | 2964 |
2965 #if defined(OS_ANDROID) // WMPI_CAST | 2965 #if defined(OS_ANDROID) // WMPI_CAST |
2966 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); | 2966 media_player->SetMediaPlayerManager(GetMediaPlayerManager()); |
2967 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); | 2967 media_player->SetDeviceScaleFactor(render_view_->GetDeviceScaleFactor()); |
2968 media_player->SetUseFallbackPath(use_fallback_path); | 2968 media_player->SetUseFallbackPath(use_fallback_path); |
2969 #endif // defined(OS_ANDROID) | 2969 #endif // defined(OS_ANDROID) |
2970 | 2970 |
2971 return media_player; | 2971 return media_player; |
2972 } | 2972 } |
2973 | 2973 |
(...skipping 3322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6296 #if BUILDFLAG(ENABLE_WEBRTC) | 6296 #if BUILDFLAG(ENABLE_WEBRTC) |
6297 RenderThreadImpl* const render_thread = RenderThreadImpl::current(); | 6297 RenderThreadImpl* const render_thread = RenderThreadImpl::current(); |
6298 | 6298 |
6299 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner = | 6299 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner = |
6300 render_thread->compositor_task_runner(); | 6300 render_thread->compositor_task_runner(); |
6301 if (!compositor_task_runner.get()) | 6301 if (!compositor_task_runner.get()) |
6302 compositor_task_runner = base::ThreadTaskRunnerHandle::Get(); | 6302 compositor_task_runner = base::ThreadTaskRunnerHandle::Get(); |
6303 | 6303 |
6304 return new WebMediaPlayerMS( | 6304 return new WebMediaPlayerMS( |
6305 frame_, client, GetWebMediaPlayerDelegate(), | 6305 frame_, client, GetWebMediaPlayerDelegate(), |
6306 new RenderMediaLog(url::Origin(security_origin).GetURL()), | 6306 base::MakeUnique<RenderMediaLog>(url::Origin(security_origin).GetURL()), |
6307 CreateRendererFactory(), render_thread->GetIOTaskRunner(), | 6307 CreateRendererFactory(), render_thread->GetIOTaskRunner(), |
6308 compositor_task_runner, render_thread->GetMediaThreadTaskRunner(), | 6308 compositor_task_runner, render_thread->GetMediaThreadTaskRunner(), |
6309 render_thread->GetWorkerTaskRunner(), render_thread->GetGpuFactories(), | 6309 render_thread->GetWorkerTaskRunner(), render_thread->GetGpuFactories(), |
6310 sink_id, security_origin); | 6310 sink_id, security_origin); |
6311 #else | 6311 #else |
6312 return NULL; | 6312 return NULL; |
6313 #endif // BUILDFLAG(ENABLE_WEBRTC) | 6313 #endif // BUILDFLAG(ENABLE_WEBRTC) |
6314 } | 6314 } |
6315 | 6315 |
6316 std::unique_ptr<MediaStreamRendererFactory> | 6316 std::unique_ptr<MediaStreamRendererFactory> |
(...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6991 policy(info.default_policy), | 6991 policy(info.default_policy), |
6992 replaces_current_history_item(info.replaces_current_history_item), | 6992 replaces_current_history_item(info.replaces_current_history_item), |
6993 history_navigation_in_new_child_frame( | 6993 history_navigation_in_new_child_frame( |
6994 info.is_history_navigation_in_new_child_frame), | 6994 info.is_history_navigation_in_new_child_frame), |
6995 client_redirect(info.is_client_redirect), | 6995 client_redirect(info.is_client_redirect), |
6996 cache_disabled(info.is_cache_disabled), | 6996 cache_disabled(info.is_cache_disabled), |
6997 form(info.form), | 6997 form(info.form), |
6998 source_location(info.source_location) {} | 6998 source_location(info.source_location) {} |
6999 | 6999 |
7000 } // namespace content | 7000 } // namespace content |
OLD | NEW |