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

Side by Side Diff: content/browser/media/android/media_player_renderer.cc

Issue 2387293007: Register MediaPlayerRenderer service (Closed)
Patch Set: Created 4 years, 2 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "content/browser/media/android/media_player_renderer.h" 5 #include "content/browser/media/android/media_player_renderer.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "content/browser/android/scoped_surface_request_manager.h" 9 #include "content/browser/android/scoped_surface_request_manager.h"
10 #include "content/browser/media/android/media_resource_getter_impl.h" 10 #include "content/browser/media/android/media_resource_getter_impl.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 } 74 }
75 75
76 void MediaPlayerRenderer::StartPlayingFrom(base::TimeDelta time) { 76 void MediaPlayerRenderer::StartPlayingFrom(base::TimeDelta time) {
77 // MediaPlayerBridge's Start() is idempotent, except when it has encountered 77 // MediaPlayerBridge's Start() is idempotent, except when it has encountered
78 // an error (in which case, calling Start() again is logged as a new error). 78 // an error (in which case, calling Start() again is logged as a new error).
79 if (has_error_) 79 if (has_error_)
80 return; 80 return;
81 81
82 media_player_->Start(); 82 media_player_->Start();
83 media_player_->SeekTo(time); 83 media_player_->SeekTo(time);
84
85 // There is a chicken-and-egg problem between WMPI waiting until we have
86 // enough data to send a playback_rate > 0, and for HLS files to trigger a
tguilbert 2016/10/06 02:11:39 I will re-word this comment.
tguilbert 2016/10/11 18:54:33 Done.
87 // call to OnBufferingUpdate. Always return BUFFERING_HAVE_ENOUGH here, since
88 // MediaPlayer manages its own buffering and will pause internally if ever it
89 // runs out of data.
90 // TODO(tguilbert): Investigate the effect of this call on UMAs.
91 renderer_client_->OnBufferingStateChange(media::BUFFERING_HAVE_ENOUGH);
84 } 92 }
85 93
86 void MediaPlayerRenderer::SetPlaybackRate(double playback_rate) { 94 void MediaPlayerRenderer::SetPlaybackRate(double playback_rate) {
87 if (has_error_) 95 if (has_error_)
88 return; 96 return;
89 97
90 if (playback_rate == 0) { 98 if (playback_rate == 0) {
91 media_player_->Pause(true); 99 media_player_->Pause(true);
92 } else { 100 } else {
93 // MediaPlayerBridge's Start() is idempotent. 101 // MediaPlayerBridge's Start() is idempotent.
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 renderer_client_->OnDurationChange(duration); 183 renderer_client_->OnDurationChange(duration);
176 } 184 }
177 } 185 }
178 186
179 void MediaPlayerRenderer::OnPlaybackComplete(int player_id) { 187 void MediaPlayerRenderer::OnPlaybackComplete(int player_id) {
180 renderer_client_->OnEnded(); 188 renderer_client_->OnEnded();
181 } 189 }
182 190
183 void MediaPlayerRenderer::OnMediaInterrupted(int player_id) {} 191 void MediaPlayerRenderer::OnMediaInterrupted(int player_id) {}
184 192
185 void MediaPlayerRenderer::OnBufferingUpdate(int player_id, int percentage) { 193 void MediaPlayerRenderer::OnBufferingUpdate(int player_id, int percentage) {}
186 // As per Android documentation, |percentage| actually indicates "percentage
187 // buffered or played". E.g. if we are at 50% playback and have 1%
188 // buffered, |percentage| will be equal to 51.
189 //
190 // MediaPlayer manages its own buffering and will pause internally if ever it
191 // runs out of data. Therefore, we can always return BUFFERING_HAVE_ENOUGH.
192 renderer_client_->OnBufferingStateChange(media::BUFFERING_HAVE_ENOUGH);
193 }
194 194
195 void MediaPlayerRenderer::OnSeekComplete(int player_id, 195 void MediaPlayerRenderer::OnSeekComplete(int player_id,
196 const base::TimeDelta& current_time) {} 196 const base::TimeDelta& current_time) {}
197 197
198 void MediaPlayerRenderer::OnError(int player_id, int error) { 198 void MediaPlayerRenderer::OnError(int player_id, int error) {
199 // Some errors are forwarded to the MediaPlayerListener, but are of no 199 // Some errors are forwarded to the MediaPlayerListener, but are of no
200 // importance to us. Ignore these errors, which are reported as error 0 by 200 // importance to us. Ignore these errors, which are reported as error 0 by
201 // MediaPlayerListener. 201 // MediaPlayerListener.
202 if (!error) 202 if (!error)
203 return; 203 return;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 void MediaPlayerRenderer::CancelScopedSurfaceRequest() { 243 void MediaPlayerRenderer::CancelScopedSurfaceRequest() {
244 if (!surface_request_token_) 244 if (!surface_request_token_)
245 return; 245 return;
246 246
247 ScopedSurfaceRequestManager::GetInstance()->UnregisterScopedSurfaceRequest( 247 ScopedSurfaceRequestManager::GetInstance()->UnregisterScopedSurfaceRequest(
248 surface_request_token_); 248 surface_request_token_);
249 surface_request_token_ = base::UnguessableToken(); 249 surface_request_token_ = base::UnguessableToken();
250 } 250 }
251 251
252 } // namespace content 252 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698