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

Side by Side Diff: media/filters/audio_clock_unittest.cc

Issue 1027553002: Change the TimeSource interface to return wallclock time for video. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix comment. Created 5 years, 9 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/audio_timestamp_helper.h" 5 #include "media/base/audio_timestamp_helper.h"
6 #include "media/base/buffers.h" 6 #include "media/base/buffers.h"
7 #include "media/filters/audio_clock.h" 7 #include "media/filters/audio_clock.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace media { 10 namespace media {
(...skipping 16 matching lines...) Expand all
27 int FrontTimestampInDays() { return clock_.front_timestamp().InDays(); } 27 int FrontTimestampInDays() { return clock_.front_timestamp().InDays(); }
28 28
29 int FrontTimestampInMilliseconds() { 29 int FrontTimestampInMilliseconds() {
30 return clock_.front_timestamp().InMilliseconds(); 30 return clock_.front_timestamp().InMilliseconds();
31 } 31 }
32 32
33 int BackTimestampInMilliseconds() { 33 int BackTimestampInMilliseconds() {
34 return clock_.back_timestamp().InMilliseconds(); 34 return clock_.back_timestamp().InMilliseconds();
35 } 35 }
36 36
37 int TimestampSinceLastWritingInMilliseconds(int milliseconds) {
38 return clock_.TimestampSinceWriting(base::TimeDelta::FromMilliseconds(
39 milliseconds)).InMilliseconds();
40 }
41
42 int TimeUntilPlaybackInMilliseconds(int timestamp_ms) { 37 int TimeUntilPlaybackInMilliseconds(int timestamp_ms) {
43 return clock_.TimeUntilPlayback(base::TimeDelta::FromMilliseconds( 38 return clock_.TimeUntilPlayback(base::TimeDelta::FromMilliseconds(
44 timestamp_ms)).InMilliseconds(); 39 timestamp_ms)).InMilliseconds();
45 } 40 }
46 41
47 int ContiguousAudioDataBufferedInDays() { 42 int ContiguousAudioDataBufferedInDays() {
48 return clock_.contiguous_audio_data_buffered().InDays(); 43 return clock_.contiguous_audio_data_buffered().InDays();
49 } 44 }
50 45
51 int ContiguousAudioDataBufferedInMilliseconds() { 46 int ContiguousAudioDataBufferedInMilliseconds() {
(...skipping 19 matching lines...) Expand all
71 EXPECT_EQ(expected, clock.front_timestamp()); 66 EXPECT_EQ(expected, clock.front_timestamp());
72 } 67 }
73 68
74 TEST_F(AudioClockTest, BackTimestampStartsAtStartTimestamp) { 69 TEST_F(AudioClockTest, BackTimestampStartsAtStartTimestamp) {
75 base::TimeDelta expected = base::TimeDelta::FromSeconds(123); 70 base::TimeDelta expected = base::TimeDelta::FromSeconds(123);
76 AudioClock clock(expected, sample_rate_); 71 AudioClock clock(expected, sample_rate_);
77 72
78 EXPECT_EQ(expected, clock.back_timestamp()); 73 EXPECT_EQ(expected, clock.back_timestamp());
79 } 74 }
80 75
81 TEST_F(AudioClockTest, TimestampSinceWritingStartsAtStartTimestamp) {
82 base::TimeDelta expected = base::TimeDelta::FromSeconds(123);
83 AudioClock clock(expected, sample_rate_);
84
85 base::TimeDelta time_since_writing = base::TimeDelta::FromSeconds(456);
86 EXPECT_EQ(expected, clock.TimestampSinceWriting(time_since_writing));
87 }
88
89 TEST_F(AudioClockTest, ContiguousAudioDataBufferedStartsAtZero) { 76 TEST_F(AudioClockTest, ContiguousAudioDataBufferedStartsAtZero) {
90 EXPECT_EQ(base::TimeDelta(), clock_.contiguous_audio_data_buffered()); 77 EXPECT_EQ(base::TimeDelta(), clock_.contiguous_audio_data_buffered());
91 } 78 }
92 79
93 TEST_F(AudioClockTest, ContiguousAudioDataBufferedAtSameRateStartsAtZero) { 80 TEST_F(AudioClockTest, ContiguousAudioDataBufferedAtSameRateStartsAtZero) {
94 EXPECT_EQ(base::TimeDelta(), 81 EXPECT_EQ(base::TimeDelta(),
95 clock_.contiguous_audio_data_buffered_at_same_rate()); 82 clock_.contiguous_audio_data_buffered_at_same_rate());
96 } 83 }
97 84
98 TEST_F(AudioClockTest, Playback) { 85 TEST_F(AudioClockTest, Playback) {
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 EXPECT_EQ(3000, FrontTimestampInMilliseconds()); 260 EXPECT_EQ(3000, FrontTimestampInMilliseconds());
274 EXPECT_EQ(3000, BackTimestampInMilliseconds()); 261 EXPECT_EQ(3000, BackTimestampInMilliseconds());
275 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); 262 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds());
276 263
277 WroteAudio(0, 10, 0, 1.0); 264 WroteAudio(0, 10, 0, 1.0);
278 EXPECT_EQ(3000, FrontTimestampInMilliseconds()); 265 EXPECT_EQ(3000, FrontTimestampInMilliseconds());
279 EXPECT_EQ(3000, BackTimestampInMilliseconds()); 266 EXPECT_EQ(3000, BackTimestampInMilliseconds());
280 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); 267 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds());
281 } 268 }
282 269
283 TEST_F(AudioClockTest, TimestampSinceLastWriting) {
284 // Construct an audio clock with the following representation:
285 //
286 // |- existing delay -|------------ calls to WroteAudio() -----------------|
287 // +-------------------+----------------+------------------+----------------+
288 // | 20 frames silence | 10 frames @ 1x | 10 frames @ 0.5x | 10 frames @ 2x |
289 // +-------------------+----------------+------------------+----------------+
290 // Media timestamp: 0 1000 1500 3500
291 // Wall clock time: 2000 3000 4000 5000
292 WroteAudio(10, 10, 40, 1.0);
293 WroteAudio(10, 10, 40, 0.5);
294 WroteAudio(10, 10, 40, 2.0);
295 EXPECT_EQ(0, FrontTimestampInMilliseconds());
296 EXPECT_EQ(3500, BackTimestampInMilliseconds());
297 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds());
298
299 // Simulate passing 2000ms of initial delay in the audio hardware.
300 EXPECT_EQ(0, TimestampSinceLastWritingInMilliseconds(0));
301 EXPECT_EQ(0, TimestampSinceLastWritingInMilliseconds(500));
302 EXPECT_EQ(0, TimestampSinceLastWritingInMilliseconds(1000));
303 EXPECT_EQ(0, TimestampSinceLastWritingInMilliseconds(1500));
304 EXPECT_EQ(0, TimestampSinceLastWritingInMilliseconds(2000));
305
306 // Now we should see the 1.0x buffer.
307 EXPECT_EQ(500, TimestampSinceLastWritingInMilliseconds(2500));
308 EXPECT_EQ(1000, TimestampSinceLastWritingInMilliseconds(3000));
309
310 // Now we should see the 0.5x buffer.
311 EXPECT_EQ(1250, TimestampSinceLastWritingInMilliseconds(3500));
312 EXPECT_EQ(1500, TimestampSinceLastWritingInMilliseconds(4000));
313
314 // Now we should see the 2.0x buffer.
315 EXPECT_EQ(2500, TimestampSinceLastWritingInMilliseconds(4500));
316 EXPECT_EQ(3500, TimestampSinceLastWritingInMilliseconds(5000));
317
318 // Times beyond the known length of the audio clock should return the last
319 // media timestamp we know of.
320 EXPECT_EQ(3500, TimestampSinceLastWritingInMilliseconds(5001));
321 EXPECT_EQ(3500, TimestampSinceLastWritingInMilliseconds(6000));
322 }
323
324 TEST_F(AudioClockTest, TimeUntilPlayback) { 270 TEST_F(AudioClockTest, TimeUntilPlayback) {
325 // Construct an audio clock with the following representation: 271 // Construct an audio clock with the following representation:
326 // 272 //
327 // existing 273 // existing
328 // |- delay -|------------------ calls to WroteAudio() ------------------| 274 // |- delay -|------------------ calls to WroteAudio() ------------------|
329 // +------------+---------+------------+-----------+------------+-----------+ 275 // +------------+---------+------------+-----------+------------+-----------+
330 // | 20 silence | 10 @ 1x | 10 silence | 10 @ 0.5x | 10 silence | 10 @ 2.0x | 276 // | 20 silence | 10 @ 1x | 10 silence | 10 @ 0.5x | 10 silence | 10 @ 2.0x |
331 // +------------+---------+------------+-----------+------------+-----------+ 277 // +------------+---------+------------+-----------+------------+-----------+
332 // Media: 0 1000 1000 1500 1500 3500 278 // Media: 0 1000 1000 1500 1500 3500
333 // Wall: 2000 3000 4000 5000 6000 7000 279 // Wall: 2000 3000 4000 5000 6000 7000
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 EXPECT_EQ(huge.InDays(), ContiguousAudioDataBufferedInDays()); 324 EXPECT_EQ(huge.InDays(), ContiguousAudioDataBufferedInDays());
379 325
380 // Use huge delay to test calculation of buffered data. 326 // Use huge delay to test calculation of buffered data.
381 WroteAudio( 327 WroteAudio(
382 huge_amount_of_frames, huge_amount_of_frames, huge_amount_of_frames, 1.0); 328 huge_amount_of_frames, huge_amount_of_frames, huge_amount_of_frames, 1.0);
383 EXPECT_EQ((huge * 3).InDays(), FrontTimestampInDays()); 329 EXPECT_EQ((huge * 3).InDays(), FrontTimestampInDays());
384 EXPECT_EQ((huge * 2).InDays(), ContiguousAudioDataBufferedInDays()); 330 EXPECT_EQ((huge * 2).InDays(), ContiguousAudioDataBufferedInDays());
385 } 331 }
386 332
387 } // namespace media 333 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698