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

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

Issue 2161083004: [DO NOT COMMIT] MediaPlayerRenderer using StreamTextures. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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 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/media_url_demuxer.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 10 matching lines...) Expand all
32 35
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(mojom::RendererClientPtr client, 42 void MojoRendererService::Initialize(mojom::RendererClientPtr client,
40 mojom::DemuxerStreamPtr audio, 43 mojom::DemuxerStreamPtr audio,
41 mojom::DemuxerStreamPtr video, 44 mojom::DemuxerStreamPtr video,
45 const mojo::String& url,
46 int64_t surface_id,
42 const InitializeCallback& callback) { 47 const InitializeCallback& callback) {
43 DVLOG(1) << __FUNCTION__; 48 DVLOG(1) << __FUNCTION__;
44 DCHECK_EQ(state_, STATE_UNINITIALIZED); 49 DCHECK_EQ(state_, STATE_UNINITIALIZED);
45 client_ = std::move(client); 50 client_ = std::move(client);
46 state_ = STATE_INITIALIZING; 51 state_ = STATE_INITIALIZING;
52 #if BUILDFLAG(FORCE_MOJO_MEDIA_PLAYER_RENDERER)
53 // TODO(tguilbert): For review: are c-style casts acceptable?
54 MediaPlayerRenderer* temp = (MediaPlayerRenderer*)renderer_.get();
55 temp->SetSurfaceId(surface_id);
56
57 stream_provider_.reset(new MediaUrlDemuxer(nullptr, GURL(url.get())));
58 renderer_->Initialize(
59 stream_provider_.get(), this,
60 base::Bind(&MojoRendererService::OnRendererInitializeDone, weak_this_,
61 callback));
62 #else
47 stream_provider_.reset(new DemuxerStreamProviderShim( 63 stream_provider_.reset(new DemuxerStreamProviderShim(
48 std::move(audio), std::move(video), 64 std::move(audio), std::move(video),
49 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback))); 65 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback)));
66 #endif // defined(FORCE_MOJO_MEDIA_PLAYER_RENDERER)
50 } 67 }
51 68
52 void MojoRendererService::Flush(const FlushCallback& callback) { 69 void MojoRendererService::Flush(const FlushCallback& callback) {
53 DVLOG(2) << __FUNCTION__; 70 DVLOG(2) << __FUNCTION__;
54 DCHECK_EQ(state_, STATE_PLAYING); 71 DCHECK_EQ(state_, STATE_PLAYING);
55 72
56 state_ = STATE_FLUSHING; 73 state_ = STATE_FLUSHING;
57 CancelPeriodicMediaTimeUpdates(); 74 CancelPeriodicMediaTimeUpdates();
58 renderer_->Flush( 75 renderer_->Flush(
59 base::Bind(&MojoRendererService::OnFlushCompleted, weak_this_, callback)); 76 base::Bind(&MojoRendererService::OnFlushCompleted, weak_this_, callback));
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 void MojoRendererService::OnWaitingForDecryptionKey() { 144 void MojoRendererService::OnWaitingForDecryptionKey() {
128 DVLOG(1) << __FUNCTION__; 145 DVLOG(1) << __FUNCTION__;
129 client_->OnWaitingForDecryptionKey(); 146 client_->OnWaitingForDecryptionKey();
130 } 147 }
131 148
132 void MojoRendererService::OnVideoNaturalSizeChange(const gfx::Size& size) { 149 void MojoRendererService::OnVideoNaturalSizeChange(const gfx::Size& size) {
133 DVLOG(2) << __FUNCTION__ << "(" << size.ToString() << ")"; 150 DVLOG(2) << __FUNCTION__ << "(" << size.ToString() << ")";
134 client_->OnVideoNaturalSizeChange(size); 151 client_->OnVideoNaturalSizeChange(size);
135 } 152 }
136 153
154 void MojoRendererService::OnDurationChange(base::TimeDelta duration) {
155 client_->OnDurationChange(duration.InMicroseconds());
156 }
157
137 void MojoRendererService::OnVideoOpacityChange(bool opaque) { 158 void MojoRendererService::OnVideoOpacityChange(bool opaque) {
138 DVLOG(2) << __FUNCTION__ << "(" << opaque << ")"; 159 DVLOG(2) << __FUNCTION__ << "(" << opaque << ")";
139 client_->OnVideoOpacityChange(opaque); 160 client_->OnVideoOpacityChange(opaque);
140 } 161 }
141 162
142 void MojoRendererService::OnStreamReady( 163 void MojoRendererService::OnStreamReady(
143 const base::Callback<void(bool)>& callback) { 164 const base::Callback<void(bool)>& callback) {
144 DCHECK_EQ(state_, STATE_INITIALIZING); 165 DCHECK_EQ(state_, STATE_INITIALIZING);
145 166
146 renderer_->Initialize( 167 renderer_->Initialize(
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 bool success) { 223 bool success) {
203 DVLOG(1) << __FUNCTION__ << "(" << success << ")"; 224 DVLOG(1) << __FUNCTION__ << "(" << success << ")";
204 225
205 if (success) 226 if (success)
206 cdm_ = cdm; 227 cdm_ = cdm;
207 228
208 callback.Run(success); 229 callback.Run(success);
209 } 230 }
210 231
211 } // namespace media 232 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698