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

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

Issue 2282633002: Integrate Surface requests with MediaPlayerRenderer (Closed)
Patch Set: Fixed punctuation. Created 4 years, 2 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/mojo_renderer_service.h" 5 #include "media/mojo/services/mojo_renderer_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/optional.h"
10 #include "media/base/audio_renderer_sink.h" 11 #include "media/base/audio_renderer_sink.h"
11 #include "media/base/media_keys.h" 12 #include "media/base/media_keys.h"
12 #include "media/base/media_url_demuxer.h" 13 #include "media/base/media_url_demuxer.h"
13 #include "media/base/renderer.h" 14 #include "media/base/renderer.h"
14 #include "media/base/video_renderer_sink.h" 15 #include "media/base/video_renderer_sink.h"
15 #include "media/mojo/services/demuxer_stream_provider_shim.h" 16 #include "media/mojo/services/demuxer_stream_provider_shim.h"
16 #include "media/mojo/services/mojo_cdm_service_context.h" 17 #include "media/mojo/services/mojo_cdm_service_context.h"
17 18
18 namespace media { 19 namespace media {
19 20
20 // Time interval to update media time. 21 // Time interval to update media time.
21 const int kTimeUpdateIntervalMs = 50; 22 const int kTimeUpdateIntervalMs = 50;
22 23
24 // static
25 mojo::StrongBindingPtr<mojom::Renderer> MojoRendererService::Create(
26 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context,
27 scoped_refptr<AudioRendererSink> audio_sink,
28 std::unique_ptr<VideoRendererSink> video_sink,
29 std::unique_ptr<media::Renderer> renderer,
30 InitiateSurfaceRequestCB initiate_surface_request_cb,
31 mojo::InterfaceRequest<mojom::Renderer> request) {
32 MojoRendererService* mojo_renderer_service = new MojoRendererService(
dcheng 2016/10/05 22:37:12 Nit: auto service = base::MakeUnique<MojoRendererS
tguilbert 2016/10/05 23:46:21 I saw your follow up comment. I changed it for a m
33 mojo_cdm_service_context, std::move(audio_sink), std::move(video_sink),
34 std::move(renderer), initiate_surface_request_cb);
35
36 mojo::StrongBindingPtr<mojom::Renderer> binding =
37 mojo::MakeStrongBinding<mojom::Renderer>(
38 base::WrapUnique(mojo_renderer_service), std::move(request));
39
40 mojo_renderer_service->SetBinding(binding);
41
42 return binding;
43 }
44
23 MojoRendererService::MojoRendererService( 45 MojoRendererService::MojoRendererService(
24 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context, 46 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context,
25 scoped_refptr<AudioRendererSink> audio_sink, 47 scoped_refptr<AudioRendererSink> audio_sink,
26 std::unique_ptr<VideoRendererSink> video_sink, 48 std::unique_ptr<VideoRendererSink> video_sink,
27 std::unique_ptr<media::Renderer> renderer) 49 std::unique_ptr<media::Renderer> renderer,
50 InitiateSurfaceRequestCB initiate_surface_request_cb)
28 : mojo_cdm_service_context_(mojo_cdm_service_context), 51 : mojo_cdm_service_context_(mojo_cdm_service_context),
29 state_(STATE_UNINITIALIZED), 52 state_(STATE_UNINITIALIZED),
30 playback_rate_(0), 53 playback_rate_(0),
31 audio_sink_(std::move(audio_sink)), 54 audio_sink_(std::move(audio_sink)),
32 video_sink_(std::move(video_sink)), 55 video_sink_(std::move(video_sink)),
33 renderer_(std::move(renderer)), 56 renderer_(std::move(renderer)),
57 initiate_surface_request_cb_(initiate_surface_request_cb),
34 weak_factory_(this) { 58 weak_factory_(this) {
35 DVLOG(1) << __FUNCTION__; 59 DVLOG(1) << __FUNCTION__;
36 DCHECK(renderer_); 60 DCHECK(renderer_);
37 61
38 weak_this_ = weak_factory_.GetWeakPtr(); 62 weak_this_ = weak_factory_.GetWeakPtr();
39 } 63 }
40 64
41 MojoRendererService::~MojoRendererService() {} 65 MojoRendererService::~MojoRendererService() {}
42 66
43 void MojoRendererService::Initialize( 67 void MojoRendererService::Initialize(
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 const base::Callback<void(bool)>& callback, 255 const base::Callback<void(bool)>& callback,
232 bool success) { 256 bool success) {
233 DVLOG(1) << __FUNCTION__ << "(" << success << ")"; 257 DVLOG(1) << __FUNCTION__ << "(" << success << ")";
234 258
235 if (success) 259 if (success)
236 cdm_ = cdm; 260 cdm_ = cdm;
237 261
238 callback.Run(success); 262 callback.Run(success);
239 } 263 }
240 264
265 void MojoRendererService::InitiateScopedSurfaceRequest(
266 const InitiateScopedSurfaceRequestCallback& callback) {
267 if (initiate_surface_request_cb_.is_null()) {
268 // |renderer_| is likely not of type MediaPlayerRenderer.
269 // This is an unexpected call, and the connection should be closed.
270 mojo::ReportBadMessage("Unexpected call to InitiateScopedSurfaceRequest.");
271 binding_->Close();
272 return;
273 }
274
275 callback.Run(initiate_surface_request_cb_.Run());
276 }
277
278 void MojoRendererService::SetBinding(
279 mojo::StrongBindingPtr<mojom::Renderer> binding) {
280 binding_ = binding;
281 }
241 } // namespace media 282 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698