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

Side by Side Diff: media/filters/chunk_demuxer_unittest.cc

Issue 10692053: Remove buffer duration calculation from WebMClusterParser and update SourceBufferStream accordingly (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase ToT Created 8 years, 5 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 | Annotate | Revision Log
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 "base/bind.h" 5 #include "base/bind.h"
6 #include "media/base/audio_decoder_config.h" 6 #include "media/base/audio_decoder_config.h"
7 #include "media/base/decoder_buffer.h" 7 #include "media/base/decoder_buffer.h"
8 #include "media/base/mock_callback.h" 8 #include "media/base/mock_callback.h"
9 #include "media/base/mock_demuxer_host.h" 9 #include "media/base/mock_demuxer_host.h"
10 #include "media/base/test_data_util.h" 10 #include "media/base/test_data_util.h"
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 bool AppendDataInPieces(const uint8* data, size_t length, size_t piece_size) { 248 bool AppendDataInPieces(const uint8* data, size_t length, size_t piece_size) {
249 const uint8* start = data; 249 const uint8* start = data;
250 const uint8* end = data + length; 250 const uint8* end = data + length;
251 while (start < end) { 251 while (start < end) {
252 base::TimeDelta old_buffered_time = buffered_time_; 252 base::TimeDelta old_buffered_time = buffered_time_;
253 size_t append_size = std::min(piece_size, 253 size_t append_size = std::min(piece_size,
254 static_cast<size_t>(end - start)); 254 static_cast<size_t>(end - start));
255 if (!AppendData(start, append_size)) 255 if (!AppendData(start, append_size))
256 return false; 256 return false;
257 start += append_size; 257 start += append_size;
258
259 EXPECT_GE(buffered_time_, old_buffered_time);
260 } 258 }
261 return true; 259 return true;
262 } 260 }
263 261
264 bool AppendInitSegment(bool has_audio, bool has_video, 262 bool AppendInitSegment(bool has_audio, bool has_video,
265 bool video_content_encoded) { 263 bool video_content_encoded) {
266 return AppendInitSegment(kSourceId, has_audio, has_video, 264 return AppendInitSegment(kSourceId, has_audio, has_video,
267 video_content_encoded); 265 video_content_encoded);
268 } 266 }
269 267
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 AddSimpleBlock(&cb, kAudioTrackNum, 5); 819 AddSimpleBlock(&cb, kAudioTrackNum, 5);
822 AddSimpleBlock(&cb, kVideoTrackNum, 5); 820 AddSimpleBlock(&cb, kVideoTrackNum, 5);
823 AddSimpleBlock(&cb, kAudioTrackNum, 4); 821 AddSimpleBlock(&cb, kAudioTrackNum, 4);
824 AddSimpleBlock(&cb, kVideoTrackNum, 7); 822 AddSimpleBlock(&cb, kVideoTrackNum, 7);
825 scoped_ptr<Cluster> cluster(cb.Finish()); 823 scoped_ptr<Cluster> cluster(cb.Finish());
826 824
827 EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE)); 825 EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE));
828 ASSERT_TRUE(AppendData(cluster->data(), cluster->size())); 826 ASSERT_TRUE(AppendData(cluster->data(), cluster->size()));
829 } 827 }
830 828
831 TEST_F(ChunkDemuxerTest, TestMonotonicallyIncreasingTimestampsAcrossClusters) {
832 ASSERT_TRUE(InitDemuxer(true, true, false));
833
834 ClusterBuilder cb;
835
836 // Test monotonic increasing timestamps on a per stream
837 // basis across clusters.
838 cb.SetClusterTimecode(5);
839 AddSimpleBlock(&cb, kAudioTrackNum, 5);
840 AddSimpleBlock(&cb, kVideoTrackNum, 5);
841 scoped_ptr<Cluster> cluster_a(cb.Finish());
842
843 ASSERT_TRUE(AppendData(cluster_a->data(), cluster_a->size()));
844
845 cb.SetClusterTimecode(4);
846 AddSimpleBlock(&cb, kAudioTrackNum, 4);
847 AddSimpleBlock(&cb, kVideoTrackNum, 7);
848 scoped_ptr<Cluster> cluster_b(cb.Finish());
849
850 EXPECT_CALL(host_, OnDemuxerError(PIPELINE_ERROR_DECODE));
851 ASSERT_TRUE(AppendData(cluster_b->data(), cluster_b->size()));
852
853 // Verify that AppendData() doesn't accept more data now.
854 scoped_ptr<Cluster> cluster_c(GenerateCluster(10, 2));
855 EXPECT_FALSE(demuxer_->AppendData(kSourceId, cluster_c->data(),
856 cluster_c->size()));
857 }
858
859 // Test the case where a cluster is passed to AppendData() before 829 // Test the case where a cluster is passed to AppendData() before
860 // INFO & TRACKS data. 830 // INFO & TRACKS data.
861 TEST_F(ChunkDemuxerTest, TestClusterBeforeInitSegment) { 831 TEST_F(ChunkDemuxerTest, TestClusterBeforeInitSegment) {
862 EXPECT_CALL(*client_, DemuxerOpened(_)); 832 EXPECT_CALL(*client_, DemuxerOpened(_));
863 demuxer_->Initialize( 833 demuxer_->Initialize(
864 &host_, NewExpectedStatusCB(DEMUXER_ERROR_COULD_NOT_OPEN)); 834 &host_, NewExpectedStatusCB(DEMUXER_ERROR_COULD_NOT_OPEN));
865 835
866 ASSERT_EQ(AddId(), ChunkDemuxer::kOk); 836 ASSERT_EQ(AddId(), ChunkDemuxer::kOk);
867 837
868 scoped_ptr<Cluster> cluster(GenerateCluster(0, 1)); 838 scoped_ptr<Cluster> cluster(GenerateCluster(0, 1));
(...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 1437
1468 // Test a simple cluster. 1438 // Test a simple cluster.
1469 scoped_ptr<Cluster> cluster_1(GenerateSingleStreamCluster(0, 132, 1439 scoped_ptr<Cluster> cluster_1(GenerateSingleStreamCluster(0, 132,
1470 kVideoTrackNum, kVideoBlockDuration)); 1440 kVideoTrackNum, kVideoBlockDuration));
1471 1441
1472 ASSERT_TRUE(AppendData(cluster_1->data(), cluster_1->size())); 1442 ASSERT_TRUE(AppendData(cluster_1->data(), cluster_1->size()));
1473 1443
1474 CheckExpectedRanges("{ [0,132) }"); 1444 CheckExpectedRanges("{ [0,132) }");
1475 1445
1476 // Append a disjoint cluster to check for two separate ranges. 1446 // Append a disjoint cluster to check for two separate ranges.
1477 scoped_ptr<Cluster> cluster_2(GenerateSingleStreamCluster(150, 249, 1447 scoped_ptr<Cluster> cluster_2(GenerateSingleStreamCluster(200, 299,
1478 kVideoTrackNum, kVideoBlockDuration)); 1448 kVideoTrackNum, kVideoBlockDuration));
1479 1449
1480 ASSERT_TRUE(AppendData(cluster_2->data(), cluster_2->size())); 1450 ASSERT_TRUE(AppendData(cluster_2->data(), cluster_2->size()));
1481 1451
1482 CheckExpectedRanges("{ [0,132) [150,249) }"); 1452 CheckExpectedRanges("{ [0,132) [200,299) }");
1483 } 1453 }
1484 1454
1485 TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) { 1455 TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) {
1486 ASSERT_TRUE(InitDemuxer(true, true, false)); 1456 ASSERT_TRUE(InitDemuxer(true, true, false));
1487 1457
1488 // Audio: 0 -> 23 1458 // Audio: 0 -> 23
1489 // Video: 0 -> 33 1459 // Video: 0 -> 33
1490 // Buffered Range: 0 -> 23 1460 // Buffered Range: 0 -> 23
1491 // Audio block duration is smaller than video block duration, 1461 // Audio block duration is smaller than video block duration,
1492 // so the buffered ranges should correspond to the audio blocks. 1462 // so the buffered ranges should correspond to the audio blocks.
1493 scoped_ptr<Cluster> cluster_a0( 1463 scoped_ptr<Cluster> cluster_a0(
1494 GenerateSingleStreamCluster(0, kAudioBlockDuration, kAudioTrackNum, 1464 GenerateSingleStreamCluster(0, kAudioBlockDuration, kAudioTrackNum,
1495 kAudioBlockDuration)); 1465 kAudioBlockDuration));
1496 1466
1497 scoped_ptr<Cluster> cluster_v0( 1467 scoped_ptr<Cluster> cluster_v0(
1498 GenerateSingleStreamCluster(0, kVideoBlockDuration, kVideoTrackNum, 1468 GenerateSingleStreamCluster(0, kVideoBlockDuration, kVideoTrackNum,
1499 kVideoBlockDuration)); 1469 kVideoBlockDuration));
1500 1470
1501 ASSERT_TRUE(AppendData(cluster_a0->data(), cluster_a0->size())); 1471 ASSERT_TRUE(AppendData(cluster_a0->data(), cluster_a0->size()));
1502 ASSERT_TRUE(AppendData(cluster_v0->data(), cluster_v0->size())); 1472 ASSERT_TRUE(AppendData(cluster_v0->data(), cluster_v0->size()));
1503 1473
1504 CheckExpectedRanges("{ [0,23) }"); 1474 CheckExpectedRanges("{ [0,23) }");
1505 1475
1506 // Audio: 100 -> 150 1476 // Audio: 300 -> 400
1507 // Video: 120 -> 170 1477 // Video: 320 -> 420
1508 // Buffered Range: 120 -> 150 (end overlap) 1478 // Buffered Range: 320 -> 400 (end overlap)
1509 scoped_ptr<Cluster> cluster_a1( 1479 scoped_ptr<Cluster> cluster_a1(
1510 GenerateSingleStreamCluster(100, 150, kAudioTrackNum, 50)); 1480 GenerateSingleStreamCluster(300, 400, kAudioTrackNum, 50));
1511 1481
1512 scoped_ptr<Cluster> cluster_v1( 1482 scoped_ptr<Cluster> cluster_v1(
1513 GenerateSingleStreamCluster(120, 170, kVideoTrackNum, 50)); 1483 GenerateSingleStreamCluster(320, 420, kVideoTrackNum, 50));
1514 1484
1515 ASSERT_TRUE(AppendData(cluster_a1->data(), cluster_a1->size())); 1485 ASSERT_TRUE(AppendData(cluster_a1->data(), cluster_a1->size()));
1516 ASSERT_TRUE(AppendData(cluster_v1->data(), cluster_v1->size())); 1486 ASSERT_TRUE(AppendData(cluster_v1->data(), cluster_v1->size()));
1517 1487
1518 CheckExpectedRanges("{ [0,23) [120,150) }"); 1488 CheckExpectedRanges("{ [0,23) [320,400) }");
1519 1489
1520 // Audio: 220 -> 290 1490 // Audio: 520 -> 590
1521 // Video: 200 -> 270 1491 // Video: 500 -> 570
1522 // Buffered Range: 220 -> 270 (front overlap) 1492 // Buffered Range: 520 -> 570 (front overlap)
1523 scoped_ptr<Cluster> cluster_a2( 1493 scoped_ptr<Cluster> cluster_a2(
1524 GenerateSingleStreamCluster(220, 290, kAudioTrackNum, 70)); 1494 GenerateSingleStreamCluster(520, 590, kAudioTrackNum, 70));
1525 1495
1526 scoped_ptr<Cluster> cluster_v2( 1496 scoped_ptr<Cluster> cluster_v2(
1527 GenerateSingleStreamCluster(200, 270, kVideoTrackNum, 70)); 1497 GenerateSingleStreamCluster(500, 570, kVideoTrackNum, 70));
1528 1498
1529 ASSERT_TRUE(AppendData(cluster_a2->data(), cluster_a2->size())); 1499 ASSERT_TRUE(AppendData(cluster_a2->data(), cluster_a2->size()));
1530 ASSERT_TRUE(AppendData(cluster_v2->data(), cluster_v2->size())); 1500 ASSERT_TRUE(AppendData(cluster_v2->data(), cluster_v2->size()));
1531 1501
1532 CheckExpectedRanges("{ [0,23) [120,150) [220,270) }"); 1502 CheckExpectedRanges("{ [0,23) [320,400) [520,570) }");
1533 1503
1534 // Audio: 320 -> 350 1504 // Audio: 720 -> 750
1535 // Video: 300 -> 370 1505 // Video: 700 -> 770
1536 // Buffered Range: 320 -> 350 (complete overlap, audio) 1506 // Buffered Range: 720 -> 750 (complete overlap, audio)
1537 scoped_ptr<Cluster> cluster_a3( 1507 scoped_ptr<Cluster> cluster_a3(
1538 GenerateSingleStreamCluster(320, 350, kAudioTrackNum, 30)); 1508 GenerateSingleStreamCluster(720, 750, kAudioTrackNum, 30));
1539 1509
1540 scoped_ptr<Cluster> cluster_v3( 1510 scoped_ptr<Cluster> cluster_v3(
1541 GenerateSingleStreamCluster(300, 370, kVideoTrackNum, 70)); 1511 GenerateSingleStreamCluster(700, 770, kVideoTrackNum, 70));
1542 1512
1543 ASSERT_TRUE(AppendData(cluster_a3->data(), cluster_a3->size())); 1513 ASSERT_TRUE(AppendData(cluster_a3->data(), cluster_a3->size()));
1544 ASSERT_TRUE(AppendData(cluster_v3->data(), cluster_v3->size())); 1514 ASSERT_TRUE(AppendData(cluster_v3->data(), cluster_v3->size()));
1545 1515
1546 CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) }"); 1516 CheckExpectedRanges("{ [0,23) [320,400) [520,570) [720,750) }");
1547 1517
1548 // Audio: 400 -> 470 1518 // Audio: 900 -> 970
1549 // Video: 420 -> 450 1519 // Video: 920 -> 950
1550 // Buffered Range: 420 -> 450 (complete overlap, video) 1520 // Buffered Range: 920 -> 950 (complete overlap, video)
1551 scoped_ptr<Cluster> cluster_a4( 1521 scoped_ptr<Cluster> cluster_a4(
1552 GenerateSingleStreamCluster(400, 470, kAudioTrackNum, 70)); 1522 GenerateSingleStreamCluster(900, 970, kAudioTrackNum, 70));
1553 1523
1554 scoped_ptr<Cluster> cluster_v4( 1524 scoped_ptr<Cluster> cluster_v4(
1555 GenerateSingleStreamCluster(420, 450, kVideoTrackNum, 30)); 1525 GenerateSingleStreamCluster(920, 950, kVideoTrackNum, 30));
1556 1526
1557 ASSERT_TRUE(AppendData(cluster_a4->data(), cluster_a4->size())); 1527 ASSERT_TRUE(AppendData(cluster_a4->data(), cluster_a4->size()));
1558 ASSERT_TRUE(AppendData(cluster_v4->data(), cluster_v4->size())); 1528 ASSERT_TRUE(AppendData(cluster_v4->data(), cluster_v4->size()));
1559 1529
1560 CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) [420,450) }"); 1530 CheckExpectedRanges("{ [0,23) [320,400) [520,570) [720,750) [920,950) }");
1561 1531
1562 // Appending within buffered range should not affect buffered ranges. 1532 // Appending within buffered range should not affect buffered ranges.
1563 scoped_ptr<Cluster> cluster_a5( 1533 scoped_ptr<Cluster> cluster_a5(
1564 GenerateSingleStreamCluster(430, 450, kAudioTrackNum, 20)); 1534 GenerateSingleStreamCluster(930, 950, kAudioTrackNum, 20));
1565 ASSERT_TRUE(AppendData(cluster_a5->data(), cluster_a5->size())); 1535 ASSERT_TRUE(AppendData(cluster_a5->data(), cluster_a5->size()));
1566 CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) [420,450) }"); 1536 CheckExpectedRanges("{ [0,23) [320,400) [520,570) [720,750) [920,950) }");
1567 1537
1568 // Appending to single stream outside buffered ranges should not affect 1538 // Appending to single stream outside buffered ranges should not affect
1569 // buffered ranges. 1539 // buffered ranges.
1570 scoped_ptr<Cluster> cluster_v5( 1540 scoped_ptr<Cluster> cluster_v5(
1571 GenerateSingleStreamCluster(530, 540, kVideoTrackNum, 10)); 1541 GenerateSingleStreamCluster(1230, 1240, kVideoTrackNum, 10));
1572 ASSERT_TRUE(AppendData(cluster_v5->data(), cluster_v5->size())); 1542 ASSERT_TRUE(AppendData(cluster_v5->data(), cluster_v5->size()));
1573 CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) [420,450) }"); 1543 CheckExpectedRanges("{ [0,23) [320,400) [520,570) [720,750) [920,950) }");
1574 } 1544 }
1575 1545
1576 // Once EndOfStream() is called, GetBufferedRanges should not cut off any 1546 // Once EndOfStream() is called, GetBufferedRanges should not cut off any
1577 // over-hanging tails at the end of the ranges as this is likely due to block 1547 // over-hanging tails at the end of the ranges as this is likely due to block
1578 // duration differences. 1548 // duration differences.
1579 TEST_F(ChunkDemuxerTest, GetBufferedRanges_EndOfStream) { 1549 TEST_F(ChunkDemuxerTest, GetBufferedRanges_EndOfStream) {
1580 ASSERT_TRUE(InitDemuxer(true, true, false)); 1550 ASSERT_TRUE(InitDemuxer(true, true, false));
1581 1551
1582 scoped_ptr<Cluster> cluster_a( 1552 scoped_ptr<Cluster> cluster_a(
1583 GenerateSingleStreamCluster(0, 90, kAudioTrackNum, 90)); 1553 GenerateSingleStreamCluster(0, 90, kAudioTrackNum, 90));
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1656 EXPECT_EQ(demuxer_->AddId("source_id", "video/mp4", codecs), expected); 1626 EXPECT_EQ(demuxer_->AddId("source_id", "video/mp4", codecs), expected);
1657 } 1627 }
1658 1628
1659 TEST_F(ChunkDemuxerTest, TestEndOfStreamFailures) { 1629 TEST_F(ChunkDemuxerTest, TestEndOfStreamFailures) {
1660 std::string audio_id = "audio"; 1630 std::string audio_id = "audio";
1661 std::string video_id = "video"; 1631 std::string video_id = "video";
1662 1632
1663 ASSERT_TRUE(InitDemuxerAudioAndVideoSources(audio_id, video_id)); 1633 ASSERT_TRUE(InitDemuxerAudioAndVideoSources(audio_id, video_id));
1664 1634
1665 scoped_ptr<Cluster> cluster_a1( 1635 scoped_ptr<Cluster> cluster_a1(
1666 GenerateSingleStreamCluster(0, 15, kAudioTrackNum, 15)); 1636 GenerateSingleStreamCluster(0, 35, kAudioTrackNum, 35));
1667 scoped_ptr<Cluster> cluster_v1( 1637 scoped_ptr<Cluster> cluster_v1(
1668 GenerateSingleStreamCluster(0, 5, kVideoTrackNum, 5)); 1638 GenerateSingleStreamCluster(0, 10, kVideoTrackNum, 5));
1669 scoped_ptr<Cluster> cluster_v2( 1639 scoped_ptr<Cluster> cluster_v2(
1670 GenerateSingleStreamCluster(5, 10, kVideoTrackNum, 5)); 1640 GenerateSingleStreamCluster(10, 25, kVideoTrackNum, 5));
1671 scoped_ptr<Cluster> cluster_v3( 1641 scoped_ptr<Cluster> cluster_v3(
1672 GenerateSingleStreamCluster(10, 20, kVideoTrackNum, 10)); 1642 GenerateSingleStreamCluster(30, 50, kVideoTrackNum, 10));
1673 1643
1674 ASSERT_TRUE(AppendData(audio_id, cluster_a1->data(), cluster_a1->size())); 1644 ASSERT_TRUE(AppendData(audio_id, cluster_a1->data(), cluster_a1->size()));
1675 ASSERT_TRUE(AppendData(video_id, cluster_v1->data(), cluster_v1->size())); 1645 ASSERT_TRUE(AppendData(video_id, cluster_v1->data(), cluster_v1->size()));
1676 ASSERT_TRUE(AppendData(video_id, cluster_v3->data(), cluster_v3->size())); 1646 ASSERT_TRUE(AppendData(video_id, cluster_v3->data(), cluster_v3->size()));
1677 1647
1678 CheckExpectedRanges(audio_id, "{ [0,15) }"); 1648 CheckExpectedRanges(audio_id, "{ [0,35) }");
1679 CheckExpectedRanges(video_id, "{ [0,5) [10,20) }"); 1649 CheckExpectedRanges(video_id, "{ [0,10) [30,50) }");
1680 1650
1681 // Make sure that end of stream fails because there is a gap between 1651 // Make sure that end of stream fails because there is a gap between
1682 // the current position(0) and the end of the appended data. 1652 // the current position(0) and the end of the appended data.
1683 ASSERT_FALSE(demuxer_->EndOfStream(PIPELINE_OK)); 1653 ASSERT_FALSE(demuxer_->EndOfStream(PIPELINE_OK));
1684 1654
1685 // Seek to an time that is inside the last ranges for both streams 1655 // Seek to an time that is inside the last ranges for both streams
1686 // and verify that the EndOfStream() is successful. 1656 // and verify that the EndOfStream() is successful.
1687 demuxer_->StartWaitingForSeek(); 1657 demuxer_->StartWaitingForSeek();
1688 demuxer_->Seek(base::TimeDelta::FromMilliseconds(10), 1658 demuxer_->Seek(base::TimeDelta::FromMilliseconds(30),
1689 NewExpectedStatusCB(PIPELINE_OK)); 1659 NewExpectedStatusCB(PIPELINE_OK));
1690 1660
1691 ASSERT_TRUE(demuxer_->EndOfStream(PIPELINE_OK)); 1661 ASSERT_TRUE(demuxer_->EndOfStream(PIPELINE_OK));
1692 1662
1693 // Seek back to 0 and verify that EndOfStream() fails again. 1663 // Seek back to 0 and verify that EndOfStream() fails again.
1694 demuxer_->StartWaitingForSeek(); 1664 demuxer_->StartWaitingForSeek();
1695 demuxer_->Seek(base::TimeDelta::FromMilliseconds(0), 1665 demuxer_->Seek(base::TimeDelta::FromMilliseconds(0),
1696 NewExpectedStatusCB(PIPELINE_OK)); 1666 NewExpectedStatusCB(PIPELINE_OK));
1697 1667
1698 ASSERT_FALSE(demuxer_->EndOfStream(PIPELINE_OK)); 1668 ASSERT_FALSE(demuxer_->EndOfStream(PIPELINE_OK));
1699 1669
1700 // Append the missing range and verify that EndOfStream() succeeds now. 1670 // Append the missing range and verify that EndOfStream() succeeds now.
1701 ASSERT_TRUE(AppendData(video_id, cluster_v2->data(), cluster_v2->size())); 1671 ASSERT_TRUE(AppendData(video_id, cluster_v2->data(), cluster_v2->size()));
1702 1672
1703 CheckExpectedRanges(audio_id, "{ [0,15) }"); 1673 CheckExpectedRanges(audio_id, "{ [0,35) }");
1704 CheckExpectedRanges(video_id, "{ [0,20) }"); 1674 CheckExpectedRanges(video_id, "{ [0,50) }");
1705 1675
1706 ASSERT_TRUE(demuxer_->EndOfStream(PIPELINE_OK)); 1676 ASSERT_TRUE(demuxer_->EndOfStream(PIPELINE_OK));
1707 } 1677 }
1708 1678
1709 TEST_F(ChunkDemuxerTest, TestGetBufferedRangesBeforeInitSegment) { 1679 TEST_F(ChunkDemuxerTest, TestGetBufferedRangesBeforeInitSegment) {
1710 EXPECT_CALL(*client_, DemuxerOpened(_)); 1680 EXPECT_CALL(*client_, DemuxerOpened(_));
1711 demuxer_->Initialize(&host_, CreateInitDoneCB(PIPELINE_OK)); 1681 demuxer_->Initialize(&host_, CreateInitDoneCB(PIPELINE_OK));
1712 ASSERT_EQ(AddId("audio", true, false), ChunkDemuxer::kOk); 1682 ASSERT_EQ(AddId("audio", true, false), ChunkDemuxer::kOk);
1713 ASSERT_EQ(AddId("video", false, true), ChunkDemuxer::kOk); 1683 ASSERT_EQ(AddId("video", false, true), ChunkDemuxer::kOk);
1714 1684
1715 CheckExpectedRanges("audio", "{ }"); 1685 CheckExpectedRanges("audio", "{ }");
1716 CheckExpectedRanges("video", "{ }"); 1686 CheckExpectedRanges("video", "{ }");
1717 } 1687 }
1718 1688
1719 } // namespace media 1689 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698