Index: media/filters/chunk_demuxer_unittest.cc |
diff --git a/media/filters/chunk_demuxer_unittest.cc b/media/filters/chunk_demuxer_unittest.cc |
index 4ac5616b72e6b5dda8dd7b7d2e3d3f7d64687565..57b49b1f57fbf33359603c24f8b2f141b0366bfd 100644 |
--- a/media/filters/chunk_demuxer_unittest.cc |
+++ b/media/filters/chunk_demuxer_unittest.cc |
@@ -962,8 +962,19 @@ class ChunkDemuxerTest : public ::testing::Test { |
void CheckExpectedRanges(const std::string& id, |
const std::string& expected) { |
- Ranges<base::TimeDelta> r = demuxer_->GetBufferedRanges(id); |
+ CheckExpectedRanges(demuxer_->GetBufferedRanges(id), expected); |
+ } |
+ void CheckExpectedRanges(DemuxerStream::Type type, |
+ const std::string& expected) { |
+ ChunkDemuxerStream* stream = |
+ static_cast<ChunkDemuxerStream*>(demuxer_->GetStream(type)); |
+ CheckExpectedRanges(stream->GetBufferedRanges(kDefaultDuration()), |
+ expected); |
+ } |
+ |
+ void CheckExpectedRanges(const Ranges<base::TimeDelta>& r, |
+ const std::string& expected) { |
std::stringstream ss; |
ss << "{ "; |
for (size_t i = 0; i < r.size(); ++i) { |
@@ -3269,10 +3280,40 @@ TEST_F(ChunkDemuxerTest, CanceledSeekDuringInitialPreroll) { |
AppendCluster(seek_time.InMilliseconds(), 10); |
} |
+TEST_F(ChunkDemuxerTest, SetMemoryLimitType) { |
+ ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
+ |
+ // Set different memory limits for audio and video. |
+ demuxer_->SetMemoryLimits(DemuxerStream::AUDIO, 10 * kBlockSize); |
+ demuxer_->SetMemoryLimits(DemuxerStream::VIDEO, 5 * kBlockSize); |
+ |
+ base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(1000); |
+ |
+ // Append data at the start that can be garbage collected: |
+ AppendSingleStreamCluster(kSourceId, kAudioTrackNum, 0, 10); |
+ AppendSingleStreamCluster(kSourceId, kVideoTrackNum, 0, 5); |
+ |
+ CheckExpectedRanges(DemuxerStream::AUDIO, "{ [0,230) }"); |
+ CheckExpectedRanges(DemuxerStream::VIDEO, "{ [0,165) }"); |
+ |
+ // Seek so we can garbage collect the data appended above. |
+ Seek(seek_time); |
+ |
+ // Append data at seek_time. |
+ AppendSingleStreamCluster(kSourceId, kAudioTrackNum, |
+ seek_time.InMilliseconds(), 10); |
+ AppendSingleStreamCluster(kSourceId, kVideoTrackNum, |
+ seek_time.InMilliseconds(), 5); |
+ |
+ // Verify that the old data, and nothing more, has been garbage collected. |
+ CheckExpectedRanges(DemuxerStream::AUDIO, "{ [1000,1230) }"); |
+ CheckExpectedRanges(DemuxerStream::VIDEO, "{ [1000,1165) }"); |
+} |
+ |
TEST_F(ChunkDemuxerTest, GCDuringSeek) { |
ASSERT_TRUE(InitDemuxer(HAS_AUDIO)); |
- demuxer_->SetMemoryLimitsForTesting(5 * kBlockSize); |
+ demuxer_->SetMemoryLimits(DemuxerStream::AUDIO, 5 * kBlockSize); |
base::TimeDelta seek_time1 = base::TimeDelta::FromMilliseconds(1000); |
base::TimeDelta seek_time2 = base::TimeDelta::FromMilliseconds(500); |