OLD | NEW |
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 3315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3326 Seek(seek_time); | 3326 Seek(seek_time); |
3327 | 3327 |
3328 // Append data to satisfy the seek. | 3328 // Append data to satisfy the seek. |
3329 AppendCluster(seek_time.InMilliseconds(), 10); | 3329 AppendCluster(seek_time.InMilliseconds(), 10); |
3330 } | 3330 } |
3331 | 3331 |
3332 TEST_F(ChunkDemuxerTest, SetMemoryLimitType) { | 3332 TEST_F(ChunkDemuxerTest, SetMemoryLimitType) { |
3333 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); | 3333 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
3334 | 3334 |
3335 // Set different memory limits for audio and video. | 3335 // Set different memory limits for audio and video. |
3336 demuxer_->SetMemoryLimits(DemuxerStream::AUDIO, 10 * kBlockSize); | 3336 DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
3337 demuxer_->SetMemoryLimits(DemuxerStream::VIDEO, 5 * kBlockSize); | 3337 audio_stream->SetMemoryLimit(10 * kBlockSize); |
| 3338 DemuxerStream* video_stream = demuxer_->GetStream(DemuxerStream::VIDEO); |
| 3339 video_stream->SetMemoryLimit(5 * kBlockSize); |
3338 | 3340 |
3339 base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(1000); | 3341 base::TimeDelta seek_time = base::TimeDelta::FromMilliseconds(1000); |
3340 | 3342 |
3341 // Append data at the start that can be garbage collected: | 3343 // Append data at the start that can be garbage collected: |
3342 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, 0, 10); | 3344 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, 0, 10); |
3343 AppendSingleStreamCluster(kSourceId, kVideoTrackNum, 0, 5); | 3345 AppendSingleStreamCluster(kSourceId, kVideoTrackNum, 0, 5); |
3344 | 3346 |
3345 CheckExpectedRanges(DemuxerStream::AUDIO, "{ [0,230) }"); | 3347 CheckExpectedRanges(DemuxerStream::AUDIO, "{ [0,230) }"); |
3346 CheckExpectedRanges(DemuxerStream::VIDEO, "{ [0,165) }"); | 3348 CheckExpectedRanges(DemuxerStream::VIDEO, "{ [0,165) }"); |
3347 | 3349 |
3348 // Seek so we can garbage collect the data appended above. | 3350 // Seek so we can garbage collect the data appended above. |
3349 Seek(seek_time); | 3351 Seek(seek_time); |
3350 | 3352 |
3351 // Append data at seek_time. | 3353 // Append data at seek_time. |
3352 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, | 3354 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, |
3353 seek_time.InMilliseconds(), 10); | 3355 seek_time.InMilliseconds(), 10); |
3354 AppendSingleStreamCluster(kSourceId, kVideoTrackNum, | 3356 AppendSingleStreamCluster(kSourceId, kVideoTrackNum, |
3355 seek_time.InMilliseconds(), 5); | 3357 seek_time.InMilliseconds(), 5); |
3356 | 3358 |
3357 // Verify that the old data, and nothing more, has been garbage collected. | 3359 // Verify that the old data, and nothing more, has been garbage collected. |
3358 CheckExpectedRanges(DemuxerStream::AUDIO, "{ [1000,1230) }"); | 3360 CheckExpectedRanges(DemuxerStream::AUDIO, "{ [1000,1230) }"); |
3359 CheckExpectedRanges(DemuxerStream::VIDEO, "{ [1000,1165) }"); | 3361 CheckExpectedRanges(DemuxerStream::VIDEO, "{ [1000,1165) }"); |
3360 } | 3362 } |
3361 | 3363 |
3362 TEST_F(ChunkDemuxerTest, GCDuringSeek) { | 3364 TEST_F(ChunkDemuxerTest, GCDuringSeek) { |
3363 ASSERT_TRUE(InitDemuxer(HAS_AUDIO)); | 3365 ASSERT_TRUE(InitDemuxer(HAS_AUDIO)); |
3364 | 3366 |
3365 demuxer_->SetMemoryLimits(DemuxerStream::AUDIO, 5 * kBlockSize); | 3367 DemuxerStream* audio_stream = demuxer_->GetStream(DemuxerStream::AUDIO); |
| 3368 audio_stream->SetMemoryLimit(5 * kBlockSize); |
3366 | 3369 |
3367 base::TimeDelta seek_time1 = base::TimeDelta::FromMilliseconds(1000); | 3370 base::TimeDelta seek_time1 = base::TimeDelta::FromMilliseconds(1000); |
3368 base::TimeDelta seek_time2 = base::TimeDelta::FromMilliseconds(500); | 3371 base::TimeDelta seek_time2 = base::TimeDelta::FromMilliseconds(500); |
3369 | 3372 |
3370 // Initiate a seek to |seek_time1|. | 3373 // Initiate a seek to |seek_time1|. |
3371 Seek(seek_time1); | 3374 Seek(seek_time1); |
3372 | 3375 |
3373 // Append data to satisfy the first seek request. | 3376 // Append data to satisfy the first seek request. |
3374 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, | 3377 AppendSingleStreamCluster(kSourceId, kAudioTrackNum, |
3375 seek_time1.InMilliseconds(), 5); | 3378 seek_time1.InMilliseconds(), 5); |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3748 TEST_F(ChunkDemuxerTest, CuesBetweenClusters) { | 3751 TEST_F(ChunkDemuxerTest, CuesBetweenClusters) { |
3749 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); | 3752 ASSERT_TRUE(InitDemuxer(HAS_AUDIO | HAS_VIDEO)); |
3750 | 3753 |
3751 AppendCluster(GenerateCluster(0, 0, 4)); | 3754 AppendCluster(GenerateCluster(0, 0, 4)); |
3752 AppendData(kCuesHeader, sizeof(kCuesHeader)); | 3755 AppendData(kCuesHeader, sizeof(kCuesHeader)); |
3753 AppendCluster(GenerateCluster(46, 66, 5)); | 3756 AppendCluster(GenerateCluster(46, 66, 5)); |
3754 CheckExpectedRanges(kSourceId, "{ [0,115) }"); | 3757 CheckExpectedRanges(kSourceId, "{ [0,115) }"); |
3755 } | 3758 } |
3756 | 3759 |
3757 } // namespace media | 3760 } // namespace media |
OLD | NEW |