Index: media/base/audio_buffer_converter_unittest.cc |
diff --git a/media/base/audio_buffer_converter_unittest.cc b/media/base/audio_buffer_converter_unittest.cc |
index 80567cf990f1527e271e00c473f15600be8036c7..032702ee4995bca4f4aad58a88f5a8bb76477bda 100644 |
--- a/media/base/audio_buffer_converter_unittest.cc |
+++ b/media/base/audio_buffer_converter_unittest.cc |
@@ -14,12 +14,15 @@ namespace media { |
const int kOutSampleRate = 44100; |
const ChannelLayout kOutChannelLayout = CHANNEL_LAYOUT_STEREO; |
+const int kOutChannelCount = 2; |
static scoped_refptr<AudioBuffer> MakeTestBuffer(int sample_rate, |
ChannelLayout channel_layout, |
+ int channel_count, |
int frames) { |
return MakeAudioBuffer<uint8>(kSampleFormatU8, |
channel_layout, |
+ channel_count, |
sample_rate, |
0, |
1, |
@@ -37,7 +40,7 @@ class AudioBufferConverterTest : public ::testing::Test { |
kOutSampleRate, |
16, |
512); |
- audio_buffer_converter_.reset(new AudioBufferConverter(output_params)); |
+ ResetConverter(output_params); |
} |
void Reset() { |
@@ -61,8 +64,9 @@ class AudioBufferConverterTest : public ::testing::Test { |
scoped_refptr<AudioBuffer> out = audio_buffer_converter_->GetNextBuffer(); |
if (!out->end_of_stream()) { |
output_frames_ += out->frame_count(); |
- EXPECT_EQ(out->sample_rate(), kOutSampleRate); |
- EXPECT_EQ(out->channel_layout(), kOutChannelLayout); |
+ EXPECT_EQ(out->sample_rate(), out_sample_rate_); |
+ EXPECT_EQ(out->channel_layout(), out_channel_layout_); |
+ EXPECT_EQ(out->channel_count(), out_channel_count_); |
} else { |
EXPECT_FALSE(audio_buffer_converter_->HasNextBuffer()); |
} |
@@ -70,29 +74,42 @@ class AudioBufferConverterTest : public ::testing::Test { |
EXPECT_EQ(output_frames_, ceil(expected_output_frames_)); |
} |
+ void ResetConverter(AudioParameters out_params) { |
+ audio_buffer_converter_.reset(new AudioBufferConverter(out_params)); |
+ out_channel_layout_ = out_params.channel_layout(); |
+ out_channel_count_ = out_params.channels(); |
+ out_sample_rate_ = out_params.sample_rate(); |
+ } |
+ |
private: |
scoped_ptr<AudioBufferConverter> audio_buffer_converter_; |
int input_frames_; |
double expected_output_frames_; |
int output_frames_; |
+ |
+ int out_sample_rate_; |
+ ChannelLayout out_channel_layout_; |
+ int out_channel_count_; |
}; |
TEST_F(AudioBufferConverterTest, PassThrough) { |
scoped_refptr<AudioBuffer> in = |
- MakeTestBuffer(kOutSampleRate, kOutChannelLayout, 512); |
+ MakeTestBuffer(kOutSampleRate, kOutChannelLayout, kOutChannelCount, 512); |
AddInput(in); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, Downsample) { |
- scoped_refptr<AudioBuffer> in = MakeTestBuffer(48000, kOutChannelLayout, 512); |
+ scoped_refptr<AudioBuffer> in = |
+ MakeTestBuffer(48000, kOutChannelLayout, kOutChannelCount, 512); |
AddInput(in); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, Upsample) { |
- scoped_refptr<AudioBuffer> in = MakeTestBuffer(8000, kOutChannelLayout, 512); |
+ scoped_refptr<AudioBuffer> in = |
+ MakeTestBuffer(8000, kOutChannelLayout, kOutChannelCount, 512); |
AddInput(in); |
ConsumeAllOutput(); |
} |
@@ -100,69 +117,74 @@ TEST_F(AudioBufferConverterTest, Upsample) { |
// Test resampling a buffer smaller than the SincResampler's kernel size. |
TEST_F(AudioBufferConverterTest, Resample_TinyBuffer) { |
AddInput(MakeTestBuffer( |
- 48000, CHANNEL_LAYOUT_STEREO, SincResampler::kKernelSize - 1)); |
+ 48000, CHANNEL_LAYOUT_STEREO, 2, SincResampler::kKernelSize - 1)); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, Resample_DifferingBufferSizes) { |
const int input_sample_rate = 48000; |
- AddInput(MakeTestBuffer(input_sample_rate, kOutChannelLayout, 100)); |
- AddInput(MakeTestBuffer(input_sample_rate, kOutChannelLayout, 200)); |
- AddInput(MakeTestBuffer(input_sample_rate, kOutChannelLayout, 300)); |
- AddInput(MakeTestBuffer(input_sample_rate, kOutChannelLayout, 400)); |
- AddInput(MakeTestBuffer(input_sample_rate, kOutChannelLayout, 500)); |
+ AddInput(MakeTestBuffer( |
+ input_sample_rate, kOutChannelLayout, kOutChannelCount, 100)); |
+ AddInput(MakeTestBuffer( |
+ input_sample_rate, kOutChannelLayout, kOutChannelCount, 200)); |
+ AddInput(MakeTestBuffer( |
+ input_sample_rate, kOutChannelLayout, kOutChannelCount, 300)); |
+ AddInput(MakeTestBuffer( |
+ input_sample_rate, kOutChannelLayout, kOutChannelCount, 400)); |
+ AddInput(MakeTestBuffer( |
+ input_sample_rate, kOutChannelLayout, kOutChannelCount, 500)); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, ChannelDownmix) { |
scoped_refptr<AudioBuffer> in = |
- MakeTestBuffer(kOutSampleRate, CHANNEL_LAYOUT_MONO, 512); |
+ MakeTestBuffer(kOutSampleRate, CHANNEL_LAYOUT_MONO, 1, 512); |
AddInput(in); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, ChannelUpmix) { |
scoped_refptr<AudioBuffer> in = |
- MakeTestBuffer(kOutSampleRate, CHANNEL_LAYOUT_5_1, 512); |
+ MakeTestBuffer(kOutSampleRate, CHANNEL_LAYOUT_5_1, 6, 512); |
AddInput(in); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, ResampleAndRemix) { |
scoped_refptr<AudioBuffer> in = |
- MakeTestBuffer(48000, CHANNEL_LAYOUT_5_1, 512); |
+ MakeTestBuffer(48000, CHANNEL_LAYOUT_5_1, 6, 512); |
AddInput(in); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, ConfigChange_SampleRate) { |
- AddInput(MakeTestBuffer(48000, kOutChannelLayout, 512)); |
- AddInput(MakeTestBuffer(44100, kOutChannelLayout, 512)); |
+ AddInput(MakeTestBuffer(48000, kOutChannelLayout, kOutChannelCount, 512)); |
+ AddInput(MakeTestBuffer(44100, kOutChannelLayout, kOutChannelCount, 512)); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, ConfigChange_ChannelLayout) { |
- AddInput(MakeTestBuffer(kOutSampleRate, CHANNEL_LAYOUT_STEREO, 512)); |
- AddInput(MakeTestBuffer(kOutSampleRate, CHANNEL_LAYOUT_MONO, 512)); |
+ AddInput(MakeTestBuffer(kOutSampleRate, CHANNEL_LAYOUT_STEREO, 2, 512)); |
+ AddInput(MakeTestBuffer(kOutSampleRate, CHANNEL_LAYOUT_MONO, 1, 512)); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, ConfigChange_SampleRateAndChannelLayout) { |
- AddInput(MakeTestBuffer(44100, CHANNEL_LAYOUT_STEREO, 512)); |
- AddInput(MakeTestBuffer(48000, CHANNEL_LAYOUT_MONO, 512)); |
+ AddInput(MakeTestBuffer(44100, CHANNEL_LAYOUT_STEREO, 2, 512)); |
+ AddInput(MakeTestBuffer(48000, CHANNEL_LAYOUT_MONO, 1, 512)); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, ConfigChange_Multiple) { |
- AddInput(MakeTestBuffer(44100, CHANNEL_LAYOUT_STEREO, 512)); |
- AddInput(MakeTestBuffer(48000, CHANNEL_LAYOUT_MONO, 512)); |
- AddInput(MakeTestBuffer(44100, CHANNEL_LAYOUT_5_1, 512)); |
- AddInput(MakeTestBuffer(22050, CHANNEL_LAYOUT_STEREO, 512)); |
+ AddInput(MakeTestBuffer(44100, CHANNEL_LAYOUT_STEREO, 2, 512)); |
+ AddInput(MakeTestBuffer(48000, CHANNEL_LAYOUT_MONO, 1, 512)); |
+ AddInput(MakeTestBuffer(44100, CHANNEL_LAYOUT_5_1, 6, 512)); |
+ AddInput(MakeTestBuffer(22050, CHANNEL_LAYOUT_STEREO, 2, 512)); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, Reset) { |
- AddInput(MakeTestBuffer(44100, CHANNEL_LAYOUT_STEREO, 512)); |
+ AddInput(MakeTestBuffer(44100, CHANNEL_LAYOUT_STEREO, 2, 512)); |
Reset(); |
ConsumeAllOutput(); |
} |
@@ -170,16 +192,32 @@ TEST_F(AudioBufferConverterTest, Reset) { |
TEST_F(AudioBufferConverterTest, ResampleThenReset) { |
// Resampling is likely to leave some data buffered in AudioConverter's |
// fifo or resampler, so make sure Reset() cleans that all up. |
- AddInput(MakeTestBuffer(48000, CHANNEL_LAYOUT_STEREO, 512)); |
+ AddInput(MakeTestBuffer(48000, CHANNEL_LAYOUT_STEREO, 2, 512)); |
Reset(); |
ConsumeAllOutput(); |
} |
TEST_F(AudioBufferConverterTest, ResetThenConvert) { |
- AddInput(MakeTestBuffer(kOutSampleRate, kOutChannelLayout, 512)); |
+ AddInput( |
+ MakeTestBuffer(kOutSampleRate, kOutChannelLayout, kOutChannelCount, 512)); |
Reset(); |
// Make sure we can keep using the AudioBufferConverter after we've Reset(). |
- AddInput(MakeTestBuffer(kOutSampleRate, kOutChannelLayout, 512)); |
+ AddInput( |
+ MakeTestBuffer(kOutSampleRate, kOutChannelLayout, kOutChannelCount, 512)); |
+ ConsumeAllOutput(); |
+} |
+ |
+TEST_F(AudioBufferConverterTest, DiscreteChannelLayout) { |
+ AudioParameters output_params(AudioParameters::AUDIO_PCM_LOW_LATENCY, |
+ CHANNEL_LAYOUT_DISCRETE, |
+ 2, |
+ 0, |
+ kOutSampleRate, |
+ 16, |
+ 512, |
+ 0); |
+ ResetConverter(output_params); |
+ AddInput(MakeTestBuffer(kOutSampleRate, CHANNEL_LAYOUT_STEREO, 2, 512)); |
ConsumeAllOutput(); |
} |