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

Unified Diff: media/filters/audio_clock.cc

Issue 389613005: Update media::AudioClock API to take time since writing into account. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: media/filters/audio_clock.cc
diff --git a/media/filters/audio_clock.cc b/media/filters/audio_clock.cc
index 0454e85e8f50d5466dec831e93f19e82b5bd33c4..e315fa31e2d7084218136c5266461fa23ec92f90 100644
--- a/media/filters/audio_clock.cc
+++ b/media/filters/audio_clock.cc
@@ -45,20 +45,32 @@ void AudioClock::WroteSilence(int frames, int delay_frames) {
PushBufferedAudio(frames, 0, kNoTimestamp());
}
-base::TimeDelta AudioClock::CurrentMediaTimestamp() const {
+base::TimeDelta AudioClock::CurrentMediaTimestamp(
+ base::TimeDelta time_since_writing) const {
+ int frames_to_skip =
+ static_cast<int>(time_since_writing.InSecondsF() * sample_rate_);
int silence_frames = 0;
for (size_t i = 0; i < buffered_audio_.size(); ++i) {
+ int frames = buffered_audio_[i].frames;
+ if (frames_to_skip > 0) {
+ if (frames <= frames_to_skip) {
+ frames_to_skip -= frames;
+ continue;
+ }
+ frames -= frames_to_skip;
+ frames_to_skip = 0;
+ }
+
// Account for silence ahead of the buffer closest to being played.
if (buffered_audio_[i].playback_rate == 0) {
- silence_frames += buffered_audio_[i].frames;
+ silence_frames += frames;
continue;
}
// Multiply by playback rate as frames represent time-scaled audio.
return buffered_audio_[i].endpoint_timestamp -
base::TimeDelta::FromMicroseconds(
- ((buffered_audio_[i].frames * buffered_audio_[i].playback_rate) +
- silence_frames) /
+ ((frames * buffered_audio_[i].playback_rate) + silence_frames) /
sample_rate_ * base::Time::kMicrosecondsPerSecond);
}

Powered by Google App Engine
This is Rietveld 408576698