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

Unified Diff: media/filters/source_buffer_stream_unittest.cc

Issue 2385423002: MediaSource: Fix CHECK crash in append fudge room edge case. (Closed)
Patch Set: cleanup Created 4 years, 2 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/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);
« media/filters/source_buffer_stream.cc ('K') | « media/filters/source_buffer_stream.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698