summaryrefslogtreecommitdiffstats
path: root/media/base/audio_splicer_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/base/audio_splicer_unittest.cc')
-rw-r--r--media/base/audio_splicer_unittest.cc37
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