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 34f131637d8849c48421914c2fada6be32c664ee..1eeebabb6ef892943b573948e995a92ffa797b74 100644 |
| --- a/media/filters/source_buffer_stream_unittest.cc |
| +++ b/media/filters/source_buffer_stream_unittest.cc |
| @@ -3534,6 +3534,76 @@ TEST_F(SourceBufferStreamTest, OverlapSplitAndMergeWhileWaitingForMoreData) { |
| CheckExpectedBuffers("180K 210"); |
| } |
| +// Verify that a single coded frame at the current read position unblocks the |
| +// read even if the frame is buffered after the previously read position is |
| +// removed. |
| +TEST_F(SourceBufferStreamTest, AfterRemove_SingleFrameRange_Unblocks_Read) { |
| + Seek(0); |
| + NewCodedFrameGroupAppend("0K 30 60 90D30"); |
| + CheckExpectedRangesByTimestamp("{ [0,120) }"); |
| + CheckExpectedBuffers("0K 30 60 90"); |
| + CheckNoNextBuffer(); |
| + |
| + RemoveInMs(0, 120, 120); |
| + CheckExpectedRangesByTimestamp("{ }"); |
| + NewCodedFrameGroupAppend("120D30K"); |
| + CheckExpectedRangesByTimestamp("{ [120,150) }"); |
| + CheckExpectedBuffers("120K"); |
|
wolenetz
2016/04/20 00:38:24
This line fails prior to the SBS.cc change also in
chcunningham
2016/04/20 20:14:27
Acknowledged.
|
| + CheckNoNextBuffer(); |
| +} |
| + |
| +// Verify that multiple short (relative to max-inter-buffer-distance * 2) coded |
| +// frames at the current read position unblock the read even if the frames are |
| +// buffered after the previously read position is removed. |
| +TEST_F(SourceBufferStreamTest, AfterRemove_TinyFrames_Unblock_Read_1) { |
| + Seek(0); |
| + NewCodedFrameGroupAppend("0K 30 60 90D30"); |
| + CheckExpectedRangesByTimestamp("{ [0,120) }"); |
| + CheckExpectedBuffers("0K 30 60 90"); |
| + CheckNoNextBuffer(); |
| + |
| + RemoveInMs(0, 120, 120); |
| + CheckExpectedRangesByTimestamp("{ }"); |
| + NewCodedFrameGroupAppend("120D1K 121D1"); |
| + CheckExpectedRangesByTimestamp("{ [120,122) }"); |
| + CheckExpectedBuffers("120K 121"); |
|
wolenetz
2016/04/20 00:38:24
This line fails prior to the SBS.cc change also in
chcunningham
2016/04/20 20:14:27
Done.
|
| + CheckNoNextBuffer(); |
| +} |
| + |
| +// Verify that multiple short (relative to max-inter-buffer-distance * 2) coded |
| +// frames starting at the fudge room boundary unblock the read even if the |
| +// frames are buffered after the previously read position is removed. |
| +TEST_F(SourceBufferStreamTest, AfterRemove_TinyFrames_Unblock_Read_2) { |
| + Seek(0); |
| + NewCodedFrameGroupAppend("0K 30 60 90D30"); |
| + CheckExpectedRangesByTimestamp("{ [0,120) }"); |
| + CheckExpectedBuffers("0K 30 60 90"); |
| + CheckNoNextBuffer(); |
| + |
| + RemoveInMs(0, 120, 120); |
| + CheckExpectedRangesByTimestamp("{ }"); |
| + NewCodedFrameGroupAppend("150D1K 151D1"); |
| + CheckExpectedRangesByTimestamp("{ [150,152) }"); |
| + CheckExpectedBuffers("150K 151"); |
|
wolenetz
2016/04/20 00:38:24
This line fails prior to the SBS.cc change also in
chcunningham
2016/04/20 20:14:27
Acknowledged.
|
| + CheckNoNextBuffer(); |
| +} |
| + |
| +// Verify that coded frames starting after the fudge room boundary do not |
| +// unblock the read when buffered after the previously read position is removed. |
| +TEST_F(SourceBufferStreamTest, AfterRemove_BeyondFudge_Stalled) { |
| + Seek(0); |
| + NewCodedFrameGroupAppend("0K 30 60 90D30"); |
| + CheckExpectedRangesByTimestamp("{ [0,120) }"); |
| + CheckExpectedBuffers("0K 30 60 90"); |
| + CheckNoNextBuffer(); |
| + |
| + RemoveInMs(0, 120, 120); |
| + CheckExpectedRangesByTimestamp("{ }"); |
| + NewCodedFrameGroupAppend("151D1K 152D1"); |
| + CheckExpectedRangesByTimestamp("{ [151,153) }"); |
| + CheckNoNextBuffer(); |
|
wolenetz
2016/04/20 00:38:24
This test confirms stall behavior that used to be
chcunningham
2016/04/20 20:14:27
Acknowledged.
|
| +} |
| + |
| // Verify that non-keyframes with the same timestamp in the same |
| // append are handled correctly. |
| TEST_F(SourceBufferStreamTest, SameTimestamp_Video_SingleAppend) { |