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

Unified Diff: media/filters/chunk_demuxer_unittest.cc

Issue 10558011: Fix ChunkDemuxer so it properly outputs buffered ranges. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Changed everything to use media::Ranges. Created 8 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 side-by-side diff with in-line comments
Download patch
Index: media/filters/chunk_demuxer_unittest.cc
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc
index d55dff4fc2d00fff1676bf6badba0e24d0afe798..4078dea4d41f66f2ba7b6bab0a69e6af43aabd9c 100644
--- a/media/filters/chunk_demuxer_unittest.cc
+++ b/media/filters/chunk_demuxer_unittest.cc
@@ -256,7 +256,7 @@ class ChunkDemuxerTest : public testing::Test {
return false;
start += append_size;
- EXPECT_GT(buffered_bytes_, old_buffered_bytes);
+ EXPECT_GE(buffered_bytes_, old_buffered_bytes);
}
return true;
}
@@ -284,8 +284,11 @@ class ChunkDemuxerTest : public testing::Test {
PipelineStatusCB CreateInitDoneCB(const base::TimeDelta& expected_duration,
PipelineStatus expected_status) {
- if (expected_status == PIPELINE_OK)
+ if (expected_status == PIPELINE_OK) {
+ if (expected_duration != kInfiniteDuration())
+ EXPECT_CALL(host_, SetTotalBytes(_));
EXPECT_CALL(host_, SetDuration(expected_duration));
+ }
return base::Bind(&ChunkDemuxerTest::InitDoneCalled,
base::Unretained(this),
@@ -463,26 +466,17 @@ class ChunkDemuxerTest : public testing::Test {
}
}
- std::pair<base::TimeDelta, base::TimeDelta> CreateRange(
- int start_time, int block_count, int block_duration) {
- return std::make_pair(base::TimeDelta::FromMilliseconds(start_time),
- base::TimeDelta::FromMilliseconds(start_time +
- (block_count * block_duration)));
- }
+ void CheckExpectedRanges(const std::string& expected) {
+ Ranges<base::TimeDelta> r = demuxer_->GetBufferedRanges(kSourceId);
- void CheckExpectedRanges(const ChunkDemuxer::Ranges& expected_times) {
- ChunkDemuxer::Ranges actual_times;
- demuxer_->GetBufferedRanges(kSourceId, &actual_times);
- EXPECT_EQ(expected_times.size(), actual_times.size());
-
- for (ChunkDemuxer::Ranges::const_iterator actual_itr =
- actual_times.begin(), expected_itr = expected_times.begin();
- actual_itr != actual_times.end() &&
- expected_itr != expected_times.end();
- actual_itr++, expected_itr++) {
- EXPECT_EQ(expected_itr->first, actual_itr->first);
- EXPECT_EQ(expected_itr->second, actual_itr->second);
+ std::stringstream ss;
+ ss << "{ ";
+ for (size_t i = 0; i < r.size(); ++i) {
+ ss << "[" << r.start(i).InMilliseconds() << ","
+ << r.end(i).InMilliseconds() << ") ";
}
+ ss << "}";
+ EXPECT_EQ(expected, ss.str());
Ami GONE FROM CHROMIUM 2012/06/19 17:40:37 reverse args?
acolwell GONE FROM CHROMIUM 2012/06/19 19:50:15 This order makes |expected| appear with the error
Ami GONE FROM CHROMIUM 2012/06/19 20:23:38 True, but it runs counter to the order used in mos
acolwell GONE FROM CHROMIUM 2012/06/19 22:39:36 Switched here and in source_buffer_stream_unittest
}
MOCK_METHOD1(ReadDone, void(const scoped_refptr<DecoderBuffer>&));
@@ -1427,21 +1421,17 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioIdOnly) {
// Test a simple cluster.
scoped_ptr<Cluster> cluster_1(GenerateSingleStreamCluster(0, 4,
kAudioTrackNum, kAudioBlockDuration));
- ChunkDemuxer::Ranges expected;
- expected.push_back(CreateRange(0, 4, kAudioBlockDuration));
-
ASSERT_TRUE(AppendData(cluster_1->data(), cluster_1->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,92) }");
Ami GONE FROM CHROMIUM 2012/06/19 17:40:37 Is it easy to see that these numbers are right, he
acolwell GONE FROM CHROMIUM 2012/06/19 19:50:15 I've changed GenerateSingleStreamCluster() so that
// Append a disjoint cluster to check for two separate ranges.
scoped_ptr<Cluster> cluster_2(GenerateSingleStreamCluster(150, 3,
kAudioTrackNum, kAudioBlockDuration));
- expected.push_back(CreateRange(150, 3, kAudioBlockDuration));
ASSERT_TRUE(AppendData(cluster_2->data(), cluster_2->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,92) [150,219) }");
}
// Test ranges in a video-only stream.
@@ -1456,21 +1446,18 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_VideoIdOnly) {
// Test a simple cluster.
scoped_ptr<Cluster> cluster_1(GenerateSingleStreamCluster(0, 4,
kVideoTrackNum, kVideoBlockDuration));
- ChunkDemuxer::Ranges expected;
- expected.push_back(CreateRange(0, 4, kVideoBlockDuration));
ASSERT_TRUE(AppendData(cluster_1->data(), cluster_1->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,132) }");
// Append a disjoint cluster to check for two separate ranges.
scoped_ptr<Cluster> cluster_2(GenerateSingleStreamCluster(150, 3,
kVideoTrackNum, kVideoBlockDuration));
- expected.push_back(CreateRange(150, 3, kVideoBlockDuration));
ASSERT_TRUE(AppendData(cluster_2->data(), cluster_2->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,132) [150,249) }");
}
TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) {
@@ -1487,13 +1474,10 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) {
scoped_ptr<Cluster> cluster_v0(
GenerateSingleStreamCluster(0, 1, kVideoTrackNum, kVideoBlockDuration));
- ChunkDemuxer::Ranges expected;
- expected.push_back(CreateRange(0, 1, kAudioBlockDuration));
-
ASSERT_TRUE(AppendData(cluster_a0->data(), cluster_a0->size()));
ASSERT_TRUE(AppendData(cluster_v0->data(), cluster_v0->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,23) }");
// Audio: 100 -> 150
// Video: 120 -> 170
@@ -1504,12 +1488,10 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) {
scoped_ptr<Cluster> cluster_v1(
GenerateSingleStreamCluster(120, 1, kVideoTrackNum, 50));
- expected.push_back(CreateRange(120, 1, 30));
-
ASSERT_TRUE(AppendData(cluster_a1->data(), cluster_a1->size()));
ASSERT_TRUE(AppendData(cluster_v1->data(), cluster_v1->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,23) [120,150) }");
// Audio: 220 -> 290
// Video: 200 -> 270
@@ -1520,12 +1502,10 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) {
scoped_ptr<Cluster> cluster_v2(
GenerateSingleStreamCluster(200, 1, kVideoTrackNum, 70));
- expected.push_back(CreateRange(220, 1, 50));
-
ASSERT_TRUE(AppendData(cluster_a2->data(), cluster_a2->size()));
ASSERT_TRUE(AppendData(cluster_v2->data(), cluster_v2->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,23) [120,150) [220,270) }");
// Audio: 320 -> 350
// Video: 300 -> 370
@@ -1536,12 +1516,10 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) {
scoped_ptr<Cluster> cluster_v3(
GenerateSingleStreamCluster(300, 1, kVideoTrackNum, 70));
- expected.push_back(CreateRange(320, 1, 30));
-
ASSERT_TRUE(AppendData(cluster_a3->data(), cluster_a3->size()));
ASSERT_TRUE(AppendData(cluster_v3->data(), cluster_v3->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) }");
// Audio: 400 -> 470
// Video: 420 -> 450
@@ -1552,25 +1530,23 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_AudioVideo) {
scoped_ptr<Cluster> cluster_v4(
GenerateSingleStreamCluster(420, 1, kVideoTrackNum, 30));
- expected.push_back(CreateRange(420, 1, 30));
-
ASSERT_TRUE(AppendData(cluster_a4->data(), cluster_a4->size()));
ASSERT_TRUE(AppendData(cluster_v4->data(), cluster_v4->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) [420,450) }");
// Appending within buffered range should not affect buffered ranges.
scoped_ptr<Cluster> cluster_a5(
GenerateSingleStreamCluster(430, 1, kAudioTrackNum, 20));
ASSERT_TRUE(AppendData(cluster_a5->data(), cluster_a5->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) [420,450) }");
// Appending to single stream outside buffered ranges should not affect
// buffered ranges.
scoped_ptr<Cluster> cluster_v5(
GenerateSingleStreamCluster(530, 1, kVideoTrackNum, 10));
ASSERT_TRUE(AppendData(cluster_v5->data(), cluster_v5->size()));
- CheckExpectedRanges(expected);
+ CheckExpectedRanges("{ [0,23) [120,150) [220,270) [320,350) [420,450) }");
}
// Once EndOfStream() is called, GetBufferedRanges should not cut off any
@@ -1583,14 +1559,15 @@ TEST_F(ChunkDemuxerTest, GetBufferedRanges_EndOfStream) {
GenerateSingleStreamCluster(0, 1, kAudioTrackNum, 90));
scoped_ptr<Cluster> cluster_v(
GenerateSingleStreamCluster(0, 1, kVideoTrackNum, 100));
- ChunkDemuxer::Ranges expected;
- expected.push_back(CreateRange(0, 1, 100));
ASSERT_TRUE(AppendData(cluster_a->data(), cluster_a->size()));
ASSERT_TRUE(AppendData(cluster_v->data(), cluster_v->size()));
+ CheckExpectedRanges("{ [0,90) }");
+
demuxer_->EndOfStream(PIPELINE_OK);
- CheckExpectedRanges(expected);
+
+ CheckExpectedRanges("{ [0,100) }");
}
TEST_F(ChunkDemuxerTest, TestDifferentStreamTimecodes) {

Powered by Google App Engine
This is Rietveld 408576698