summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authordalecurtis <dalecurtis@chromium.org>2015-07-09 19:33:20 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-10 02:35:05 +0000
commit7a15b697ad60df43cc9f4dcd9c0044b59b8a0aff (patch)
treed775f3149c5b2f6279e3f8ec18b76c523bb68df6 /media
parente4e5b3a39dc5d5bec12eba67b222f314bee702dd (diff)
downloadchromium_src-7a15b697ad60df43cc9f4dcd9c0044b59b8a0aff.zip
chromium_src-7a15b697ad60df43cc9f4dcd9c0044b59b8a0aff.tar.gz
chromium_src-7a15b697ad60df43cc9f4dcd9c0044b59b8a0aff.tar.bz2
Add stronger DCHECK for front and back timestamp calculations.
BUG=481640 TEST=none Review URL: https://codereview.chromium.org/1230583010 Cr-Commit-Position: refs/heads/master@{#338209}
Diffstat (limited to 'media')
-rw-r--r--media/filters/audio_clock.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/media/filters/audio_clock.cc b/media/filters/audio_clock.cc
index 03af719..d4fea14 100644
--- a/media/filters/audio_clock.cc
+++ b/media/filters/audio_clock.cc
@@ -42,6 +42,7 @@ void AudioClock::WroteAudio(int frames_written,
//
// The ordering of compute -> push -> pop eliminates unnecessary memory
// reallocations in cases where |buffered_| gets emptied.
+ const int64_t original_buffered_frames = total_buffered_frames_;
int64_t frames_played =
std::max(INT64_C(0), total_buffered_frames_ - delay_frames);
front_timestamp_ += ComputeBufferedMediaTime(frames_played);
@@ -52,6 +53,16 @@ void AudioClock::WroteAudio(int frames_written,
back_timestamp_ += base::TimeDelta::FromMicroseconds(
frames_written * playback_rate * microseconds_per_frame_);
+ // Ensure something crazy hasn't happened to desync the front and back values.
+ DCHECK_LE(front_timestamp_.InMicroseconds(), back_timestamp_.InMicroseconds())
+ << "frames_written=" << frames_written
+ << ", frames_requested=" << frames_requested
+ << ", delay_frames=" << delay_frames
+ << ", playback_rate=" << playback_rate
+ << ", frames_played=" << frames_played
+ << ", original_buffered_frames=" << original_buffered_frames
+ << ", total_buffered_frames_=" << total_buffered_frames_;
+
// Update cached values.
double scaled_frames = 0;
double scaled_frames_at_same_rate = 0;