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

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

Issue 184853003: Cast: Add GetStats() extensions API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: static cast to int Created 6 years, 9 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
« no previous file with comments | « media/cast/logging/logging_stats.h ('k') | no next file » | 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 "media/cast/logging/logging_stats.h" 5 #include "media/cast/logging/logging_stats.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/values.h"
9 10
10 namespace media { 11 namespace media {
11 namespace cast { 12 namespace cast {
12 13
13 LoggingStats::LoggingStats() 14 LoggingStats::LoggingStats()
14 : frame_stats_(), 15 : frame_stats_(),
15 packet_stats_(), 16 packet_stats_(),
16 generic_stats_() { 17 generic_stats_() {
17 } 18 }
18 19
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 // Does this belong to an existing event? 69 // Does this belong to an existing event?
69 FrameStatsMap::iterator it = frame_stats_.find(event); 70 FrameStatsMap::iterator it = frame_stats_.find(event);
70 if (it == frame_stats_.end()) { 71 if (it == frame_stats_.end()) {
71 // New event. 72 // New event.
72 FrameLogStats stats; 73 FrameLogStats stats;
73 stats.first_event_time = time_of_event; 74 stats.first_event_time = time_of_event;
74 stats.last_event_time = time_of_event; 75 stats.last_event_time = time_of_event;
75 stats.event_counter = 1; 76 stats.event_counter = 1;
76 frame_stats_.insert(std::make_pair(event, stats)); 77 frame_stats_.insert(std::make_pair(event, stats));
77 } else { 78 } else {
79 ++(it->second.event_counter);
78 it->second.last_event_time = time_of_event; 80 it->second.last_event_time = time_of_event;
79 ++(it->second.event_counter);
80 } 81 }
81 } 82 }
82 83
83 void LoggingStats::InsertPacketEvent(const base::TimeTicks& time_of_event, 84 void LoggingStats::InsertPacketEvent(const base::TimeTicks& time_of_event,
84 CastLoggingEvent event, 85 CastLoggingEvent event,
85 uint32 rtp_timestamp, 86 uint32 rtp_timestamp,
86 uint32 frame_id, 87 uint32 frame_id,
87 uint16 packet_id, 88 uint16 packet_id,
88 uint16 max_packet_id, 89 uint16 max_packet_id,
89 size_t size) { 90 size_t size) {
90 // Does this packet belong to an existing event? 91 // Does this packet belong to an existing event?
91 PacketStatsMap::iterator it = packet_stats_.find(event); 92 PacketStatsMap::iterator it = packet_stats_.find(event);
92 if (it == packet_stats_.end()) { 93 if (it == packet_stats_.end()) {
93 // New event. 94 // New event.
94 PacketLogStats stats; 95 PacketLogStats stats;
95 stats.first_event_time = time_of_event; 96 stats.first_event_time = time_of_event;
96 stats.last_event_time = time_of_event; 97 stats.last_event_time = time_of_event;
97 stats.sum_size = size; 98 stats.sum_size = size;
98 stats.event_counter = 1; 99 stats.event_counter = 1;
99 packet_stats_.insert(std::make_pair(event, stats)); 100 packet_stats_.insert(std::make_pair(event, stats));
100 } else { 101 } else {
101 // Add to an existing event. 102 // Add to an existing event.
102 it->second.sum_size += size; 103 it->second.sum_size += size;
103 ++(it->second.event_counter); 104 ++(it->second.event_counter);
105 it->second.last_event_time = time_of_event;
104 } 106 }
105 } 107 }
106 108
107 void LoggingStats::InsertGenericEvent(const base::TimeTicks& time_of_event, 109 void LoggingStats::InsertGenericEvent(const base::TimeTicks& time_of_event,
108 CastLoggingEvent event, int value) { 110 CastLoggingEvent event, int value) {
109 // Does this event belong to an existing event? 111 // Does this event belong to an existing event?
110 GenericStatsMap::iterator it = generic_stats_.find(event); 112 GenericStatsMap::iterator it = generic_stats_.find(event);
111 if (it == generic_stats_.end()) { 113 if (it == generic_stats_.end()) {
112 // New event. 114 // New event.
113 GenericLogStats stats; 115 GenericLogStats stats;
(...skipping 12 matching lines...) Expand all
126 ++(it->second.event_counter); 128 ++(it->second.event_counter);
127 it->second.last_event_time = time_of_event; 129 it->second.last_event_time = time_of_event;
128 if (it->second.min > value) { 130 if (it->second.min > value) {
129 it->second.min = value; 131 it->second.min = value;
130 } else if (it->second.max < value) { 132 } else if (it->second.max < value) {
131 it->second.max = value; 133 it->second.max = value;
132 } 134 }
133 } 135 }
134 } 136 }
135 137
136 FrameStatsMap LoggingStats::GetFrameStatsData() const { 138 FrameStatsMap LoggingStats::GetFrameStatsData(EventMediaType media_type) const {
137 return frame_stats_; 139 DCHECK(media_type == AUDIO_EVENT || media_type == VIDEO_EVENT);
140
141 FrameStatsMap frame_map_to_return;
142 for (FrameStatsMap::const_iterator it = frame_stats_.begin();
143 it != frame_stats_.end();
144 ++it) {
145 if (GetEventMediaType(it->first) == media_type) {
146 frame_map_to_return.insert(std::make_pair(it->first, it->second));
147 }
148 }
149
150 return frame_map_to_return;
138 } 151 }
139 152
140 PacketStatsMap LoggingStats::GetPacketStatsData() const { 153 PacketStatsMap LoggingStats::GetPacketStatsData(
141 return packet_stats_; 154 EventMediaType media_type) const {
155 DCHECK(media_type == AUDIO_EVENT || media_type == VIDEO_EVENT);
156
157 PacketStatsMap packet_map_to_return;
158 for (PacketStatsMap::const_iterator it = packet_stats_.begin();
159 it != packet_stats_.end();
160 ++it) {
161 if (GetEventMediaType(it->first) == media_type) {
162 packet_map_to_return.insert(std::make_pair(it->first, it->second));
163 }
164 }
165
166 return packet_map_to_return;
142 } 167 }
143 168
144 GenericStatsMap LoggingStats::GetGenericStatsData() const { 169 GenericStatsMap LoggingStats::GetGenericStatsData() const {
145 return generic_stats_; 170 return generic_stats_;
146 } 171 }
147 172
173 scoped_ptr<base::DictionaryValue> ConvertStats(
174 const FrameStatsMap& frame_stats_map,
175 const PacketStatsMap& packet_stats_map) {
176 scoped_ptr<base::DictionaryValue> overall_stats(new base::DictionaryValue);
177
178 scoped_ptr<base::DictionaryValue> overall_frame_stats(
179 new base::DictionaryValue);
180 for (FrameStatsMap::const_iterator it = frame_stats_map.begin();
181 it != frame_stats_map.end();
182 ++it) {
183 scoped_ptr<base::DictionaryValue> frame_stats(new base::DictionaryValue);
184
185 frame_stats->SetDouble("firstEventTime",
186 it->second.first_event_time.ToInternalValue());
187 frame_stats->SetDouble("lastEventTime",
188 it->second.last_event_time.ToInternalValue());
189 frame_stats->SetInteger("count", it->second.event_counter);
190 frame_stats->SetInteger("sizeTotal",
191 static_cast<int>(it->second.sum_size));
192 frame_stats->SetInteger("minDelayMs",
193 it->second.min_delay.InMilliseconds());
194 frame_stats->SetInteger("maxDelayMs",
195 it->second.max_delay.InMilliseconds());
196 frame_stats->SetInteger("sumDelayMs",
197 it->second.sum_delay.InMilliseconds());
198
199 overall_frame_stats->Set(CastLoggingToString(it->first),
200 frame_stats.release());
201 }
202
203 overall_stats->Set("frameStats", overall_frame_stats.release());
204
205 scoped_ptr<base::DictionaryValue> overall_packet_stats(
206 new base::DictionaryValue);
207 for (PacketStatsMap::const_iterator it = packet_stats_map.begin();
208 it != packet_stats_map.end();
209 ++it) {
210 scoped_ptr<base::DictionaryValue> packet_stats(new base::DictionaryValue);
211
212 packet_stats->SetDouble("firstEventTime",
213 it->second.first_event_time.ToInternalValue());
214 packet_stats->SetDouble("lastEventTime",
215 it->second.last_event_time.ToInternalValue());
216 packet_stats->SetDouble("lastEventTime",
217 it->second.last_event_time.ToInternalValue());
218 packet_stats->SetInteger("count", it->second.event_counter);
219 packet_stats->SetInteger("sizeTotal",
220 static_cast<int>(it->second.sum_size));
221
222 overall_packet_stats->Set(CastLoggingToString(it->first),
223 packet_stats.release());
224 }
225
226 overall_stats->Set("packetStats", overall_packet_stats.release());
227
228 return overall_stats.Pass();
229 }
230
148 } // namespace cast 231 } // namespace cast
149 } // namespace media 232 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/logging/logging_stats.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698