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

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

Issue 2230583002: Add MediaPlayerRenderer/MediaPlayerRendererClient (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added MEDIA_EXPORT. Created 4 years, 4 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/mojo_renderer_service.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 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 "media/base/media_keys.h" 10 #include "media/base/media_keys.h"
11 #include "media/base/media_url_demuxer.h"
11 #include "media/base/renderer.h" 12 #include "media/base/renderer.h"
12 #include "media/mojo/services/demuxer_stream_provider_shim.h" 13 #include "media/mojo/services/demuxer_stream_provider_shim.h"
13 #include "media/mojo/services/mojo_cdm_service_context.h" 14 #include "media/mojo/services/mojo_cdm_service_context.h"
14 15
15 namespace media { 16 namespace media {
16 17
17 // Time interval to update media time. 18 // Time interval to update media time.
18 const int kTimeUpdateIntervalMs = 50; 19 const int kTimeUpdateIntervalMs = 50;
19 20
20 MojoRendererService::MojoRendererService( 21 MojoRendererService::MojoRendererService(
21 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context, 22 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context,
22 std::unique_ptr<media::Renderer> renderer, 23 std::unique_ptr<media::Renderer> renderer,
23 mojo::InterfaceRequest<mojom::Renderer> request) 24 mojo::InterfaceRequest<mojom::Renderer> request)
24 : binding_(this, std::move(request)), 25 : binding_(this, std::move(request)),
25 mojo_cdm_service_context_(mojo_cdm_service_context), 26 mojo_cdm_service_context_(mojo_cdm_service_context),
26 state_(STATE_UNINITIALIZED), 27 state_(STATE_UNINITIALIZED),
27 last_media_time_usec_(0), 28 last_media_time_usec_(0),
28 renderer_(std::move(renderer)), 29 renderer_(std::move(renderer)),
29 weak_factory_(this) { 30 weak_factory_(this) {
30 DVLOG(1) << __FUNCTION__; 31 DVLOG(1) << __FUNCTION__;
31 DCHECK(renderer_); 32 DCHECK(renderer_);
32 33
33 weak_this_ = weak_factory_.GetWeakPtr(); 34 weak_this_ = weak_factory_.GetWeakPtr();
34 } 35 }
35 36
36 MojoRendererService::~MojoRendererService() { 37 MojoRendererService::~MojoRendererService() {}
37 }
38 38
39 void MojoRendererService::Initialize(mojom::RendererClientPtr client, 39 void MojoRendererService::Initialize(mojom::RendererClientPtr client,
40 mojom::DemuxerStreamPtr audio, 40 mojom::DemuxerStreamPtr audio,
41 mojom::DemuxerStreamPtr video, 41 mojom::DemuxerStreamPtr video,
42 const base::Optional<GURL>& url,
42 const InitializeCallback& callback) { 43 const InitializeCallback& callback) {
43 DVLOG(1) << __FUNCTION__; 44 DVLOG(1) << __FUNCTION__;
44 DCHECK_EQ(state_, STATE_UNINITIALIZED); 45 DCHECK_EQ(state_, STATE_UNINITIALIZED);
45 client_ = std::move(client); 46 client_ = std::move(client);
46 state_ = STATE_INITIALIZING; 47 state_ = STATE_INITIALIZING;
47 stream_provider_.reset(new DemuxerStreamProviderShim( 48
48 std::move(audio), std::move(video), 49 if (url == base::nullopt) {
49 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback))); 50 stream_provider_.reset(new DemuxerStreamProviderShim(
51 std::move(audio), std::move(video),
52 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback)));
53 return;
54 }
55
56 DCHECK(!audio);
57 DCHECK(!video);
58 DCHECK(!url.value().is_empty());
59 stream_provider_.reset(new MediaUrlDemuxer(nullptr, url.value()));
60 renderer_->Initialize(
61 stream_provider_.get(), this,
62 base::Bind(&MojoRendererService::OnRendererInitializeDone, weak_this_,
63 callback));
50 } 64 }
51 65
52 void MojoRendererService::Flush(const FlushCallback& callback) { 66 void MojoRendererService::Flush(const FlushCallback& callback) {
53 DVLOG(2) << __FUNCTION__; 67 DVLOG(2) << __FUNCTION__;
54 DCHECK_EQ(state_, STATE_PLAYING); 68 DCHECK_EQ(state_, STATE_PLAYING);
55 69
56 state_ = STATE_FLUSHING; 70 state_ = STATE_FLUSHING;
57 CancelPeriodicMediaTimeUpdates(); 71 CancelPeriodicMediaTimeUpdates();
58 renderer_->Flush( 72 renderer_->Flush(
59 base::Bind(&MojoRendererService::OnFlushCompleted, weak_this_, callback)); 73 base::Bind(&MojoRendererService::OnFlushCompleted, weak_this_, callback));
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 bool success) { 216 bool success) {
203 DVLOG(1) << __FUNCTION__ << "(" << success << ")"; 217 DVLOG(1) << __FUNCTION__ << "(" << success << ")";
204 218
205 if (success) 219 if (success)
206 cdm_ = cdm; 220 cdm_ = cdm;
207 221
208 callback.Run(success); 222 callback.Run(success);
209 } 223 }
210 224
211 } // namespace media 225 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/mojo_renderer_service.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698