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 2299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2310 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( | 2310 if (!base::CommandLine::ForCurrentProcess()->HasSwitch( |
2311 switches::kEnableUnifiedMediaPipeline)) { | 2311 switches::kEnableUnifiedMediaPipeline)) { |
2312 // TODO(sandersd): This check should be grown to include HLS and blacklist | 2312 // TODO(sandersd): This check should be grown to include HLS and blacklist |
2313 // checks. http://crbug.com/516765 | 2313 // checks. http://crbug.com/516765 |
2314 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); | 2314 return CreateAndroidWebMediaPlayer(client, encrypted_client, params); |
2315 } | 2315 } |
2316 #endif // defined(OS_ANDROID) | 2316 #endif // defined(OS_ANDROID) |
2317 | 2317 |
2318 #if defined(ENABLE_MOJO_MEDIA) && !defined(OS_ANDROID) | 2318 #if defined(ENABLE_MOJO_MEDIA) && !defined(OS_ANDROID) |
2319 scoped_ptr<media::RendererFactory> media_renderer_factory( | 2319 scoped_ptr<media::RendererFactory> media_renderer_factory( |
2320 new media::MojoRendererFactory(GetMediaServiceFactory())); | 2320 new media::MojoRendererFactory(GetMediaServiceProvider())); |
2321 #else | 2321 #else |
2322 scoped_ptr<media::RendererFactory> media_renderer_factory = | 2322 scoped_ptr<media::RendererFactory> media_renderer_factory = |
2323 GetContentClient()->renderer()->CreateMediaRendererFactory( | 2323 GetContentClient()->renderer()->CreateMediaRendererFactory( |
2324 this, render_thread->GetGpuFactories(), media_log); | 2324 this, render_thread->GetGpuFactories(), media_log); |
2325 | 2325 |
2326 if (!media_renderer_factory.get()) { | 2326 if (!media_renderer_factory.get()) { |
2327 media_renderer_factory.reset(new media::DefaultRendererFactory( | 2327 media_renderer_factory.reset(new media::DefaultRendererFactory( |
2328 media_log, render_thread->GetGpuFactories(), | 2328 media_log, render_thread->GetGpuFactories(), |
2329 *render_thread->GetAudioHardwareConfig())); | 2329 *render_thread->GetAudioHardwareConfig())); |
2330 } | 2330 } |
(...skipping 3206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5537 return media_permission->CreateProxy(caller_task_runner).Pass(); | 5537 return media_permission->CreateProxy(caller_task_runner).Pass(); |
5538 } | 5538 } |
5539 | 5539 |
5540 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { | 5540 media::MediaPermission* RenderFrameImpl::GetMediaPermission() { |
5541 if (!media_permission_dispatcher_) | 5541 if (!media_permission_dispatcher_) |
5542 media_permission_dispatcher_ = new MediaPermissionDispatcherImpl(this); | 5542 media_permission_dispatcher_ = new MediaPermissionDispatcherImpl(this); |
5543 return media_permission_dispatcher_; | 5543 return media_permission_dispatcher_; |
5544 } | 5544 } |
5545 | 5545 |
5546 #if defined(ENABLE_MOJO_MEDIA) | 5546 #if defined(ENABLE_MOJO_MEDIA) |
5547 media::interfaces::ServiceFactory* RenderFrameImpl::GetMediaServiceFactory() { | 5547 mojo::ServiceProvider* RenderFrameImpl::GetMediaServiceProvider() { |
5548 if (!media_service_factory_) { | 5548 if (!media_service_provider_) |
5549 mojo::ServiceProviderPtr service_provider = | 5549 media_service_provider_ = ConnectToApplication(GURL("mojo:media")); |
5550 ConnectToApplication(GURL("mojo:media")); | 5550 return media_service_provider_.get(); |
5551 mojo::ConnectToService(service_provider.get(), &media_service_factory_); | |
5552 media_service_factory_.set_connection_error_handler( | |
5553 base::Bind(&RenderFrameImpl::OnMediaServiceFactoryConnectionError, | |
5554 base::Unretained(this))); | |
5555 } | |
5556 | |
5557 return media_service_factory_.get(); | |
5558 } | |
5559 | |
5560 void RenderFrameImpl::OnMediaServiceFactoryConnectionError() { | |
5561 // TODO(xhwang): Resetting |media_service_factory_| could cause access | |
5562 // violation on the old |media_service_factory_| by outstanding | |
5563 // media::CdmFactory or media::RendererFactory. Find a better way to handle | |
5564 // this. | |
5565 // media_service_factory_.reset(); | |
5566 } | 5551 } |
5567 #endif | 5552 #endif |
5568 | 5553 |
5569 bool RenderFrameImpl::AreSecureCodecsSupported() { | 5554 bool RenderFrameImpl::AreSecureCodecsSupported() { |
5570 #if defined(OS_ANDROID) | 5555 #if defined(OS_ANDROID) |
5571 // Hardware-secure codecs are only supported if secure surfaces are enabled. | 5556 // Hardware-secure codecs are only supported if secure surfaces are enabled. |
5572 return render_view_->renderer_preferences_ | 5557 return render_view_->renderer_preferences_ |
5573 .use_video_overlay_for_embedded_encrypted_video; | 5558 .use_video_overlay_for_embedded_encrypted_video; |
5574 #else | 5559 #else |
5575 return false; | 5560 return false; |
5576 #endif // defined(OS_ANDROID) | 5561 #endif // defined(OS_ANDROID) |
5577 } | 5562 } |
5578 | 5563 |
5579 media::CdmFactory* RenderFrameImpl::GetCdmFactory() { | 5564 media::CdmFactory* RenderFrameImpl::GetCdmFactory() { |
5580 #if defined(ENABLE_BROWSER_CDMS) | 5565 #if defined(ENABLE_BROWSER_CDMS) |
5581 if (!cdm_manager_) | 5566 if (!cdm_manager_) |
5582 cdm_manager_ = new RendererCdmManager(this); | 5567 cdm_manager_ = new RendererCdmManager(this); |
5583 #endif // defined(ENABLE_BROWSER_CDMS) | 5568 #endif // defined(ENABLE_BROWSER_CDMS) |
5584 | 5569 |
5585 if (!cdm_factory_) { | 5570 if (!cdm_factory_) { |
5586 DCHECK(frame_); | 5571 DCHECK(frame_); |
5587 | 5572 |
5588 #if defined(ENABLE_MOJO_MEDIA) | 5573 #if defined(ENABLE_MOJO_MEDIA) |
5589 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceFactory())); | 5574 cdm_factory_.reset(new media::MojoCdmFactory(GetMediaServiceProvider())); |
5590 #else | 5575 #else |
5591 cdm_factory_.reset(new RenderCdmFactory( | 5576 cdm_factory_.reset(new RenderCdmFactory( |
5592 #if defined(ENABLE_PEPPER_CDMS) | 5577 #if defined(ENABLE_PEPPER_CDMS) |
5593 base::Bind(&PepperCdmWrapperImpl::Create, frame_) | 5578 base::Bind(&PepperCdmWrapperImpl::Create, frame_) |
5594 #elif defined(ENABLE_BROWSER_CDMS) | 5579 #elif defined(ENABLE_BROWSER_CDMS) |
5595 cdm_manager_ | 5580 cdm_manager_ |
5596 #endif | 5581 #endif |
5597 )); | 5582 )); |
5598 #endif // defined(ENABLE_MOJO_MEDIA) | 5583 #endif // defined(ENABLE_MOJO_MEDIA) |
5599 } | 5584 } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5642 media::ConvertToSwitchOutputDeviceCB(web_callbacks); | 5627 media::ConvertToSwitchOutputDeviceCB(web_callbacks); |
5643 scoped_refptr<media::AudioOutputDevice> device = | 5628 scoped_refptr<media::AudioOutputDevice> device = |
5644 AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(), | 5629 AudioDeviceFactory::NewOutputDevice(routing_id_, 0, sink_id.utf8(), |
5645 security_origin); | 5630 security_origin); |
5646 media::OutputDeviceStatus status = device->GetDeviceStatus(); | 5631 media::OutputDeviceStatus status = device->GetDeviceStatus(); |
5647 device->Stop(); | 5632 device->Stop(); |
5648 callback.Run(status); | 5633 callback.Run(status); |
5649 } | 5634 } |
5650 | 5635 |
5651 } // namespace content | 5636 } // namespace content |
OLD | NEW |