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

Unified Diff: content/renderer/media/webrtc/processed_local_audio_source.cc

Issue 2941563002: Enable new getUserMedia audio constraints algorithm behind a flag. (Closed)
Patch Set: remove vertical space from DEPS Created 3 years, 6 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: 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()) {
- 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 "

Powered by Google App Engine
This is Rietveld 408576698