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

Unified Diff: media/audio/audio_input_controller.cc

Issue 582733002: Adds a platform independent detecion of microphone hardware mute (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Now builds on Android Created 6 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_input_controller.cc
diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc
index c27e933c00fe407d0173c65c1e9cf80c91f07dc1..24299950cb57fa272fd318afa809e8500d34cf7c 100644
--- a/media/audio/audio_input_controller.cc
+++ b/media/audio/audio_input_controller.cc
@@ -10,13 +10,13 @@
#include "base/threading/thread_restrictions.h"
#include "base/time/time.h"
#include "media/audio/audio_parameters.h"
-#include "media/base/limits.h"
#include "media/base/scoped_histogram_timer.h"
#include "media/base/user_input_monitor.h"
using base::TimeDelta;
namespace {
+
const int kMaxInputChannels = 3;
// TODO(henrika): remove usage of timers and add support for proper
@@ -50,6 +50,21 @@ const int kPowerMonitorLogIntervalSeconds = 15;
// A warning will be logged when the microphone audio volume is below this
// threshold.
const int kLowLevelMicrophoneLevelPercent = 10;
+
+// Logs if the user has enabled the microphone mute or not. This is normally
+// done by marking a checkbox in an audio-settings UI which is unique for each
+// platform. Elements in this enum should not be added, deleted or rearranged.
+enum MicrophoneMuteResult {
+ MICROPHONE_IS_MUTED = 0,
+ MICROPHONE_IS_NOT_MUTED = 1,
+ MICROPHONE_MUTE_MAX = MICROPHONE_IS_NOT_MUTED
+};
+
+void LogMicrophoneMuteResult(MicrophoneMuteResult result) {
+ UMA_HISTOGRAM_ENUMERATION("Media.MicrophoneMuted",
+ result,
+ MICROPHONE_MUTE_MAX + 1);
+}
#endif
}
@@ -577,6 +592,20 @@ void AudioInputController::DoLogAudioLevels(float level_dbfs,
if (microphone_volume_percent < kLowLevelMicrophoneLevelPercent)
log_string += " <=> low microphone level!";
handler_->OnLog(this, log_string);
+
+ // Try to detect if the user has enabled hardware mute by pressing the mute
+ // button in audio settings for the selected microphone. The idea here is to
+ // detect when all input samples are zeros but the actual volume slider is
+ // larger than zero. It should correspond to a hardware mute state.
+ if (level_dbfs == -std::numeric_limits<float>::infinity() &&
+ microphone_volume_percent > 0) {
+ LogMicrophoneMuteResult(MICROPHONE_IS_MUTED);
+ log_string = base::StringPrintf(
+ "AIC::OnData: microphone is muted!");
+ handler_->OnLog(this, log_string);
+ } else {
+ LogMicrophoneMuteResult(MICROPHONE_IS_NOT_MUTED);
+ }
#endif
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698