| 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 3d03ccd16867f6c662ee0fa28e3e2e31fcf045bb..4ea3329ea840566394eb55c7a9b3b03e268a0b82 100644
|
| --- a/media/filters/source_buffer_stream_unittest.cc
|
| +++ b/media/filters/source_buffer_stream_unittest.cc
|
| @@ -4285,6 +4285,64 @@ TEST_F(SourceBufferStreamTest, ConfigChange_ReSeek) {
|
| CheckVideoConfig(new_config);
|
| }
|
|
|
| +TEST_F(SourceBufferStreamTest,
|
| + TrackBuffer_WithDelayUntilNextKeyframeInOverlap) {
|
| + NewSegmentAppend("0K 10 20 30 40");
|
| +
|
| + // Read the first 4 buffers, so next buffer is at time 40.
|
| + Seek(0);
|
| + CheckExpectedRangesByTimestamp("{ [0,50) }");
|
| + CheckExpectedBuffers("0K 10 20 30");
|
| +
|
| + // Overlap-append, populating track buffer with timestamp 40 from original
|
| + // append. Confirm there could be a large jump in time until the next key
|
| + // frame after exhausting the track buffer.
|
| + NewSegmentAppend(
|
| + "31K 41 51 61 71 81 91 101 111 121 "
|
| + "131K 141");
|
| + CheckExpectedRangesByTimestamp("{ [0,151) }");
|
| + // Confirm the large jump. If this test is changed, update
|
| + // TrackBufferExhaustion_ImmediateNewTrackBuffer accordingly.
|
| + CheckExpectedBuffers("40 131K 141");
|
| + CheckNoNextBuffer();
|
| +}
|
| +
|
| +TEST_F(SourceBufferStreamTest,
|
| + TrackBuffer_ExhaustionAndImmediateNewTrackBuffer) {
|
| + NewSegmentAppend("0K 10 20 30 40");
|
| +
|
| + // Read the first 4 buffers, so next buffer is at time 40.
|
| + Seek(0);
|
| + CheckExpectedRangesByTimestamp("{ [0,50) }");
|
| + CheckExpectedBuffers("0K 10 20 30");
|
| +
|
| + // Overlap-append
|
| + NewSegmentAppend(
|
| + "31K 41 51 61 71 81 91 101 111 121 "
|
| + "131K 141");
|
| + CheckExpectedRangesByTimestamp("{ [0,151) }");
|
| +
|
| + // Exhaust the track buffer, but don't read any of the overlapping append yet.
|
| + CheckExpectedBuffers("40");
|
| +
|
| + // Selected range's next buffer is now the 131K buffer from the overlapping
|
| + // append. (See TrackBuffer_WithDelayUntilNextKeyframeInOverlap for
|
| + // confirmation.)
|
| + // Do another overlap-append to immediately create another track buffer and
|
| + // verify.
|
| + NewSegmentAppend("22K 32 42 52 62 72 82 92 102 112 122K 132 142 152K 162");
|
| + CheckExpectedRangesByTimestamp("{ [0,172) }");
|
| +
|
| + //**********
|
| + // BIG TODO: The following outputs to MediaLog a message understating the
|
| + // actual gap. Actual gap is time 40->131K==91ms. Log shows 11ms==141->152K.
|
| + // Fix the implementation and perhaps verify the log with a MockMediaLog?
|
| + //**********
|
| +
|
| + CheckExpectedBuffers("131K 141 152K 162");
|
| + CheckNoNextBuffer();
|
| +}
|
| +
|
| // TODO(vrk): Add unit tests where keyframes are unaligned between streams.
|
| // (crbug.com/133557)
|
|
|
|
|