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

Unified Diff: media/filters/source_buffer_stream_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 + fix clang errors 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/source_buffer_stream.cc ('k') | media/webm/webm_cluster_parser.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/source_buffer_stream_unittest.cc
diff --git a/media/filters/source_buffer_stream_unittest.cc b/media/filters/source_buffer_stream_unittest.cc
index 8dbf69d040967a9c368a98298ea1698619c8553f..3a116616a54eb4554771c5076f08355e35c6700f 100644
--- a/media/filters/source_buffer_stream_unittest.cc
+++ b/media/filters/source_buffer_stream_unittest.cc
@@ -19,6 +19,7 @@ static const int kDataSize = 1;
class SourceBufferStreamTest : public testing::Test {
protected:
SourceBufferStreamTest() {
+ stream_.reset(new SourceBufferStream(config_));
SetStreamInfo(kDefaultFramesPerSecond, kDefaultKeyframesPerSecond);
}
@@ -28,35 +29,47 @@ class SourceBufferStreamTest : public testing::Test {
frame_duration_ = ConvertToFrameDuration(frames_per_second);
}
- void AppendBuffers(int starting_position, int number_of_buffers) {
- AppendBuffers(starting_position, number_of_buffers,
+ void NewSegmentAppend(int starting_position, int number_of_buffers) {
+ AppendBuffers(starting_position, number_of_buffers, true,
base::TimeDelta(), true, NULL, 0);
}
- void AppendBuffers(int starting_position, int number_of_buffers,
- const uint8* data) {
- AppendBuffers(starting_position, number_of_buffers,
+ void NewSegmentAppend(int starting_position, int number_of_buffers,
+ const uint8* data) {
+ AppendBuffers(starting_position, number_of_buffers, true,
base::TimeDelta(), true, data, kDataSize);
}
- void AppendBuffers(int starting_position, int number_of_buffers,
- base::TimeDelta first_buffer_offset) {
- AppendBuffers(starting_position, number_of_buffers,
+ void NewSegmentAppend_OffsetFirstBuffer(
+ int starting_position, int number_of_buffers,
+ base::TimeDelta first_buffer_offset) {
+ AppendBuffers(starting_position, number_of_buffers, true,
first_buffer_offset, true, NULL, 0);
}
- void AppendBuffers_ExpectFailure(
+ void NewSegmentAppend_ExpectFailure(
int starting_position, int number_of_buffers) {
- AppendBuffers(starting_position, number_of_buffers,
+ AppendBuffers(starting_position, number_of_buffers, true,
base::TimeDelta(), false, NULL, 0);
}
+ void AppendBuffers(int starting_position, int number_of_buffers) {
+ AppendBuffers(starting_position, number_of_buffers, false,
+ base::TimeDelta(), true, NULL, 0);
+ }
+
+ void AppendBuffers(int starting_position, int number_of_buffers,
+ const uint8* data) {
+ AppendBuffers(starting_position, number_of_buffers, false,
+ base::TimeDelta(), true, data, kDataSize);
+ }
+
void Seek(int position) {
- stream_.Seek(position * frame_duration_);
+ stream_->Seek(position * frame_duration_);
}
void CheckExpectedRanges(const std::string& expected) {
- Ranges<base::TimeDelta> r = stream_.GetBufferedTime();
+ Ranges<base::TimeDelta> r = stream_->GetBufferedTime();
std::stringstream ss;
ss << "{ ";
@@ -99,7 +112,7 @@ class SourceBufferStreamTest : public testing::Test {
int current_position = starting_position;
for (; current_position <= ending_position; current_position++) {
scoped_refptr<StreamParserBuffer> buffer;
- if (!stream_.GetNextBuffer(&buffer))
+ if (!stream_->GetNextBuffer(&buffer))
break;
if (expect_keyframe && current_position == starting_position)
@@ -123,12 +136,13 @@ class SourceBufferStreamTest : public testing::Test {
void CheckNoNextBuffer() {
scoped_refptr<StreamParserBuffer> buffer;
- EXPECT_FALSE(stream_.GetNextBuffer(&buffer));
+ EXPECT_FALSE(stream_->GetNextBuffer(&buffer));
}
base::TimeDelta frame_duration() const { return frame_duration_; }
- SourceBufferStream stream_;
+ scoped_ptr<SourceBufferStream> stream_;
+ VideoDecoderConfig config_;
private:
base::TimeDelta ConvertToFrameDuration(int frames_per_second) {
@@ -136,12 +150,17 @@ class SourceBufferStreamTest : public testing::Test {
base::Time::kMicrosecondsPerSecond / frames_per_second);
}
- void AppendBuffers(int starting_position, int number_of_buffers,
+ void AppendBuffers(int starting_position,
+ int number_of_buffers,
+ bool begin_media_segment,
base::TimeDelta first_buffer_offset,
- bool expect_success, const uint8* data, int size) {
+ bool expect_success,
+ const uint8* data,
+ int size) {
+ if (begin_media_segment)
+ stream_->OnNewMediaSegment(starting_position * frame_duration_);
+
int keyframe_interval = frames_per_second_ / keyframes_per_second_;
- base::TimeDelta media_segment_start_time =
- starting_position * frame_duration_;
SourceBufferStream::BufferQueue queue;
for (int i = 0; i < number_of_buffers; i++) {
@@ -149,13 +168,10 @@ class SourceBufferStreamTest : public testing::Test {
bool is_keyframe = position % keyframe_interval == 0;
scoped_refptr<StreamParserBuffer> buffer =
StreamParserBuffer::CopyFrom(data, size, is_keyframe);
- base::TimeDelta duration = frame_duration_;
base::TimeDelta timestamp = frame_duration_ * position;
- if (i == 0) {
- duration -= first_buffer_offset;
+
+ if (i == 0)
timestamp += first_buffer_offset;
- }
- buffer->SetDuration(duration);
buffer->SetDecodeTimestamp(timestamp);
// Simulate an IBB...BBP pattern in which all B-frames reference both
@@ -175,7 +191,8 @@ class SourceBufferStreamTest : public testing::Test {
queue.push_back(buffer);
}
- EXPECT_EQ(stream_.Append(queue, media_segment_start_time), expect_success);
+ if (!queue.empty())
+ EXPECT_EQ(expect_success, stream_->Append(queue));
}
int frames_per_second_;
@@ -186,7 +203,7 @@ class SourceBufferStreamTest : public testing::Test {
TEST_F(SourceBufferStreamTest, Append_SingleRange) {
// Append 15 buffers at positions 0 through 14.
- AppendBuffers(0, 15);
+ NewSegmentAppend(0, 15);
// Check expected range.
CheckExpectedRanges("{ [0,14) }");
@@ -197,7 +214,8 @@ TEST_F(SourceBufferStreamTest, Append_SingleRange) {
TEST_F(SourceBufferStreamTest, Append_SingleRange_OneBufferAtATime) {
// Append 15 buffers starting at position 0, one buffer at a time.
- for (int i = 0; i < 15; i++)
+ NewSegmentAppend(0, 1);
+ for (int i = 1; i < 15; i++)
AppendBuffers(i, 1);
// Check expected range.
@@ -209,10 +227,10 @@ TEST_F(SourceBufferStreamTest, Append_SingleRange_OneBufferAtATime) {
TEST_F(SourceBufferStreamTest, Append_DisjointRanges) {
// Append 5 buffers at positions 0 through 4.
- AppendBuffers(0, 5);
+ NewSegmentAppend(0, 5);
// Append 10 buffers at positions 15 through 24.
- AppendBuffers(15, 10);
+ NewSegmentAppend(15, 10);
// Check expected ranges.
CheckExpectedRanges("{ [0,4) [15,24) }");
@@ -224,14 +242,14 @@ TEST_F(SourceBufferStreamTest, Append_DisjointRanges) {
}
TEST_F(SourceBufferStreamTest, Append_AdjacentRanges) {
- // Append 12 buffers at positions 0 through 11.
- AppendBuffers(0, 12);
+ // Append 10 buffers at positions 0 through 9.
+ NewSegmentAppend(0, 10);
// Append 11 buffers at positions 15 through 25.
- AppendBuffers(15, 11);
+ NewSegmentAppend(15, 11);
- // Append 3 buffers at positions 12 through 14 to bridge the gap.
- AppendBuffers(12, 3);
+ // Append 5 buffers at positions 10 through 14 to bridge the gap.
+ NewSegmentAppend(10, 5);
// Check expected range.
CheckExpectedRanges("{ [0,25) }");
@@ -242,10 +260,10 @@ TEST_F(SourceBufferStreamTest, Append_AdjacentRanges) {
TEST_F(SourceBufferStreamTest, Append_DoesNotBeginWithKeyframe) {
// Append fails because the range doesn't begin with a keyframe.
- AppendBuffers_ExpectFailure(3, 5);
+ NewSegmentAppend_ExpectFailure(3, 2);
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10);
+ NewSegmentAppend(5, 10);
// Check expected range.
CheckExpectedRanges("{ [5,14) }");
@@ -254,18 +272,34 @@ TEST_F(SourceBufferStreamTest, Append_DoesNotBeginWithKeyframe) {
CheckExpectedBuffers(5, 14);
// Append fails because the range doesn't begin with a keyframe.
- AppendBuffers_ExpectFailure(17, 10);
+ NewSegmentAppend_ExpectFailure(17, 3);
+
CheckExpectedRanges("{ [5,14) }");
Seek(5);
CheckExpectedBuffers(5, 14);
}
+TEST_F(SourceBufferStreamTest, Append_DoesNotBeginWithKeyframe_Adjacent) {
+ // Append 8 buffers at positions 0 through 7.
+ NewSegmentAppend(0, 8);
+
+ // Now start a new media segment at position 8. Append should fail because
+ // the media segment does not begin with a keyframe.
+ NewSegmentAppend_ExpectFailure(8, 2);
+
+ // Check expected range.
+ CheckExpectedRanges("{ [0,7) }");
+ // Check buffers in range.
+ Seek(0);
+ CheckExpectedBuffers(0, 7);
+}
+
TEST_F(SourceBufferStreamTest, Complete_Overlap) {
// Append 5 buffers at positions 5 through 9.
- AppendBuffers(5, 5);
+ NewSegmentAppend(5, 5);
// Append 15 buffers at positions 0 through 14.
- AppendBuffers(0, 15);
+ NewSegmentAppend(0, 15);
// Check expected range.
CheckExpectedRanges("{ [0,14) }");
@@ -280,10 +314,10 @@ TEST_F(SourceBufferStreamTest, Complete_Overlap_EdgeCase) {
SetStreamInfo(30, 30);
// Append 6 buffers at positions 6 through 11.
- AppendBuffers(6, 6);
+ NewSegmentAppend(6, 6);
// Append 8 buffers at positions 5 through 12.
- AppendBuffers(5, 8);
+ NewSegmentAppend(5, 8);
// Check expected range.
CheckExpectedRanges("{ [5,12) }");
@@ -293,25 +327,25 @@ TEST_F(SourceBufferStreamTest, Complete_Overlap_EdgeCase) {
}
TEST_F(SourceBufferStreamTest, Start_Overlap) {
- // Append 5 buffers at positions 5 through 9.
- AppendBuffers(5, 5);
+ // Append 10 buffers at positions 5 through 14.
+ NewSegmentAppend(5, 5);
- // Append 6 buffers at positions 8 through 13.
- AppendBuffers(8, 6);
+ // Append 6 buffers at positions 10 through 15.
+ NewSegmentAppend(10, 6);
// Check expected range.
- CheckExpectedRanges("{ [5,13) }");
+ CheckExpectedRanges("{ [5,15) }");
// Check buffers in range.
Seek(5);
- CheckExpectedBuffers(5, 13);
+ CheckExpectedBuffers(5, 15);
}
TEST_F(SourceBufferStreamTest, End_Overlap) {
// Append 10 buffers at positions 10 through 19.
- AppendBuffers(10, 10);
+ NewSegmentAppend(10, 10);
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10);
+ NewSegmentAppend(5, 10);
// Check expected range.
CheckExpectedRanges("{ [5,19) }");
@@ -322,10 +356,10 @@ TEST_F(SourceBufferStreamTest, End_Overlap) {
TEST_F(SourceBufferStreamTest, End_Overlap_Several) {
// Append 10 buffers at positions 10 through 19.
- AppendBuffers(10, 10);
+ NewSegmentAppend(10, 10);
// Append 8 buffers at positions 5 through 12.
- AppendBuffers(5, 8);
+ NewSegmentAppend(5, 8);
// Check expected ranges: stream should not have kept buffers 13 and 14
// because the keyframe on which they depended was overwritten.
@@ -342,19 +376,19 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Several) {
TEST_F(SourceBufferStreamTest, Complete_Overlap_Several) {
// Append 2 buffers at positions 5 through 6.
- AppendBuffers(5, 2);
+ NewSegmentAppend(5, 2);
// Append 2 buffers at positions 10 through 11.
- AppendBuffers(10, 2);
+ NewSegmentAppend(10, 2);
// Append 2 buffers at positions 15 through 16.
- AppendBuffers(15, 2);
+ NewSegmentAppend(15, 2);
// Check expected ranges.
CheckExpectedRanges("{ [5,6) [10,11) [15,16) }");
// Append buffers at positions 0 through 19.
- AppendBuffers(0, 20);
+ NewSegmentAppend(0, 20);
// Check expected range.
CheckExpectedRanges("{ [0,19) }");
@@ -365,19 +399,19 @@ TEST_F(SourceBufferStreamTest, Complete_Overlap_Several) {
TEST_F(SourceBufferStreamTest, Complete_Overlap_Several_Then_Merge) {
// Append 2 buffers at positions 5 through 6.
- AppendBuffers(5, 2);
+ NewSegmentAppend(5, 2);
// Append 2 buffers at positions 10 through 11.
- AppendBuffers(10, 2);
+ NewSegmentAppend(10, 2);
// Append 2 buffers at positions 15 through 16.
- AppendBuffers(15, 2);
+ NewSegmentAppend(15, 2);
// Append 2 buffers at positions 20 through 21.
- AppendBuffers(20, 2);
+ NewSegmentAppend(20, 2);
// Append buffers at positions 0 through 19.
- AppendBuffers(0, 20);
+ NewSegmentAppend(0, 20);
// Check expected ranges.
CheckExpectedRanges("{ [0,21) }");
@@ -388,13 +422,13 @@ TEST_F(SourceBufferStreamTest, Complete_Overlap_Several_Then_Merge) {
TEST_F(SourceBufferStreamTest, Complete_Overlap_Selected) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to buffer at position 5.
Seek(5);
// Replace old data with new data.
- AppendBuffers(5, 10, &kDataB);
+ NewSegmentAppend(5, 10, &kDataB);
// Check ranges are correct.
CheckExpectedRanges("{ [5,14) }");
@@ -409,14 +443,14 @@ TEST_F(SourceBufferStreamTest, Complete_Overlap_Selected) {
// the keyframe of the new data, after which it will return the new data.
TEST_F(SourceBufferStreamTest, Complete_Overlap_Selected_TrackBuffer) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to buffer at position 5 and get next buffer.
Seek(5);
CheckExpectedBuffers(5, 5, &kDataA);
// Do a complete overlap by appending 20 buffers at positions 0 through 19.
- AppendBuffers(0, 20, &kDataB);
+ NewSegmentAppend(0, 20, &kDataB);
// Check range is correct.
CheckExpectedRanges("{ [0,19) }");
@@ -438,14 +472,14 @@ TEST_F(SourceBufferStreamTest, Complete_Overlap_Selected_TrackBuffer) {
TEST_F(SourceBufferStreamTest, Complete_Overlap_Selected_EdgeCase) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to buffer at position 5 and get next buffer.
Seek(5);
CheckExpectedBuffers(5, 5, &kDataA);
// Replace existing data with new data.
- AppendBuffers(5, 10, &kDataB);
+ NewSegmentAppend(5, 10, &kDataB);
// Check ranges are correct.
CheckExpectedRanges("{ [5,14) }");
@@ -470,23 +504,23 @@ TEST_F(SourceBufferStreamTest, Complete_Overlap_Selected_Multiple) {
static const uint8 kDataD = 0x77;
// Append 5 buffers at positions 5 through 9.
- AppendBuffers(5, 5, &kDataA);
+ NewSegmentAppend(5, 5, &kDataA);
// Seek to buffer at position 5 and get next buffer.
Seek(5);
CheckExpectedBuffers(5, 5, &kDataA);
// Replace existing data with new data.
- AppendBuffers(5, 5, &kDataB);
+ NewSegmentAppend(5, 5, &kDataB);
// Then replace it again with different data.
- AppendBuffers(5, 5, &kDataC);
+ NewSegmentAppend(5, 5, &kDataC);
// Now append 5 new buffers at positions 10 through 14.
- AppendBuffers(10, 5, &kDataC);
+ NewSegmentAppend(10, 5, &kDataC);
// Now replace all the data entirely.
- AppendBuffers(5, 10, &kDataD);
+ NewSegmentAppend(5, 10, &kDataD);
// Expect buffers 6 through 9 to be DataA, and the remaining
// buffers to be kDataD.
@@ -503,11 +537,11 @@ TEST_F(SourceBufferStreamTest, Complete_Overlap_Selected_Multiple) {
TEST_F(SourceBufferStreamTest, Start_Overlap_Selected) {
// Append 10 buffers at positions 0 through 9.
- AppendBuffers(0, 10, &kDataA);
+ NewSegmentAppend(0, 10, &kDataA);
// Seek to position 5, then add buffers to overlap data at that position.
Seek(5);
- AppendBuffers(5, 10, &kDataB);
+ NewSegmentAppend(5, 10, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,14) }");
@@ -523,14 +557,14 @@ TEST_F(SourceBufferStreamTest, Start_Overlap_Selected) {
TEST_F(SourceBufferStreamTest, Start_Overlap_Selected_TrackBuffer) {
// Append 15 buffers at positions 0 through 14.
- AppendBuffers(0, 15, &kDataA);
+ NewSegmentAppend(0, 15, &kDataA);
// Seek to 10 and get buffer.
Seek(10);
CheckExpectedBuffers(10, 10, &kDataA);
// Now append 10 buffers of new data at positions 10 through 19.
- AppendBuffers(10, 10, &kDataB);
+ NewSegmentAppend(10, 10, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,19) }");
@@ -555,13 +589,13 @@ TEST_F(SourceBufferStreamTest, Start_Overlap_Selected_TrackBuffer) {
TEST_F(SourceBufferStreamTest, Start_Overlap_Selected_EdgeCase) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
Seek(10);
CheckExpectedBuffers(10, 10, &kDataA);
// Now replace the last 5 buffers with new data.
- AppendBuffers(10, 5, &kDataB);
+ NewSegmentAppend(10, 5, &kDataB);
// The next 4 buffers should be the origial data, held in the track buffer.
CheckExpectedBuffers(11, 14, &kDataA);
@@ -571,7 +605,7 @@ TEST_F(SourceBufferStreamTest, Start_Overlap_Selected_EdgeCase) {
CheckNoNextBuffer();
// Now append data at 15 through 19 and check to make sure it's correct.
- AppendBuffers(15, 5, &kDataB);
+ NewSegmentAppend(15, 5, &kDataB);
CheckExpectedBuffers(15, 19, &kDataB);
// Seek to beginning of buffered range and check buffers.
@@ -592,13 +626,13 @@ TEST_F(SourceBufferStreamTest, Start_Overlap_Selected_EdgeCase) {
// after: B b b b b*B*b b b b A a a a a
TEST_F(SourceBufferStreamTest, End_Overlap_Selected) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to position 5.
Seek(5);
// Now append 10 buffers at positions 0 through 9.
- AppendBuffers(0, 10, &kDataB);
+ NewSegmentAppend(0, 10, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,14) }");
@@ -622,14 +656,14 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Selected) {
// after: |B b b b b B b b b b A a a*a*a|
TEST_F(SourceBufferStreamTest, End_Overlap_Selected_AfterEndOfNew_1) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to position 10, then move to position 13.
Seek(10);
CheckExpectedBuffers(10, 12, &kDataA);
// Now append 10 buffers at positions 0 through 9.
- AppendBuffers(0, 10, &kDataB);
+ NewSegmentAppend(0, 10, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,14) }");
@@ -654,14 +688,14 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Selected_AfterEndOfNew_1) {
// after: |B b b b b B b b| |A a a*a*a|
TEST_F(SourceBufferStreamTest, End_Overlap_Selected_AfterEndOfNew_2) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to position 10, then move to position 13.
Seek(10);
CheckExpectedBuffers(10, 12, &kDataA);
// Now append 8 buffers at positions 0 through 7.
- AppendBuffers(0, 8, &kDataB);
+ NewSegmentAppend(0, 8, &kDataB);
// Check expected ranges.
CheckExpectedRanges("{ [0,7) [10,14) }");
@@ -690,14 +724,14 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Selected_AfterEndOfNew_2) {
// track: |a a|
TEST_F(SourceBufferStreamTest, End_Overlap_Selected_AfterEndOfNew_3) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to position 5, then move to position 8.
Seek(5);
CheckExpectedBuffers(5, 7, &kDataA);
// Now append 8 buffers at positions 0 through 7.
- AppendBuffers(0, 8, &kDataB);
+ NewSegmentAppend(0, 8, &kDataB);
// Check expected ranges.
CheckExpectedRanges("{ [0,7) [10,14) }");
@@ -725,14 +759,14 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Selected_AfterEndOfNew_3) {
// track: |a a|
TEST_F(SourceBufferStreamTest, End_Overlap_Selected_OverlappedByNew_1) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to position 5, then move to position 8.
Seek(5);
CheckExpectedBuffers(5, 7, &kDataA);
// Now append 10 buffers at positions 0 through 9.
- AppendBuffers(0, 10, &kDataB);
+ NewSegmentAppend(0, 10, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,14) }");
@@ -760,14 +794,14 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Selected_OverlappedByNew_1) {
// track: |a a a a|
TEST_F(SourceBufferStreamTest, End_Overlap_Selected_OverlappedByNew_2) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to position 5, then move to position 6.
Seek(5);
CheckExpectedBuffers(5, 5, &kDataA);
// Now append 7 buffers at positions 0 through 6.
- AppendBuffers(0, 7, &kDataB);
+ NewSegmentAppend(0, 7, &kDataB);
// Check expected ranges.
CheckExpectedRanges("{ [0,6) [10,14) }");
@@ -798,14 +832,14 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Selected_OverlappedByNew_2) {
// track: |a a a a|
TEST_F(SourceBufferStreamTest, End_Overlap_Selected_OverlappedByNew_3) {
// Append 15 buffers at positions 5 through 19.
- AppendBuffers(5, 15, &kDataA);
+ NewSegmentAppend(5, 15, &kDataA);
// Seek to position 5, then move to position 6.
Seek(5);
CheckExpectedBuffers(5, 5, &kDataA);
// Now append 13 buffers at positions 0 through 12.
- AppendBuffers(0, 13, &kDataB);
+ NewSegmentAppend(0, 13, &kDataB);
// Check expected ranges.
CheckExpectedRanges("{ [0,12) [15,19) }");
@@ -834,14 +868,14 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Selected_OverlappedByNew_3) {
// track: |a a a a|
TEST_F(SourceBufferStreamTest, End_Overlap_Selected_NoKeyframeAfterNew) {
// Append 5 buffers at positions 5 through 9.
- AppendBuffers(5, 5, &kDataA);
+ NewSegmentAppend(5, 5, &kDataA);
// Seek to position 5, then move to position 6.
Seek(5);
CheckExpectedBuffers(5, 5, &kDataA);
// Now append 6 buffers at positions 0 through 5.
- AppendBuffers(0, 6, &kDataB);
+ NewSegmentAppend(0, 6, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,5) }");
@@ -868,13 +902,13 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Selected_NoKeyframeAfterNew) {
// after: A a a a a*B*b b b b A a a a a
TEST_F(SourceBufferStreamTest, Middle_Overlap_Selected_1) {
// Append 15 buffers at positions 0 through 14.
- AppendBuffers(0, 15, &kDataA);
+ NewSegmentAppend(0, 15, &kDataA);
// Seek to position 5.
Seek(5);
// Now append 5 buffers at positions 5 through 9.
- AppendBuffers(5, 5, &kDataB);
+ NewSegmentAppend(5, 5, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,14) }");
@@ -898,14 +932,14 @@ TEST_F(SourceBufferStreamTest, Middle_Overlap_Selected_1) {
// after: A a a a a B b b b b A*a*a a a
TEST_F(SourceBufferStreamTest, Middle_Overlap_Selected_2) {
// Append 15 buffers at positions 0 through 14.
- AppendBuffers(0, 15, &kDataA);
+ NewSegmentAppend(0, 15, &kDataA);
// Seek to 10 then move to position 11.
Seek(10);
CheckExpectedBuffers(10, 10, &kDataA);
// Now append 5 buffers at positions 5 through 9.
- AppendBuffers(5, 5, &kDataB);
+ NewSegmentAppend(5, 5, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,14) }");
@@ -927,14 +961,14 @@ TEST_F(SourceBufferStreamTest, Middle_Overlap_Selected_2) {
// after: A a*a*a a B b b| |A a a a a
TEST_F(SourceBufferStreamTest, Middle_Overlap_Selected_3) {
// Append 15 buffers at positions 0 through 14.
- AppendBuffers(0, 15, &kDataA);
+ NewSegmentAppend(0, 15, &kDataA);
// Seek to beginning then move to position 2.
Seek(0);
CheckExpectedBuffers(0, 1, &kDataA);
// Now append 3 buffers at positions 5 through 7.
- AppendBuffers(5, 3, &kDataB);
+ NewSegmentAppend(5, 3, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,7) [10,14) }");
@@ -956,14 +990,14 @@ TEST_F(SourceBufferStreamTest, Middle_Overlap_Selected_3) {
// track: |a a|
TEST_F(SourceBufferStreamTest, Middle_Overlap_Selected_4) {
// Append 15 buffers at positions 0 through 14.
- AppendBuffers(0, 15, &kDataA);
+ NewSegmentAppend(0, 15, &kDataA);
// Seek to 5 then move to position 8.
Seek(5);
CheckExpectedBuffers(5, 7, &kDataA);
// Now append 3 buffers at positions 5 through 7.
- AppendBuffers(5, 3, &kDataB);
+ NewSegmentAppend(5, 3, &kDataB);
// Check expected range.
CheckExpectedRanges("{ [0,7) [10,14) }");
@@ -983,7 +1017,7 @@ TEST_F(SourceBufferStreamTest, Middle_Overlap_Selected_4) {
TEST_F(SourceBufferStreamTest, Seek_Keyframe) {
// Append 6 buffers at positions 0 through 5.
- AppendBuffers(0, 6);
+ NewSegmentAppend(0, 6);
// Seek to beginning.
Seek(0);
@@ -992,7 +1026,7 @@ TEST_F(SourceBufferStreamTest, Seek_Keyframe) {
TEST_F(SourceBufferStreamTest, Seek_NonKeyframe) {
// Append 15 buffers at positions 0 through 14.
- AppendBuffers(0, 15);
+ NewSegmentAppend(0, 15);
// Seek to buffer at position 13.
Seek(13);
@@ -1015,7 +1049,7 @@ TEST_F(SourceBufferStreamTest, Seek_NotBuffered) {
CheckNoNextBuffer();
// Append 2 buffers at positions 0.
- AppendBuffers(0, 2);
+ NewSegmentAppend(0, 2);
Seek(0);
CheckExpectedBuffers(0, 1);
@@ -1026,17 +1060,17 @@ TEST_F(SourceBufferStreamTest, Seek_NotBuffered) {
TEST_F(SourceBufferStreamTest, Seek_InBetweenTimestamps) {
// Append 10 buffers at positions 0 through 9.
- AppendBuffers(0, 10);
+ NewSegmentAppend(0, 10);
base::TimeDelta bump = frame_duration() / 4;
CHECK(bump > base::TimeDelta());
// Seek to buffer a little after position 5.
- stream_.Seek(5 * frame_duration() + bump);
+ stream_->Seek(5 * frame_duration() + bump);
CheckExpectedBuffers(5, 5, true);
// Seek to buffer a little before position 5.
- stream_.Seek(5 * frame_duration() - bump);
+ stream_->Seek(5 * frame_duration() - bump);
CheckExpectedBuffers(0, 0, true);
}
@@ -1046,14 +1080,14 @@ TEST_F(SourceBufferStreamTest, Seek_InBetweenTimestamps) {
// response to the Seek().
TEST_F(SourceBufferStreamTest, Seek_After_TrackBuffer_Filled) {
// Append 10 buffers at positions 5 through 14.
- AppendBuffers(5, 10, &kDataA);
+ NewSegmentAppend(5, 10, &kDataA);
// Seek to buffer at position 5 and get next buffer.
Seek(5);
CheckExpectedBuffers(5, 5, &kDataA);
// Do a complete overlap by appending 20 buffers at positions 0 through 19.
- AppendBuffers(0, 20, &kDataB);
+ NewSegmentAppend(0, 20, &kDataB);
// Check range is correct.
CheckExpectedRanges("{ [0,19) }");
@@ -1072,11 +1106,11 @@ TEST_F(SourceBufferStreamTest, Seek_StartOfSegment) {
// Append 5 buffers at position (5 + |bump|) through 9, where the media
// segment begins at position 5.
- AppendBuffers(5, 5, bump);
+ NewSegmentAppend_OffsetFirstBuffer(5, 5, bump);
scoped_refptr<StreamParserBuffer> buffer;
// GetNextBuffer() should return the next buffer at position (5 + |bump|).
- EXPECT_TRUE(stream_.GetNextBuffer(&buffer));
+ EXPECT_TRUE(stream_->GetNextBuffer(&buffer));
EXPECT_EQ(buffer->GetDecodeTimestamp(), 5 * frame_duration() + bump);
// Check rest of buffers.
@@ -1087,10 +1121,10 @@ TEST_F(SourceBufferStreamTest, Seek_StartOfSegment) {
// Append 5 buffers at positions (15 + |bump|) through 19, where the media
// segment begins at 15.
- AppendBuffers(15, 5, bump);
+ NewSegmentAppend_OffsetFirstBuffer(15, 5, bump);
// GetNextBuffer() should return the next buffer at position (15 + |bump|).
- EXPECT_TRUE(stream_.GetNextBuffer(&buffer));
+ EXPECT_TRUE(stream_->GetNextBuffer(&buffer));
EXPECT_EQ(buffer->GetDecodeTimestamp(), 15 * frame_duration() + bump);
// Check rest of buffers.
@@ -1099,13 +1133,13 @@ TEST_F(SourceBufferStreamTest, Seek_StartOfSegment) {
TEST_F(SourceBufferStreamTest, GetNextBuffer_AfterMerges) {
// Append 5 buffers at positions 10 through 14.
- AppendBuffers(10, 5);
+ NewSegmentAppend(10, 5);
// Seek to buffer at position 12.
Seek(12);
// Append 5 buffers at positions 5 through 9.
- AppendBuffers(5, 5);
+ NewSegmentAppend(5, 5);
// Make sure ranges are merged.
CheckExpectedRanges("{ [5,14) }");
@@ -1114,7 +1148,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_AfterMerges) {
CheckExpectedBuffers(10, 10);
// Append 5 buffers at positions 15 through 19.
- AppendBuffers(15, 5);
+ NewSegmentAppend(15, 5);
CheckExpectedRanges("{ [5,19) }");
// Make sure the remaining next buffers are correct.
@@ -1123,7 +1157,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_AfterMerges) {
TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenAppend) {
// Append 4 buffers at positions 0 through 3.
- AppendBuffers(0, 4);
+ NewSegmentAppend(0, 4);
// Seek to buffer at position 0 and get all buffers.
Seek(0);
@@ -1141,7 +1175,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenAppend) {
// buffer is not buffered.
TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenStartOverlap) {
// Append 10 buffers at positions 0 through 9 and exhaust the buffers.
- AppendBuffers(0, 10, &kDataA);
+ NewSegmentAppend(0, 10, &kDataA);
CheckExpectedBuffers(0, 9, &kDataA);
// Next buffer is at position 10, so should not be able to fulfill request.
@@ -1150,7 +1184,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenStartOverlap) {
// Append 6 buffers at positons 5 through 10. This is to test that doing a
// start-overlap successfully fulfills the read at position 10, even though
// position 10 was unbuffered.
- AppendBuffers(5, 6, &kDataB);
+ NewSegmentAppend(5, 6, &kDataB);
CheckExpectedBuffers(10, 10, &kDataB);
// Then add 5 buffers from positions 11 though 15.
@@ -1167,9 +1201,9 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenStartOverlap) {
// This test covers the case where new buffers completely overlap a range
// whose next buffer is not buffered.
-TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenCompeteOverlap) {
+TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenCompleteOverlap) {
// Append 5 buffers at positions 10 through 14 and exhaust the buffers.
- AppendBuffers(10, 5, &kDataA);
+ NewSegmentAppend(10, 5, &kDataA);
CheckExpectedBuffers(10, 14, &kDataA);
// Next buffer is at position 15, so should not be able to fulfill request.
@@ -1177,7 +1211,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenCompeteOverlap) {
// Do a complete overlap and test that this successfully fulfills the read
// at position 15.
- AppendBuffers(5, 11, &kDataB);
+ NewSegmentAppend(5, 11, &kDataB);
CheckExpectedBuffers(15, 15, &kDataB);
// Then add 5 buffers from positions 16 though 20.
@@ -1188,7 +1222,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenCompeteOverlap) {
CheckExpectedBuffers(16, 19, &kDataB);
// Do a complete overlap and replace the buffer at position 20.
- AppendBuffers(0, 21, &kDataA);
+ NewSegmentAppend(0, 21, &kDataA);
CheckExpectedBuffers(20, 20, &kDataA);
}
@@ -1196,7 +1230,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenCompeteOverlap) {
// buffer, then an end-overlap causes the end of the range to be deleted.
TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenEndOverlap) {
// Append 5 buffers at positions 10 through 14 and exhaust the buffers.
- AppendBuffers(10, 5, &kDataA);
+ NewSegmentAppend(10, 5, &kDataA);
CheckExpectedBuffers(10, 14, &kDataA);
CheckExpectedRanges("{ [10,14) }");
@@ -1204,7 +1238,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenEndOverlap) {
CheckNoNextBuffer();
// Do an end overlap that causes the latter half of the range to be deleted.
- AppendBuffers(5, 6, &kDataB);
+ NewSegmentAppend(5, 6, &kDataB);
CheckNoNextBuffer();
CheckExpectedRanges("{ [5,10) }");
@@ -1227,14 +1261,14 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenEndOverlap) {
// "next buffer" position.
TEST_F(SourceBufferStreamTest, GetNextBuffer_Overlap_Selected_Complete) {
// Append 5 buffers at positions 5 through 9.
- AppendBuffers(5, 5, &kDataA);
+ NewSegmentAppend(5, 5, &kDataA);
// Seek to buffer at position 5 and get next buffer.
Seek(5);
CheckExpectedBuffers(5, 5, &kDataA);
// Replace existing data with new data.
- AppendBuffers(5, 5, &kDataB);
+ NewSegmentAppend(5, 5, &kDataB);
// Expect old data up until next keyframe in new data.
CheckExpectedBuffers(6, 9, &kDataA);
@@ -1250,7 +1284,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_Overlap_Selected_Complete) {
TEST_F(SourceBufferStreamTest, GetNextBuffer_NoSeek) {
// Append 5 buffers at position 5.
- AppendBuffers(5, 5);
+ NewSegmentAppend(5, 5);
// Should receive buffers from the start without needing to seek.
CheckExpectedBuffers(5, 5);
@@ -1258,7 +1292,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_NoSeek) {
TEST_F(SourceBufferStreamTest, PresentationTimestampIndependence) {
// Append 20 buffers at position 0.
- AppendBuffers(0, 20);
+ NewSegmentAppend(0, 20);
int last_keyframe_idx = -1;
base::TimeDelta last_keyframe_presentation_timestamp;
@@ -1267,7 +1301,7 @@ TEST_F(SourceBufferStreamTest, PresentationTimestampIndependence) {
// Check for IBB...BBP pattern.
for (int i = 0; i < 20; i++) {
scoped_refptr<StreamParserBuffer> buffer;
- ASSERT_TRUE(stream_.GetNextBuffer(&buffer));
+ ASSERT_TRUE(stream_->GetNextBuffer(&buffer));
if (buffer->IsKeyframe()) {
EXPECT_EQ(buffer->GetTimestamp(), buffer->GetDecodeTimestamp());
@@ -1289,4 +1323,7 @@ TEST_F(SourceBufferStreamTest, PresentationTimestampIndependence) {
// TODO(vrk): Add unit tests where keyframes are unaligned between streams.
// (crbug.com/133557)
+// TODO(vrk): Add unit tests with end of stream being called at interesting
+// times.
+
} // namespace media
« no previous file with comments | « media/filters/source_buffer_stream.cc ('k') | media/webm/webm_cluster_parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698