OLD | NEW |
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 #ifndef MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_ | 5 #ifndef MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_ |
6 #define MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_ | 6 #define MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/time/time.h" | 12 #include "base/time/time.h" |
13 | 13 |
14 namespace media { | 14 namespace media { |
15 namespace cast { | 15 namespace cast { |
16 | 16 |
17 static const uint32 kFrameIdUnknown = 0xFFFFFFFF; | 17 static const uint32 kFrameIdUnknown = 0xFFFFFFFF; |
18 | 18 |
19 typedef uint32 RtpTimestamp; | 19 typedef uint32 RtpTimestamp; |
20 | 20 |
21 enum CastLoggingEvent { | 21 enum CastLoggingEvent { |
22 // Generic events. | 22 // Generic events. |
23 kUnknown, | 23 kUnknown, |
24 kRttMs, | 24 kRttMs, |
25 kPacketLoss, | 25 kPacketLoss, |
26 kJitterMs, | 26 kJitterMs, |
27 kVideoAckReceived, | 27 kVideoAckReceived, |
28 kRembBitrate, | 28 kRembBitrate, |
29 // TODO(imcheng): k{Audio,Video}AckSent may need to be FrameEvents | 29 // Sender-side frame events. |
30 // (crbug.com/339590) | |
31 kAudioAckSent, | 30 kAudioAckSent, |
32 kVideoAckSent, | 31 kVideoAckSent, |
33 // Audio sender. | 32 // Audio sender. |
34 kAudioFrameReceived, | 33 kAudioFrameReceived, |
35 kAudioFrameCaptured, | 34 kAudioFrameCaptured, |
36 kAudioFrameEncoded, | 35 kAudioFrameEncoded, |
37 // Audio receiver. | 36 // Audio receiver. |
38 kAudioFrameDecoded, | 37 kAudioFrameDecoded, |
39 kAudioPlayoutDelay, | 38 kAudioPlayoutDelay, |
40 // Video sender. | 39 // Video sender. |
41 kVideoFrameCaptured, | 40 kVideoFrameCaptured, |
42 kVideoFrameReceived, | 41 kVideoFrameReceived, |
43 kVideoFrameSentToEncoder, | 42 kVideoFrameSentToEncoder, |
44 kVideoFrameEncoded, | 43 kVideoFrameEncoded, |
45 // Video receiver. | 44 // Video receiver. |
46 kVideoFrameDecoded, | 45 kVideoFrameDecoded, |
47 kVideoRenderDelay, | 46 kVideoRenderDelay, |
48 // Send-side packet events. | 47 // Send-side packet events. |
49 kAudioPacketSentToPacer, | 48 kAudioPacketSentToPacer, |
50 kVideoPacketSentToPacer, | 49 kVideoPacketSentToPacer, |
51 kAudioPacketSentToNetwork, | 50 kAudioPacketSentToNetwork, |
52 kVideoPacketSentToNetwork, | 51 kVideoPacketSentToNetwork, |
53 kAudioPacketRetransmitted, | 52 kAudioPacketRetransmitted, |
54 kVideoPacketRetransmitted, | 53 kVideoPacketRetransmitted, |
55 // Receive-side packet events. | 54 // Receive-side packet events. |
56 kAudioPacketReceived, | 55 kAudioPacketReceived, |
57 kVideoPacketReceived, | 56 kVideoPacketReceived, |
58 kDuplicateAudioPacketReceived, | 57 kDuplicateAudioPacketReceived, |
59 kDuplicateVideoPacketReceived, | 58 kDuplicateVideoPacketReceived, |
60 kNumOfLoggingEvents = kDuplicateVideoPacketReceived | 59 // Sender-side generic event. |
| 60 kAudioRtcpPacketReceived, |
| 61 kVideoRtcpPacketReceived, |
| 62 kNumOfLoggingEvents = kVideoRtcpPacketReceived |
61 }; | 63 }; |
62 | 64 |
63 const char* CastLoggingToString(CastLoggingEvent event); | 65 const char* CastLoggingToString(CastLoggingEvent event); |
64 | 66 |
65 // CastLoggingEvent are classified into one of three following types. | 67 // CastLoggingEvent are classified into one of three following types. |
66 enum EventMediaType { AUDIO_EVENT, VIDEO_EVENT, OTHER_EVENT }; | 68 enum EventMediaType { AUDIO_EVENT, VIDEO_EVENT, OTHER_EVENT }; |
67 | 69 |
68 EventMediaType GetEventMediaType(CastLoggingEvent event); | 70 EventMediaType GetEventMediaType(CastLoggingEvent event); |
69 | 71 |
70 struct FrameEvent { | 72 struct FrameEvent { |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 // kVideoAckReceived - Frame ID | 118 // kVideoAckReceived - Frame ID |
117 // kRembBitrate - Receiver Estimated Maximum Bitrate | 119 // kRembBitrate - Receiver Estimated Maximum Bitrate |
118 // kAudioAckSent - Frame ID | 120 // kAudioAckSent - Frame ID |
119 // kVideoAckSent - Frame ID | 121 // kVideoAckSent - Frame ID |
120 int value; | 122 int value; |
121 | 123 |
122 // Time of event logged. | 124 // Time of event logged. |
123 base::TimeTicks timestamp; | 125 base::TimeTicks timestamp; |
124 }; | 126 }; |
125 | 127 |
126 // Generic statistics given the raw data. More specific data (e.g. frame rate | |
127 // and bit rate) can be computed given the basic metrics. | |
128 // Some of the metrics will only be set when applicable, e.g. delay and size. | |
129 struct FrameLogStats { | |
130 FrameLogStats(); | |
131 ~FrameLogStats(); | |
132 base::TimeTicks first_event_time; | |
133 base::TimeTicks last_event_time; | |
134 int event_counter; | |
135 size_t sum_size; | |
136 base::TimeDelta min_delay; | |
137 base::TimeDelta max_delay; | |
138 base::TimeDelta sum_delay; | |
139 }; | |
140 | |
141 struct PacketLogStats { | |
142 PacketLogStats(); | |
143 ~PacketLogStats(); | |
144 base::TimeTicks first_event_time; | |
145 base::TimeTicks last_event_time; | |
146 int event_counter; | |
147 size_t sum_size; | |
148 }; | |
149 | |
150 struct GenericLogStats { | |
151 GenericLogStats(); | |
152 ~GenericLogStats(); | |
153 base::TimeTicks first_event_time; | |
154 base::TimeTicks last_event_time; | |
155 int event_counter; | |
156 int sum; | |
157 uint64 sum_squared; | |
158 int min; | |
159 int max; | |
160 }; | |
161 | |
162 | |
163 typedef std::map<CastLoggingEvent, FrameLogStats> FrameStatsMap; | |
164 typedef std::map<CastLoggingEvent, PacketLogStats> PacketStatsMap; | |
165 typedef std::map<CastLoggingEvent, GenericLogStats> GenericStatsMap; | |
166 | |
167 } // namespace cast | 128 } // namespace cast |
168 } // namespace media | 129 } // namespace media |
169 | 130 |
170 #endif // MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_ | 131 #endif // MEDIA_CAST_LOGGING_LOGGING_DEFINES_H_ |
OLD | NEW |