Chromium Code Reviews| 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 50efdacd4f2bdd93007bec10bec8070bd9096095..ee8328985f25dc7ee7d13cfe02c394ee895db3ee 100644 |
| --- a/media/filters/source_buffer_stream_unittest.cc |
| +++ b/media/filters/source_buffer_stream_unittest.cc |
| @@ -31,8 +31,7 @@ static const int kDataSize = 1; |
| class SourceBufferStreamTest : public testing::Test { |
| protected: |
| - SourceBufferStreamTest() |
| - : accurate_durations_(false) { |
| + SourceBufferStreamTest() { |
| video_config_ = TestVideoConfig::Normal(); |
| SetStreamInfo(kDefaultFramesPerSecond, kDefaultKeyframesPerSecond); |
| stream_.reset(new SourceBufferStream(video_config_, log_cb(), true)); |
| @@ -57,7 +56,6 @@ class SourceBufferStreamTest : public testing::Test { |
| void SetAudioStream() { |
| video_config_ = TestVideoConfig::Invalid(); |
| - accurate_durations_ = true; |
| audio_config_.Initialize(kCodecVorbis, |
| kSampleFormatPlanarF32, |
| CHANNEL_LAYOUT_STEREO, |
| @@ -356,6 +354,9 @@ class SourceBufferStreamTest : public testing::Test { |
| } |
| base::TimeDelta frame_duration() const { return frame_duration_; } |
| + void set_frame_duration(base::TimeDelta frame_duration) { |
| + frame_duration_ = frame_duration; |
| + } |
| scoped_ptr<SourceBufferStream> stream_; |
| VideoDecoderConfig video_config_; |
| @@ -407,8 +408,7 @@ class SourceBufferStreamTest : public testing::Test { |
| presentation_timestamp = timestamp - frame_duration_; |
| } |
| buffer->set_timestamp(presentation_timestamp); |
| - if (accurate_durations_) |
| - buffer->set_duration(frame_duration_); |
| + buffer->set_duration(frame_duration_); |
| queue.push_back(buffer); |
| } |
| @@ -416,6 +416,16 @@ class SourceBufferStreamTest : public testing::Test { |
| EXPECT_EQ(expect_success, stream_->Append(queue)); |
| } |
| + void UpdateLastBufferDuration(base::TimeDelta current_dts, |
| + BufferQueue* buffers) { |
| + if (buffers->empty() || buffers->back()->duration() > base::TimeDelta()) |
| + return; |
| + |
| + base::TimeDelta last_dts = buffers->back()->GetDecodeTimestamp(); |
| + DCHECK(current_dts >= last_dts); |
| + buffers->back()->set_duration(current_dts - last_dts); |
| + } |
| + |
| // StringToBufferQueue() allows for the generation of StreamParserBuffers from |
| // coded strings of timestamps separated by spaces. Supported syntax: |
| // |
| @@ -479,7 +489,15 @@ class SourceBufferStreamTest : public testing::Test { |
| timestamps[i] = timestamps[i].substr(0, timestamps[i].length() - 1); |
| } |
| - int time_in_ms; |
| + int time_in_ms = 0; |
| + int duration_in_ms = 0; |
| + size_t duration_pos = timestamps[i].find('D'); |
| + if (duration_pos != std::string::npos) { |
| + CHECK(base::StringToInt(timestamps[i].substr(duration_pos + 1), |
| + &duration_in_ms)); |
| + timestamps[i] = timestamps[i].substr(0, duration_pos ); |
|
wolenetz
2014/07/09 22:42:16
nit: s/ )/)/
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:28
Done.
|
| + } |
| + |
| CHECK(base::StringToInt(timestamps[i], &time_in_ms)); |
| // Create buffer. Buffer type and track ID are meaningless to these tests. |
| @@ -489,8 +507,8 @@ class SourceBufferStreamTest : public testing::Test { |
| base::TimeDelta timestamp = |
| base::TimeDelta::FromMilliseconds(time_in_ms); |
| buffer->set_timestamp(timestamp); |
| - if (accurate_durations_) |
| - buffer->set_duration(frame_duration_); |
| + if (duration_in_ms) |
| + buffer->set_duration(base::TimeDelta::FromMilliseconds(duration_in_ms)); |
| buffer->SetDecodeTimestamp(timestamp); |
| // Simulate preroll buffers by just generating another buffer and sticking |
| @@ -511,6 +529,8 @@ class SourceBufferStreamTest : public testing::Test { |
| pre_splice_buffers.back()->GetDecodeTimestamp().InMicroseconds()); |
| } |
| buffer->SetConfigId(splice_config_id); |
| + UpdateLastBufferDuration(buffer->GetDecodeTimestamp(), |
| + &pre_splice_buffers); |
| pre_splice_buffers.push_back(buffer); |
| continue; |
| } |
| @@ -523,8 +543,18 @@ class SourceBufferStreamTest : public testing::Test { |
| pre_splice_buffers.clear(); |
| } |
| + UpdateLastBufferDuration(buffer->GetDecodeTimestamp(), &buffers); |
| buffers.push_back(buffer); |
| } |
| + |
| + // If the last buffer doesn't have a duration, assume it is the |
| + // same as the second to last buffer. |
| + if (buffers.size() >= 2 && |
| + buffers.back()->duration() <= base::TimeDelta()) { |
| + buffers.back()->set_duration( |
| + buffers[buffers.size() - 2]->duration()); |
| + } |
| + |
| return buffers; |
| } |
| @@ -565,10 +595,6 @@ class SourceBufferStreamTest : public testing::Test { |
| int frames_per_second_; |
| int keyframes_per_second_; |
| base::TimeDelta frame_duration_; |
| - // TODO(dalecurtis): It's silly to have this, all tests should use accurate |
| - // durations instead. However, currently all tests are written with an |
| - // expectation of 0 duration, so it's an involved change. |
| - bool accurate_durations_; |
| DISALLOW_COPY_AND_ASSIGN(SourceBufferStreamTest); |
| }; |
| @@ -691,7 +717,7 @@ TEST_F(SourceBufferStreamTest, |
| // Completely overlap the old buffers, with a segment that starts |
| // after the old segment start timestamp, but before the timestamp |
| // of the first buffer in the segment. |
| - NewSegmentAppend("20K 50K 80K 110K"); |
| + NewSegmentAppend("20K 50K 80K 110D10K"); |
| // Verify that the buffered ranges are updated properly and we don't crash. |
| CheckExpectedRangesByTimestamp("{ [20,150) }"); |
| @@ -773,13 +799,15 @@ TEST_F(SourceBufferStreamTest, End_Overlap_Several) { |
| // after: *0K* *120K* 150K |
| // track: |
| TEST_F(SourceBufferStreamTest, End_Overlap_SingleBuffer) { |
| + set_frame_duration(base::TimeDelta::FromMilliseconds(30)); |
| + |
| // Seek to start of stream. |
| SeekToTimestamp(base::TimeDelta::FromMilliseconds(0)); |
| NewSegmentAppend("0K 30 60 90 120K 150"); |
| CheckExpectedRangesByTimestamp("{ [0,180) }"); |
| - NewSegmentAppend("0K"); |
| + NewSegmentAppend("0D30K"); |
|
wolenetz
2014/07/09 22:42:18
curious: without D30 and frame_duration_ set to 30
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:27
Removed the set_frame_duration() call since it was
wolenetz
2014/07/15 21:05:37
Acknowledged.
|
| CheckExpectedRangesByTimestamp("{ [0,30) [120,180) }"); |
| CheckExpectedBuffers("0K"); |
| @@ -1549,7 +1577,7 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_DeleteGroup) { |
| SeekToTimestamp(base::TimeDelta::FromMilliseconds(130)); |
| // Overlap with a new segment from 0 to 120ms. |
|
wolenetz
2014/07/09 22:42:17
nit: s/120/130?
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:27
Done.
|
| - NewSegmentAppendOneByOne("0K 120"); |
| + NewSegmentAppendOneByOne("0K 120D10"); |
| // Next buffer should still be 130ms. |
| CheckExpectedBuffers("130K"); |
| @@ -1580,7 +1608,7 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_BetweenMediaSegments) { |
| // new : 0K 30 60 90 120K |
| // after: 0K 30 60 90 *120K* 130K |
| TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer) { |
| - NewSegmentAppendOneByOne("10K 40 70 100K 125 130K"); |
| + NewSegmentAppendOneByOne("10K 40 70 100K 125 130D30K"); |
| CheckExpectedRangesByTimestamp("{ [10,160) }"); |
| // Seek to 70ms. |
| @@ -1588,13 +1616,13 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer) { |
| CheckExpectedBuffers("10K 40"); |
| // Overlap with a new segment from 0 to 120ms. |
|
wolenetz
2014/07/09 22:42:16
nit: s/120/130? (or 125, see next comment)
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:27
Done.
|
| - NewSegmentAppendOneByOne("0K 30 60 90 120K"); |
| + NewSegmentAppendOneByOne("0K 30 60 90 120D10K"); |
|
wolenetz
2014/07/09 22:42:17
s/120D10K/120D5K/ to better test that old buffer a
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:27
I'm just trying to explicitly document the origina
wolenetz
2014/07/15 21:05:37
Acknowledged.
|
| CheckExpectedRangesByTimestamp("{ [0,160) }"); |
| - // Should return frames 70ms and 100ms from the track buffer, then switch |
| + // Should return frame 70ms from the track buffer, then switch |
| // to the new data at 120K, then switch back to the old data at 130K. The |
| // frame at 125ms that depended on keyframe 100ms should have been deleted. |
| - CheckExpectedBuffers("70 100K 120K 130K"); |
|
acolwell GONE FROM CHROMIUM
2014/07/09 02:07:02
I haven't 100% convinced myself that this particul
wolenetz
2014/07/09 22:42:17
I think your analysis is correct, and the new beha
|
| + CheckExpectedBuffers("70 120K 130K"); |
| // Check the final result: should not include data from the track buffer. |
| SeekToTimestamp(base::TimeDelta::FromMilliseconds(0)); |
| @@ -1606,11 +1634,11 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer) { |
| // old : 10K 40 *70* 100K 125 130K |
| // new : 0K 30 60 90 120K |
| // after: 0K 30 60 90 *120K* 130K |
| -// track: 70 100K |
| +// track: 70 |
| // new : 110K 130 |
| // after: 0K 30 60 90 *110K* 130 |
| TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer2) { |
| - NewSegmentAppendOneByOne("10K 40 70 100K 125 130K"); |
| + NewSegmentAppendOneByOne("10K 40 70 100K 125 130D30K"); |
| CheckExpectedRangesByTimestamp("{ [10,160) }"); |
| // Seek to 70ms. |
| @@ -1619,7 +1647,7 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer2) { |
| // Overlap with a new segment from 0 to 120ms; 70ms and 100ms go in track |
| // buffer. |
| - NewSegmentAppendOneByOne("0K 30 60 90 120K"); |
| + NewSegmentAppendOneByOne("0K 30 60 90 120D10K"); |
| CheckExpectedRangesByTimestamp("{ [0,160) }"); |
| // Now overlap the keyframe at 120ms. |
| @@ -1627,7 +1655,7 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer2) { |
| // Should expect buffers 70ms and 100ms from the track buffer. Then it should |
|
wolenetz
2014/07/09 22:42:17
nit: s/expect buffers 70ms and 100ms/return frame
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:26
Done.
|
| // return the keyframe after the track buffer, which is at 110ms. |
| - CheckExpectedBuffers("70 100K 110K 130"); |
| + CheckExpectedBuffers("70 110K 130"); |
| } |
| // Overlap the next keyframe after the end of the track buffer without a |
| @@ -1635,33 +1663,33 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer2) { |
| // old : 10K 40 *70* 100K 125 130K |
| // new : 0K 30 60 90 120K |
| // after: 0K 30 60 90 *120K* 130K |
| -// track: 70 100K |
| +// track: 70 |
| // new : 50K 80 110 140 |
| // after: 0K 30 50K 80 110 140 * (waiting for keyframe) |
| -// track: 70 100K 120K 130K |
| +// track: 70 |
| TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer3) { |
| - NewSegmentAppendOneByOne("10K 40 70 100K 125 130K"); |
| + NewSegmentAppendOneByOne("10K 40 70 100K 125 130D30K"); |
| CheckExpectedRangesByTimestamp("{ [10,160) }"); |
| // Seek to 70ms. |
| SeekToTimestamp(base::TimeDelta::FromMilliseconds(70)); |
| CheckExpectedBuffers("10K 40"); |
| - // Overlap with a new segment from 0 to 120ms; 70ms and 100ms go in track |
| - // buffer. |
| - NewSegmentAppendOneByOne("0K 30 60 90 120K"); |
| + // Overlap with a new segment from 0 to 120ms; 70ms goes in track buffer. |
| + NewSegmentAppendOneByOne("0K 30 60 90 120D10K"); |
| CheckExpectedRangesByTimestamp("{ [0,160) }"); |
| // Now overlap the keyframe at 120ms. There's no keyframe after 70ms, so 120ms |
|
wolenetz
2014/07/09 22:42:17
nit: s/*/Now overlap the keyframes at 120ms and 13
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:26
Done.
|
| // and 130ms go into the track buffer. |
| NewSegmentAppendOneByOne("50K 80 110 140"); |
| + CheckExpectedRangesByTimestamp("{ [0,170) }"); |
| // Should have all the buffers from the track buffer, then stall. |
| - CheckExpectedBuffers("70 100K 120K 130K"); |
| + CheckExpectedBuffers("70"); |
| CheckNoNextBuffer(); |
| // Appending a keyframe should fulfill the read. |
| - AppendBuffersOneByOne("150K"); |
| + AppendBuffersOneByOne("150D30K"); |
| CheckExpectedBuffers("150K"); |
| CheckNoNextBuffer(); |
| } |
| @@ -1676,7 +1704,7 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer3) { |
| // after: 0K 30 60 *80K* 110 140 |
| // track: 70 |
| TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer4) { |
| - NewSegmentAppendOneByOne("10K 40 70 100K 125 130K"); |
| + NewSegmentAppendOneByOne("10K 40 70 100K 125 130D30K"); |
| CheckExpectedRangesByTimestamp("{ [10,160) }"); |
| // Seek to 70ms. |
| @@ -1685,7 +1713,7 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer4) { |
| // Overlap with a new segment from 0 to 120ms; 70ms and 100ms go in track |
| // buffer. |
| - NewSegmentAppendOneByOne("0K 30 60 90 120K"); |
| + NewSegmentAppendOneByOne("0K 30 60 90 120D10K"); |
| CheckExpectedRangesByTimestamp("{ [0,160) }"); |
| // Now append a keyframe at 80ms. |
| @@ -1731,13 +1759,13 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer5) { |
| // old : 10K 40 *70* 100K 125 130K ... 200K 230 |
| // new : 0K 30 60 90 120K |
| // after: 0K 30 60 90 *120K* 130K ... 200K 230 |
| -// track: 70 100K |
| +// track: 70 |
| // old : 0K 30 60 90 *120K* 130K ... 200K 230 |
| // new : 260K 290 |
| // after: 0K 30 60 90 *120K* 130K ... 200K 230 260K 290 |
| -// track: 70 100K |
| +// track: 70 |
| TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer6) { |
| - NewSegmentAppendOneByOne("10K 40 70 100K 125 130K"); |
| + NewSegmentAppendOneByOne("10K 40 70 100K 125 130D30K"); |
| NewSegmentAppendOneByOne("200K 230"); |
| CheckExpectedRangesByTimestamp("{ [10,160) [200,260) }"); |
| @@ -1746,7 +1774,7 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer6) { |
| CheckExpectedBuffers("10K 40"); |
| // Overlap with a new segment from 0 to 120ms. |
| - NewSegmentAppendOneByOne("0K 30 60 90 120K"); |
| + NewSegmentAppendOneByOne("0K 30 60 90 120D10K"); |
| CheckExpectedRangesByTimestamp("{ [0,160) [200,260) }"); |
| // Verify that 70 gets read out of the track buffer. |
| @@ -1756,7 +1784,7 @@ TEST_F(SourceBufferStreamTest, Overlap_OneByOne_TrackBuffer6) { |
| NewSegmentAppendOneByOne("260K 290"); |
| CheckExpectedRangesByTimestamp("{ [0,160) [200,320) }"); |
| - CheckExpectedBuffers("100K 120K 130K"); |
| + CheckExpectedBuffers("120K 130K"); |
| CheckNoNextBuffer(); |
| // Check the final result: should not include data from the track buffer. |
| @@ -2122,7 +2150,7 @@ TEST_F(SourceBufferStreamTest, GetNextBuffer_ExhaustThenStartOverlap2) { |
| CheckNoNextBuffer(); |
| // Append a keyframe with the same timestamp as the last buffer output. |
| - NewSegmentAppend("120K"); |
| + NewSegmentAppend("120D30K"); |
| CheckNoNextBuffer(); |
| // Append the rest of the segment and make sure that buffers are returned |
| @@ -2550,7 +2578,7 @@ TEST_F(SourceBufferStreamTest, GarbageCollection_SaveAppendGOP) { |
| // Make sure you can continue appending data to this GOP; again, GC should not |
| // wipe out anything. |
| - AppendBuffers("120"); |
| + AppendBuffers("120D30"); |
| CheckExpectedRangesByTimestamp("{ [0,150) }"); |
| // Set memory limit to 100 and append a 2nd range after this without |
| @@ -2572,7 +2600,7 @@ TEST_F(SourceBufferStreamTest, GarbageCollection_SaveAppendGOP) { |
| CheckExpectedRangesByTimestamp("{ [290,380) [500,620) }"); |
| // Continue appending to this GOP after GC. |
| - AppendBuffers("620"); |
| + AppendBuffers("620D30"); |
| CheckExpectedRangesByTimestamp("{ [290,380) [500,650) }"); |
| } |
| @@ -2591,7 +2619,7 @@ TEST_F(SourceBufferStreamTest, GarbageCollection_SaveAppendGOP_Middle) { |
| // This whole GOP should be saved, and should be able to continue appending |
| // data to it. |
| CheckExpectedRangesByTimestamp("{ [80,170) }"); |
| - AppendBuffers("170"); |
| + AppendBuffers("170D30"); |
| CheckExpectedRangesByTimestamp("{ [80,200) }"); |
| // Set memory limit to 100 and append a 2nd range after this without |
| @@ -2614,7 +2642,7 @@ TEST_F(SourceBufferStreamTest, GarbageCollection_SaveAppendGOP_Middle) { |
| CheckExpectedRangesByTimestamp("{ [80,200) [500,620) }"); |
| // Continue appending to this GOP after GC. |
| - AppendBuffers("620"); |
| + AppendBuffers("620D30"); |
| CheckExpectedRangesByTimestamp("{ [80,200) [500,650) }"); |
| } |
| @@ -3629,7 +3657,7 @@ TEST_F(SourceBufferStreamTest, Text_CompleteOverlap) { |
| CheckExpectedRangesByTimestamp("{ [3000,4500) }"); |
| NewSegmentAppend("0K 501K 1001K 1501K 2001K 2501K " |
| "3001K 3501K 4001K 4501K 5001K"); |
| - CheckExpectedRangesByTimestamp("{ [0,5502) }"); |
| + CheckExpectedRangesByTimestamp("{ [0,5501) }"); |
| Seek(0); |
| CheckExpectedBuffers("0K 501K 1001K 1501K 2001K 2501K " |
| @@ -3641,7 +3669,7 @@ TEST_F(SourceBufferStreamTest, Text_OverlapAfter) { |
| NewSegmentAppend("0K 500K 1000K 1500K 2000K"); |
| CheckExpectedRangesByTimestamp("{ [0,2500) }"); |
| NewSegmentAppend("1499K 2001K 2501K 3001K"); |
| - CheckExpectedRangesByTimestamp("{ [0,3503) }"); |
| + CheckExpectedRangesByTimestamp("{ [0,3501) }"); |
| Seek(0); |
| CheckExpectedBuffers("0K 500K 1000K 1499K 2001K 2501K 3001K"); |
| @@ -3652,22 +3680,22 @@ TEST_F(SourceBufferStreamTest, Text_OverlapBefore) { |
| NewSegmentAppend("1500K 2000K 2500K 3000K 3500K"); |
| CheckExpectedRangesByTimestamp("{ [1500,4000) }"); |
| NewSegmentAppend("0K 501K 1001K 1501K 2001K"); |
| - CheckExpectedRangesByTimestamp("{ [0,4001) }"); |
| + CheckExpectedRangesByTimestamp("{ [0,4000) }"); |
| Seek(0); |
| - CheckExpectedBuffers("0K 501K 1001K 1501K 2001K 2500K 3000K 3500K"); |
| + CheckExpectedBuffers("0K 501K 1001K 1501K 2001K 3000K 3500K"); |
| } |
| TEST_F(SourceBufferStreamTest, SpliceFrame_Basic) { |
| Seek(0); |
| - NewSegmentAppend("0K S(3K 6 9 10) 15 20 S(25K 30 35) 40"); |
| + NewSegmentAppend("0K S(3K 6 9D3 10D5) 15 20 S(25K 30D5 35D5) 40"); |
| CheckExpectedBuffers("0K 3K 6 9 C 10 15 20 25K 30 C 35 40"); |
| CheckNoNextBuffer(); |
| } |
| TEST_F(SourceBufferStreamTest, SpliceFrame_SeekClearsSplice) { |
| Seek(0); |
| - NewSegmentAppend("0K S(3K 6 9 10) 15K 20"); |
| + NewSegmentAppend("0K S(3K 6 9D3 10D5) 15K 20"); |
| CheckExpectedBuffers("0K 3K 6"); |
| SeekToTimestamp(base::TimeDelta::FromMilliseconds(15)); |
| @@ -3677,7 +3705,7 @@ TEST_F(SourceBufferStreamTest, SpliceFrame_SeekClearsSplice) { |
| TEST_F(SourceBufferStreamTest, SpliceFrame_SeekClearsSpliceFromTrackBuffer) { |
| Seek(0); |
| - NewSegmentAppend("0K 2K S(3K 6 9 10) 15K 20"); |
| + NewSegmentAppend("0K 2K S(3K 6 9D3 10D5) 15K 20"); |
| CheckExpectedBuffers("0K 2K"); |
| // Overlap the existing segment. |
| @@ -3699,7 +3727,7 @@ TEST_F(SourceBufferStreamTest, SpliceFrame_ConfigChangeWithinSplice) { |
| Seek(0); |
| CheckVideoConfig(video_config_); |
| - NewSegmentAppend("0K S(3K 6C 9 10) 15"); |
| + NewSegmentAppend("0K S(3K 6C 9D3 10D5) 15"); |
| CheckExpectedBuffers("0K 3K C"); |
| CheckVideoConfig(new_config); |
| @@ -3712,7 +3740,7 @@ TEST_F(SourceBufferStreamTest, SpliceFrame_ConfigChangeWithinSplice) { |
| TEST_F(SourceBufferStreamTest, SpliceFrame_BasicFromTrackBuffer) { |
| Seek(0); |
| - NewSegmentAppend("0K 5K S(8K 9 10) 20"); |
| + NewSegmentAppend("0K 5K S(8K 9D1 10D10) 20"); |
| CheckExpectedBuffers("0K 5K"); |
| // Overlap the existing segment. |
| @@ -3732,7 +3760,7 @@ TEST_F(SourceBufferStreamTest, |
| Seek(0); |
| CheckVideoConfig(video_config_); |
| - NewSegmentAppend("0K 5K S(7K 8C 9 10) 20"); |
| + NewSegmentAppend("0K 5K S(7K 8C 9D1 10D10) 20"); |
| CheckExpectedBuffers("0K 5K"); |
| // Overlap the existing segment. |
| @@ -3777,7 +3805,7 @@ TEST_F(SourceBufferStreamTest, Audio_SpliceFrame_NoDoubleSplice) { |
| Seek(0); |
| // Create a splice before the first splice which would include it. |
| - NewSegmentAppend("9K"); |
| + NewSegmentAppend("9D2K"); |
|
wolenetz
2014/07/09 22:42:17
Is D2 necessary since SetAudioStream()->SetStreamI
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:27
Yes. frame_duration_ is not used by string based a
wolenetz
2014/07/15 21:05:37
Acknowledged.
|
| // A splice on top of a splice should result in a discard of the original |
| // splice and no new splice frame being generated. |
| @@ -3803,7 +3831,7 @@ TEST_F(SourceBufferStreamTest, Audio_SpliceFrame_CorrectMediaSegmentStartTime) { |
| CheckExpectedRangesByTimestamp("{ [0,6) }"); |
| NewSegmentAppend("6K 8K 10K"); |
| CheckExpectedRangesByTimestamp("{ [0,12) }"); |
| - NewSegmentAppend("1K 4K"); |
| + NewSegmentAppend("1K 4D2K"); |
|
wolenetz
2014/07/09 22:42:16
ditto
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:26
The duration is only specified here because the no
wolenetz
2014/07/15 21:05:37
Acknowledged.
|
| CheckExpectedRangesByTimestamp("{ [0,12) }"); |
| CheckExpectedBuffers("0K 2K 4K C 1K 4K 6K 8K 10K"); |
| CheckNoNextBuffer(); |
| @@ -3840,9 +3868,9 @@ TEST_F(SourceBufferStreamTest, Audio_SpliceFrame_NoTinySplices) { |
| // 2ms this results in an overlap of 1ms between the ranges. A splice frame |
| // should not be generated since it requires at least 2 frames, or 2ms in this |
| // case, of data to crossfade. |
| - NewSegmentAppend("0K"); |
| + NewSegmentAppend("0D2K"); |
|
wolenetz
2014/07/09 22:42:17
ditto
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:27
ditto re: making 1 buffer case explicit.
wolenetz
2014/07/15 21:05:37
Acknowledged.
|
| CheckExpectedRangesByTimestamp("{ [0,2) }"); |
| - NewSegmentAppend("1K"); |
| + NewSegmentAppend("1D2K"); |
|
wolenetz
2014/07/09 22:42:17
ditto
acolwell GONE FROM CHROMIUM
2014/07/15 18:49:26
ditto re: making 1 buffer case explicit.
wolenetz
2014/07/15 21:05:37
Acknowledged.
|
| CheckExpectedRangesByTimestamp("{ [0,3) }"); |
| CheckExpectedBuffers("0K 1K"); |
| CheckNoNextBuffer(); |