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

Side by Side Diff: media/test/pipeline_integration_test.cc

Issue 1999893004: Splits PipelineImpl into main and media thread components. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleanup Created 4 years, 6 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 (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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698