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

Unified Diff: media/filters/source_buffer_stream_unittest.cc

Issue 1041983002: Tests that illustrate ambiguous spec scenarios and Chromium's behavior Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 | « no previous file | no next file » | 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 3828d6c02ec74cfa7f45401a458f1d57b9639e57..d0a03095397851bce396c96c93b3503476fe6968 100644
--- a/media/filters/source_buffer_stream_unittest.cc
+++ b/media/filters/source_buffer_stream_unittest.cc
@@ -3941,6 +3941,54 @@ TEST_F(SourceBufferStreamTest, BFrames) {
CheckNoNextBuffer();
}
+TEST_F(SourceBufferStreamTest, Video_DependencyInterrupted) {
+ NewSegmentAppend("0D30K 30");
+ CheckExpectedRangesByTimestamp("{ [0,60) }");
+ NewSegmentAppend("10D15K");
+
+ // Spec lack of clarity:
+ // The problem is the buffer at time 30 might be decoded *after* 10K has
+ // interrupted the decode dependency on 0K.
+ // If this test passes, then at least Chromium seems to be sane, though spec
+ // is ambiguous.
+ CheckExpectedRangesByTimestamp("{ [0,25) }");
+
+ // Seeking here to possibly prevent SBS track_buffer_ from interfering.
+ Seek(0);
+
+ CheckExpectedBuffers("0K 10K");
+ CheckNoNextBuffer();
+}
+
+TEST_F(SourceBufferStreamTest, Video_OverlappedFrameDurationShouldChange) {
+ NewSegmentAppend("0D30K");
+ NewSegmentAppend("100D30K");
+ CheckExpectedRangesByTimestamp("{ [0,30) [100,130) }");
+ NewSegmentAppend("10D15K");
+ CheckExpectedRangesByTimestamp("{ [0,25) [100,130) }");
+
+ RemoveInMs(10, 25, 130);
+
+ // Spec lack of clarity, and Chromium likely exhibiting bad behavior:
+ // The problem is the removal of the overlapping buffer [10, 15) exposes the
+ // frame end time of the remaining last buffer in the first range, which the
+ // spec doesn't say should have been reduced as part of this overlap. Hence,
+ // due to the remove operation, the buffered duration of the range
+ // *increases*. This is probably wrong in both spec and implementation.
+ // tl;dr: Shouldn't it be "{ [0, 10) [100, 130) }" here?
+ CheckExpectedRangesByTimestamp("{ [0,30) [100,130) }");
+
+ // Seeking here to possibly prevent SBS track_buffer_ from interfering.
+ Seek(0);
+
+ CheckExpectedBuffers("0K");
+ CheckNoNextBuffer();
+
+ SeekToTimestamp(base::TimeDelta::FromMilliseconds(100));
+ CheckExpectedBuffers("100K");
+ CheckNoNextBuffer();
+}
+
// TODO(vrk): Add unit tests where keyframes are unaligned between streams.
// (crbug.com/133557)
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698