Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(836)

Unified Diff: media/base/audio_splicer_unittest.cc

Issue 240123004: Simplify AudioSplicer logic which slots buffers before or after a splice point. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/base/audio_splicer_unittest.cc
diff --git a/media/base/audio_splicer_unittest.cc b/media/base/audio_splicer_unittest.cc
index 2f74a50fc9995e844deb1de94aeb03db3029bf5a..13c33071d6b65ab7dff9352ada5fc4f76837a397 100644
--- a/media/base/audio_splicer_unittest.cc
+++ b/media/base/audio_splicer_unittest.cc
@@ -432,10 +432,10 @@ TEST_F(AudioSplicerTest, PartialOverlapCrossfade) {
EXPECT_TRUE(AddInput(overlapped_buffer));
EXPECT_FALSE(splicer_.HasNextBuffer());
- // Even though |overlapping_buffer| completes the splice, one extra buffer is
- // required to confirm it's actually a splice.
+ // |overlapping_buffer| completes the splice.
+ splicer_.SetSpliceTimestamp(kNoTimestamp());
EXPECT_TRUE(AddInput(overlapping_buffer));
- EXPECT_FALSE(splicer_.HasNextBuffer());
+ EXPECT_TRUE(splicer_.HasNextBuffer());
// Add one more buffer to make sure it's passed through untouched.
scoped_refptr<AudioBuffer> extra_post_splice_buffer =
@@ -509,6 +509,7 @@ TEST_F(AudioSplicerTest, PartialOverlapCrossfadeEndOfStream) {
// |overlapping_buffer| should not have enough data to complete the splice, so
// ensure output is not available.
+ splicer_.SetSpliceTimestamp(kNoTimestamp());
EXPECT_TRUE(AddInput(overlapping_buffer));
EXPECT_FALSE(splicer_.HasNextBuffer());
@@ -568,14 +569,10 @@ TEST_F(AudioSplicerTest, PartialOverlapCrossfadeShortPreSplice) {
EXPECT_TRUE(AddInput(overlapped_buffer));
EXPECT_FALSE(splicer_.HasNextBuffer());
- // Even though |overlapping_buffer| completes the splice, one extra buffer is
- // required to confirm it's actually a splice.
+ // |overlapping_buffer| completes the splice.
+ splicer_.SetSpliceTimestamp(kNoTimestamp());
EXPECT_TRUE(AddInput(overlapping_buffer));
- EXPECT_FALSE(splicer_.HasNextBuffer());
-
- // Add an EOS buffer to complete the splice.
- EXPECT_TRUE(AddInput(AudioBuffer::CreateEOSBuffer()));
- ASSERT_TRUE(splicer_.HasNextBuffer());
+ EXPECT_TRUE(splicer_.HasNextBuffer());
const int kExpectedPreSpliceSize = 55;
const base::TimeDelta kExpectedPreSpliceDuration =
@@ -602,10 +599,6 @@ TEST_F(AudioSplicerTest, PartialOverlapCrossfadeShortPreSplice) {
post_splice_output->duration());
EXPECT_TRUE(VerifyData(post_splice_output, GetValue(overlapping_buffer)));
-
- post_splice_output = splicer_.GetNextBuffer();
- EXPECT_TRUE(post_splice_output->end_of_stream());
-
EXPECT_FALSE(splicer_.HasNextBuffer());
}
@@ -642,6 +635,7 @@ TEST_F(AudioSplicerTest, IncorrectlyMarkedSplice) {
// |second_buffer| should complete the supposed splice, so ensure output is
// now available.
+ splicer_.SetSpliceTimestamp(kNoTimestamp());
EXPECT_TRUE(AddInput(second_buffer));
ASSERT_TRUE(splicer_.HasNextBuffer());
@@ -683,95 +677,13 @@ TEST_F(AudioSplicerTest, IncorrectlyMarkedSpliceWithGap) {
// Do not add |gap_buffer|.
- // |second_buffer| will trigger an exact overlap splice check.
+ // |second_buffer| will complete the supposed splice.
+ splicer_.SetSpliceTimestamp(kNoTimestamp());
EXPECT_TRUE(AddInput(second_buffer));
- EXPECT_FALSE(splicer_.HasNextBuffer());
-
- // When the next buffer is not an exact overlap, the bad splice detection code
- // will kick in and release the buffers.
- EXPECT_TRUE(AddInput(AudioBuffer::CreateEOSBuffer()));
- ASSERT_TRUE(splicer_.HasNextBuffer());
+ EXPECT_TRUE(splicer_.HasNextBuffer());
VerifyNextBuffer(gap_buffer);
VerifyNextBuffer(second_buffer);
- scoped_refptr<AudioBuffer> eos_buffer = splicer_.GetNextBuffer();
- EXPECT_TRUE(eos_buffer->end_of_stream());
- EXPECT_FALSE(splicer_.HasNextBuffer());
-}
-
-// Test behavior when a splice frame gets fuzzed such that there is a pre splice
-// buffer after the first which has a timestamp equal to the splice timestamp.
-// +-----------+
-// |11111111111|
-// +-----------+
-// +-------+
-// |2222222|
-// +-------+
-// +--------------+
-// |33333333333333|
-// +--------------+
-// Results in:
-// +---------+--------------+
-// |111111111|xyyyyyy3333333|
-// +---------+--------------+
-// Where x represents a crossfade between buffers 1 and 3; while y is a
-// crossfade between buffers 2 and 3.
-TEST_F(AudioSplicerTest, SpliceIncorrectlySlotted) {
wolenetz 2014/04/17 18:24:03 I'm confused I think. Why is this test no longer a
DaleCurtis 2014/04/17 20:03:18 It was necessary because we relied on the checking
- const int kBufferSize =
- input_timestamp_helper_.GetFramesToTarget(max_crossfade_duration());
- const int kOverlapSize = 2;
-
- scoped_refptr<AudioBuffer> buffer_1 =
- GetNextInputBuffer(1.0f, kBufferSize + kOverlapSize);
- input_timestamp_helper_.SetBaseTimestamp(buffer_1->timestamp());
- input_timestamp_helper_.AddFrames(kBufferSize);
-
- const base::TimeDelta splice_timestamp =
- input_timestamp_helper_.GetTimestamp();
- splicer_.SetSpliceTimestamp(splice_timestamp);
-
- scoped_refptr<AudioBuffer> buffer_2 = GetNextInputBuffer(0.5f, kBufferSize);
-
- // Create an overlap buffer which is just short of the crossfade size.
- input_timestamp_helper_.SetBaseTimestamp(splice_timestamp);
- scoped_refptr<AudioBuffer> buffer_3 =
- GetNextInputBuffer(0.0f, kBufferSize - kOverlapSize);
-
- // The splicer should be internally queuing input since |buffer_1| is part of
- // the supposed splice.
- EXPECT_TRUE(AddInput(buffer_1));
- EXPECT_FALSE(splicer_.HasNextBuffer());
-
- // Adding |buffer_2| should look like a completion of the splice, but still no
- // buffer should be handed out.
- EXPECT_TRUE(AddInput(buffer_2));
- EXPECT_FALSE(splicer_.HasNextBuffer());
-
- // Adding |buffer_3| should complete the splice correctly, but there is still
- // not enough data for crossfade, so it shouldn't return yet.
- EXPECT_TRUE(AddInput(buffer_3));
- EXPECT_FALSE(splicer_.HasNextBuffer());
-
- // Add an EOS buffer which should trigger completion of the splice.
- EXPECT_TRUE(AddInput(AudioBuffer::CreateEOSBuffer()));
- ASSERT_TRUE(splicer_.HasNextBuffer());
-
- const int kExpectedPreSpliceSize = kBufferSize;
- const base::TimeDelta kExpectedPreSpliceDuration = splice_timestamp;
- const base::TimeDelta kExpectedCrossfadeDuration =
- base::TimeDelta::FromMicroseconds(4966);
- VerifyPreSpliceOutput(
- buffer_1, buffer_3, kExpectedPreSpliceSize, kExpectedPreSpliceDuration);
- VerifyCrossfadeOutput(buffer_1,
- buffer_2,
- buffer_3,
- kOverlapSize,
- buffer_3->frame_count(),
- kExpectedCrossfadeDuration);
-
- scoped_refptr<AudioBuffer> eos_buffer = splicer_.GetNextBuffer();
- EXPECT_TRUE(eos_buffer->end_of_stream());
-
EXPECT_FALSE(splicer_.HasNextBuffer());
}

Powered by Google App Engine
This is Rietveld 408576698