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 |