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

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: Feedback from xians@ 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
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..694738c14913243796542fa083c5c844de7b09bf 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_);
}
@@ -440,6 +447,7 @@ void WebRtcAudioRenderer::OnRenderError() {
// Called by AudioPullFifo when more data is necessary.
void WebRtcAudioRenderer::SourceCallback(
int fifo_frame_delay, media::AudioBus* audio_bus) {
+ base::TimeTicks start_time = base::TimeTicks::Now() ;
DVLOG(2) << "WebRtcAudioRenderer::SourceCallback("
<< fifo_frame_delay << ", "
<< audio_bus->frames() << ")";
@@ -458,6 +466,12 @@ void WebRtcAudioRenderer::SourceCallback(
// return here and ensure that the returned value in Render() is 0.
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);
+ }
}
void WebRtcAudioRenderer::UpdateSourceVolume(

Powered by Google App Engine
This is Rietveld 408576698