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

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

Issue 1955843002: Move Renderer permanent callbacks into RendererClient interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed comments Created 4 years, 7 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') | media/renderers/audio_renderer_impl.h » ('j') | 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"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 if (!cdm_context) { 96 if (!cdm_context) {
97 DVLOG(1) << "CDM context not available: " << cdm_id; 97 DVLOG(1) << "CDM context not available: " << cdm_id;
98 callback.Run(false); 98 callback.Run(false);
99 return; 99 return;
100 } 100 }
101 101
102 renderer_->SetCdm(cdm_context, base::Bind(&MojoRendererService::OnCdmAttached, 102 renderer_->SetCdm(cdm_context, base::Bind(&MojoRendererService::OnCdmAttached,
103 weak_this_, cdm, callback)); 103 weak_this_, cdm, callback));
104 } 104 }
105 105
106 void MojoRendererService::OnError(PipelineStatus error) {
107 DVLOG(1) << __FUNCTION__ << "(" << error << ")";
108 state_ = STATE_ERROR;
109 client_->OnError();
110 }
111
112 void MojoRendererService::OnEnded() {
113 DVLOG(1) << __FUNCTION__;
114 CancelPeriodicMediaTimeUpdates();
115 client_->OnEnded();
116 }
117
118 void MojoRendererService::OnStatisticsUpdate(const PipelineStatistics& stats) {
119 // TODO(alokp): Plumb the event to interfaces::RendererClient. crbug/585287
120 }
121
122 void MojoRendererService::OnBufferingStateChange(BufferingState state) {
123 DVLOG(2) << __FUNCTION__ << "(" << state << ")";
124 client_->OnBufferingStateChange(
125 static_cast<interfaces::BufferingState>(state));
126 }
127
128 void MojoRendererService::OnWaitingForDecryptionKey() {
129 // TODO(alokp): Plumb the event to interfaces::RendererClient. crbug/585287
130 }
131
106 void MojoRendererService::OnStreamReady( 132 void MojoRendererService::OnStreamReady(
107 const mojo::Callback<void(bool)>& callback) { 133 const mojo::Callback<void(bool)>& callback) {
108 DCHECK_EQ(state_, STATE_INITIALIZING); 134 DCHECK_EQ(state_, STATE_INITIALIZING);
109 135
110 renderer_->Initialize( 136 renderer_->Initialize(
111 stream_provider_.get(), 137 stream_provider_.get(), this,
112 base::Bind( 138 base::Bind(&MojoRendererService::OnRendererInitializeDone, weak_this_,
113 &MojoRendererService::OnRendererInitializeDone, weak_this_, callback), 139 callback));
114 base::Bind(&MojoRendererService::OnUpdateStatistics, weak_this_),
115 base::Bind(&MojoRendererService::OnBufferingStateChanged, weak_this_),
116 base::Bind(&MojoRendererService::OnRendererEnded, weak_this_),
117 base::Bind(&MojoRendererService::OnError, weak_this_),
118 base::Bind(base::DoNothing));
119 } 140 }
120 141
121 void MojoRendererService::OnRendererInitializeDone( 142 void MojoRendererService::OnRendererInitializeDone(
122 const mojo::Callback<void(bool)>& callback, 143 const mojo::Callback<void(bool)>& callback,
123 PipelineStatus status) { 144 PipelineStatus status) {
124 DVLOG(1) << __FUNCTION__; 145 DVLOG(1) << __FUNCTION__;
125 DCHECK_EQ(state_, STATE_INITIALIZING); 146 DCHECK_EQ(state_, STATE_INITIALIZING);
126 147
127 if (status != PIPELINE_OK) { 148 if (status != PIPELINE_OK) {
128 state_ = STATE_ERROR; 149 state_ = STATE_ERROR;
129 callback.Run(false); 150 callback.Run(false);
130 return; 151 return;
131 } 152 }
132 153
133 state_ = STATE_PLAYING; 154 state_ = STATE_PLAYING;
134 callback.Run(true); 155 callback.Run(true);
135 } 156 }
136 157
137 void MojoRendererService::OnUpdateStatistics(const PipelineStatistics& stats) {
138 }
139
140 void MojoRendererService::UpdateMediaTime(bool force) { 158 void MojoRendererService::UpdateMediaTime(bool force) {
141 const uint64_t media_time = renderer_->GetMediaTime().InMicroseconds(); 159 const uint64_t media_time = renderer_->GetMediaTime().InMicroseconds();
142 if (!force && media_time == last_media_time_usec_) 160 if (!force && media_time == last_media_time_usec_)
143 return; 161 return;
144 162
145 client_->OnTimeUpdate(media_time, media_time); 163 client_->OnTimeUpdate(media_time, media_time);
146 last_media_time_usec_ = media_time; 164 last_media_time_usec_ = media_time;
147 } 165 }
148 166
149 void MojoRendererService::CancelPeriodicMediaTimeUpdates() { 167 void MojoRendererService::CancelPeriodicMediaTimeUpdates() {
150 DVLOG(2) << __FUNCTION__; 168 DVLOG(2) << __FUNCTION__;
151 UpdateMediaTime(false); 169 UpdateMediaTime(false);
152 time_update_timer_.Stop(); 170 time_update_timer_.Stop();
153 } 171 }
154 172
155 void MojoRendererService::SchedulePeriodicMediaTimeUpdates() { 173 void MojoRendererService::SchedulePeriodicMediaTimeUpdates() {
156 DVLOG(2) << __FUNCTION__; 174 DVLOG(2) << __FUNCTION__;
157 UpdateMediaTime(true); 175 UpdateMediaTime(true);
158 time_update_timer_.Start( 176 time_update_timer_.Start(
159 FROM_HERE, 177 FROM_HERE,
160 base::TimeDelta::FromMilliseconds(kTimeUpdateIntervalMs), 178 base::TimeDelta::FromMilliseconds(kTimeUpdateIntervalMs),
161 base::Bind(&MojoRendererService::UpdateMediaTime, weak_this_, false)); 179 base::Bind(&MojoRendererService::UpdateMediaTime, weak_this_, false));
162 } 180 }
163 181
164 void MojoRendererService::OnBufferingStateChanged(
165 BufferingState new_buffering_state) {
166 DVLOG(2) << __FUNCTION__ << "(" << new_buffering_state << ")";
167 client_->OnBufferingStateChange(
168 static_cast<interfaces::BufferingState>(new_buffering_state));
169 }
170
171 void MojoRendererService::OnRendererEnded() {
172 DVLOG(1) << __FUNCTION__;
173 CancelPeriodicMediaTimeUpdates();
174 client_->OnEnded();
175 }
176
177 void MojoRendererService::OnError(PipelineStatus error) {
178 DVLOG(1) << __FUNCTION__ << "(" << error << ")";
179 state_ = STATE_ERROR;
180 client_->OnError();
181 }
182
183 void MojoRendererService::OnFlushCompleted(const mojo::Closure& callback) { 182 void MojoRendererService::OnFlushCompleted(const mojo::Closure& callback) {
184 DVLOG(1) << __FUNCTION__; 183 DVLOG(1) << __FUNCTION__;
185 DCHECK_EQ(state_, STATE_FLUSHING); 184 DCHECK_EQ(state_, STATE_FLUSHING);
186 state_ = STATE_PLAYING; 185 state_ = STATE_PLAYING;
187 callback.Run(); 186 callback.Run();
188 } 187 }
189 188
190 void MojoRendererService::OnCdmAttached( 189 void MojoRendererService::OnCdmAttached(
191 scoped_refptr<MediaKeys> cdm, 190 scoped_refptr<MediaKeys> cdm,
192 const mojo::Callback<void(bool)>& callback, 191 const mojo::Callback<void(bool)>& callback,
193 bool success) { 192 bool success) {
194 DVLOG(1) << __FUNCTION__ << "(" << success << ")"; 193 DVLOG(1) << __FUNCTION__ << "(" << success << ")";
195 194
196 if (success) 195 if (success)
197 cdm_ = cdm; 196 cdm_ = cdm;
198 197
199 callback.Run(success); 198 callback.Run(success);
200 } 199 }
201 200
202 } // namespace media 201 } // namespace media
OLDNEW
« no previous file with comments | « media/mojo/services/mojo_renderer_service.h ('k') | media/renderers/audio_renderer_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698