Chromium Code Reviews| Index: content/renderer/media/webrtc/processed_local_audio_source.cc |
| diff --git a/content/renderer/media/webrtc/processed_local_audio_source.cc b/content/renderer/media/webrtc/processed_local_audio_source.cc |
| index 75b7d4a4b6c97d9e0ff69b0321d1562b045a15e4..b311200a23173f8fc996191b756b89121e42537a 100644 |
| --- a/content/renderer/media/webrtc/processed_local_audio_source.cc |
| +++ b/content/renderer/media/webrtc/processed_local_audio_source.cc |
| @@ -4,6 +4,9 @@ |
| #include "content/renderer/media/webrtc/processed_local_audio_source.h" |
| +#include <algorithm> |
| +#include <utility> |
| + |
| #include "base/logging.h" |
| #include "base/metrics/histogram_macros.h" |
| #include "base/strings/stringprintf.h" |
| @@ -29,13 +32,13 @@ void* const kClassIdentifier = const_cast<void**>(&kClassIdentifier); |
| ProcessedLocalAudioSource::ProcessedLocalAudioSource( |
| int consumer_render_frame_id, |
| const StreamDeviceInfo& device_info, |
| - const blink::WebMediaConstraints& constraints, |
| + const AudioProcessingProperties& audio_processing_properties, |
| const ConstraintsCallback& started_callback, |
| PeerConnectionDependencyFactory* factory) |
| : MediaStreamAudioSource(true /* is_local_source */), |
| consumer_render_frame_id_(consumer_render_frame_id), |
| pc_factory_(factory), |
| - constraints_(constraints), |
| + audio_processing_properties_(audio_processing_properties), |
| started_callback_(started_callback), |
| volume_(0), |
| allow_invalid_render_frame_id_for_testing_(false) { |
| @@ -91,28 +94,15 @@ bool ProcessedLocalAudioSource::EnsureSourceIsStarted() { |
| device_info().device.matched_output.frames_per_buffer, |
| device_info().device.input.effects)); |
| - // Sanity-check that the constraints, plus the additional input effects are |
| - // valid when combined. |
| - const MediaAudioConstraints audio_constraints( |
| - constraints_, device_info().device.input.effects); |
| - if (!audio_constraints.IsValid()) { |
|
hbos_chromium
2017/06/16 17:27:14
Is the concept of "not valid" not applicable to pr
Guido Urdaneta
2017/06/19 11:56:49
No, it's not.
|
| - WebRtcLogMessage("ProcessedLocalAudioSource::EnsureSourceIsStarted() fails " |
| - " because MediaAudioConstraints are not valid."); |
| - return false; |
| - } |
| - |
| - if (device_info().device.input.effects & |
| - media::AudioParameters::ECHO_CANCELLER) { |
| - // TODO(hta): Figure out if we should be looking at echoCancellation. |
| - // Previous code had googEchoCancellation only. |
| - const blink::BooleanConstraint& echoCancellation = |
| - constraints_.Basic().goog_echo_cancellation; |
| - if (echoCancellation.HasExact() && !echoCancellation.Exact()) { |
| - StreamDeviceInfo modified_device_info(device_info()); |
| - modified_device_info.device.input.effects &= |
| - ~media::AudioParameters::ECHO_CANCELLER; |
| - SetDeviceInfo(modified_device_info); |
| - } |
| + // Disable HW echo cancellation if constraints explicitly specified no |
| + // echo cancellation. |
| + if (audio_processing_properties_.disable_hw_echo_cancellation && |
| + (device_info().device.input.effects & |
| + media::AudioParameters::ECHO_CANCELLER)) { |
| + StreamDeviceInfo modified_device_info(device_info()); |
| + modified_device_info.device.input.effects &= |
| + ~media::AudioParameters::ECHO_CANCELLER; |
| + SetDeviceInfo(modified_device_info); |
| } |
| // Create the MediaStreamAudioProcessor, bound to the WebRTC audio device |
| @@ -125,7 +115,7 @@ bool ProcessedLocalAudioSource::EnsureSourceIsStarted() { |
| return false; |
| } |
| audio_processor_ = new rtc::RefCountedObject<MediaStreamAudioProcessor>( |
| - constraints_, device_info().device.input, rtc_audio_device); |
| + audio_processing_properties_, rtc_audio_device); |
| // If KEYBOARD_MIC effect is set, change the layout to the corresponding |
| // layout that includes the keyboard mic. |
| @@ -133,7 +123,7 @@ bool ProcessedLocalAudioSource::EnsureSourceIsStarted() { |
| device_info().device.input.channel_layout); |
| if ((device_info().device.input.effects & |
| media::AudioParameters::KEYBOARD_MIC) && |
| - audio_constraints.GetGoogExperimentalNoiseSuppression()) { |
| + audio_processing_properties_.goog_experimental_noise_suppression) { |
| if (channel_layout == media::CHANNEL_LAYOUT_STEREO) { |
| channel_layout = media::CHANNEL_LAYOUT_STEREO_AND_KEYBOARD_MIC; |
| DVLOG(1) << "Changed stereo layout to stereo + keyboard mic layout due " |