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

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

Issue 2016053003: Add audio_device_id in mojo media ServiceFactory CreateRenderer api. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Minor change based on the comment Created 4 years, 5 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
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 "base/threading/thread_task_runner_handle.h" 8 #include "base/threading/thread_task_runner_handle.h"
9 #include "media/base/media_log.h" 9 #include "media/base/media_log.h"
10 #include "media/mojo/services/mojo_media_client.h" 10 #include "media/mojo/services/mojo_media_client.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 } 72 }
73 73
74 void ServiceFactoryImpl::CreateVideoDecoder( 74 void ServiceFactoryImpl::CreateVideoDecoder(
75 mojom::VideoDecoderRequest request) { 75 mojom::VideoDecoderRequest request) {
76 #if defined(ENABLE_MOJO_VIDEO_DECODER) 76 #if defined(ENABLE_MOJO_VIDEO_DECODER)
77 new MojoVideoDecoderService(std::move(request), mojo_media_client_); 77 new MojoVideoDecoderService(std::move(request), mojo_media_client_);
78 #endif // defined(ENABLE_MOJO_VIDEO_DECODER) 78 #endif // defined(ENABLE_MOJO_VIDEO_DECODER)
79 } 79 }
80 80
81 void ServiceFactoryImpl::CreateRenderer( 81 void ServiceFactoryImpl::CreateRenderer(
82 const mojo::String& audio_device_id,
82 mojo::InterfaceRequest<mojom::Renderer> request) { 83 mojo::InterfaceRequest<mojom::Renderer> request) {
83 #if defined(ENABLE_MOJO_RENDERER) 84 #if defined(ENABLE_MOJO_RENDERER)
84 // The created object is owned by the pipe. 85 // The created object is owned by the pipe.
85 // The audio and video sinks are owned by the client. 86 // The audio and video sinks are owned by the client.
86 scoped_refptr<base::SingleThreadTaskRunner> task_runner( 87 scoped_refptr<base::SingleThreadTaskRunner> task_runner(
87 base::ThreadTaskRunnerHandle::Get()); 88 base::ThreadTaskRunnerHandle::Get());
88 AudioRendererSink* audio_renderer_sink =
89 mojo_media_client_->CreateAudioRendererSink();
90 VideoRendererSink* video_renderer_sink =
91 mojo_media_client_->CreateVideoRendererSink(task_runner);
92 89
93 RendererFactory* renderer_factory = GetRendererFactory(); 90 std::unique_ptr<Renderer> renderer = mojo_media_client_->CreateRenderer(
94 if (!renderer_factory) 91 task_runner, media_log_, audio_device_id);
95 return;
96
97 std::unique_ptr<Renderer> renderer = renderer_factory->CreateRenderer(
98 task_runner, task_runner, audio_renderer_sink, video_renderer_sink,
99 RequestSurfaceCB());
100 if (!renderer) { 92 if (!renderer) {
101 LOG(ERROR) << "Renderer creation failed."; 93 LOG(ERROR) << "Renderer creation failed.";
102 return; 94 return;
103 } 95 }
104 96
105 new MojoRendererService(cdm_service_context_.GetWeakPtr(), 97 new MojoRendererService(cdm_service_context_.GetWeakPtr(),
106 std::move(renderer), std::move(request)); 98 std::move(renderer), std::move(request));
107 #endif // defined(ENABLE_MOJO_RENDERER) 99 #endif // defined(ENABLE_MOJO_RENDERER)
108 } 100 }
109 101
110 void ServiceFactoryImpl::CreateCdm( 102 void ServiceFactoryImpl::CreateCdm(
111 mojo::InterfaceRequest<mojom::ContentDecryptionModule> request) { 103 mojo::InterfaceRequest<mojom::ContentDecryptionModule> request) {
112 #if defined(ENABLE_MOJO_CDM) 104 #if defined(ENABLE_MOJO_CDM)
113 CdmFactory* cdm_factory = GetCdmFactory(); 105 CdmFactory* cdm_factory = GetCdmFactory();
114 if (!cdm_factory) 106 if (!cdm_factory)
115 return; 107 return;
116 108
117 // The created object is owned by the pipe. 109 // The created object is owned by the pipe.
118 new MojoCdmService(cdm_service_context_.GetWeakPtr(), cdm_factory, 110 new MojoCdmService(cdm_service_context_.GetWeakPtr(), cdm_factory,
119 std::move(request)); 111 std::move(request));
120 #endif // defined(ENABLE_MOJO_CDM) 112 #endif // defined(ENABLE_MOJO_CDM)
121 } 113 }
122 114
123 #if defined(ENABLE_MOJO_RENDERER)
124 RendererFactory* ServiceFactoryImpl::GetRendererFactory() {
125 if (!renderer_factory_) {
126 renderer_factory_ = mojo_media_client_->CreateRendererFactory(media_log_);
127 LOG_IF(ERROR, !renderer_factory_) << "RendererFactory not available.";
128 }
129 return renderer_factory_.get();
130 }
131 #endif // defined(ENABLE_MOJO_RENDERER)
132
133 #if defined(ENABLE_MOJO_CDM) 115 #if defined(ENABLE_MOJO_CDM)
134 CdmFactory* ServiceFactoryImpl::GetCdmFactory() { 116 CdmFactory* ServiceFactoryImpl::GetCdmFactory() {
135 if (!cdm_factory_) { 117 if (!cdm_factory_) {
136 cdm_factory_ = mojo_media_client_->CreateCdmFactory(interfaces_); 118 cdm_factory_ = mojo_media_client_->CreateCdmFactory(interfaces_);
137 LOG_IF(ERROR, !cdm_factory_) << "CdmFactory not available."; 119 LOG_IF(ERROR, !cdm_factory_) << "CdmFactory not available.";
138 } 120 }
139 return cdm_factory_.get(); 121 return cdm_factory_.get();
140 } 122 }
141 #endif // defined(ENABLE_MOJO_CDM) 123 #endif // defined(ENABLE_MOJO_CDM)
142 124
143 } // namespace media 125 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/service_factory_impl.h ('k') | media/mojo/services/test_mojo_media_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698