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 |