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 |