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

Unified Diff: media/filters/audio_clock_unittest.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_unittest.cc
diff --git a/media/filters/audio_clock_unittest.cc b/media/filters/audio_clock_unittest.cc
index a924a24e62e78c663fcf5a35c101cd6a2f2c4f27..00179f9094fda648251732c5e4c384b97b2a66f4 100644
--- a/media/filters/audio_clock_unittest.cc
+++ b/media/filters/audio_clock_unittest.cc
@@ -31,7 +31,12 @@ class AudioClockTest : public testing::Test {
}
int CurrentMediaTimestampInMilliseconds() {
- return clock_.CurrentMediaTimestamp().InMilliseconds();
+ return CurrentMediaTimestampSinceLastWritingInMilliseconds(0);
+ }
+
+ int CurrentMediaTimestampSinceLastWritingInMilliseconds(int milliseconds) {
+ return clock_.CurrentMediaTimestamp(base::TimeDelta::FromMilliseconds(
+ milliseconds)).InMilliseconds();
}
int LastEndpointTimestampInMilliseconds() {
@@ -47,7 +52,7 @@ class AudioClockTest : public testing::Test {
};
TEST_F(AudioClockTest, TimestampsStartAtNoTimestamp) {
- EXPECT_EQ(kNoTimestamp(), clock_.CurrentMediaTimestamp());
+ EXPECT_EQ(kNoTimestamp(), clock_.CurrentMediaTimestamp(base::TimeDelta()));
EXPECT_EQ(kNoTimestamp(), clock_.last_endpoint_timestamp());
}
@@ -174,4 +179,45 @@ TEST_F(AudioClockTest, ZeroDelay) {
EXPECT_EQ(3000, LastEndpointTimestampInMilliseconds());
}
+TEST_F(AudioClockTest, CurrentMediaTimestampSinceLastWriting) {
+ // Construct an audio clock with the following representation:
+ //
+ // +-------------------+----------------+------------------+----------------+
+ // | 10 frames silence | 10 frames @ 1x | 10 frames @ 0.5x | 10 frames @ 2x |
+ // +-------------------+----------------+------------------+----------------+
+ // Media timestamp: 0 1000 1500 3500
+ // Wall clock time: 2000 3000 4000 5000
+ WroteAudio(10, 40, 1.0);
+ WroteAudio(10, 40, 0.5);
+ WroteAudio(10, 40, 2.0);
+ EXPECT_EQ(-2000, CurrentMediaTimestampInMilliseconds());
+ EXPECT_EQ(3500, LastEndpointTimestampInMilliseconds());
+
+ // Simulate passing 2000ms of initial delay in the audio hardware.
+ EXPECT_EQ(-2000, CurrentMediaTimestampSinceLastWritingInMilliseconds(0));
+ EXPECT_EQ(-1500, CurrentMediaTimestampSinceLastWritingInMilliseconds(500));
+ EXPECT_EQ(-1000, CurrentMediaTimestampSinceLastWritingInMilliseconds(1000));
+ EXPECT_EQ(-500, CurrentMediaTimestampSinceLastWritingInMilliseconds(1500));
+ EXPECT_EQ(0, CurrentMediaTimestampSinceLastWritingInMilliseconds(2000));
+
+ // New we should see the 1.0x buffer.
+ EXPECT_EQ(500, CurrentMediaTimestampSinceLastWritingInMilliseconds(2500));
+ EXPECT_EQ(1000, CurrentMediaTimestampSinceLastWritingInMilliseconds(3000));
+
+ // Now we should see the 0.5x buffer.
+ EXPECT_EQ(1250, CurrentMediaTimestampSinceLastWritingInMilliseconds(3500));
+ EXPECT_EQ(1500, CurrentMediaTimestampSinceLastWritingInMilliseconds(4000));
+
+ // Now we should see the 2.0x buffer.
+ EXPECT_EQ(2500, CurrentMediaTimestampSinceLastWritingInMilliseconds(4500));
+ EXPECT_EQ(3500, CurrentMediaTimestampSinceLastWritingInMilliseconds(5000));
+
+ // Times beyond the known length of the audio clock should return the last
+ // value we know of.
+ EXPECT_EQ(LastEndpointTimestampInMilliseconds(),
+ CurrentMediaTimestampSinceLastWritingInMilliseconds(5001));
+ EXPECT_EQ(LastEndpointTimestampInMilliseconds(),
+ CurrentMediaTimestampSinceLastWritingInMilliseconds(6000));
+}
+
} // namespace media

Powered by Google App Engine
This is Rietveld 408576698