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

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

Issue 2387293007: Register MediaPlayerRenderer service (Closed)
Patch Set: Addressed comments 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 // WMPI needs to receive a BUFFERING_HAVE_ENOUGH data before sending a
86 // playback_rate > 0. The MediaPlayer manages its own buffering and will pause
87 // internally if ever it runs out of data. Sending BUFFERING_HAVE_ENOUGH here
88 // is always safe.
89 //
90 // NOTE: OnBufferingUpdate is trigerred whenever the media has buffered or
watk 2016/10/11 23:49:35 triggered
tguilbert 2016/10/12 21:46:24 Done.
91 // played up to a % value between 1-100, and it not a reliable indicator of
watk 2016/10/11 23:49:35 it's
tguilbert 2016/10/12 21:46:24 Done.
92 // the buffering state.
93 //
94 // TODO(tguilbert): Investigate the effect of this call on UMAs.
95 renderer_client_->OnBufferingStateChange(media::BUFFERING_HAVE_ENOUGH);
84 } 96 }
85 97
86 void MediaPlayerRenderer::SetPlaybackRate(double playback_rate) { 98 void MediaPlayerRenderer::SetPlaybackRate(double playback_rate) {
87 if (has_error_) 99 if (has_error_)
88 return; 100 return;
89 101
90 if (playback_rate == 0) { 102 if (playback_rate == 0) {
91 media_player_->Pause(true); 103 media_player_->Pause(true);
92 } else { 104 } else {
93 // MediaPlayerBridge's Start() is idempotent. 105 // MediaPlayerBridge's Start() is idempotent.
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 renderer_client_->OnDurationChange(duration); 187 renderer_client_->OnDurationChange(duration);
176 } 188 }
177 } 189 }
178 190
179 void MediaPlayerRenderer::OnPlaybackComplete(int player_id) { 191 void MediaPlayerRenderer::OnPlaybackComplete(int player_id) {
180 renderer_client_->OnEnded(); 192 renderer_client_->OnEnded();
181 } 193 }
182 194
183 void MediaPlayerRenderer::OnMediaInterrupted(int player_id) {} 195 void MediaPlayerRenderer::OnMediaInterrupted(int player_id) {}
184 196
185 void MediaPlayerRenderer::OnBufferingUpdate(int player_id, int percentage) { 197 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 198
195 void MediaPlayerRenderer::OnSeekComplete(int player_id, 199 void MediaPlayerRenderer::OnSeekComplete(int player_id,
196 const base::TimeDelta& current_time) {} 200 const base::TimeDelta& current_time) {}
197 201
198 void MediaPlayerRenderer::OnError(int player_id, int error) { 202 void MediaPlayerRenderer::OnError(int player_id, int error) {
199 // Some errors are forwarded to the MediaPlayerListener, but are of no 203 // 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 204 // importance to us. Ignore these errors, which are reported as error 0 by
201 // MediaPlayerListener. 205 // MediaPlayerListener.
202 if (!error) 206 if (!error)
203 return; 207 return;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 void MediaPlayerRenderer::CancelScopedSurfaceRequest() { 247 void MediaPlayerRenderer::CancelScopedSurfaceRequest() {
244 if (!surface_request_token_) 248 if (!surface_request_token_)
245 return; 249 return;
246 250
247 ScopedSurfaceRequestManager::GetInstance()->UnregisterScopedSurfaceRequest( 251 ScopedSurfaceRequestManager::GetInstance()->UnregisterScopedSurfaceRequest(
248 surface_request_token_); 252 surface_request_token_);
249 surface_request_token_ = base::UnguessableToken(); 253 surface_request_token_ = base::UnguessableToken();
250 } 254 }
251 255
252 } // namespace content 256 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698