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

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

Issue 577953002: Adds time measurement of WebRtcAudioRenderer::Render (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Renamed histogram 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 | « 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 24eee9a746613b95d858b47f355433ecd70b5ce6..c50f998cef5e46bf15acd4bdd56081c2f959e336 100644
--- a/content/renderer/media/webrtc_audio_renderer.cc
+++ b/content/renderer/media/webrtc_audio_renderer.cc
@@ -29,6 +29,11 @@ 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;
+
// 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
@@ -190,7 +195,8 @@ WebRtcAudioRenderer::WebRtcAudioRenderer(
sink_params_(media::AudioParameters::AUDIO_PCM_LOW_LATENCY,
media::CHANNEL_LAYOUT_STEREO, sample_rate, 16,
frames_per_buffer,
- GetCurrentDuckingFlag(source_render_frame_id)) {
+ GetCurrentDuckingFlag(source_render_frame_id)),
+ render_callback_count_(0) {
WebRtcLogMessage(base::StringPrintf(
"WAR::WAR. source_render_view_id=%d"
", session_id=%d, sample_rate=%d, frames_per_buffer=%d, effects=%i",
@@ -321,6 +327,7 @@ void WebRtcAudioRenderer::Play() {
return;
playing_state_.set_playing(true);
+ render_callback_count_ = 0;
OnPlayStateChanged(media_stream_, &playing_state_);
}
@@ -419,6 +426,8 @@ int WebRtcAudioRenderer::Render(media::AudioBus* audio_bus,
if (!source_)
return 0;
+ base::TimeTicks start_time = base::TimeTicks::Now() ;
no longer working on chromium 2014/09/18 17:35:42 Render() is triggered by callbacks from the device
henrika (OOO until Aug 14) 2014/09/19 13:13:53 Will move it to SourceCallback. Thanks.
+
DVLOG(2) << "WebRtcAudioRenderer::Render()";
DVLOG(2) << "audio_delay_milliseconds: " << audio_delay_milliseconds;
@@ -429,6 +438,12 @@ int WebRtcAudioRenderer::Render(media::AudioBus* audio_bus,
else
SourceCallback(0, audio_bus);
+ if (++render_callback_count_ == kNumCallbacksBetweenRenderTimeHistograms) {
+ base::TimeDelta elapsed = base::TimeTicks::Now() - start_time;
+ render_callback_count_ = 0;
+ UMA_HISTOGRAM_TIMES("WebRTC.AudioRenderTimes", elapsed);
+ }
+
return (state_ == PLAYING) ? audio_bus->frames() : 0;
}
« 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