diff options
Diffstat (limited to 'media/base/audio_splicer_unittest.cc')
-rw-r--r-- | media/base/audio_splicer_unittest.cc | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/media/base/audio_splicer_unittest.cc b/media/base/audio_splicer_unittest.cc index be72273..ba2d6e8 100644 --- a/media/base/audio_splicer_unittest.cc +++ b/media/base/audio_splicer_unittest.cc @@ -590,4 +590,41 @@ TEST_F(AudioSplicerTest, PartialOverlapCrossfadeShortPreSplice) { EXPECT_FALSE(splicer_.HasNextBuffer()); } +// Test behavior when a splice frame is incorrectly marked and does not actually +// overlap. +// +----------+ +// |1111111111| +// +----------+ +// +--------------+ +// |22222222222222| +// +--------------+ +// Results in: +// +----------+--------------+ +// |1111111111|22222222222222| +// +----------+--------------+ +TEST_F(AudioSplicerTest, IncorrectlyMarkedSplice) { + const int kBufferSize = + input_timestamp_helper_.GetFramesToTarget(max_crossfade_duration()) * 2; + + scoped_refptr<AudioBuffer> first_buffer = + GetNextInputBuffer(1.0f, kBufferSize); + splicer_.SetSpliceTimestamp(input_timestamp_helper_.GetTimestamp()); + scoped_refptr<AudioBuffer> second_buffer = + GetNextInputBuffer(0.0f, kBufferSize); + + // The splicer should be internally queuing input since |first_buffer| is part + // of the supposed splice. + EXPECT_TRUE(AddInput(first_buffer)); + EXPECT_FALSE(splicer_.HasNextBuffer()); + + // |second_buffer| should complete the supposed splice, so ensure output is + // now available. + EXPECT_TRUE(AddInput(second_buffer)); + ASSERT_TRUE(splicer_.HasNextBuffer()); + + VerifyNextBuffer(first_buffer); + VerifyNextBuffer(second_buffer); + EXPECT_FALSE(splicer_.HasNextBuffer()); +} + } // namespace media |