Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(230)

Side by Side Diff: media/mojo/services/service_factory_impl.cc

Issue 1840453003: media: Only provide necessary services in ServiceFactoryImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix test Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/mojo/services/service_factory_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "media/mojo/services/service_factory_impl.h" 5 #include "media/mojo/services/service_factory_impl.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "media/base/media_log.h"
9 #include "media/mojo/services/mojo_media_client.h"
10 #include "mojo/shell/public/interfaces/interface_provider.mojom.h"
11
12 #if defined(ENABLE_MOJO_AUDIO_DECODER)
13 #include "media/mojo/services/mojo_audio_decoder_service.h"
14 #endif // defined(ENABLE_MOJO_AUDIO_DECODER)
15
16 #if defined(ENABLE_MOJO_RENDERER)
17 #include "media/base/renderer_factory.h"
18 #include "media/mojo/services/mojo_renderer_service.h"
19 #endif // defined(ENABLE_MOJO_RENDERER)
20
21 #if defined(ENABLE_MOJO_CDM)
8 #include "media/base/cdm_factory.h" 22 #include "media/base/cdm_factory.h"
9 #include "media/base/media_log.h"
10 #include "media/base/renderer_factory.h"
11 #include "media/mojo/services/mojo_audio_decoder_service.h"
12 #include "media/mojo/services/mojo_cdm_service.h" 23 #include "media/mojo/services/mojo_cdm_service.h"
13 #include "media/mojo/services/mojo_media_client.h" 24 #endif // defined(ENABLE_MOJO_CDM)
14 #include "media/mojo/services/mojo_renderer_service.h"
15 #include "mojo/shell/public/interfaces/interface_provider.mojom.h"
16 25
17 namespace media { 26 namespace media {
18 27
19 ServiceFactoryImpl::ServiceFactoryImpl( 28 ServiceFactoryImpl::ServiceFactoryImpl(
20 mojo::InterfaceRequest<interfaces::ServiceFactory> request, 29 mojo::InterfaceRequest<interfaces::ServiceFactory> request,
21 mojo::shell::mojom::InterfaceProvider* interfaces, 30 mojo::shell::mojom::InterfaceProvider* interfaces,
22 scoped_refptr<MediaLog> media_log, 31 scoped_refptr<MediaLog> media_log,
23 scoped_ptr<mojo::MessageLoopRef> parent_app_refcount, 32 scoped_ptr<mojo::MessageLoopRef> parent_app_refcount,
24 MojoMediaClient* mojo_media_client) 33 MojoMediaClient* mojo_media_client)
25 : binding_(this, std::move(request)), 34 : binding_(this, std::move(request)),
26 interfaces_(interfaces), 35 interfaces_(interfaces),
27 media_log_(media_log), 36 media_log_(media_log),
28 parent_app_refcount_(std::move(parent_app_refcount)), 37 parent_app_refcount_(std::move(parent_app_refcount)),
29 mojo_media_client_(mojo_media_client) { 38 mojo_media_client_(mojo_media_client) {
30 DVLOG(1) << __FUNCTION__; 39 DVLOG(1) << __FUNCTION__;
31 } 40 }
32 41
33 ServiceFactoryImpl::~ServiceFactoryImpl() { 42 ServiceFactoryImpl::~ServiceFactoryImpl() {
34 DVLOG(1) << __FUNCTION__; 43 DVLOG(1) << __FUNCTION__;
35 } 44 }
36 45
37 // interfaces::ServiceFactory implementation. 46 // interfaces::ServiceFactory implementation.
38 47
39 void ServiceFactoryImpl::CreateAudioDecoder( 48 void ServiceFactoryImpl::CreateAudioDecoder(
40 mojo::InterfaceRequest<interfaces::AudioDecoder> request) { 49 mojo::InterfaceRequest<interfaces::AudioDecoder> request) {
50 #if defined(ENABLE_MOJO_AUDIO_DECODER)
41 scoped_refptr<base::SingleThreadTaskRunner> task_runner( 51 scoped_refptr<base::SingleThreadTaskRunner> task_runner(
42 base::MessageLoop::current()->task_runner()); 52 base::MessageLoop::current()->task_runner());
43 53
44 scoped_ptr<AudioDecoder> audio_decoder = 54 scoped_ptr<AudioDecoder> audio_decoder =
45 mojo_media_client_->CreateAudioDecoder(task_runner); 55 mojo_media_client_->CreateAudioDecoder(task_runner);
46 if (!audio_decoder) { 56 if (!audio_decoder) {
47 LOG(ERROR) << "AudioDecoder creation failed."; 57 LOG(ERROR) << "AudioDecoder creation failed.";
48 return; 58 return;
49 } 59 }
50 60
51 new MojoAudioDecoderService(cdm_service_context_.GetWeakPtr(), 61 new MojoAudioDecoderService(cdm_service_context_.GetWeakPtr(),
52 std::move(audio_decoder), std::move(request)); 62 std::move(audio_decoder), std::move(request));
63 #endif // defined(ENABLE_MOJO_AUDIO_DECODER)
53 } 64 }
54 65
55 void ServiceFactoryImpl::CreateRenderer( 66 void ServiceFactoryImpl::CreateRenderer(
56 mojo::InterfaceRequest<interfaces::Renderer> request) { 67 mojo::InterfaceRequest<interfaces::Renderer> request) {
68 #if defined(ENABLE_MOJO_RENDERER)
57 // The created object is owned by the pipe. 69 // The created object is owned by the pipe.
58 // The audio and video sinks are owned by the client. 70 // The audio and video sinks are owned by the client.
59 scoped_refptr<base::SingleThreadTaskRunner> task_runner( 71 scoped_refptr<base::SingleThreadTaskRunner> task_runner(
60 base::MessageLoop::current()->task_runner()); 72 base::MessageLoop::current()->task_runner());
61 AudioRendererSink* audio_renderer_sink = 73 AudioRendererSink* audio_renderer_sink =
62 mojo_media_client_->CreateAudioRendererSink(); 74 mojo_media_client_->CreateAudioRendererSink();
63 VideoRendererSink* video_renderer_sink = 75 VideoRendererSink* video_renderer_sink =
64 mojo_media_client_->CreateVideoRendererSink(task_runner); 76 mojo_media_client_->CreateVideoRendererSink(task_runner);
65 77
66 RendererFactory* renderer_factory = GetRendererFactory(); 78 RendererFactory* renderer_factory = GetRendererFactory();
67 if (!renderer_factory) 79 if (!renderer_factory)
68 return; 80 return;
69 81
70 scoped_ptr<Renderer> renderer = renderer_factory->CreateRenderer( 82 scoped_ptr<Renderer> renderer = renderer_factory->CreateRenderer(
71 task_runner, task_runner, audio_renderer_sink, video_renderer_sink, 83 task_runner, task_runner, audio_renderer_sink, video_renderer_sink,
72 RequestSurfaceCB()); 84 RequestSurfaceCB());
73 if (!renderer) { 85 if (!renderer) {
74 LOG(ERROR) << "Renderer creation failed."; 86 LOG(ERROR) << "Renderer creation failed.";
75 return; 87 return;
76 } 88 }
77 89
78 new MojoRendererService(cdm_service_context_.GetWeakPtr(), 90 new MojoRendererService(cdm_service_context_.GetWeakPtr(),
79 std::move(renderer), std::move(request)); 91 std::move(renderer), std::move(request));
92 #endif // defined(ENABLE_MOJO_RENDERER)
80 } 93 }
81 94
82 void ServiceFactoryImpl::CreateCdm( 95 void ServiceFactoryImpl::CreateCdm(
83 mojo::InterfaceRequest<interfaces::ContentDecryptionModule> request) { 96 mojo::InterfaceRequest<interfaces::ContentDecryptionModule> request) {
97 #if defined(ENABLE_MOJO_CDM)
84 CdmFactory* cdm_factory = GetCdmFactory(); 98 CdmFactory* cdm_factory = GetCdmFactory();
85 if (!cdm_factory) 99 if (!cdm_factory)
86 return; 100 return;
87 101
88 // The created object is owned by the pipe. 102 // The created object is owned by the pipe.
89 new MojoCdmService(cdm_service_context_.GetWeakPtr(), cdm_factory, 103 new MojoCdmService(cdm_service_context_.GetWeakPtr(), cdm_factory,
90 std::move(request)); 104 std::move(request));
105 #endif // defined(ENABLE_MOJO_CDM)
91 } 106 }
92 107
108 #if defined(ENABLE_MOJO_RENDERER)
93 RendererFactory* ServiceFactoryImpl::GetRendererFactory() { 109 RendererFactory* ServiceFactoryImpl::GetRendererFactory() {
94 if (!renderer_factory_) { 110 if (!renderer_factory_) {
95 renderer_factory_ = mojo_media_client_->CreateRendererFactory(media_log_); 111 renderer_factory_ = mojo_media_client_->CreateRendererFactory(media_log_);
96 LOG_IF(ERROR, !renderer_factory_) << "RendererFactory not available."; 112 LOG_IF(ERROR, !renderer_factory_) << "RendererFactory not available.";
97 } 113 }
98 return renderer_factory_.get(); 114 return renderer_factory_.get();
99 } 115 }
116 #endif // defined(ENABLE_MOJO_RENDERER)
100 117
118 #if defined(ENABLE_MOJO_CDM)
101 CdmFactory* ServiceFactoryImpl::GetCdmFactory() { 119 CdmFactory* ServiceFactoryImpl::GetCdmFactory() {
102 if (!cdm_factory_) { 120 if (!cdm_factory_) {
103 cdm_factory_ = mojo_media_client_->CreateCdmFactory(interfaces_); 121 cdm_factory_ = mojo_media_client_->CreateCdmFactory(interfaces_);
104 LOG_IF(ERROR, !cdm_factory_) << "CdmFactory not available."; 122 LOG_IF(ERROR, !cdm_factory_) << "CdmFactory not available.";
105 } 123 }
106 return cdm_factory_.get(); 124 return cdm_factory_.get();
107 } 125 }
126 #endif // defined(ENABLE_MOJO_CDM)
108 127
109 } // namespace media 128 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/service_factory_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698