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

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

Issue 2075303002: [DO NOT COMMIT] Initial MediaPlayerRenderer plumbing and basic features (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 "media/base/android/media_player_renderer.h"
11 #include "media/base/android/url_demuxer_stream_provider.h"
10 #include "media/base/media_keys.h" 12 #include "media/base/media_keys.h"
11 #include "media/base/renderer.h" 13 #include "media/base/renderer.h"
14 #include "media/media_features.h"
12 #include "media/mojo/services/demuxer_stream_provider_shim.h" 15 #include "media/mojo/services/demuxer_stream_provider_shim.h"
13 #include "media/mojo/services/mojo_cdm_service_context.h" 16 #include "media/mojo/services/mojo_cdm_service_context.h"
14 17
15 namespace media { 18 namespace media {
16 19
17 // Time interval to update media time. 20 // Time interval to update media time.
18 const int kTimeUpdateIntervalMs = 50; 21 const int kTimeUpdateIntervalMs = 50;
19 22
20 MojoRendererService::MojoRendererService( 23 MojoRendererService::MojoRendererService(
21 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context, 24 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context,
(...skipping 11 matching lines...) Expand all
33 weak_this_ = weak_factory_.GetWeakPtr(); 36 weak_this_ = weak_factory_.GetWeakPtr();
34 } 37 }
35 38
36 MojoRendererService::~MojoRendererService() { 39 MojoRendererService::~MojoRendererService() {
37 } 40 }
38 41
39 void MojoRendererService::Initialize( 42 void MojoRendererService::Initialize(
40 mojom::RendererClientPtr client, 43 mojom::RendererClientPtr client,
41 mojom::DemuxerStreamPtr audio, 44 mojom::DemuxerStreamPtr audio,
42 mojom::DemuxerStreamPtr video, 45 mojom::DemuxerStreamPtr video,
46 const mojo::String& url,
47 int64_t surface_id,
43 const mojo::Callback<void(bool)>& callback) { 48 const mojo::Callback<void(bool)>& callback) {
44 DVLOG(1) << __FUNCTION__; 49 DVLOG(1) << __FUNCTION__;
45 DCHECK_EQ(state_, STATE_UNINITIALIZED); 50 DCHECK_EQ(state_, STATE_UNINITIALIZED);
46 client_ = std::move(client); 51 client_ = std::move(client);
47 state_ = STATE_INITIALIZING; 52 state_ = STATE_INITIALIZING;
53 #if BUILDFLAG(FORCE_MOJO_MEDIA_PLAYER_RENDERER)
54 // TODO(tguilbert): For review: are c-style casts acceptable?
xhwang 2016/06/22 17:39:02 no :) use static_cast instead
55 MediaPlayerRenderer* temp = (MediaPlayerRenderer*)renderer_.get();
56 temp->SetSurfaceId(surface_id);
57
58 stream_provider_.reset(new UrlDemuxerStreamProvider(GURL(url.get())));
59 renderer_->Initialize(
60 stream_provider_.get(), this,
61 base::Bind(&MojoRendererService::OnRendererInitializeDone, weak_this_,
62 callback));
63 #else
48 stream_provider_.reset(new DemuxerStreamProviderShim( 64 stream_provider_.reset(new DemuxerStreamProviderShim(
49 std::move(audio), std::move(video), 65 std::move(audio), std::move(video),
50 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback))); 66 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback)));
67 #endif // defined(FORCE_MOJO_MEDIA_PLAYER_RENDERER)
51 } 68 }
52 69
53 void MojoRendererService::Flush(const mojo::Closure& callback) { 70 void MojoRendererService::Flush(const mojo::Closure& callback) {
54 DVLOG(2) << __FUNCTION__; 71 DVLOG(2) << __FUNCTION__;
55 DCHECK_EQ(state_, STATE_PLAYING); 72 DCHECK_EQ(state_, STATE_PLAYING);
56 73
57 state_ = STATE_FLUSHING; 74 state_ = STATE_FLUSHING;
58 CancelPeriodicMediaTimeUpdates(); 75 CancelPeriodicMediaTimeUpdates();
59 renderer_->Flush( 76 renderer_->Flush(
60 base::Bind(&MojoRendererService::OnFlushCompleted, weak_this_, callback)); 77 base::Bind(&MojoRendererService::OnFlushCompleted, weak_this_, callback));
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 143
127 void MojoRendererService::OnWaitingForDecryptionKey() { 144 void MojoRendererService::OnWaitingForDecryptionKey() {
128 // TODO(alokp): Plumb the event to mojom::RendererClient. crbug/585287 145 // TODO(alokp): Plumb the event to mojom::RendererClient. crbug/585287
129 } 146 }
130 147
131 void MojoRendererService::OnVideoNaturalSizeChange(const gfx::Size& size) { 148 void MojoRendererService::OnVideoNaturalSizeChange(const gfx::Size& size) {
132 DVLOG(2) << __FUNCTION__ << "(" << size.ToString() << ")"; 149 DVLOG(2) << __FUNCTION__ << "(" << size.ToString() << ")";
133 client_->OnVideoNaturalSizeChange(size); 150 client_->OnVideoNaturalSizeChange(size);
134 } 151 }
135 152
153 void MojoRendererService::OnDurationChange(base::TimeDelta duration) {
154 client_->OnDurationChange(duration.InMicroseconds());
155 }
156
136 void MojoRendererService::OnVideoOpacityChange(bool opaque) { 157 void MojoRendererService::OnVideoOpacityChange(bool opaque) {
137 DVLOG(2) << __FUNCTION__ << "(" << opaque << ")"; 158 DVLOG(2) << __FUNCTION__ << "(" << opaque << ")";
138 client_->OnVideoOpacityChange(opaque); 159 client_->OnVideoOpacityChange(opaque);
139 } 160 }
140 161
141 void MojoRendererService::OnStreamReady( 162 void MojoRendererService::OnStreamReady(
142 const mojo::Callback<void(bool)>& callback) { 163 const mojo::Callback<void(bool)>& callback) {
143 DCHECK_EQ(state_, STATE_INITIALIZING); 164 DCHECK_EQ(state_, STATE_INITIALIZING);
144 165
145 renderer_->Initialize( 166 renderer_->Initialize(
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 bool success) { 222 bool success) {
202 DVLOG(1) << __FUNCTION__ << "(" << success << ")"; 223 DVLOG(1) << __FUNCTION__ << "(" << success << ")";
203 224
204 if (success) 225 if (success)
205 cdm_ = cdm; 226 cdm_ = cdm;
206 227
207 callback.Run(success); 228 callback.Run(success);
208 } 229 }
209 230
210 } // namespace media 231 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698