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