| OLD | NEW |
| 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 14 matching lines...) Expand all Loading... |
| 25 } | 25 } |
| 26 | 26 |
| 27 int CurrentMediaTimestampInDays() { | 27 int CurrentMediaTimestampInDays() { |
| 28 return clock_.current_media_timestamp().InDays(); | 28 return clock_.current_media_timestamp().InDays(); |
| 29 } | 29 } |
| 30 | 30 |
| 31 int CurrentMediaTimestampInMilliseconds() { | 31 int CurrentMediaTimestampInMilliseconds() { |
| 32 return clock_.current_media_timestamp().InMilliseconds(); | 32 return clock_.current_media_timestamp().InMilliseconds(); |
| 33 } | 33 } |
| 34 | 34 |
| 35 int LatestMediaTimestampInMilliseconds() { |
| 36 return clock_.latest_media_timestamp().InMilliseconds(); |
| 37 } |
| 38 |
| 35 int CurrentMediaTimestampSinceLastWritingInMilliseconds(int milliseconds) { | 39 int CurrentMediaTimestampSinceLastWritingInMilliseconds(int milliseconds) { |
| 36 return clock_.CurrentMediaTimestampSinceWriting( | 40 return clock_.CurrentMediaTimestampSinceWriting( |
| 37 base::TimeDelta::FromMilliseconds(milliseconds)) | 41 base::TimeDelta::FromMilliseconds(milliseconds)) |
| 38 .InMilliseconds(); | 42 .InMilliseconds(); |
| 39 } | 43 } |
| 40 | 44 |
| 41 int ContiguousAudioDataBufferedInDays() { | 45 int ContiguousAudioDataBufferedInDays() { |
| 42 return clock_.contiguous_audio_data_buffered().InDays(); | 46 return clock_.contiguous_audio_data_buffered().InDays(); |
| 43 } | 47 } |
| 44 | 48 |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 | 81 |
| 78 TEST_F(AudioClockTest, ContiguousAudioDataBufferedStartsAtZero) { | 82 TEST_F(AudioClockTest, ContiguousAudioDataBufferedStartsAtZero) { |
| 79 EXPECT_EQ(base::TimeDelta(), clock_.contiguous_audio_data_buffered()); | 83 EXPECT_EQ(base::TimeDelta(), clock_.contiguous_audio_data_buffered()); |
| 80 } | 84 } |
| 81 | 85 |
| 82 TEST_F(AudioClockTest, ContiguousAudioDataBufferedAtSameRateStartsAtZero) { | 86 TEST_F(AudioClockTest, ContiguousAudioDataBufferedAtSameRateStartsAtZero) { |
| 83 EXPECT_EQ(base::TimeDelta(), | 87 EXPECT_EQ(base::TimeDelta(), |
| 84 clock_.contiguous_audio_data_buffered_at_same_rate()); | 88 clock_.contiguous_audio_data_buffered_at_same_rate()); |
| 85 } | 89 } |
| 86 | 90 |
| 87 TEST_F(AudioClockTest, AudioDataBufferedStartsAtFalse) { | |
| 88 EXPECT_FALSE(clock_.audio_data_buffered()); | |
| 89 } | |
| 90 | |
| 91 TEST_F(AudioClockTest, Playback) { | 91 TEST_F(AudioClockTest, Playback) { |
| 92 // The first time we write data we should still expect our start timestamp | 92 // The first time we write data we should still expect our start timestamp |
| 93 // due to delay. | 93 // due to delay. |
| 94 WroteAudio(10, 10, 20, 1.0); | 94 WroteAudio(10, 10, 20, 1.0); |
| 95 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); | 95 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); |
| 96 EXPECT_EQ(1000, LatestMediaTimestampInMilliseconds()); |
| 96 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); | 97 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); |
| 97 EXPECT_EQ(0, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 98 EXPECT_EQ(0, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 98 EXPECT_TRUE(clock_.audio_data_buffered()); | |
| 99 | 99 |
| 100 // The media time should remain at start timestamp as we write data. | 100 // The media time should remain at start timestamp as we write data. |
| 101 WroteAudio(10, 10, 20, 1.0); | 101 WroteAudio(10, 10, 20, 1.0); |
| 102 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); | 102 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); |
| 103 EXPECT_EQ(2000, LatestMediaTimestampInMilliseconds()); |
| 103 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); | 104 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); |
| 104 EXPECT_EQ(0, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 105 EXPECT_EQ(0, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 105 | 106 |
| 106 WroteAudio(10, 10, 20, 1.0); | 107 WroteAudio(10, 10, 20, 1.0); |
| 107 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); | 108 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); |
| 109 EXPECT_EQ(3000, LatestMediaTimestampInMilliseconds()); |
| 108 EXPECT_EQ(3000, ContiguousAudioDataBufferedInMilliseconds()); | 110 EXPECT_EQ(3000, ContiguousAudioDataBufferedInMilliseconds()); |
| 109 EXPECT_EQ(3000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 111 EXPECT_EQ(3000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 110 | 112 |
| 111 // The media time should now start advanced now that delay has been covered. | 113 // The media time should now start advanced now that delay has been covered. |
| 112 WroteAudio(10, 10, 20, 1.0); | 114 WroteAudio(10, 10, 20, 1.0); |
| 113 EXPECT_EQ(1000, CurrentMediaTimestampInMilliseconds()); | 115 EXPECT_EQ(1000, CurrentMediaTimestampInMilliseconds()); |
| 116 EXPECT_EQ(4000, LatestMediaTimestampInMilliseconds()); |
| 114 EXPECT_EQ(3000, ContiguousAudioDataBufferedInMilliseconds()); | 117 EXPECT_EQ(3000, ContiguousAudioDataBufferedInMilliseconds()); |
| 115 EXPECT_EQ(3000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 118 EXPECT_EQ(3000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 116 | 119 |
| 117 WroteAudio(10, 10, 20, 1.0); | 120 WroteAudio(10, 10, 20, 1.0); |
| 118 EXPECT_EQ(2000, CurrentMediaTimestampInMilliseconds()); | 121 EXPECT_EQ(2000, CurrentMediaTimestampInMilliseconds()); |
| 122 EXPECT_EQ(5000, LatestMediaTimestampInMilliseconds()); |
| 119 EXPECT_EQ(3000, ContiguousAudioDataBufferedInMilliseconds()); | 123 EXPECT_EQ(3000, ContiguousAudioDataBufferedInMilliseconds()); |
| 120 EXPECT_EQ(3000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 124 EXPECT_EQ(3000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 121 | 125 |
| 122 // Introduce a rate change to slow down time: | 126 // Introduce a rate change to slow down time: |
| 123 // - Current time will advance by one second until it hits rate change | 127 // - Current time will advance by one second until it hits rate change |
| 124 // - Contiguous audio data will start shrinking immediately | 128 // - Contiguous audio data will start shrinking immediately |
| 125 WroteAudio(10, 10, 20, 0.5); | 129 WroteAudio(10, 10, 20, 0.5); |
| 126 EXPECT_EQ(3000, CurrentMediaTimestampInMilliseconds()); | 130 EXPECT_EQ(3000, CurrentMediaTimestampInMilliseconds()); |
| 131 EXPECT_EQ(5500, LatestMediaTimestampInMilliseconds()); |
| 127 EXPECT_EQ(2500, ContiguousAudioDataBufferedInMilliseconds()); | 132 EXPECT_EQ(2500, ContiguousAudioDataBufferedInMilliseconds()); |
| 128 EXPECT_EQ(2000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 133 EXPECT_EQ(2000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 129 | 134 |
| 130 WroteAudio(10, 10, 20, 0.5); | 135 WroteAudio(10, 10, 20, 0.5); |
| 131 EXPECT_EQ(4000, CurrentMediaTimestampInMilliseconds()); | 136 EXPECT_EQ(4000, CurrentMediaTimestampInMilliseconds()); |
| 137 EXPECT_EQ(6000, LatestMediaTimestampInMilliseconds()); |
| 132 EXPECT_EQ(2000, ContiguousAudioDataBufferedInMilliseconds()); | 138 EXPECT_EQ(2000, ContiguousAudioDataBufferedInMilliseconds()); |
| 133 EXPECT_EQ(1000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 139 EXPECT_EQ(1000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 134 | 140 |
| 135 WroteAudio(10, 10, 20, 0.5); | 141 WroteAudio(10, 10, 20, 0.5); |
| 136 EXPECT_EQ(5000, CurrentMediaTimestampInMilliseconds()); | 142 EXPECT_EQ(5000, CurrentMediaTimestampInMilliseconds()); |
| 143 EXPECT_EQ(6500, LatestMediaTimestampInMilliseconds()); |
| 137 EXPECT_EQ(1500, ContiguousAudioDataBufferedInMilliseconds()); | 144 EXPECT_EQ(1500, ContiguousAudioDataBufferedInMilliseconds()); |
| 138 EXPECT_EQ(1500, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 145 EXPECT_EQ(1500, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 139 | 146 |
| 140 WroteAudio(10, 10, 20, 0.5); | 147 WroteAudio(10, 10, 20, 0.5); |
| 141 EXPECT_EQ(5500, CurrentMediaTimestampInMilliseconds()); | 148 EXPECT_EQ(5500, CurrentMediaTimestampInMilliseconds()); |
| 149 EXPECT_EQ(7000, LatestMediaTimestampInMilliseconds()); |
| 142 EXPECT_EQ(1500, ContiguousAudioDataBufferedInMilliseconds()); | 150 EXPECT_EQ(1500, ContiguousAudioDataBufferedInMilliseconds()); |
| 143 EXPECT_EQ(1500, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 151 EXPECT_EQ(1500, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 144 | 152 |
| 145 // Introduce a rate change to speed up time: | 153 // Introduce a rate change to speed up time: |
| 146 // - Current time will advance by half a second until it hits rate change | 154 // - Current time will advance by half a second until it hits rate change |
| 147 // - Contiguous audio data will start growing immediately | 155 // - Contiguous audio data will start growing immediately |
| 148 WroteAudio(10, 10, 20, 2); | 156 WroteAudio(10, 10, 20, 2); |
| 149 EXPECT_EQ(6000, CurrentMediaTimestampInMilliseconds()); | 157 EXPECT_EQ(6000, CurrentMediaTimestampInMilliseconds()); |
| 158 EXPECT_EQ(9000, LatestMediaTimestampInMilliseconds()); |
| 150 EXPECT_EQ(3000, ContiguousAudioDataBufferedInMilliseconds()); | 159 EXPECT_EQ(3000, ContiguousAudioDataBufferedInMilliseconds()); |
| 151 EXPECT_EQ(1000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 160 EXPECT_EQ(1000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 152 | 161 |
| 153 WroteAudio(10, 10, 20, 2); | 162 WroteAudio(10, 10, 20, 2); |
| 154 EXPECT_EQ(6500, CurrentMediaTimestampInMilliseconds()); | 163 EXPECT_EQ(6500, CurrentMediaTimestampInMilliseconds()); |
| 164 EXPECT_EQ(11000, LatestMediaTimestampInMilliseconds()); |
| 155 EXPECT_EQ(4500, ContiguousAudioDataBufferedInMilliseconds()); | 165 EXPECT_EQ(4500, ContiguousAudioDataBufferedInMilliseconds()); |
| 156 EXPECT_EQ(500, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 166 EXPECT_EQ(500, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 157 | 167 |
| 158 WroteAudio(10, 10, 20, 2); | 168 WroteAudio(10, 10, 20, 2); |
| 159 EXPECT_EQ(7000, CurrentMediaTimestampInMilliseconds()); | 169 EXPECT_EQ(7000, CurrentMediaTimestampInMilliseconds()); |
| 170 EXPECT_EQ(13000, LatestMediaTimestampInMilliseconds()); |
| 160 EXPECT_EQ(6000, ContiguousAudioDataBufferedInMilliseconds()); | 171 EXPECT_EQ(6000, ContiguousAudioDataBufferedInMilliseconds()); |
| 161 EXPECT_EQ(6000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 172 EXPECT_EQ(6000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 162 | 173 |
| 163 WroteAudio(10, 10, 20, 2); | 174 WroteAudio(10, 10, 20, 2); |
| 164 EXPECT_EQ(9000, CurrentMediaTimestampInMilliseconds()); | 175 EXPECT_EQ(9000, CurrentMediaTimestampInMilliseconds()); |
| 176 EXPECT_EQ(15000, LatestMediaTimestampInMilliseconds()); |
| 165 EXPECT_EQ(6000, ContiguousAudioDataBufferedInMilliseconds()); | 177 EXPECT_EQ(6000, ContiguousAudioDataBufferedInMilliseconds()); |
| 166 EXPECT_EQ(6000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 178 EXPECT_EQ(6000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 167 | 179 |
| 168 // Write silence to simulate reaching end of stream: | 180 // Write silence to simulate reaching end of stream: |
| 169 // - Current time will advance by half a second until it hits silence | 181 // - Current time will advance by half a second until it hits silence |
| 170 // - Contiguous audio data will start shrinking towards zero | 182 // - Contiguous audio data will start shrinking towards zero |
| 171 WroteAudio(0, 10, 20, 2); | 183 WroteAudio(0, 10, 20, 2); |
| 172 EXPECT_EQ(11000, CurrentMediaTimestampInMilliseconds()); | 184 EXPECT_EQ(11000, CurrentMediaTimestampInMilliseconds()); |
| 185 EXPECT_EQ(15000, LatestMediaTimestampInMilliseconds()); |
| 173 EXPECT_EQ(4000, ContiguousAudioDataBufferedInMilliseconds()); | 186 EXPECT_EQ(4000, ContiguousAudioDataBufferedInMilliseconds()); |
| 174 EXPECT_EQ(4000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 187 EXPECT_EQ(4000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 175 | 188 |
| 176 WroteAudio(0, 10, 20, 2); | 189 WroteAudio(0, 10, 20, 2); |
| 177 EXPECT_EQ(13000, CurrentMediaTimestampInMilliseconds()); | 190 EXPECT_EQ(13000, CurrentMediaTimestampInMilliseconds()); |
| 191 EXPECT_EQ(15000, LatestMediaTimestampInMilliseconds()); |
| 178 EXPECT_EQ(2000, ContiguousAudioDataBufferedInMilliseconds()); | 192 EXPECT_EQ(2000, ContiguousAudioDataBufferedInMilliseconds()); |
| 179 EXPECT_EQ(2000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 193 EXPECT_EQ(2000, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 180 EXPECT_TRUE(clock_.audio_data_buffered()); // Still audio data buffered. | |
| 181 | 194 |
| 182 WroteAudio(0, 10, 20, 2); | 195 WroteAudio(0, 10, 20, 2); |
| 183 EXPECT_EQ(15000, CurrentMediaTimestampInMilliseconds()); | 196 EXPECT_EQ(15000, CurrentMediaTimestampInMilliseconds()); |
| 197 EXPECT_EQ(15000, LatestMediaTimestampInMilliseconds()); |
| 184 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); | 198 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); |
| 185 EXPECT_EQ(0, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 199 EXPECT_EQ(0, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 186 EXPECT_FALSE(clock_.audio_data_buffered()); // No more audio data buffered. | |
| 187 | 200 |
| 188 // At this point media time should stop increasing. | 201 // At this point media time should stop increasing. |
| 189 WroteAudio(0, 10, 20, 2); | 202 WroteAudio(0, 10, 20, 2); |
| 190 EXPECT_EQ(15000, CurrentMediaTimestampInMilliseconds()); | 203 EXPECT_EQ(15000, CurrentMediaTimestampInMilliseconds()); |
| 204 EXPECT_EQ(15000, LatestMediaTimestampInMilliseconds()); |
| 191 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); | 205 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); |
| 192 EXPECT_EQ(0, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); | 206 EXPECT_EQ(0, ContiguousAudioDataBufferedAtSameRateInMilliseconds()); |
| 193 EXPECT_FALSE(clock_.audio_data_buffered()); | |
| 194 } | 207 } |
| 195 | 208 |
| 196 TEST_F(AudioClockTest, AlternatingAudioAndSilence) { | 209 TEST_F(AudioClockTest, AlternatingAudioAndSilence) { |
| 197 // Buffer #1: [0, 1000) | 210 // Buffer #1: [0, 1000) |
| 198 WroteAudio(10, 10, 20, 1.0); | 211 WroteAudio(10, 10, 20, 1.0); |
| 199 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); | 212 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); |
| 213 EXPECT_EQ(1000, LatestMediaTimestampInMilliseconds()); |
| 200 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); | 214 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); |
| 201 | 215 |
| 202 // Buffer #2: 1000ms of silence | 216 // Buffer #2: 1000ms of silence |
| 203 WroteAudio(0, 10, 20, 1.0); | 217 WroteAudio(0, 10, 20, 1.0); |
| 204 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); | 218 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); |
| 219 EXPECT_EQ(1000, LatestMediaTimestampInMilliseconds()); |
| 205 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); | 220 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); |
| 206 | 221 |
| 207 // Buffer #3: [1000, 2000): | 222 // Buffer #3: [1000, 2000): |
| 208 // - Buffer #1 is at front with 1000ms of contiguous audio data | 223 // - Buffer #1 is at front with 1000ms of contiguous audio data |
| 209 WroteAudio(10, 10, 20, 1.0); | 224 WroteAudio(10, 10, 20, 1.0); |
| 210 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); | 225 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); |
| 226 EXPECT_EQ(2000, LatestMediaTimestampInMilliseconds()); |
| 211 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); | 227 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); |
| 212 | 228 |
| 213 // Buffer #4: 1000ms of silence | 229 // Buffer #4: 1000ms of silence |
| 214 // - Buffer #1 has been played out | 230 // - Buffer #1 has been played out |
| 215 // - Buffer #2 of silence leaves us with 0ms of contiguous audio data | 231 // - Buffer #2 of silence leaves us with 0ms of contiguous audio data |
| 216 WroteAudio(0, 10, 20, 1.0); | 232 WroteAudio(0, 10, 20, 1.0); |
| 217 EXPECT_EQ(1000, CurrentMediaTimestampInMilliseconds()); | 233 EXPECT_EQ(1000, CurrentMediaTimestampInMilliseconds()); |
| 234 EXPECT_EQ(2000, LatestMediaTimestampInMilliseconds()); |
| 218 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); | 235 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); |
| 219 | 236 |
| 220 // Buffer #5: [2000, 3000): | 237 // Buffer #5: [2000, 3000): |
| 221 // - Buffer #3 is at front with 1000ms of contiguous audio data | 238 // - Buffer #3 is at front with 1000ms of contiguous audio data |
| 222 WroteAudio(10, 10, 20, 1.0); | 239 WroteAudio(10, 10, 20, 1.0); |
| 223 EXPECT_EQ(1000, CurrentMediaTimestampInMilliseconds()); | 240 EXPECT_EQ(1000, CurrentMediaTimestampInMilliseconds()); |
| 241 EXPECT_EQ(3000, LatestMediaTimestampInMilliseconds()); |
| 224 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); | 242 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); |
| 225 } | 243 } |
| 226 | 244 |
| 227 TEST_F(AudioClockTest, ZeroDelay) { | 245 TEST_F(AudioClockTest, ZeroDelay) { |
| 228 // The first time we write data we should expect the first timestamp | 246 // The first time we write data we should expect the first timestamp |
| 229 // immediately. | 247 // immediately. |
| 230 WroteAudio(10, 10, 0, 1.0); | 248 WroteAudio(10, 10, 0, 1.0); |
| 231 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); | 249 EXPECT_EQ(0, CurrentMediaTimestampInMilliseconds()); |
| 250 EXPECT_EQ(1000, LatestMediaTimestampInMilliseconds()); |
| 232 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); | 251 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); |
| 233 | 252 |
| 234 // Ditto for all subsequent buffers. | 253 // Ditto for all subsequent buffers. |
| 235 WroteAudio(10, 10, 0, 1.0); | 254 WroteAudio(10, 10, 0, 1.0); |
| 236 EXPECT_EQ(1000, CurrentMediaTimestampInMilliseconds()); | 255 EXPECT_EQ(1000, CurrentMediaTimestampInMilliseconds()); |
| 256 EXPECT_EQ(2000, LatestMediaTimestampInMilliseconds()); |
| 237 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); | 257 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); |
| 238 | 258 |
| 239 WroteAudio(10, 10, 0, 1.0); | 259 WroteAudio(10, 10, 0, 1.0); |
| 240 EXPECT_EQ(2000, CurrentMediaTimestampInMilliseconds()); | 260 EXPECT_EQ(2000, CurrentMediaTimestampInMilliseconds()); |
| 261 EXPECT_EQ(3000, LatestMediaTimestampInMilliseconds()); |
| 241 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); | 262 EXPECT_EQ(1000, ContiguousAudioDataBufferedInMilliseconds()); |
| 242 | 263 |
| 243 // Ditto for silence. | 264 // Ditto for silence. |
| 244 WroteAudio(0, 10, 0, 1.0); | 265 WroteAudio(0, 10, 0, 1.0); |
| 245 EXPECT_EQ(3000, CurrentMediaTimestampInMilliseconds()); | 266 EXPECT_EQ(3000, CurrentMediaTimestampInMilliseconds()); |
| 267 EXPECT_EQ(3000, LatestMediaTimestampInMilliseconds()); |
| 246 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); | 268 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); |
| 247 | 269 |
| 248 WroteAudio(0, 10, 0, 1.0); | 270 WroteAudio(0, 10, 0, 1.0); |
| 249 EXPECT_EQ(3000, CurrentMediaTimestampInMilliseconds()); | 271 EXPECT_EQ(3000, CurrentMediaTimestampInMilliseconds()); |
| 272 EXPECT_EQ(3000, LatestMediaTimestampInMilliseconds()); |
| 250 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); | 273 EXPECT_EQ(0, ContiguousAudioDataBufferedInMilliseconds()); |
| 251 } | 274 } |
| 252 | 275 |
| 253 TEST_F(AudioClockTest, CurrentMediaTimestampSinceLastWriting) { | 276 TEST_F(AudioClockTest, CurrentMediaTimestampSinceLastWriting) { |
| 254 // Construct an audio clock with the following representation: | 277 // Construct an audio clock with the following representation: |
| 255 // | 278 // |
| 256 // +-------------------+----------------+------------------+----------------+ | 279 // +-------------------+----------------+------------------+----------------+ |
| 257 // | 10 frames silence | 10 frames @ 1x | 10 frames @ 0.5x | 10 frames @ 2x | | 280 // | 10 frames silence | 10 frames @ 1x | 10 frames @ 0.5x | 10 frames @ 2x | |
| 258 // +-------------------+----------------+------------------+----------------+ | 281 // +-------------------+----------------+------------------+----------------+ |
| 259 // Media timestamp: 0 1000 1500 3500 | 282 // Media timestamp: 0 1000 1500 3500 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 EXPECT_EQ(huge.InDays(), ContiguousAudioDataBufferedInDays()); | 337 EXPECT_EQ(huge.InDays(), ContiguousAudioDataBufferedInDays()); |
| 315 | 338 |
| 316 // Use huge delay to test calculation of buffered data. | 339 // Use huge delay to test calculation of buffered data. |
| 317 WroteAudio( | 340 WroteAudio( |
| 318 huge_amount_of_frames, huge_amount_of_frames, huge_amount_of_frames, 1.0); | 341 huge_amount_of_frames, huge_amount_of_frames, huge_amount_of_frames, 1.0); |
| 319 EXPECT_EQ((huge * 3).InDays(), CurrentMediaTimestampInDays()); | 342 EXPECT_EQ((huge * 3).InDays(), CurrentMediaTimestampInDays()); |
| 320 EXPECT_EQ((huge * 2).InDays(), ContiguousAudioDataBufferedInDays()); | 343 EXPECT_EQ((huge * 2).InDays(), ContiguousAudioDataBufferedInDays()); |
| 321 } | 344 } |
| 322 | 345 |
| 323 } // namespace media | 346 } // namespace media |
| OLD | NEW |