| 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 |