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

Side by Side Diff: chrome/renderer/audio_message_filter.cc

Issue 99213: Measure IPC latency for audio... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/histogram.h"
5 #include "base/message_loop.h" 6 #include "base/message_loop.h"
7 #include "chrome/common/ipc_logging.h"
6 #include "chrome/common/render_messages.h" 8 #include "chrome/common/render_messages.h"
7 #include "chrome/renderer/audio_message_filter.h" 9 #include "chrome/renderer/audio_message_filter.h"
8 10
11 namespace {
12
13 void RecordReceiveLatency(base::TimeDelta latency) {
14 static ThreadSafeHistogram histogram("Audio.IPC_Renderer_ReceiveLatency",
15 1, 500, 100);
16 histogram.AddTime(latency);
17 }
18
19 void RecordProcessTime(base::TimeDelta latency) {
20 static ThreadSafeHistogram histogram("Audio.IPC_Renderer_ProcessTime",
21 1, 100, 100);
22 histogram.AddTime(latency);
23 }
24
25 } // namespace
26
9 AudioMessageFilter::AudioMessageFilter(int32 route_id) 27 AudioMessageFilter::AudioMessageFilter(int32 route_id)
10 : channel_(NULL), 28 : channel_(NULL),
11 route_id_(route_id), 29 route_id_(route_id),
12 message_loop_(NULL) { 30 message_loop_(NULL) {
13 } 31 }
14 32
15 AudioMessageFilter::~AudioMessageFilter() { 33 AudioMessageFilter::~AudioMessageFilter() {
16 } 34 }
17 35
18 // Called on the IPC thread. 36 // Called on the IPC thread.
(...skipping 29 matching lines...) Expand all
48 } 66 }
49 67
50 void AudioMessageFilter::OnFilterRemoved() { 68 void AudioMessageFilter::OnFilterRemoved() {
51 channel_ = NULL; 69 channel_ = NULL;
52 } 70 }
53 71
54 void AudioMessageFilter::OnChannelClosing() { 72 void AudioMessageFilter::OnChannelClosing() {
55 channel_ = NULL; 73 channel_ = NULL;
56 } 74 }
57 75
58 void AudioMessageFilter::OnRequestPacket(int stream_id) { 76 void AudioMessageFilter::OnRequestPacket(const IPC::Message& msg,
77 int stream_id) {
59 Delegate* delegate = delegates_.Lookup(stream_id); 78 Delegate* delegate = delegates_.Lookup(stream_id);
60 if (!delegate) { 79 if (!delegate) {
61 DLOG(WARNING) << "Got audio packet request for a non-existent or removed" 80 DLOG(WARNING) << "Got audio packet request for a non-existent or removed"
62 " audio renderer."; 81 " audio renderer.";
63 return; 82 return;
64 } 83 }
84
85 #ifdef IPC_MESSAGE_LOG_ENABLED
86 IPC::Logging* logger = IPC::Logging::current();
87 if (logger->Enabled()) {
88 RecordReceiveLatency(base::Time::FromInternalValue(msg.received_time()) -
89 base::Time::FromInternalValue(msg.sent_time()));
90 }
91 #endif
92
65 delegate->OnRequestPacket(); 93 delegate->OnRequestPacket();
94
95 #ifdef IPC_MESSAGE_LOG_ENABLED
96 if (logger->Enabled()) {
97 RecordProcessTime(base::Time::Now() -
98 base::Time::FromInternalValue(msg.received_time()));
99 }
100 #endif
66 } 101 }
67 102
68 void AudioMessageFilter::OnStreamCreated(int stream_id, 103 void AudioMessageFilter::OnStreamCreated(int stream_id,
69 base::SharedMemoryHandle handle, 104 base::SharedMemoryHandle handle,
70 int length) { 105 int length) {
71 Delegate* delegate = delegates_.Lookup(stream_id); 106 Delegate* delegate = delegates_.Lookup(stream_id);
72 if (!delegate) { 107 if (!delegate) {
73 DLOG(WARNING) << "Got audio stream event for a non-existent or removed" 108 DLOG(WARNING) << "Got audio stream event for a non-existent or removed"
74 " audio renderer."; 109 " audio renderer.";
75 return; 110 return;
(...skipping 24 matching lines...) Expand all
100 delegate->OnVolume(left, right); 135 delegate->OnVolume(left, right);
101 } 136 }
102 137
103 int32 AudioMessageFilter::AddDelegate(Delegate* delegate) { 138 int32 AudioMessageFilter::AddDelegate(Delegate* delegate) {
104 return delegates_.Add(delegate); 139 return delegates_.Add(delegate);
105 } 140 }
106 141
107 void AudioMessageFilter::RemoveDelegate(int32 id) { 142 void AudioMessageFilter::RemoveDelegate(int32 id) {
108 delegates_.Remove(id); 143 delegates_.Remove(id);
109 } 144 }
OLDNEW
« chrome/browser/renderer_host/audio_renderer_host.cc ('K') | « chrome/renderer/audio_message_filter.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698