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

Unified Diff: content/renderer/media/webrtc_audio_renderer.cc

Issue 2264073002: Add UMA histograms for time spent getting WebRTC audio render data. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changed to log UMA data every render call. Renamed histograms and deprecated an old. Created 4 years, 4 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 | « content/renderer/media/webrtc_audio_renderer.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/renderer/media/webrtc_audio_renderer.cc
diff --git a/content/renderer/media/webrtc_audio_renderer.cc b/content/renderer/media/webrtc_audio_renderer.cc
index e3ce2b0f6775112015b1586bed60f1a90d0f97d2..414499d8e37bed2a07a9ccd7b1144452284446fa 100644
--- a/content/renderer/media/webrtc_audio_renderer.cc
+++ b/content/renderer/media/webrtc_audio_renderer.cc
@@ -34,11 +34,6 @@ namespace content {
namespace {
-// We add a UMA histogram measuring the execution time of the Render() method
-// every |kNumCallbacksBetweenRenderTimeHistograms| callback. Assuming 10ms
-// between each callback leads to one UMA update each 100ms.
-const int kNumCallbacksBetweenRenderTimeHistograms = 10;
-
// Audio parameters that don't change.
const media::AudioParameters::Format kFormat =
media::AudioParameters::AUDIO_PCM_LOW_LATENCY;
@@ -46,6 +41,10 @@ const media::ChannelLayout kChannelLayout = media::CHANNEL_LAYOUT_STEREO;
const int kChannels = 2;
const int kBitsPerSample = 16;
+// Used for UMA histograms.
+const int kRenderTimeHistogramMinMicroseconds = 100;
+const int kRenderTimeHistogramMaxMicroseconds = 30 * 1000; // 30 milliseconds
+
// This is a simple wrapper class that's handed out to users of a shared
// WebRtcAudioRenderer instance. This class maintains the per-user 'playing'
// and 'started' states to avoid problems related to incorrect usage which
@@ -172,7 +171,7 @@ WebRtcAudioRenderer::WebRtcAudioRenderer(
sink_params_(kFormat, kChannelLayout, 0, kBitsPerSample, 0),
output_device_id_(device_id),
security_origin_(security_origin),
- render_callback_count_(0) {
+ source_render_called_(false) {
WebRtcLogMessage(base::StringPrintf(
"WAR::WAR. source_render_frame_id=%d, session_id=%d, effects=%i",
source_render_frame_id, session_id, sink_params_.effects()));
@@ -251,7 +250,7 @@ void WebRtcAudioRenderer::Play() {
return;
playing_state_.set_playing(true);
- render_callback_count_ = 0;
+ source_render_called_ = false;
OnPlayStateChanged(media_stream_, &playing_state_);
}
@@ -305,6 +304,14 @@ void WebRtcAudioRenderer::EnterPauseState() {
void WebRtcAudioRenderer::Stop() {
DVLOG(1) << "WebRtcAudioRenderer::Stop()";
DCHECK(thread_checker_.CalledOnValidThread());
+ if (source_render_called_) {
o1ka 2016/08/24 11:52:42 No need for the flag: you can just check (!max_ren
Henrik Grunell 2016/08/24 12:16:09 Of course. We can safely assume that the render ca
+ UMA_HISTOGRAM_CUSTOM_COUNTS(
+ "Media.Audio.Render.GetSourceDataTimeMax.WebRTC",
+ max_render_time_.InMicroseconds(), kRenderTimeHistogramMinMicroseconds,
+ kRenderTimeHistogramMaxMicroseconds, 50);
+ max_render_time_ = base::TimeDelta();
+ }
+
{
base::AutoLock auto_lock(lock_);
if (state_ == UNINITIALIZED)
@@ -476,11 +483,17 @@ void WebRtcAudioRenderer::SourceCallback(
if (state_ != PLAYING)
audio_bus->Zero();
- if (++render_callback_count_ == kNumCallbacksBetweenRenderTimeHistograms) {
- base::TimeDelta elapsed = base::TimeTicks::Now() - start_time;
- render_callback_count_ = 0;
- UMA_HISTOGRAM_TIMES("WebRTC.AudioRenderTimes", elapsed);
- }
+ // Measure the elapsed time for this function and log it.
+ base::TimeDelta elapsed = base::TimeTicks::Now() - start_time;
+ UMA_HISTOGRAM_CUSTOM_COUNTS("Media.Audio.Render.GetSourceDataTime.WebRTC",
+ elapsed.InMicroseconds(),
+ kRenderTimeHistogramMinMicroseconds,
+ kRenderTimeHistogramMaxMicroseconds, 50);
+
+ // Store max render call time.
+ if (elapsed > max_render_time_)
+ max_render_time_ = elapsed;
+ source_render_called_ = true;
}
void WebRtcAudioRenderer::UpdateSourceVolume(
« no previous file with comments | « content/renderer/media/webrtc_audio_renderer.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698