| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 1185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1196 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_WebM) { | 1196 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_WebM) { |
| 1197 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, | 1197 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, |
| 1198 kAppendWholeFile); | 1198 kAppendWholeFile); |
| 1199 StartPipelineWithMediaSource(&source); | 1199 StartPipelineWithMediaSource(&source); |
| 1200 | 1200 |
| 1201 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(640, 360))).Times(1); | 1201 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(640, 360))).Times(1); |
| 1202 scoped_refptr<DecoderBuffer> second_file = | 1202 scoped_refptr<DecoderBuffer> second_file = |
| 1203 ReadTestDataFile("bear-640x360.webm"); | 1203 ReadTestDataFile("bear-640x360.webm"); |
| 1204 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1204 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1205 second_file->data(), second_file->data_size()); | 1205 second_file->data(), second_file->data_size()); |
| 1206 source.EndOfStream(); |
| 1206 | 1207 |
| 1207 source.EndOfStream(); | 1208 Play(); |
| 1209 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1208 | 1210 |
| 1209 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1211 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1210 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1212 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1211 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, | 1213 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, |
| 1212 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1214 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1213 | 1215 |
| 1214 Play(); | |
| 1215 | |
| 1216 EXPECT_TRUE(WaitUntilOnEnded()); | |
| 1217 source.Shutdown(); | 1216 source.Shutdown(); |
| 1218 Stop(); | 1217 Stop(); |
| 1219 } | 1218 } |
| 1220 | 1219 |
| 1221 TEST_F(PipelineIntegrationTest, MediaSource_Remove_Updates_BufferedRanges) { | 1220 TEST_F(PipelineIntegrationTest, MediaSource_Remove_Updates_BufferedRanges) { |
| 1222 const char* input_filename = "bear-320x240.webm"; | 1221 const char* input_filename = "bear-320x240.webm"; |
| 1223 MockMediaSource source(input_filename, kWebM, kAppendWholeFile); | 1222 MockMediaSource source(input_filename, kWebM, kAppendWholeFile); |
| 1224 StartPipelineWithMediaSource(&source); | 1223 StartPipelineWithMediaSource(&source); |
| 1225 | 1224 |
| 1226 auto buffered_ranges = pipeline_->GetBufferedTimeRanges(); | 1225 auto buffered_ranges = pipeline_->GetBufferedTimeRanges(); |
| 1227 EXPECT_EQ(1u, buffered_ranges.size()); | 1226 EXPECT_EQ(1u, buffered_ranges.size()); |
| 1228 EXPECT_EQ(0, buffered_ranges.start(0).InMilliseconds()); | 1227 EXPECT_EQ(0, buffered_ranges.start(0).InMilliseconds()); |
| 1229 EXPECT_EQ(k320WebMFileDurationMs, buffered_ranges.end(0).InMilliseconds()); | 1228 EXPECT_EQ(k320WebMFileDurationMs, buffered_ranges.end(0).InMilliseconds()); |
| 1230 | 1229 |
| 1231 source.RemoveRange(base::TimeDelta::FromMilliseconds(1000), | 1230 source.RemoveRange(base::TimeDelta::FromMilliseconds(1000), |
| 1232 base::TimeDelta::FromMilliseconds(k320WebMFileDurationMs)); | 1231 base::TimeDelta::FromMilliseconds(k320WebMFileDurationMs)); |
| 1232 message_loop_.RunUntilIdle(); |
| 1233 |
| 1233 buffered_ranges = pipeline_->GetBufferedTimeRanges(); | 1234 buffered_ranges = pipeline_->GetBufferedTimeRanges(); |
| 1234 EXPECT_EQ(1u, buffered_ranges.size()); | 1235 EXPECT_EQ(1u, buffered_ranges.size()); |
| 1235 EXPECT_EQ(0, buffered_ranges.start(0).InMilliseconds()); | 1236 EXPECT_EQ(0, buffered_ranges.start(0).InMilliseconds()); |
| 1236 EXPECT_EQ(1001, buffered_ranges.end(0).InMilliseconds()); | 1237 EXPECT_EQ(1001, buffered_ranges.end(0).InMilliseconds()); |
| 1237 | 1238 |
| 1238 source.Shutdown(); | 1239 source.Shutdown(); |
| 1239 Stop(); | 1240 Stop(); |
| 1240 } | 1241 } |
| 1241 | 1242 |
| 1242 // This test case imitates media playback with advancing media_time and | 1243 // This test case imitates media playback with advancing media_time and |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1256 auto buffered_ranges = pipeline_->GetBufferedTimeRanges(); | 1257 auto buffered_ranges = pipeline_->GetBufferedTimeRanges(); |
| 1257 EXPECT_EQ(1u, buffered_ranges.size()); | 1258 EXPECT_EQ(1u, buffered_ranges.size()); |
| 1258 do { | 1259 do { |
| 1259 // Advance media_time to the end of the currently buffered data | 1260 // Advance media_time to the end of the currently buffered data |
| 1260 base::TimeDelta media_time = buffered_ranges.end(0); | 1261 base::TimeDelta media_time = buffered_ranges.end(0); |
| 1261 source.Seek(media_time); | 1262 source.Seek(media_time); |
| 1262 // Ask MediaSource to evict buffered data if buffering limit has been | 1263 // Ask MediaSource to evict buffered data if buffering limit has been |
| 1263 // reached (the data will be evicted from the front of the buffered range). | 1264 // reached (the data will be evicted from the front of the buffered range). |
| 1264 source.EvictCodedFrames(media_time, file->data_size()); | 1265 source.EvictCodedFrames(media_time, file->data_size()); |
| 1265 source.AppendAtTime(media_time, file->data(), file->data_size()); | 1266 source.AppendAtTime(media_time, file->data(), file->data_size()); |
| 1267 message_loop_.RunUntilIdle(); |
| 1268 |
| 1266 buffered_ranges = pipeline_->GetBufferedTimeRanges(); | 1269 buffered_ranges = pipeline_->GetBufferedTimeRanges(); |
| 1267 } while (buffered_ranges.size() == 1 && | 1270 } while (buffered_ranges.size() == 1 && |
| 1268 buffered_ranges.start(0) == base::TimeDelta::FromSeconds(0)); | 1271 buffered_ranges.start(0) == base::TimeDelta::FromSeconds(0)); |
| 1269 | 1272 |
| 1270 EXPECT_EQ(1u, buffered_ranges.size()); | 1273 EXPECT_EQ(1u, buffered_ranges.size()); |
| 1271 source.Shutdown(); | 1274 source.Shutdown(); |
| 1272 Stop(); | 1275 Stop(); |
| 1273 } | 1276 } |
| 1274 | 1277 |
| 1275 TEST_F(PipelineIntegrationTest, | 1278 TEST_F(PipelineIntegrationTest, |
| 1276 MAYBE_EME(MediaSource_ConfigChange_Encrypted_WebM)) { | 1279 MAYBE_EME(MediaSource_ConfigChange_Encrypted_WebM)) { |
| 1277 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, | 1280 MockMediaSource source("bear-320x240-16x9-aspect-av_enc-av.webm", kWebM, |
| 1278 kAppendWholeFile); | 1281 kAppendWholeFile); |
| 1279 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1282 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1280 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1283 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1281 | 1284 |
| 1282 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(640, 360))).Times(1); | 1285 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(640, 360))).Times(1); |
| 1283 scoped_refptr<DecoderBuffer> second_file = | 1286 scoped_refptr<DecoderBuffer> second_file = |
| 1284 ReadTestDataFile("bear-640x360-av_enc-av.webm"); | 1287 ReadTestDataFile("bear-640x360-av_enc-av.webm"); |
| 1285 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1288 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1286 second_file->data(), second_file->data_size()); | 1289 second_file->data(), second_file->data_size()); |
| 1290 source.EndOfStream(); |
| 1287 | 1291 |
| 1288 source.EndOfStream(); | 1292 Play(); |
| 1293 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1289 | 1294 |
| 1290 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1295 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1291 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1296 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1292 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, | 1297 EXPECT_EQ(kAppendTimeMs + k640WebMFileDurationMs, |
| 1293 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1298 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1294 | 1299 |
| 1295 Play(); | |
| 1296 | |
| 1297 EXPECT_TRUE(WaitUntilOnEnded()); | |
| 1298 source.Shutdown(); | 1300 source.Shutdown(); |
| 1299 Stop(); | 1301 Stop(); |
| 1300 } | 1302 } |
| 1301 | 1303 |
| 1302 // Config changes from encrypted to clear are not currently supported. | 1304 // Config changes from encrypted to clear are not currently supported. |
| 1303 TEST_F(PipelineIntegrationTest, | 1305 TEST_F(PipelineIntegrationTest, |
| 1304 MAYBE_EME(MediaSource_ConfigChange_ClearThenEncrypted_WebM)) { | 1306 MAYBE_EME(MediaSource_ConfigChange_ClearThenEncrypted_WebM)) { |
| 1305 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, | 1307 MockMediaSource source("bear-320x240-16x9-aspect.webm", kWebM, |
| 1306 kAppendWholeFile); | 1308 kAppendWholeFile); |
| 1307 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1309 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1393 base::TimeDelta::FromSecondsD(2.5 * 1024 / 44100); | 1395 base::TimeDelta::FromSecondsD(2.5 * 1024 / 44100); |
| 1394 const base::TimeDelta append_time = | 1396 const base::TimeDelta append_time = |
| 1395 source.last_timestamp_offset() - adts_preroll_duration; | 1397 source.last_timestamp_offset() - adts_preroll_duration; |
| 1396 | 1398 |
| 1397 scoped_refptr<DecoderBuffer> second_file = ReadTestDataFile("sfx.adts"); | 1399 scoped_refptr<DecoderBuffer> second_file = ReadTestDataFile("sfx.adts"); |
| 1398 source.AppendAtTimeWithWindow( | 1400 source.AppendAtTimeWithWindow( |
| 1399 append_time, append_time + adts_preroll_duration, kInfiniteDuration(), | 1401 append_time, append_time + adts_preroll_duration, kInfiniteDuration(), |
| 1400 second_file->data(), second_file->data_size()); | 1402 second_file->data(), second_file->data_size()); |
| 1401 source.EndOfStream(); | 1403 source.EndOfStream(); |
| 1402 | 1404 |
| 1405 Play(); |
| 1406 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1407 |
| 1403 EXPECT_EQ(592, source.last_timestamp_offset().InMilliseconds()); | 1408 EXPECT_EQ(592, source.last_timestamp_offset().InMilliseconds()); |
| 1404 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1409 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1405 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1410 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1406 EXPECT_EQ(592, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1411 EXPECT_EQ(592, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1407 | 1412 |
| 1408 Play(); | |
| 1409 | |
| 1410 EXPECT_TRUE(WaitUntilOnEnded()); | |
| 1411 | |
| 1412 // Verify preroll is stripped. | 1413 // Verify preroll is stripped. |
| 1413 EXPECT_HASH_EQ("-0.06,0.97,-0.90,-0.70,-0.53,-0.34,", GetAudioHash()); | 1414 EXPECT_HASH_EQ("-0.06,0.97,-0.90,-0.70,-0.53,-0.34,", GetAudioHash()); |
| 1414 } | 1415 } |
| 1415 | 1416 |
| 1416 TEST_F(PipelineIntegrationTest, BasicPlaybackHashed_MP3) { | 1417 TEST_F(PipelineIntegrationTest, BasicPlaybackHashed_MP3) { |
| 1417 ASSERT_EQ(PIPELINE_OK, Start("sfx.mp3", kHashed)); | 1418 ASSERT_EQ(PIPELINE_OK, Start("sfx.mp3", kHashed)); |
| 1418 | 1419 |
| 1419 Play(); | 1420 Play(); |
| 1420 | 1421 |
| 1421 ASSERT_TRUE(WaitUntilOnEnded()); | 1422 ASSERT_TRUE(WaitUntilOnEnded()); |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1525 base::TimeDelta::FromSecondsD(576.0 / 44100); | 1526 base::TimeDelta::FromSecondsD(576.0 / 44100); |
| 1526 const base::TimeDelta append_time = | 1527 const base::TimeDelta append_time = |
| 1527 source.last_timestamp_offset() - mp3_preroll_duration; | 1528 source.last_timestamp_offset() - mp3_preroll_duration; |
| 1528 | 1529 |
| 1529 scoped_refptr<DecoderBuffer> second_file = ReadTestDataFile("sfx.mp3"); | 1530 scoped_refptr<DecoderBuffer> second_file = ReadTestDataFile("sfx.mp3"); |
| 1530 source.AppendAtTimeWithWindow(append_time, append_time + mp3_preroll_duration, | 1531 source.AppendAtTimeWithWindow(append_time, append_time + mp3_preroll_duration, |
| 1531 kInfiniteDuration(), second_file->data(), | 1532 kInfiniteDuration(), second_file->data(), |
| 1532 second_file->data_size()); | 1533 second_file->data_size()); |
| 1533 source.EndOfStream(); | 1534 source.EndOfStream(); |
| 1534 | 1535 |
| 1536 Play(); |
| 1537 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1538 |
| 1535 EXPECT_EQ(613, source.last_timestamp_offset().InMilliseconds()); | 1539 EXPECT_EQ(613, source.last_timestamp_offset().InMilliseconds()); |
| 1536 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1540 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1537 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1541 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1538 EXPECT_EQ(613, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1542 EXPECT_EQ(613, pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1539 | |
| 1540 Play(); | |
| 1541 | |
| 1542 EXPECT_TRUE(WaitUntilOnEnded()); | |
| 1543 } | 1543 } |
| 1544 | 1544 |
| 1545 TEST_F(PipelineIntegrationTest, MediaSource_MP3_Icecast) { | 1545 TEST_F(PipelineIntegrationTest, MediaSource_MP3_Icecast) { |
| 1546 MockMediaSource source("icy_sfx.mp3", kMP3, kAppendWholeFile); | 1546 MockMediaSource source("icy_sfx.mp3", kMP3, kAppendWholeFile); |
| 1547 StartPipelineWithMediaSource(&source); | 1547 StartPipelineWithMediaSource(&source); |
| 1548 source.EndOfStream(); | 1548 source.EndOfStream(); |
| 1549 | 1549 |
| 1550 Play(); | 1550 Play(); |
| 1551 | 1551 |
| 1552 EXPECT_TRUE(WaitUntilOnEnded()); | 1552 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1553 } | 1553 } |
| 1554 | 1554 |
| 1555 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) { | 1555 TEST_F(PipelineIntegrationTest, MediaSource_ConfigChange_MP4) { |
| 1556 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4, kAppendWholeFile); | 1556 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4, kAppendWholeFile); |
| 1557 StartPipelineWithMediaSource(&source); | 1557 StartPipelineWithMediaSource(&source); |
| 1558 | 1558 |
| 1559 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(1280, 720))).Times(1); | 1559 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(1280, 720))).Times(1); |
| 1560 scoped_refptr<DecoderBuffer> second_file = | 1560 scoped_refptr<DecoderBuffer> second_file = |
| 1561 ReadTestDataFile("bear-1280x720-av_frag.mp4"); | 1561 ReadTestDataFile("bear-1280x720-av_frag.mp4"); |
| 1562 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1562 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1563 second_file->data(), second_file->data_size()); | 1563 second_file->data(), second_file->data_size()); |
| 1564 source.EndOfStream(); |
| 1564 | 1565 |
| 1565 source.EndOfStream(); | 1566 Play(); |
| 1567 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1566 | 1568 |
| 1567 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1569 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1568 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1570 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1569 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, | 1571 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, |
| 1570 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1572 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1571 | 1573 |
| 1572 Play(); | |
| 1573 | |
| 1574 EXPECT_TRUE(WaitUntilOnEnded()); | |
| 1575 source.Shutdown(); | 1574 source.Shutdown(); |
| 1576 Stop(); | 1575 Stop(); |
| 1577 } | 1576 } |
| 1578 | 1577 |
| 1579 TEST_F(PipelineIntegrationTest, | 1578 TEST_F(PipelineIntegrationTest, |
| 1580 MAYBE_EME(MediaSource_ConfigChange_Encrypted_MP4_CENC_VideoOnly)) { | 1579 MAYBE_EME(MediaSource_ConfigChange_Encrypted_MP4_CENC_VideoOnly)) { |
| 1581 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", kMP4Video, | 1580 MockMediaSource source("bear-640x360-v_frag-cenc.mp4", kMP4Video, |
| 1582 kAppendWholeFile); | 1581 kAppendWholeFile); |
| 1583 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); | 1582 FakeEncryptedMedia encrypted_media(new KeyProvidingApp()); |
| 1584 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1583 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1585 | 1584 |
| 1586 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(1280, 720))).Times(1); | 1585 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(1280, 720))).Times(1); |
| 1587 scoped_refptr<DecoderBuffer> second_file = | 1586 scoped_refptr<DecoderBuffer> second_file = |
| 1588 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); | 1587 ReadTestDataFile("bear-1280x720-v_frag-cenc.mp4"); |
| 1589 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1588 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1590 second_file->data(), second_file->data_size()); | 1589 second_file->data(), second_file->data_size()); |
| 1590 source.EndOfStream(); |
| 1591 | 1591 |
| 1592 source.EndOfStream(); | 1592 Play(); |
| 1593 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1593 | 1594 |
| 1594 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1595 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1595 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1596 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1596 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, | 1597 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, |
| 1597 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1598 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1598 | 1599 |
| 1599 Play(); | |
| 1600 | |
| 1601 EXPECT_TRUE(WaitUntilOnEnded()); | |
| 1602 source.Shutdown(); | 1600 source.Shutdown(); |
| 1603 Stop(); | 1601 Stop(); |
| 1604 } | 1602 } |
| 1605 | 1603 |
| 1606 TEST_F(PipelineIntegrationTest, | 1604 TEST_F(PipelineIntegrationTest, |
| 1607 MAYBE_EME( | 1605 MAYBE_EME( |
| 1608 MediaSource_ConfigChange_Encrypted_MP4_CENC_KeyRotation_VideoOnly)) { | 1606 MediaSource_ConfigChange_Encrypted_MP4_CENC_KeyRotation_VideoOnly)) { |
| 1609 MockMediaSource source("bear-640x360-v_frag-cenc-key_rotation.mp4", kMP4Video, | 1607 MockMediaSource source("bear-640x360-v_frag-cenc-key_rotation.mp4", kMP4Video, |
| 1610 kAppendWholeFile); | 1608 kAppendWholeFile); |
| 1611 FakeEncryptedMedia encrypted_media(new RotatingKeyProvidingApp()); | 1609 FakeEncryptedMedia encrypted_media(new RotatingKeyProvidingApp()); |
| 1612 StartPipelineWithEncryptedMedia(&source, &encrypted_media); | 1610 StartPipelineWithEncryptedMedia(&source, &encrypted_media); |
| 1613 | 1611 |
| 1614 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(1280, 720))).Times(1); | 1612 EXPECT_CALL(*this, OnVideoNaturalSizeChange(gfx::Size(1280, 720))).Times(1); |
| 1615 scoped_refptr<DecoderBuffer> second_file = | 1613 scoped_refptr<DecoderBuffer> second_file = |
| 1616 ReadTestDataFile("bear-1280x720-v_frag-cenc-key_rotation.mp4"); | 1614 ReadTestDataFile("bear-1280x720-v_frag-cenc-key_rotation.mp4"); |
| 1617 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), | 1615 source.AppendAtTime(base::TimeDelta::FromSeconds(kAppendTimeSec), |
| 1618 second_file->data(), second_file->data_size()); | 1616 second_file->data(), second_file->data_size()); |
| 1617 source.EndOfStream(); |
| 1619 | 1618 |
| 1620 source.EndOfStream(); | 1619 Play(); |
| 1620 EXPECT_TRUE(WaitUntilOnEnded()); |
| 1621 | 1621 |
| 1622 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); | 1622 EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size()); |
| 1623 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); | 1623 EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds()); |
| 1624 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, | 1624 EXPECT_EQ(kAppendTimeMs + k1280IsoFileDurationMs, |
| 1625 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); | 1625 pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds()); |
| 1626 | 1626 |
| 1627 Play(); | |
| 1628 | |
| 1629 EXPECT_TRUE(WaitUntilOnEnded()); | |
| 1630 source.Shutdown(); | 1627 source.Shutdown(); |
| 1631 Stop(); | 1628 Stop(); |
| 1632 } | 1629 } |
| 1633 | 1630 |
| 1634 // Config changes from clear to encrypted are not currently supported. | 1631 // Config changes from clear to encrypted are not currently supported. |
| 1635 // TODO(ddorwin): Figure out why this CHECKs in AppendAtTime(). | 1632 // TODO(ddorwin): Figure out why this CHECKs in AppendAtTime(). |
| 1636 TEST_F(PipelineIntegrationTest, | 1633 TEST_F(PipelineIntegrationTest, |
| 1637 DISABLED_MediaSource_ConfigChange_ClearThenEncrypted_MP4_CENC) { | 1634 DISABLED_MediaSource_ConfigChange_ClearThenEncrypted_MP4_CENC) { |
| 1638 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4Video, | 1635 MockMediaSource source("bear-640x360-av_frag.mp4", kMP4Video, |
| 1639 kAppendWholeFile); | 1636 kAppendWholeFile); |
| (...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2219 | 2216 |
| 2220 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { | 2217 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { |
| 2221 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); | 2218 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); |
| 2222 Play(); | 2219 Play(); |
| 2223 ASSERT_TRUE(WaitUntilOnEnded()); | 2220 ASSERT_TRUE(WaitUntilOnEnded()); |
| 2224 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), | 2221 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), |
| 2225 demuxer_->GetStartTime()); | 2222 demuxer_->GetStartTime()); |
| 2226 } | 2223 } |
| 2227 | 2224 |
| 2228 } // namespace media | 2225 } // namespace media |
| OLD | NEW |