| 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();
|
| }
|
|
|
|
|