summaryrefslogtreecommitdiffstats
path: root/content/browser
diff options
context:
space:
mode:
authorhenrika <henrika@chromium.org>2014-09-03 10:45:52 +0200
committerhenrika <henrika@chromium.org>2014-09-03 08:51:48 +0000
commit03573630c9619e21c299eef4fd41c8704421d2a6 (patch)
treebe3bc1cdccfef682830d2e04663902e2ed11925c /content/browser
parent0db57093f55bcbdfb3a02d65315b20cbf4d49162 (diff)
downloadchromium_src-03573630c9619e21c299eef4fd41c8704421d2a6.zip
chromium_src-03573630c9619e21c299eef4fd41c8704421d2a6.tar.gz
chromium_src-03573630c9619e21c299eef4fd41c8704421d2a6.tar.bz2
Adding more detailed UMA histogram for detection of output audio glitches.
BUG=NONE TEST=Manual test of WebRTC clients under heavy load. R=asvitkine@chromium.org, tommi@chromium.org Review URL: https://codereview.chromium.org/534533002 Cr-Commit-Position: refs/heads/master@{#293099}
Diffstat (limited to 'content/browser')
-rw-r--r--content/browser/renderer_host/media/audio_sync_reader.cc32
1 files changed, 32 insertions, 0 deletions
diff --git a/content/browser/renderer_host/media/audio_sync_reader.cc b/content/browser/renderer_host/media/audio_sync_reader.cc
index 3daacca..79613da 100644
--- a/content/browser/renderer_host/media/audio_sync_reader.cc
+++ b/content/browser/renderer_host/media/audio_sync_reader.cc
@@ -9,12 +9,32 @@
#include "base/command_line.h"
#include "base/memory/shared_memory.h"
#include "base/metrics/histogram.h"
+#include "base/strings/stringprintf.h"
+#include "content/browser/renderer_host/media/media_stream_manager.h"
#include "content/public/common/content_switches.h"
#include "media/audio/audio_buffers_state.h"
#include "media/audio/audio_parameters.h"
using media::AudioBus;
+namespace {
+
+// Used to log if any audio glitches have been detected during an audio session.
+// Elements in this enum should not be added, deleted or rearranged.
+enum AudioGlitchResult {
+ AUDIO_RENDERER_NO_AUDIO_GLITCHES = 0,
+ AUDIO_RENDERER_AUDIO_GLITCHES = 1,
+ AUDIO_RENDERER_AUDIO_GLITCHES_MAX = AUDIO_RENDERER_AUDIO_GLITCHES
+};
+
+void LogAudioGlitchResult(AudioGlitchResult result) {
+ UMA_HISTOGRAM_ENUMERATION("Media.AudioRendererAudioGlitches",
+ result,
+ AUDIO_RENDERER_AUDIO_GLITCHES_MAX + 1);
+}
+
+} // namespace
+
namespace content {
AudioSyncReader::AudioSyncReader(base::SharedMemory* shared_memory,
@@ -47,6 +67,18 @@ AudioSyncReader::~AudioSyncReader() {
100.0 * renderer_missed_callback_count_ / renderer_callback_count_;
UMA_HISTOGRAM_PERCENTAGE(
"Media.AudioRendererMissedDeadline", percentage_missed);
+
+ // Add more detailed information regarding detected audio glitches where
+ // a non-zero value of |renderer_missed_callback_count_| is added to the
+ // AUDIO_RENDERER_AUDIO_GLITCHES bin.
+ renderer_missed_callback_count_ > 0 ?
+ LogAudioGlitchResult(AUDIO_RENDERER_AUDIO_GLITCHES) :
+ LogAudioGlitchResult(AUDIO_RENDERER_NO_AUDIO_GLITCHES);
+ std::string log_string = base::StringPrintf(
+ "ASR: number of detected audio glitches=%ld",
+ renderer_missed_callback_count_);
+ MediaStreamManager::SendMessageToNativeLog(log_string);
+ DVLOG(1) << log_string;
}
// media::AudioOutputController::SyncReader implementations.