| 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 |