| Index: content/renderer/media/media_stream_audio_processor_unittest.cc
|
| diff --git a/content/renderer/media/media_stream_audio_processor_unittest.cc b/content/renderer/media/media_stream_audio_processor_unittest.cc
|
| index 0e40ece9e5c4982c0b745540fe0c90dbf90a641a..20eb181240206123bcaa6e75fb764533747dd93d 100644
|
| --- a/content/renderer/media/media_stream_audio_processor_unittest.cc
|
| +++ b/content/renderer/media/media_stream_audio_processor_unittest.cc
|
| @@ -26,6 +26,16 @@ using ::testing::AnyNumber;
|
| using ::testing::AtLeast;
|
| using ::testing::Return;
|
|
|
| +using media::AudioParameters;
|
| +
|
| +namespace webrtc {
|
| +
|
| +bool operator==(const webrtc::Point& lhs, const webrtc::Point& rhs) {
|
| + return lhs.x() == rhs.x() && lhs.y() == rhs.y() && lhs.z() == rhs.z();
|
| +}
|
| +
|
| +} // namespace webrtc
|
| +
|
| namespace content {
|
|
|
| namespace {
|
| @@ -133,12 +143,12 @@ class MediaStreamAudioProcessorTest : public ::testing::Test {
|
| EXPECT_NEAR(input_capture_delay.InMillisecondsF(),
|
| capture_delay.InMillisecondsF(),
|
| output_buffer_duration.InMillisecondsF());
|
| - EXPECT_EQ(audio_processor->OutputFormat().sample_rate(),
|
| - expected_output_sample_rate);
|
| - EXPECT_EQ(audio_processor->OutputFormat().channels(),
|
| - expected_output_channels);
|
| - EXPECT_EQ(audio_processor->OutputFormat().frames_per_buffer(),
|
| - expected_output_buffer_size);
|
| + EXPECT_EQ(expected_output_sample_rate,
|
| + audio_processor->OutputFormat().sample_rate());
|
| + EXPECT_EQ(expected_output_channels,
|
| + audio_processor->OutputFormat().channels());
|
| + EXPECT_EQ(expected_output_buffer_size,
|
| + audio_processor->OutputFormat().frames_per_buffer());
|
| }
|
|
|
| data_ptr += params.frames_per_buffer() * params.channels();
|
| @@ -181,6 +191,7 @@ class MediaStreamAudioProcessorTest : public ::testing::Test {
|
| }
|
|
|
| media::AudioParameters params_;
|
| + MediaStreamDevice::AudioDeviceParameters input_device_params_;
|
| };
|
|
|
| // Test crashing with ASAN on Android. crbug.com/468762
|
| @@ -195,7 +206,7 @@ TEST_F(MediaStreamAudioProcessorTest, MAYBE_WithAudioProcessing) {
|
| new WebRtcAudioDeviceImpl());
|
| scoped_refptr<MediaStreamAudioProcessor> audio_processor(
|
| new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| - constraint_factory.CreateWebMediaConstraints(), 0,
|
| + constraint_factory.CreateWebMediaConstraints(), input_device_params_,
|
| webrtc_audio_device.get()));
|
| EXPECT_TRUE(audio_processor->has_audio_processing());
|
| audio_processor->OnCaptureFormatChanged(params_);
|
| @@ -220,8 +231,8 @@ TEST_F(MediaStreamAudioProcessorTest, VerifyTabCaptureWithoutAudioProcessing) {
|
| tab_string);
|
| scoped_refptr<MediaStreamAudioProcessor> audio_processor(
|
| new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| - tab_constraint_factory.CreateWebMediaConstraints(), 0,
|
| - webrtc_audio_device.get()));
|
| + tab_constraint_factory.CreateWebMediaConstraints(),
|
| + input_device_params_, webrtc_audio_device.get()));
|
| EXPECT_FALSE(audio_processor->has_audio_processing());
|
| audio_processor->OnCaptureFormatChanged(params_);
|
|
|
| @@ -237,8 +248,8 @@ TEST_F(MediaStreamAudioProcessorTest, VerifyTabCaptureWithoutAudioProcessing) {
|
| system_constraint_factory.AddMandatory(kMediaStreamSource,
|
| system_string);
|
| audio_processor = new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| - system_constraint_factory.CreateWebMediaConstraints(), 0,
|
| - webrtc_audio_device.get());
|
| + system_constraint_factory.CreateWebMediaConstraints(),
|
| + input_device_params_, webrtc_audio_device.get());
|
| EXPECT_FALSE(audio_processor->has_audio_processing());
|
|
|
| // Set |audio_processor| to NULL to make sure |webrtc_audio_device| outlives
|
| @@ -254,7 +265,7 @@ TEST_F(MediaStreamAudioProcessorTest, TurnOffDefaultConstraints) {
|
| new WebRtcAudioDeviceImpl());
|
| scoped_refptr<MediaStreamAudioProcessor> audio_processor(
|
| new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| - constraint_factory.CreateWebMediaConstraints(), 0,
|
| + constraint_factory.CreateWebMediaConstraints(), input_device_params_,
|
| webrtc_audio_device.get()));
|
| EXPECT_FALSE(audio_processor->has_audio_processing());
|
| audio_processor->OnCaptureFormatChanged(params_);
|
| @@ -367,6 +378,67 @@ TEST_F(MediaStreamAudioProcessorTest, ValidateConstraints) {
|
| EXPECT_FALSE(audio_constraints.IsValid());
|
| }
|
|
|
| +MediaAudioConstraints MakeMediaAudioConstraints(
|
| + const MockMediaConstraintFactory& constraint_factory) {
|
| + return MediaAudioConstraints(constraint_factory.CreateWebMediaConstraints(),
|
| + AudioParameters::NO_EFFECTS);
|
| +}
|
| +
|
| +TEST_F(MediaStreamAudioProcessorTest, SelectsConstraintsArrayGeometryIfExists) {
|
| + std::vector<webrtc::Point> constraints_geometry(1,
|
| + webrtc::Point(-0.02f, 0, 0));
|
| + constraints_geometry.push_back(webrtc::Point(0.02f, 0, 0));
|
| +
|
| + std::vector<webrtc::Point> input_device_geometry(1, webrtc::Point(0, 0, 0));
|
| + input_device_geometry.push_back(webrtc::Point(0, 0.05f, 0));
|
| +
|
| + {
|
| + // Both geometries empty.
|
| + MockMediaConstraintFactory constraint_factory;
|
| + MediaStreamDevice::AudioDeviceParameters input_params;
|
| +
|
| + const auto& actual_geometry = GetArrayGeometryPreferringConstraints(
|
| + MakeMediaAudioConstraints(constraint_factory), input_params);
|
| + EXPECT_EQ(std::vector<webrtc::Point>(), actual_geometry);
|
| + }
|
| + {
|
| + // Constraints geometry empty.
|
| + MockMediaConstraintFactory constraint_factory;
|
| + MediaStreamDevice::AudioDeviceParameters input_params;
|
| + input_params.mic_positions.push_back(media::Point(0, 0, 0));
|
| + input_params.mic_positions.push_back(media::Point(0, 0.05f, 0));
|
| +
|
| + const auto& actual_geometry = GetArrayGeometryPreferringConstraints(
|
| + MakeMediaAudioConstraints(constraint_factory), input_params);
|
| + EXPECT_EQ(input_device_geometry, actual_geometry);
|
| + }
|
| + {
|
| + // Input device geometry empty.
|
| + MockMediaConstraintFactory constraint_factory;
|
| + constraint_factory.AddOptional(MediaAudioConstraints::kGoogArrayGeometry,
|
| + std::string("-0.02 0 0 0.02 0 0"));
|
| + MediaStreamDevice::AudioDeviceParameters input_params;
|
| +
|
| + const auto& actual_geometry = GetArrayGeometryPreferringConstraints(
|
| + MakeMediaAudioConstraints(constraint_factory), input_params);
|
| + EXPECT_EQ(constraints_geometry, actual_geometry);
|
| + }
|
| + {
|
| + // Both geometries existing.
|
| + MockMediaConstraintFactory constraint_factory;
|
| + constraint_factory.AddOptional(MediaAudioConstraints::kGoogArrayGeometry,
|
| + std::string("-0.02 0 0 0.02 0 0"));
|
| + MediaStreamDevice::AudioDeviceParameters input_params;
|
| + input_params.mic_positions.push_back(media::Point(0, 0, 0));
|
| + input_params.mic_positions.push_back(media::Point(0, 0.05f, 0));
|
| +
|
| + // Constraints geometry is preferred.
|
| + const auto& actual_geometry = GetArrayGeometryPreferringConstraints(
|
| + MakeMediaAudioConstraints(constraint_factory), input_params);
|
| + EXPECT_EQ(constraints_geometry, actual_geometry);
|
| + }
|
| +}
|
| +
|
| // Test crashing with ASAN on Android. crbug.com/468762
|
| #if defined(OS_ANDROID) && defined(ADDRESS_SANITIZER)
|
| #define MAYBE_TestAllSampleRates DISABLED_TestAllSampleRates
|
| @@ -379,7 +451,7 @@ TEST_F(MediaStreamAudioProcessorTest, MAYBE_TestAllSampleRates) {
|
| new WebRtcAudioDeviceImpl());
|
| scoped_refptr<MediaStreamAudioProcessor> audio_processor(
|
| new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| - constraint_factory.CreateWebMediaConstraints(), 0,
|
| + constraint_factory.CreateWebMediaConstraints(), input_device_params_,
|
| webrtc_audio_device.get()));
|
| EXPECT_TRUE(audio_processor->has_audio_processing());
|
|
|
| @@ -420,7 +492,7 @@ TEST_F(MediaStreamAudioProcessorTest, GetAecDumpMessageFilter) {
|
| new WebRtcAudioDeviceImpl());
|
| scoped_refptr<MediaStreamAudioProcessor> audio_processor(
|
| new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| - constraint_factory.CreateWebMediaConstraints(), 0,
|
| + constraint_factory.CreateWebMediaConstraints(), input_device_params_,
|
| webrtc_audio_device.get()));
|
|
|
| EXPECT_TRUE(audio_processor->aec_dump_message_filter_.get());
|
| @@ -440,7 +512,7 @@ TEST_F(MediaStreamAudioProcessorTest, TestStereoAudio) {
|
| new WebRtcAudioDeviceImpl());
|
| scoped_refptr<MediaStreamAudioProcessor> audio_processor(
|
| new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| - constraint_factory.CreateWebMediaConstraints(), 0,
|
| + constraint_factory.CreateWebMediaConstraints(), input_device_params_,
|
| webrtc_audio_device.get()));
|
| EXPECT_FALSE(audio_processor->has_audio_processing());
|
| const media::AudioParameters source_params(
|
| @@ -504,7 +576,7 @@ TEST_F(MediaStreamAudioProcessorTest, MAYBE_TestWithKeyboardMicChannel) {
|
| new WebRtcAudioDeviceImpl());
|
| scoped_refptr<MediaStreamAudioProcessor> audio_processor(
|
| new rtc::RefCountedObject<MediaStreamAudioProcessor>(
|
| - constraint_factory.CreateWebMediaConstraints(), 0,
|
| + constraint_factory.CreateWebMediaConstraints(), input_device_params_,
|
| webrtc_audio_device.get()));
|
| EXPECT_TRUE(audio_processor->has_audio_processing());
|
|
|
| @@ -522,35 +594,4 @@ TEST_F(MediaStreamAudioProcessorTest, MAYBE_TestWithKeyboardMicChannel) {
|
| audio_processor = NULL;
|
| }
|
|
|
| -using Point = webrtc::Point;
|
| -using PointVector = std::vector<Point>;
|
| -
|
| -void ExpectPointVectorEqual(const PointVector& expected,
|
| - const PointVector& actual) {
|
| - EXPECT_EQ(expected.size(), actual.size());
|
| - for (size_t i = 0; i < actual.size(); ++i) {
|
| - EXPECT_EQ(expected[i].x(), actual[i].x());
|
| - EXPECT_EQ(expected[i].y(), actual[i].y());
|
| - EXPECT_EQ(expected[i].z(), actual[i].z());
|
| - }
|
| -}
|
| -
|
| -TEST(MediaStreamAudioProcessorOptionsTest, ParseArrayGeometry) {
|
| - const PointVector expected_empty;
|
| - ExpectPointVectorEqual(expected_empty, ParseArrayGeometry(""));
|
| - ExpectPointVectorEqual(expected_empty, ParseArrayGeometry("0 0 a"));
|
| - ExpectPointVectorEqual(expected_empty, ParseArrayGeometry("1 2"));
|
| - ExpectPointVectorEqual(expected_empty, ParseArrayGeometry("1 2 3 4"));
|
| -
|
| - {
|
| - PointVector expected(1, Point(-0.02f, 0, 0));
|
| - expected.push_back(Point(0.02f, 0, 0));
|
| - ExpectPointVectorEqual(expected, ParseArrayGeometry("-0.02 0 0 0.02 0 0"));
|
| - }
|
| - {
|
| - PointVector expected(1, Point(1, 2, 3));
|
| - ExpectPointVectorEqual(expected, ParseArrayGeometry("1 2 3"));
|
| - }
|
| -}
|
| -
|
| } // namespace content
|
|
|