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

Side by Side Diff: media/base/android/media_codec_video_decoder.cc

Issue 1325153005: More logs to debug AVPrerollVideoEndsWhilePrerolling on bot (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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/base/android/media_codec_player_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/base/android/media_codec_video_decoder.h" 5 #include "media/base/android/media_codec_video_decoder.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "media/base/android/media_codec_bridge.h" 9 #include "media/base/android/media_codec_bridge.h"
10 #include "media/base/buffers.h" 10 #include "media/base/buffers.h"
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 } 206 }
207 207
208 void MediaCodecVideoDecoder::Render(int buffer_index, 208 void MediaCodecVideoDecoder::Render(int buffer_index,
209 size_t offset, 209 size_t offset,
210 size_t size, 210 size_t size,
211 RenderMode render_mode, 211 RenderMode render_mode,
212 base::TimeDelta pts, 212 base::TimeDelta pts,
213 bool eos_encountered) { 213 bool eos_encountered) {
214 DCHECK(decoder_thread_.task_runner()->BelongsToCurrentThread()); 214 DCHECK(decoder_thread_.task_runner()->BelongsToCurrentThread());
215 215
216 DVLOG(2) << class_name() << "::" << __FUNCTION__ << " pts:" << pts 216 // http://crbug.com/526755
217 << " index:" << buffer_index << " size:" << size 217 if (verbose_) {
218 << (eos_encountered ? " EOS " : " ") << AsString(render_mode); 218 DVLOG(0) << class_name() << "::" << __FUNCTION__ << " pts:" << pts
219 << (eos_encountered ? " EOS " : " ") << AsString(render_mode);
220 } else {
221 DVLOG(2) << class_name() << "::" << __FUNCTION__ << " pts:" << pts
222 << " index:" << buffer_index << " size:" << size
223 << (eos_encountered ? " EOS " : " ") << AsString(render_mode);
224 }
219 225
220 // Normally EOS comes as a separate access unit that does not have data, 226 // Normally EOS comes as a separate access unit that does not have data,
221 // the corresponding |size| will be 0. 227 // the corresponding |size| will be 0.
222 if (!size && eos_encountered) { 228 if (!size && eos_encountered) {
223 // Stand-alone EOS 229 // Stand-alone EOS
224 // Discard the PTS that comes with it and ensure it is released last. 230 // Discard the PTS that comes with it and ensure it is released last.
225 pts = last_seen_pts_ + 231 pts = last_seen_pts_ +
226 base::TimeDelta::FromMilliseconds(kDelayForStandAloneEOS); 232 base::TimeDelta::FromMilliseconds(kDelayForStandAloneEOS);
227 } else { 233 } else {
228 // Keep track of last seen PTS 234 // Keep track of last seen PTS
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 } 306 }
301 #endif 307 #endif
302 308
303 void MediaCodecVideoDecoder::ReleaseOutputBuffer(int buffer_index, 309 void MediaCodecVideoDecoder::ReleaseOutputBuffer(int buffer_index,
304 base::TimeDelta pts, 310 base::TimeDelta pts,
305 bool render, 311 bool render,
306 bool update_time, 312 bool update_time,
307 bool eos_encountered) { 313 bool eos_encountered) {
308 DCHECK(decoder_thread_.task_runner()->BelongsToCurrentThread()); 314 DCHECK(decoder_thread_.task_runner()->BelongsToCurrentThread());
309 315
310 DVLOG(2) << class_name() << "::" << __FUNCTION__ << " pts:" << pts; 316 // http://crbug.com/526755
317 if (verbose_) {
318 DVLOG(0) << class_name() << "::" << __FUNCTION__ << " pts:" << pts
319 << " eos_encountered:" << eos_encountered;
320 } else {
321 DVLOG(2) << class_name() << "::" << __FUNCTION__ << " pts:" << pts;
322 }
311 323
312 // Do not render if we are in emergency stop, there might be no surface. 324 // Do not render if we are in emergency stop, there might be no surface.
313 if (InEmergencyStop()) 325 if (InEmergencyStop())
314 render = false; 326 render = false;
315 327
316 media_codec_bridge_->ReleaseOutputBuffer(buffer_index, render); 328 media_codec_bridge_->ReleaseOutputBuffer(buffer_index, render);
317 329
318 delayed_buffers_.erase(buffer_index); 330 delayed_buffers_.erase(buffer_index);
319 331
320 CheckLastFrame(eos_encountered, !delayed_buffers_.empty()); 332 CheckLastFrame(eos_encountered, !delayed_buffers_.empty());
321 333
322 // |update_current_time_cb_| might be null if there is audio stream. 334 // |update_current_time_cb_| might be null if there is audio stream.
323 // Do not update current time for stand-alone EOS frames. 335 // Do not update current time for stand-alone EOS frames.
324 if (!update_current_time_cb_.is_null() && update_time) { 336 if (!update_current_time_cb_.is_null() && update_time) {
325 media_task_runner_->PostTask( 337 media_task_runner_->PostTask(
326 FROM_HERE, base::Bind(update_current_time_cb_, pts, pts, false)); 338 FROM_HERE, base::Bind(update_current_time_cb_, pts, pts, false));
327 } 339 }
328 } 340 }
329 341
330 } // namespace media 342 } // namespace media
OLDNEW
« no previous file with comments | « media/base/android/media_codec_player_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698