| Index: media/filters/chunk_demuxer_unittest.cc
|
| diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
|
| index 1570beac5b8fc57a119404aa6e58819ab5ff54a4..71ebe9adfd7e2d2a8a48492a52426ad07ae2f0ad 100644
|
| --- a/media/filters/chunk_demuxer_unittest.cc
|
| +++ b/media/filters/chunk_demuxer_unittest.cc
|
| @@ -47,6 +47,8 @@ static const int kVideoBlockDuration = 33;
|
|
|
| static const char* kSourceId = "SourceId";
|
| static const char* kDefaultFirstClusterRange = "{ [0,46) }";
|
| +static const int kDefaultFirstClusterEndTimestamp = 66;
|
| +static const int kDefaultSecondClusterEndTimestamp = 132;
|
|
|
| base::TimeDelta kDefaultDuration() {
|
| return base::TimeDelta::FromMilliseconds(201224);
|
| @@ -1100,6 +1102,8 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamWithPendingReads) {
|
| end_of_stream_helper_1.CheckIfReadDonesWereCalled(false);
|
| end_of_stream_helper_2.CheckIfReadDonesWereCalled(false);
|
|
|
| + EXPECT_CALL(host_, SetDuration(
|
| + base::TimeDelta::FromMilliseconds(kVideoBlockDuration)));
|
| demuxer_->EndOfStream(PIPELINE_OK);
|
|
|
| end_of_stream_helper_1.CheckIfReadDonesWereCalled(true);
|
| @@ -1139,6 +1143,8 @@ TEST_F(ChunkDemuxerTest, TestReadsAfterEndOfStream) {
|
| EXPECT_TRUE(video_read_done_1);
|
| end_of_stream_helper_1.CheckIfReadDonesWereCalled(false);
|
|
|
| + EXPECT_CALL(host_, SetDuration(
|
| + base::TimeDelta::FromMilliseconds(kVideoBlockDuration)));
|
| EXPECT_TRUE(demuxer_->EndOfStream(PIPELINE_OK));
|
|
|
| end_of_stream_helper_1.CheckIfReadDonesWereCalled(true);
|
| @@ -1697,6 +1703,7 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_EndOfStream) {
|
|
|
| CheckExpectedRanges("{ [0,90) }");
|
|
|
| + EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(100)));
|
| demuxer_->EndOfStream(PIPELINE_OK);
|
|
|
| CheckExpectedRanges("{ [0,100) }");
|
| @@ -1813,6 +1820,7 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamFailures) {
|
|
|
| // Make sure that end of stream fails because there is a gap between
|
| // the current position(0) and the end of the appended data.
|
| + EXPECT_CALL(host_, SetDuration(base::TimeDelta::FromMilliseconds(50)));
|
| ASSERT_FALSE(demuxer_->EndOfStream(PIPELINE_OK));
|
|
|
| // Seek to an time that is inside the last ranges for both streams
|
| @@ -1863,6 +1871,8 @@ TEST_F(ChunkDemuxerTest, TestEndOfStreamDuringSeek) {
|
| demuxer_->StartWaitingForSeek();
|
|
|
| ASSERT_TRUE(AppendData(cluster_b->data(), cluster_b->size()));
|
| + EXPECT_CALL(host_, SetDuration(
|
| + base::TimeDelta::FromMilliseconds(kDefaultSecondClusterEndTimestamp)));
|
| demuxer_->EndOfStream(PIPELINE_OK);
|
|
|
| demuxer_->Seek(base::TimeDelta::FromSeconds(0),
|
| @@ -2133,20 +2143,36 @@ TEST_F(ChunkDemuxerTest, TestTimestampOffsetMidParse) {
|
|
|
| TEST_F(ChunkDemuxerTest, TestDurationChange) {
|
| ASSERT_TRUE(InitDemuxer(true, true, false));
|
| + static const int kStreamDuration = kDefaultDuration().InMilliseconds();
|
|
|
| // Add data leading up to the currently set duration.
|
| scoped_ptr<Cluster> first_cluster = GenerateCluster(
|
| - kDefaultDuration().InMilliseconds() - kAudioBlockDuration,
|
| - kDefaultDuration().InMilliseconds() - kVideoBlockDuration, 2);
|
| + kStreamDuration - kAudioBlockDuration,
|
| + kStreamDuration - kVideoBlockDuration, 2);
|
| ASSERT_TRUE(AppendData(first_cluster->data(), first_cluster->size()));
|
|
|
| - // Now add data past the duration and expect a new duration to be signalled.
|
| + CheckExpectedRanges(kSourceId, "{ [201191,201224) }");
|
| +
|
| + // Add data at the currently set duration. The duration should not increase.
|
| scoped_ptr<Cluster> second_cluster = GenerateCluster(
|
| - kDefaultDuration().InMilliseconds(), 4);
|
| - EXPECT_CALL(host_, SetDuration(
|
| - kDefaultDuration() + base::TimeDelta::FromMilliseconds(
|
| - kAudioBlockDuration * 2)));
|
| + kDefaultDuration().InMilliseconds(), 2);
|
| ASSERT_TRUE(AppendData(second_cluster->data(), second_cluster->size()));
|
| +
|
| + // Range should not be affected.
|
| + CheckExpectedRanges(kSourceId, "{ [201191,201224) }");
|
| +
|
| + // Now add data past the duration and expect a new duration to be signalled.
|
| + static const int kNewStreamDuration =
|
| + kStreamDuration + kAudioBlockDuration * 2;
|
| + scoped_ptr<Cluster> third_cluster = GenerateCluster(
|
| + kStreamDuration + kAudioBlockDuration,
|
| + kStreamDuration + kVideoBlockDuration, 2);
|
| + EXPECT_CALL(host_, SetDuration(
|
| + base::TimeDelta::FromMilliseconds(kNewStreamDuration)));
|
| + ASSERT_TRUE(AppendData(third_cluster->data(), third_cluster->size()));
|
| +
|
| + // See that the range has increased appropriately.
|
| + CheckExpectedRanges(kSourceId, "{ [201191,201270) }");
|
| }
|
|
|
| TEST_F(ChunkDemuxerTest, TestDurationChangeTimestampOffset) {
|
| @@ -2162,4 +2188,15 @@ TEST_F(ChunkDemuxerTest, TestDurationChangeTimestampOffset) {
|
| ASSERT_TRUE(AppendData(cluster->data(), cluster->size()));
|
| }
|
|
|
| +TEST_F(ChunkDemuxerTest, TestEndOfStreamTruncateDuration) {
|
| + ASSERT_TRUE(InitDemuxer(true, true, false));
|
| +
|
| + scoped_ptr<Cluster> cluster_a(kDefaultFirstCluster());
|
| + ASSERT_TRUE(AppendData(cluster_a->data(), cluster_a->size()));
|
| +
|
| + EXPECT_CALL(host_, SetDuration(
|
| + base::TimeDelta::FromMilliseconds(kDefaultFirstClusterEndTimestamp)));
|
| + demuxer_->EndOfStream(PIPELINE_OK);
|
| +}
|
| +
|
| } // namespace media
|
|
|