Chromium Code Reviews| 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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "media/base/audio_buffer.h" | 6 #include "media/base/audio_buffer.h" |
| 7 #include "media/base/audio_bus.h" | 7 #include "media/base/audio_bus.h" |
| 8 #include "media/base/audio_splicer.h" | 8 #include "media/base/audio_splicer.h" |
| 9 #include "media/base/audio_timestamp_helper.h" | 9 #include "media/base/audio_timestamp_helper.h" |
| 10 #include "media/base/buffers.h" | 10 #include "media/base/buffers.h" |
| (...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 675 | 675 |
| 676 // |second_buffer| will complete the supposed splice. | 676 // |second_buffer| will complete the supposed splice. |
| 677 splicer_.SetSpliceTimestamp(kNoTimestamp()); | 677 splicer_.SetSpliceTimestamp(kNoTimestamp()); |
| 678 EXPECT_TRUE(AddInput(second_buffer)); | 678 EXPECT_TRUE(AddInput(second_buffer)); |
| 679 | 679 |
| 680 VerifyNextBuffer(gap_buffer); | 680 VerifyNextBuffer(gap_buffer); |
| 681 VerifyNextBuffer(second_buffer); | 681 VerifyNextBuffer(second_buffer); |
| 682 EXPECT_FALSE(splicer_.HasNextBuffer()); | 682 EXPECT_FALSE(splicer_.HasNextBuffer()); |
| 683 } | 683 } |
| 684 | 684 |
| 685 // Test behavior when a splice frame is incorrectly marked and there is a gap | |
| 686 // between whats in the pre splice and post splice that is too large to recover | |
|
acolwell GONE FROM CHROMIUM
2014/06/25 16:27:55
nit: s/whats/what's/
DaleCurtis
2014/06/25 18:30:10
Done.
| |
| 687 // from. | |
| 688 // +--------+ | |
| 689 // |11111111| | |
| 690 // +--------+ | |
| 691 // +------+ | |
| 692 // |222222| | |
| 693 // +------+ | |
| 694 // Results in an error and not a crash. | |
| 695 TEST_F(AudioSplicerTest, IncorrectlyMarkedSpliceWithBadGap) { | |
| 696 const int kBufferSize = | |
| 697 input_timestamp_helper_.GetFramesToTarget(max_crossfade_duration()) * 2; | |
| 698 const int kGapSize = kBufferSize + | |
| 699 input_timestamp_helper_.GetFramesToTarget( | |
| 700 base::TimeDelta::FromMilliseconds( | |
| 701 AudioSplicer::kMaxTimeDeltaInMilliseconds + 1)); | |
| 702 | |
| 703 scoped_refptr<AudioBuffer> first_buffer = | |
| 704 GetNextInputBuffer(1.0f, kBufferSize); | |
| 705 scoped_refptr<AudioBuffer> gap_buffer = | |
| 706 GetNextInputBuffer(0.0f, kGapSize); | |
| 707 splicer_.SetSpliceTimestamp(input_timestamp_helper_.GetTimestamp()); | |
| 708 scoped_refptr<AudioBuffer> second_buffer = | |
| 709 GetNextInputBuffer(0.0f, kBufferSize); | |
| 710 | |
| 711 // The splicer should pass through the first buffer since it's not part of the | |
| 712 // splice. | |
| 713 EXPECT_TRUE(AddInput(first_buffer)); | |
| 714 VerifyNextBuffer(first_buffer); | |
| 715 | |
| 716 // Do not add |gap_buffer|. | |
| 717 | |
| 718 // |second_buffer| will complete the supposed splice. | |
| 719 splicer_.SetSpliceTimestamp(kNoTimestamp()); | |
| 720 EXPECT_FALSE(AddInput(second_buffer)); | |
| 721 } | |
| 722 | |
| 685 } // namespace media | 723 } // namespace media |
| OLD | NEW |