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 4f37509837ca30201248647affab1b5c4ecf6ab6..e47baa8a60f7ac229a54f65ea0f3d0521b4bcf06 100644 |
--- a/media/filters/source_buffer_stream_unittest.cc |
+++ b/media/filters/source_buffer_stream_unittest.cc |
@@ -3320,6 +3320,56 @@ TEST_F(SourceBufferStreamTest, SetExplicitDuration_EdgeCase) { |
CheckExpectedRanges("{ [10,19) }"); |
} |
+TEST_F(SourceBufferStreamTest, SetExplicitDuration_EdgeCase2) { |
+ // This test requires specific relative proportions for fudge room, append |
+ // size, and duration truncation amounts. See details at: |
+ // https://codereview.chromium.org/2385423002 |
+ |
+ // Append buffers with first buffer establishing max_inter_buffer_distance |
+ // of 5 ms. This translates to a fudge room (2 x max_interbuffer_distance) of |
+ // 10 ms. |
+ NewCodedFrameGroupAppend("0K 5K 9D4K"); |
+ CheckExpectedRangesByTimestamp("{ [0,13) }"); |
+ |
+ // Trim off last 2 buffers, totaling 8 ms. Notably less than the current fudge |
+ // room of 10 ms. |
+ stream_->OnSetDuration(base::TimeDelta::FromMilliseconds(5)); |
+ |
+ // Verify truncation. |
+ CheckExpectedRangesByTimestamp("{ [0,5) }"); |
+ |
+ // Append new buffers just beyond the fudge-room allowance of 10ms. |
+ AppendBuffers("11K 15K"); |
+ |
+ // Verify new append creates a gap. |
+ CheckExpectedRangesByTimestamp("{ [0,5) [11,19) }"); |
+} |
+ |
+TEST_F(SourceBufferStreamTest, RemoveWithinFudgeRoom) { |
+ // This test requires specific relative proportions for fudge room, append |
+ // size, and removal amounts. See details at: |
+ // https://codereview.chromium.org/2385423002 |
+ |
+ // Append buffers with first buffer establishing max_inter_buffer_distance |
+ // of 5 ms. This translates to a fudge room (2 x max_interbuffer_distance) of |
+ // 10 ms. |
+ NewCodedFrameGroupAppend("0K 5K 9D4K"); |
+ CheckExpectedRangesByTimestamp("{ [0,13) }"); |
+ |
+ // Trim off last 2 buffers, totaling 8 ms. Notably less than the current fudge |
+ // room of 10 ms. |
+ RemoveInMs(5, 13, 13); |
+ |
+ // Verify removal. |
+ CheckExpectedRangesByTimestamp("{ [0,5) }"); |
+ |
+ // Append new buffers just beyond the fudge-room allowance of 10ms. |
+ AppendBuffers("11K 15K"); |
+ |
+ // Verify new append creates a gap. |
+ CheckExpectedRangesByTimestamp("{ [0,5) [11,19) }"); |
+} |
+ |
TEST_F(SourceBufferStreamTest, SetExplicitDuration_DeletePartialRange) { |
// Append 5 buffers at positions 0 through 4. |
NewCodedFrameGroupAppend(0, 5); |
@@ -4726,6 +4776,7 @@ TEST_F(SourceBufferStreamTest, |
SignalStartOfCodedFrameGroup(base::TimeDelta::FromMilliseconds(45)); |
CheckExpectedRangesByTimestamp("{ [0,60) }"); |
+ LOG(ERROR) << "-------------SECOND APPEND------------"; |
AppendBuffers("2000K 2010"); |
CheckExpectedRangesByTimestamp("{ [0,2020) }"); |
Seek(0); |
@@ -4748,12 +4799,14 @@ TEST_F(SourceBufferStreamTest, |
} |
TEST_F(SourceBufferStreamTest, |
- StartCodedFrameGroup_InExisting_RemoveGOP_ThenAppend_2) { |
+ StartCodedFrameGroup_InExisting_RemoveGOP_ThenAppend_2n) { |
NewCodedFrameGroupAppend("0K 10 20 30K 40 50"); |
SignalStartOfCodedFrameGroup(base::TimeDelta::FromMilliseconds(45)); |
+ LOG(ERROR) << "---REMOVING FROM 30 - 60 ---"; |
RemoveInMs(30, 60, 60); |
CheckExpectedRangesByTimestamp("{ [0,30) }"); |
+ LOG(ERROR) << "---SECOND APPEND---"; |
AppendBuffers("2000K 2010"); |
CheckExpectedRangesByTimestamp("{ [0,30) [45,2020) }"); |
Seek(0); |