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

Side by Side Diff: media/cast/logging/logging_impl.cc

Issue 69603002: Incorporating logging into Cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Adding scoped_ptr include Created 7 years, 1 month 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
« no previous file with comments | « media/cast/logging/logging_impl.h ('k') | media/cast/logging/logging_internal.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/debug/trace_event.h" 5 #include "base/debug/trace_event.h"
6 #include "base/metrics/histogram.h" 6 #include "base/metrics/histogram.h"
7 #include "media/cast/logging/logging_impl.h" 7 #include "media/cast/logging/logging_impl.h"
8 8
9 namespace media { 9 namespace media {
10 namespace cast { 10 namespace cast {
11 11
12 LoggingImpl::LoggingImpl(base::TickClock* clock, 12 LoggingImpl::LoggingImpl(base::TickClock* clock,
13 bool enable_data_collection, 13 scoped_refptr<base::TaskRunner> main_thread_proxy,
14 bool enable_uma_stats, 14 const CastLoggingConfig& config)
15 bool enable_tracing) 15 : main_thread_proxy_(main_thread_proxy),
16 : enable_data_collection_(enable_data_collection), 16 config_(config),
17 enable_uma_stats_(enable_uma_stats),
18 enable_tracing_(enable_tracing),
19 raw_(clock), 17 raw_(clock),
20 stats_(clock) {} 18 stats_(clock) {}
21 19
22 LoggingImpl::~LoggingImpl() {} 20 LoggingImpl::~LoggingImpl() {}
23 21
24 void LoggingImpl::InsertFrameEvent(CastLoggingEvent event, 22 void LoggingImpl::InsertFrameEvent(CastLoggingEvent event,
25 uint32 rtp_timestamp, 23 uint32 rtp_timestamp,
26 uint32 frame_id) { 24 uint32 frame_id) {
27 if (enable_data_collection_) { 25 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
26 if (config_.enable_data_collection) {
28 raw_.InsertFrameEvent(event, rtp_timestamp, frame_id); 27 raw_.InsertFrameEvent(event, rtp_timestamp, frame_id);
29 stats_.InsertFrameEvent(event, rtp_timestamp, frame_id); 28 stats_.InsertFrameEvent(event, rtp_timestamp, frame_id);
30 } 29 }
31 if (enable_tracing_) { 30 if (config_.enable_tracing) {
32 std::string event_string = CastLoggingToString(event); 31 std::string event_string = CastLoggingToString(event);
33 TRACE_EVENT_INSTANT2(event_string.c_str(), "FE", 32 TRACE_EVENT_INSTANT2(event_string.c_str(), "FE",
34 TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, "frame_id", 33 TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, "frame_id",
35 frame_id); 34 frame_id);
36 } 35 }
37 } 36 }
38 37
39 void LoggingImpl::InsertFrameEventWithSize(CastLoggingEvent event, 38 void LoggingImpl::InsertFrameEventWithSize(CastLoggingEvent event,
40 uint32 rtp_timestamp, 39 uint32 rtp_timestamp,
41 uint32 frame_id, 40 uint32 frame_id,
42 int frame_size) { 41 int frame_size) {
43 if (enable_data_collection_) { 42 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
43 if (config_.enable_data_collection) {
44 raw_.InsertFrameEventWithSize(event, rtp_timestamp, frame_id, frame_size); 44 raw_.InsertFrameEventWithSize(event, rtp_timestamp, frame_id, frame_size);
45 stats_.InsertFrameEventWithSize(event, rtp_timestamp, frame_id, frame_size); 45 stats_.InsertFrameEventWithSize(event, rtp_timestamp, frame_id, frame_size);
46 } 46 }
47 if (enable_uma_stats_) { 47 if (config_.enable_uma_stats) {
48 UMA_HISTOGRAM_COUNTS(CastLoggingToString(event), frame_size); 48 UMA_HISTOGRAM_COUNTS(CastLoggingToString(event), frame_size);
49 } 49 }
50 if (enable_tracing_) { 50 if (config_.enable_tracing) {
51 std::string event_string = CastLoggingToString(event); 51 std::string event_string = CastLoggingToString(event);
52 TRACE_EVENT_INSTANT2(event_string.c_str(), "FES", 52 TRACE_EVENT_INSTANT2(event_string.c_str(), "FES",
53 TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, "frame_size", 53 TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, "frame_size",
54 frame_size); 54 frame_size);
55 } 55 }
56 56
57 } 57 }
58 58
59 void LoggingImpl::InsertFrameEventWithDelay(CastLoggingEvent event, 59 void LoggingImpl::InsertFrameEventWithDelay(CastLoggingEvent event,
60 uint32 rtp_timestamp, 60 uint32 rtp_timestamp,
61 uint32 frame_id, 61 uint32 frame_id,
62 base::TimeDelta delay) { 62 base::TimeDelta delay) {
63 if (enable_data_collection_) { 63 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
64 if (config_.enable_data_collection) {
64 raw_.InsertFrameEventWithDelay(event, rtp_timestamp, frame_id, delay); 65 raw_.InsertFrameEventWithDelay(event, rtp_timestamp, frame_id, delay);
65 stats_.InsertFrameEventWithDelay(event, rtp_timestamp, frame_id, delay); 66 stats_.InsertFrameEventWithDelay(event, rtp_timestamp, frame_id, delay);
66 } 67 }
67 if (enable_uma_stats_) { 68 if (config_.enable_uma_stats) {
68 UMA_HISTOGRAM_TIMES(CastLoggingToString(event), delay); 69 UMA_HISTOGRAM_TIMES(CastLoggingToString(event), delay);
69 } 70 }
70 if (enable_tracing_) { 71 if (config_.enable_tracing) {
71 std::string event_string = CastLoggingToString(event); 72 std::string event_string = CastLoggingToString(event);
72 TRACE_EVENT_INSTANT2(event_string.c_str(), "FED", 73 TRACE_EVENT_INSTANT2(event_string.c_str(), "FED",
73 TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, "delay", 74 TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, "delay",
74 delay.InMilliseconds()); 75 delay.InMilliseconds());
75 } 76 }
76 } 77 }
77 78
78 void LoggingImpl::InsertPacketEvent(CastLoggingEvent event, 79 void LoggingImpl::InsertPacketEvent(CastLoggingEvent event,
79 uint32 rtp_timestamp, 80 uint32 rtp_timestamp,
80 uint32 frame_id, 81 uint32 frame_id,
81 uint16 packet_id, 82 uint16 packet_id,
82 uint16 max_packet_id, 83 uint16 max_packet_id,
83 int size) { 84 size_t size) {
84 if (enable_data_collection_) { 85 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
86 if (config_.enable_data_collection) {
85 raw_.InsertPacketEvent(event, rtp_timestamp, frame_id, packet_id, 87 raw_.InsertPacketEvent(event, rtp_timestamp, frame_id, packet_id,
86 max_packet_id, size); 88 max_packet_id, size);
87 stats_.InsertPacketEvent(event, rtp_timestamp, frame_id, packet_id, 89 stats_.InsertPacketEvent(event, rtp_timestamp, frame_id, packet_id,
88 max_packet_id, size); 90 max_packet_id, size);
89 } 91 }
90 if (enable_tracing_) { 92 if (config_.enable_tracing) {
91 std::string event_string = CastLoggingToString(event); 93 std::string event_string = CastLoggingToString(event);
92 TRACE_EVENT_INSTANT2(event_string.c_str(), "PE", 94 TRACE_EVENT_INSTANT2(event_string.c_str(), "PE",
93 TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp, 95 TRACE_EVENT_SCOPE_THREAD, "rtp_timestamp", rtp_timestamp,
94 "packet_id", packet_id); 96 "packet_id", packet_id);
95 } 97 }
96 } 98 }
97 99
98 void LoggingImpl::InsertGenericEvent(CastLoggingEvent event, int value) { 100 void LoggingImpl::InsertGenericEvent(CastLoggingEvent event, int value) {
99 if (enable_data_collection_) { 101 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
102 if (config_.enable_data_collection) {
100 raw_.InsertGenericEvent(event, value); 103 raw_.InsertGenericEvent(event, value);
101 stats_.InsertGenericEvent(event, value); 104 stats_.InsertGenericEvent(event, value);
102 } 105 }
103 if (enable_uma_stats_) { 106 if (config_.enable_uma_stats) {
104 UMA_HISTOGRAM_COUNTS(CastLoggingToString(event), value); 107 UMA_HISTOGRAM_COUNTS(CastLoggingToString(event), value);
105 } 108 }
106 if (enable_tracing_) { 109 if (config_.enable_tracing) {
107 std::string event_string = CastLoggingToString(event); 110 std::string event_string = CastLoggingToString(event);
108 TRACE_EVENT_INSTANT1(event_string.c_str(), "GE", 111 TRACE_EVENT_INSTANT1(event_string.c_str(), "GE",
109 TRACE_EVENT_SCOPE_THREAD, "value", value); 112 TRACE_EVENT_SCOPE_THREAD, "value", value);
110 } 113 }
111 } 114 }
112 115
113 116
114 // should just get the entire class, would be much easier. 117 // should just get the entire class, would be much easier.
115 FrameRawMap LoggingImpl::GetFrameRawData() { 118 FrameRawMap LoggingImpl::GetFrameRawData() {
119 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
116 return raw_.GetFrameData(); 120 return raw_.GetFrameData();
117 } 121 }
118 122
119 PacketRawMap LoggingImpl::GetPacketRawData() { 123 PacketRawMap LoggingImpl::GetPacketRawData() {
120 return raw_.GetPacketData(); 124 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
125 return raw_.GetPacketData();
121 } 126 }
122 127
123 GenericRawMap LoggingImpl::GetGenericRawData() { 128 GenericRawMap LoggingImpl::GetGenericRawData() {
124 return raw_.GetGenericData(); 129 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
130 return raw_.GetGenericData();
125 } 131 }
126 132
127 const FrameStatsMap* LoggingImpl::GetFrameStatsData() { 133 const FrameStatsMap* LoggingImpl::GetFrameStatsData() {
134 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
128 // Get stats data. 135 // Get stats data.
129 const FrameStatsMap* stats = stats_.GetFrameStatsData(); 136 const FrameStatsMap* stats = stats_.GetFrameStatsData();
130 if (enable_uma_stats_) { 137 if (config_.enable_uma_stats) {
131 FrameStatsMap::const_iterator it; 138 FrameStatsMap::const_iterator it;
132 for (it = stats->begin(); it != stats->end(); ++it) { 139 for (it = stats->begin(); it != stats->end(); ++it) {
133 // Check for an active event. 140 // Check for an active event.
134 if (it->second->framerate_fps > 0) { 141 if (it->second->framerate_fps > 0) {
135 std::string event_string = CastLoggingToString(it->first); 142 std::string event_string = CastLoggingToString(it->first);
136 UMA_HISTOGRAM_COUNTS(event_string.append("_framerate_fps"), 143 UMA_HISTOGRAM_COUNTS(event_string.append("_framerate_fps"),
137 it->second->framerate_fps); 144 it->second->framerate_fps);
138 } else { 145 } else {
139 // All active frame events trigger framerate computation. 146 // All active frame events trigger framerate computation.
140 continue; 147 continue;
(...skipping 11 matching lines...) Expand all
152 it->second->min_delay_ms); 159 it->second->min_delay_ms);
153 UMA_HISTOGRAM_COUNTS(event_string.append("_max_delay_ms"), 160 UMA_HISTOGRAM_COUNTS(event_string.append("_max_delay_ms"),
154 it->second->max_delay_ms); 161 it->second->max_delay_ms);
155 } 162 }
156 } 163 }
157 } 164 }
158 return stats; 165 return stats;
159 } 166 }
160 167
161 const PacketStatsMap* LoggingImpl::GetPacketStatsData() { 168 const PacketStatsMap* LoggingImpl::GetPacketStatsData() {
169 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
162 // Get stats data. 170 // Get stats data.
163 const PacketStatsMap* stats = stats_.GetPacketStatsData(); 171 const PacketStatsMap* stats = stats_.GetPacketStatsData();
164 if (enable_uma_stats_) { 172 if (config_.enable_uma_stats) {
165 PacketStatsMap::const_iterator it; 173 PacketStatsMap::const_iterator it;
166 for (it = stats->begin(); it != stats->end(); ++it) { 174 for (it = stats->begin(); it != stats->end(); ++it) {
167 if (it->second > 0) { 175 if (it->second > 0) {
168 std::string event_string = CastLoggingToString(it->first); 176 std::string event_string = CastLoggingToString(it->first);
169 UMA_HISTOGRAM_COUNTS(event_string.append("_bitrate_kbps"), it->second); 177 UMA_HISTOGRAM_COUNTS(event_string.append("_bitrate_kbps"), it->second);
170 } 178 }
171 } 179 }
172 } 180 }
173 return stats; 181 return stats;
174 } 182 }
175 183
176 const GenericStatsMap* LoggingImpl::GetGenericStatsData() { 184 const GenericStatsMap* LoggingImpl::GetGenericStatsData() {
185 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
177 // Get stats data. 186 // Get stats data.
178 const GenericStatsMap* stats = stats_.GetGenericStatsData(); 187 const GenericStatsMap* stats = stats_.GetGenericStatsData();
179 if (enable_uma_stats_) { 188 if (config_.enable_uma_stats) {
180 GenericStatsMap::const_iterator it; 189 GenericStatsMap::const_iterator it;
181 for (it = stats->begin(); it != stats->end(); ++it) { 190 for (it = stats->begin(); it != stats->end(); ++it) {
182 if (it->second > 0) { 191 if (it->second > 0) {
183 UMA_HISTOGRAM_COUNTS(CastLoggingToString(it->first), it->second); 192 UMA_HISTOGRAM_COUNTS(CastLoggingToString(it->first), it->second);
184 } 193 }
185 } 194 }
186 } 195 }
187 return stats; 196 return stats;
188 } 197 }
189 198
190 void LoggingImpl::Reset() { 199 void LoggingImpl::Reset() {
200 DCHECK(main_thread_proxy_->RunsTasksOnCurrentThread());
191 raw_.Reset(); 201 raw_.Reset();
192 stats_.Reset(); 202 stats_.Reset();
193 } 203 }
194 204
195 } // namespace cast 205 } // namespace cast
196 } // namespace media 206 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/logging/logging_impl.h ('k') | media/cast/logging/logging_internal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698