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 <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
206 #include "content/renderer/media/cdm/renderer_cdm_manager.h" | 206 #include "content/renderer/media/cdm/renderer_cdm_manager.h" |
207 #endif | 207 #endif |
208 | 208 |
209 #if defined(ENABLE_MOJO_MEDIA) | 209 #if defined(ENABLE_MOJO_MEDIA) |
210 #include "media/mojo/services/mojo_cdm_factory.h" | 210 #include "media/mojo/services/mojo_cdm_factory.h" |
211 #include "mojo/application/public/cpp/connect.h" | 211 #include "mojo/application/public/cpp/connect.h" |
212 #include "mojo/application/public/interfaces/shell.mojom.h" | 212 #include "mojo/application/public/interfaces/shell.mojom.h" |
213 #include "mojo/public/cpp/bindings/interface_request.h" | 213 #include "mojo/public/cpp/bindings/interface_request.h" |
214 #endif | 214 #endif |
215 | 215 |
216 #if defined(ENABLE_MOJO_MEDIA) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 216 #if defined(ENABLE_MOJO_MEDIA) && !defined(OS_ANDROID) |
217 #include "media/mojo/services/mojo_renderer_factory.h" | 217 #include "media/mojo/services/mojo_renderer_factory.h" |
218 #else | 218 #else |
219 #include "media/renderers/default_renderer_factory.h" | 219 #include "media/renderers/default_renderer_factory.h" |
220 #endif | 220 #endif |
221 | 221 |
222 #if defined(ENABLE_WEBVR) | 222 #if defined(ENABLE_WEBVR) |
223 #include "content/renderer/vr/vr_dispatcher.h" | 223 #include "content/renderer/vr/vr_dispatcher.h" |
224 #endif | 224 #endif |
225 | 225 |
226 using blink::WebContentDecryptionModule; | 226 using blink::WebContentDecryptionModule; |
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 FrameMsg_UILoadMetricsReportType::Value report_type = | 545 FrameMsg_UILoadMetricsReportType::Value report_type = |
546 static_cast<FrameMsg_UILoadMetricsReportType::Value>( | 546 static_cast<FrameMsg_UILoadMetricsReportType::Value>( |
547 request->inputPerfMetricReportPolicy()); | 547 request->inputPerfMetricReportPolicy()); |
548 return CommonNavigationParams( | 548 return CommonNavigationParams( |
549 request->url(), referrer, extra_data->transition_type(), | 549 request->url(), referrer, extra_data->transition_type(), |
550 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, | 550 FrameMsg_Navigate_Type::NORMAL, true, should_replace_current_entry, |
551 ui_timestamp, report_type, GURL(), GURL(), LOFI_UNSPECIFIED, | 551 ui_timestamp, report_type, GURL(), GURL(), LOFI_UNSPECIFIED, |
552 base::TimeTicks::Now()); | 552 base::TimeTicks::Now()); |
553 } | 553 } |
554 | 554 |
555 #if !defined(OS_ANDROID) || defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
556 media::Context3D GetSharedMainThreadContext3D() { | 555 media::Context3D GetSharedMainThreadContext3D() { |
557 cc::ContextProvider* provider = | 556 cc::ContextProvider* provider = |
558 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); | 557 RenderThreadImpl::current()->SharedMainThreadContextProvider().get(); |
559 if (!provider) | 558 if (!provider) |
560 return media::Context3D(); | 559 return media::Context3D(); |
561 return media::Context3D(provider->ContextGL(), provider->GrContext()); | 560 return media::Context3D(provider->ContextGL(), provider->GrContext()); |
562 } | 561 } |
563 #endif | |
564 | 562 |
565 bool IsReload(FrameMsg_Navigate_Type::Value navigation_type) { | 563 bool IsReload(FrameMsg_Navigate_Type::Value navigation_type) { |
566 return navigation_type == FrameMsg_Navigate_Type::RELOAD || | 564 return navigation_type == FrameMsg_Navigate_Type::RELOAD || |
567 navigation_type == FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE || | 565 navigation_type == FrameMsg_Navigate_Type::RELOAD_IGNORING_CACHE || |
568 navigation_type == FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL; | 566 navigation_type == FrameMsg_Navigate_Type::RELOAD_ORIGINAL_REQUEST_URL; |
569 } | 567 } |
570 | 568 |
571 RenderFrameImpl::CreateRenderFrameImplFunction g_create_render_frame_impl = | 569 RenderFrameImpl::CreateRenderFrameImplFunction g_create_render_frame_impl = |
572 nullptr; | 570 nullptr; |
573 | 571 |
(...skipping 1710 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2284 #endif // defined(VIDEO_HOLE) | 2282 #endif // defined(VIDEO_HOLE) |
2285 | 2283 |
2286 blink::WebMediaStream web_stream( | 2284 blink::WebMediaStream web_stream( |
2287 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); | 2285 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); |
2288 if (!web_stream.isNull()) | 2286 if (!web_stream.isNull()) |
2289 return CreateWebMediaPlayerForMediaStream(client, sink_id, | 2287 return CreateWebMediaPlayerForMediaStream(client, sink_id, |
2290 frame->securityOrigin()); | 2288 frame->securityOrigin()); |
2291 | 2289 |
2292 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | 2290 RenderThreadImpl* render_thread = RenderThreadImpl::current(); |
2293 | 2291 |
2294 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2295 scoped_refptr<media::RestartableAudioRendererSink> audio_renderer_sink; | |
2296 media::WebMediaPlayerParams::Context3DCB context_3d_cb; | |
2297 #else | |
2298 scoped_refptr<media::RestartableAudioRendererSink> audio_renderer_sink = | 2292 scoped_refptr<media::RestartableAudioRendererSink> audio_renderer_sink = |
2299 render_thread->GetAudioRendererMixerManager()->CreateInput( | 2293 render_thread->GetAudioRendererMixerManager()->CreateInput( |
2300 routing_id_, sink_id.utf8(), frame->securityOrigin()); | 2294 routing_id_, sink_id.utf8(), frame->securityOrigin()); |
2301 media::WebMediaPlayerParams::Context3DCB context_3d_cb = | 2295 media::WebMediaPlayerParams::Context3DCB context_3d_cb = |
2302 base::Bind(&GetSharedMainThreadContext3D); | 2296 base::Bind(&GetSharedMainThreadContext3D); |
2303 #endif // defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2304 | 2297 |
2305 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); | 2298 scoped_refptr<media::MediaLog> media_log(new RenderMediaLog()); |
2306 media::WebMediaPlayerParams params( | 2299 media::WebMediaPlayerParams params( |
2307 base::Bind(&ContentRendererClient::DeferMediaLoad, | 2300 base::Bind(&ContentRendererClient::DeferMediaLoad, |
2308 base::Unretained(GetContentClient()->renderer()), | 2301 base::Unretained(GetContentClient()->renderer()), |
2309 static_cast<RenderFrame*>(this), | 2302 static_cast<RenderFrame*>(this), |
2310 GetWebMediaPlayerDelegate()->has_played_media()), | 2303 GetWebMediaPlayerDelegate()->has_played_media()), |
2311 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), | 2304 audio_renderer_sink, media_log, render_thread->GetMediaThreadTaskRunner(), |
2312 render_thread->GetWorkerTaskRunner(), | 2305 render_thread->GetWorkerTaskRunner(), |
2313 render_thread->compositor_task_runner(), context_3d_cb, | 2306 render_thread->compositor_task_runner(), context_3d_cb, |
2314 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, | 2307 base::Bind(&v8::Isolate::AdjustAmountOfExternalAllocatedMemory, |
2315 base::Unretained(blink::mainThreadIsolate())), | 2308 base::Unretained(blink::mainThreadIsolate())), |
2316 GetMediaPermission(), initial_cdm); | 2309 GetMediaPermission(), initial_cdm); |
2317 | 2310 |
2318 // TODO(xhwang, watk): Find a better way to specify these ifdef conditions. | 2311 #if defined(OS_ANDROID) |
2319 #if defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2320 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); | |
2321 #else | |
2322 #if defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2323 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | 2312 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
2324 switches::kEnableUnifiedMediaPipeline)) { | 2313 switches::kEnableUnifiedMediaPipeline)) { |
| 2314 // TODO(sandersd): This check should be grown to include HLS and blacklist |
| 2315 // checks. http://crbug.com/516765 |
2325 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); | 2316 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
2326 } | 2317 } |
2327 #endif // defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 2318 #endif // defined(OS_ANDROID) |
2328 | 2319 |
2329 #if defined(ENABLE_MOJO_MEDIA) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | 2320 #if defined(ENABLE_MOJO_MEDIA) && !defined(OS_ANDROID) |
2330 scoped_ptr<media::RendererFactory> media_renderer_factory( | 2321 scoped_ptr<media::RendererFactory> media_renderer_factory( |
2331 new media::MojoRendererFactory(GetMediaServiceFactory())); | 2322 new media::MojoRendererFactory(GetMediaServiceFactory())); |
2332 #else | 2323 #else |
2333 scoped_ptr<media::RendererFactory> media_renderer_factory = | 2324 scoped_ptr<media::RendererFactory> media_renderer_factory = |
2334 GetContentClient()->renderer()->CreateMediaRendererFactory( | 2325 GetContentClient()->renderer()->CreateMediaRendererFactory( |
2335 this, render_thread->GetGpuFactories(), media_log); | 2326 this, render_thread->GetGpuFactories(), media_log); |
2336 | 2327 |
2337 if (!media_renderer_factory.get()) { | 2328 if (!media_renderer_factory.get()) { |
2338 media_renderer_factory.reset(new media::DefaultRendererFactory( | 2329 media_renderer_factory.reset(new media::DefaultRendererFactory( |
2339 media_log, render_thread->GetGpuFactories(), | 2330 media_log, render_thread->GetGpuFactories(), |
2340 *render_thread->GetAudioHardwareConfig())); | 2331 *render_thread->GetAudioHardwareConfig())); |
2341 } | 2332 } |
2342 #endif // defined(ENABLE_MOJO_MEDIA) && | 2333 #endif // defined(ENABLE_MOJO_MEDIA) && !defined(OS_ANDROID) |
2343 // !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2344 | 2334 |
2345 if (!url_index_.get() || url_index_->frame() != frame) { | 2335 if (!url_index_.get() || url_index_->frame() != frame) |
2346 url_index_.reset(new media::UrlIndex(frame)); | 2336 url_index_.reset(new media::UrlIndex(frame)); |
2347 } | |
2348 | 2337 |
2349 return new media::WebMediaPlayerImpl( | 2338 return new media::WebMediaPlayerImpl( |
2350 frame, client, encrypted_client, GetWebMediaPlayerDelegate()->AsWeakPtr(), | 2339 frame, client, encrypted_client, GetWebMediaPlayerDelegate()->AsWeakPtr(), |
2351 media_renderer_factory.Pass(), GetCdmFactory(), url_index_, params); | 2340 media_renderer_factory.Pass(), GetCdmFactory(), url_index_, params); |
2352 #endif // defined(OS_ANDROID) && !defined(ENABLE_MEDIA_PIPELINE_ON_ANDROID) | |
2353 } | 2341 } |
2354 | 2342 |
2355 blink::WebMediaSession* RenderFrameImpl::createMediaSession() { | 2343 blink::WebMediaSession* RenderFrameImpl::createMediaSession() { |
2356 #if defined(OS_ANDROID) | 2344 #if defined(OS_ANDROID) |
2357 return new WebMediaSessionAndroid(GetMediaSessionManager()); | 2345 return new WebMediaSessionAndroid(GetMediaSessionManager()); |
2358 #else | 2346 #else |
2359 return nullptr; | 2347 return nullptr; |
2360 #endif // defined(OS_ANDROID) | 2348 #endif // defined(OS_ANDROID) |
2361 } | 2349 } |
2362 | 2350 |
(...skipping 3286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5649 media::ConvertToSwitchOutputDeviceCB(web_callbacks); | 5637 media::ConvertToSwitchOutputDeviceCB(web_callbacks); |
5650 scoped_refptr<media::AudioOutputDevice> device = | 5638 scoped_refptr<media::AudioOutputDevice> device = |
5651 AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(), | 5639 AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(), |
5652 security_origin); | 5640 security_origin); |
5653 media::OutputDeviceStatus status = device->GetDeviceStatus(); | 5641 media::OutputDeviceStatus status = device->GetDeviceStatus(); |
5654 device->Stop(); | 5642 device->Stop(); |
5655 callback.Run(status); | 5643 callback.Run(status); |
5656 } | 5644 } |
5657 | 5645 |
5658 } // namespace content | 5646 } // namespace content |
OLD | NEW |