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

Side by Side Diff: media/filters/chunk_demuxer_unittest.cc

Issue 563773002: Allow setting different memory limits for different stream types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 unified diff | Download patch
« no previous file with comments | « media/filters/chunk_demuxer.cc ('k') | media/filters/source_buffer_stream.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <algorithm> 5 #include <algorithm>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
(...skipping 944 matching lines...) Expand 10 before | Expand all | Expand 10 after
955 cb.SetClusterTimecode(timecode); 955 cb.SetClusterTimecode(timecode);
956 return cb.Finish(); 956 return cb.Finish();
957 } 957 }
958 958
959 void CheckExpectedRanges(const std::string& expected) { 959 void CheckExpectedRanges(const std::string& expected) {
960 CheckExpectedRanges(kSourceId, expected); 960 CheckExpectedRanges(kSourceId, expected);
961 } 961 }
962 962
963 void CheckExpectedRanges(const std::string& id, 963 void CheckExpectedRanges(const std::string& id,
964 const std::string& expected) { 964 const std::string& expected) {
965 Ranges<base::TimeDelta> r = demuxer_->GetBufferedRanges(id); 965 CheckExpectedRanges(demuxer_->GetBufferedRanges(id), expected);
966 }
966 967
968 void CheckExpectedRanges(DemuxerStream::Type type,
969 const std::string& expected) {
970 ChunkDemuxerStream* stream =
971 static_cast<ChunkDemuxerStream*>(demuxer_->GetStream(type));
972 CheckExpectedRanges(stream->GetBufferedRanges(kDefaultDuration()),
973 expected);
974 }
975
976 void CheckExpectedRanges(const Ranges<base::TimeDelta>& r,
977 const std::string& expected) {
967 std::stringstream ss; 978 std::stringstream ss;
968 ss << "{ "; 979 ss << "{ ";
969 for (size_t i = 0; i < r.size(); ++i) { 980 for (size_t i = 0; i < r.size(); ++i) {
970 ss << "[" << r.start(i).InMilliseconds() << "," 981 ss << "[" << r.start(i).InMilliseconds() << ","
971 << r.end(i).InMilliseconds() << ") "; 982 << r.end(i).InMilliseconds() << ") ";
972 } 983 }
973 ss << "}"; 984 ss << "}";
974 EXPECT_EQ(expected, ss.str()); 985 EXPECT_EQ(expected, ss.str());
975 } 986 }
976 987
(...skipping 2285 matching lines...) Expand 10 before | Expand all | Expand 10 after
3262 base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(200); 3273 base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(200);
3263 demuxer_->CancelPendingSeek(seek_time); 3274 demuxer_->CancelPendingSeek(seek_time);
3264 3275
3265 // Initiate the seek to the new location. 3276 // Initiate the seek to the new location.
3266 Seek(seek_time); 3277 Seek(seek_time);
3267 3278
3268 // Append data to satisfy the seek. 3279 // Append data to satisfy the seek.
3269 AppendCluster(seek_time.InMilliseconds(), 10); 3280 AppendCluster(seek_time.InMilliseconds(), 10);
3270 } 3281 }
3271 3282
3283 TEST_F(ChunkDemuxerTest, SetMemoryLimitType) {
3284 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO));
3285
3286 // Set different memory limits for audio and video.
3287 demuxer_->SetMemoryLimits(DemuxerStream::AUDIO, 10 * kBlockSize);
3288 demuxer_->SetMemoryLimits(DemuxerStream::VIDEO, 5 * kBlockSize);
3289
3290 base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(1000);
3291
3292 // Append data at the start that can be garbage collected:
3293 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, 0, 10);
3294 AppendSingleStreamCluster(kSourceId, kVideoTrackNum, 0, 5);
3295
3296 CheckExpectedRanges(DemuxerStream::AUDIO, "{ [0,230) }");
3297 CheckExpectedRanges(DemuxerStream::VIDEO, "{ [0,165) }");
3298
3299 // Seek so we can garbage collect the data appended above.
3300 Seek(seek_time);
3301
3302 // Append data at seek_time.
3303 AppendSingleStreamCluster(kSourceId, kAudioTrackNum,
3304 seek_time.InMilliseconds(), 10);
3305 AppendSingleStreamCluster(kSourceId, kVideoTrackNum,
3306 seek_time.InMilliseconds(), 5);
3307
3308 // Verify that the old data, and nothing more, has been garbage collected.
3309 CheckExpectedRanges(DemuxerStream::AUDIO, "{ [1000,1230) }");
3310 CheckExpectedRanges(DemuxerStream::VIDEO, "{ [1000,1165) }");
3311 }
3312
3272 TEST_F(ChunkDemuxerTest, GCDuringSeek) { 3313 TEST_F(ChunkDemuxerTest, GCDuringSeek) {
3273 ASSERT_TRUE(InitDemuxer(HAS_AUDIO)); 3314 ASSERT_TRUE(InitDemuxer(HAS_AUDIO));
3274 3315
3275 demuxer_->SetMemoryLimitsForTesting(5 * kBlockSize); 3316 demuxer_->SetMemoryLimits(DemuxerStream::AUDIO, 5 * kBlockSize);
3276 3317
3277 base::TimeDelta seek_time1 = base::TimeDelta::FromMilliseconds(1000); 3318 base::TimeDelta seek_time1 = base::TimeDelta::FromMilliseconds(1000);
3278 base::TimeDelta seek_time2 = base::TimeDelta::FromMilliseconds(500); 3319 base::TimeDelta seek_time2 = base::TimeDelta::FromMilliseconds(500);
3279 3320
3280 // Initiate a seek to |seek_time1|. 3321 // Initiate a seek to |seek_time1|.
3281 Seek(seek_time1); 3322 Seek(seek_time1);
3282 3323
3283 // Append data to satisfy the first seek request. 3324 // Append data to satisfy the first seek request.
3284 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, 3325 AppendSingleStreamCluster(kSourceId, kAudioTrackNum,
3285 seek_time1.InMilliseconds(), 5); 3326 seek_time1.InMilliseconds(), 5);
(...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after
3655 TEST_F(ChunkDemuxerTest, CuesBetweenClusters) { 3696 TEST_F(ChunkDemuxerTest, CuesBetweenClusters) {
3656 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); 3697 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO));
3657 3698
3658 AppendCluster(GenerateCluster(0, 0, 4)); 3699 AppendCluster(GenerateCluster(0, 0, 4));
3659 AppendData(kCuesHeader, sizeof(kCuesHeader)); 3700 AppendData(kCuesHeader, sizeof(kCuesHeader));
3660 AppendCluster(GenerateCluster(46, 66, 5)); 3701 AppendCluster(GenerateCluster(46, 66, 5));
3661 CheckExpectedRanges(kSourceId, "{ [0,115) }"); 3702 CheckExpectedRanges(kSourceId, "{ [0,115) }");
3662 } 3703 }
3663 3704
3664 } // namespace media 3705 } // namespace media
OLDNEW
« no previous file with comments | « media/filters/chunk_demuxer.cc ('k') | media/filters/source_buffer_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698