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

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

Issue 2491043003: MediaResource refactoring to support multiple streams (Closed)
Patch Set: rebase Created 3 years, 11 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/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
11 #include "base/optional.h" 11 #include "base/optional.h"
12 #include "media/base/audio_renderer_sink.h" 12 #include "media/base/audio_renderer_sink.h"
13 #include "media/base/content_decryption_module.h" 13 #include "media/base/content_decryption_module.h"
14 #include "media/base/media_url_demuxer.h" 14 #include "media/base/media_url_demuxer.h"
15 #include "media/base/renderer.h" 15 #include "media/base/renderer.h"
16 #include "media/base/video_renderer_sink.h" 16 #include "media/base/video_renderer_sink.h"
17 #include "media/mojo/services/demuxer_stream_provider_shim.h" 17 #include "media/mojo/services/media_resource_shim.h"
18 #include "media/mojo/services/mojo_cdm_service_context.h" 18 #include "media/mojo/services/mojo_cdm_service_context.h"
19 19
20 namespace media { 20 namespace media {
21 21
22 namespace { 22 namespace {
23 23
24 void CloseBindingOnBadMessage(mojo::StrongBindingPtr<mojom::Renderer> binding) { 24 void CloseBindingOnBadMessage(mojo::StrongBindingPtr<mojom::Renderer> binding) {
25 LOG(ERROR) << __func__; 25 LOG(ERROR) << __func__;
26 DCHECK(binding); 26 DCHECK(binding);
27 binding->Close(); 27 binding->Close();
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 const base::Optional<GURL>& media_url, 81 const base::Optional<GURL>& media_url,
82 const base::Optional<GURL>& first_party_for_cookies, 82 const base::Optional<GURL>& first_party_for_cookies,
83 const InitializeCallback& callback) { 83 const InitializeCallback& callback) {
84 DVLOG(1) << __func__; 84 DVLOG(1) << __func__;
85 DCHECK_EQ(state_, STATE_UNINITIALIZED); 85 DCHECK_EQ(state_, STATE_UNINITIALIZED);
86 86
87 client_.Bind(std::move(client)); 87 client_.Bind(std::move(client));
88 state_ = STATE_INITIALIZING; 88 state_ = STATE_INITIALIZING;
89 89
90 if (media_url == base::nullopt) { 90 if (media_url == base::nullopt) {
91 stream_provider_.reset(new DemuxerStreamProviderShim( 91 media_resource_.reset(new MediaResourceShim(
92 std::move(streams), 92 std::move(streams),
93 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback))); 93 base::Bind(&MojoRendererService::OnStreamReady, weak_this_, callback)));
94 return; 94 return;
95 } 95 }
96 96
97 DCHECK(!media_url.value().is_empty()); 97 DCHECK(!media_url.value().is_empty());
98 DCHECK(first_party_for_cookies); 98 DCHECK(first_party_for_cookies);
99 stream_provider_.reset(new MediaUrlDemuxer(nullptr, media_url.value(), 99 media_resource_.reset(new MediaUrlDemuxer(nullptr, media_url.value(),
100 first_party_for_cookies.value())); 100 first_party_for_cookies.value()));
101 renderer_->Initialize( 101 renderer_->Initialize(
102 stream_provider_.get(), this, 102 media_resource_.get(), this,
103 base::Bind(&MojoRendererService::OnRendererInitializeDone, weak_this_, 103 base::Bind(&MojoRendererService::OnRendererInitializeDone, weak_this_,
104 callback)); 104 callback));
105 } 105 }
106 106
107 void MojoRendererService::Flush(const FlushCallback& callback) { 107 void MojoRendererService::Flush(const FlushCallback& callback) {
108 DVLOG(2) << __func__; 108 DVLOG(2) << __func__;
109 DCHECK_EQ(state_, STATE_PLAYING); 109 DCHECK_EQ(state_, STATE_PLAYING);
110 110
111 state_ = STATE_FLUSHING; 111 state_ = STATE_FLUSHING;
112 CancelPeriodicMediaTimeUpdates(); 112 CancelPeriodicMediaTimeUpdates();
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 void MojoRendererService::OnVideoOpacityChange(bool opaque) { 197 void MojoRendererService::OnVideoOpacityChange(bool opaque) {
198 DVLOG(2) << __func__ << "(" << opaque << ")"; 198 DVLOG(2) << __func__ << "(" << opaque << ")";
199 client_->OnVideoOpacityChange(opaque); 199 client_->OnVideoOpacityChange(opaque);
200 } 200 }
201 201
202 void MojoRendererService::OnStreamReady( 202 void MojoRendererService::OnStreamReady(
203 const base::Callback<void(bool)>& callback) { 203 const base::Callback<void(bool)>& callback) {
204 DCHECK_EQ(state_, STATE_INITIALIZING); 204 DCHECK_EQ(state_, STATE_INITIALIZING);
205 205
206 renderer_->Initialize( 206 renderer_->Initialize(
207 stream_provider_.get(), this, 207 media_resource_.get(), this,
208 base::Bind(&MojoRendererService::OnRendererInitializeDone, weak_this_, 208 base::Bind(&MojoRendererService::OnRendererInitializeDone, weak_this_,
209 callback)); 209 callback));
210 } 210 }
211 211
212 void MojoRendererService::OnRendererInitializeDone( 212 void MojoRendererService::OnRendererInitializeDone(
213 const base::Callback<void(bool)>& callback, 213 const base::Callback<void(bool)>& callback,
214 PipelineStatus status) { 214 PipelineStatus status) {
215 DVLOG(1) << __func__; 215 DVLOG(1) << __func__;
216 DCHECK_EQ(state_, STATE_INITIALIZING); 216 DCHECK_EQ(state_, STATE_INITIALIZING);
217 217
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 DCHECK(!bad_message_cb_.is_null()); 285 DCHECK(!bad_message_cb_.is_null());
286 bad_message_cb_.Run(); 286 bad_message_cb_.Run();
287 287
288 return; 288 return;
289 } 289 }
290 290
291 callback.Run(initiate_surface_request_cb_.Run()); 291 callback.Run(initiate_surface_request_cb_.Run());
292 } 292 }
293 293
294 } // namespace media 294 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698