xref: /aosp_15_r20/external/webrtc/stats/rtcstats_objects.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright 2016 The WebRTC Project Authors. All rights reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #include "api/stats/rtcstats_objects.h"
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #include <utility>
14*d9f75844SAndroid Build Coastguard Worker 
15*d9f75844SAndroid Build Coastguard Worker #include "api/stats/rtc_stats.h"
16*d9f75844SAndroid Build Coastguard Worker #include "rtc_base/checks.h"
17*d9f75844SAndroid Build Coastguard Worker 
18*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
19*d9f75844SAndroid Build Coastguard Worker 
20*d9f75844SAndroid Build Coastguard Worker const char* const RTCDataChannelState::kConnecting = "connecting";
21*d9f75844SAndroid Build Coastguard Worker const char* const RTCDataChannelState::kOpen = "open";
22*d9f75844SAndroid Build Coastguard Worker const char* const RTCDataChannelState::kClosing = "closing";
23*d9f75844SAndroid Build Coastguard Worker const char* const RTCDataChannelState::kClosed = "closed";
24*d9f75844SAndroid Build Coastguard Worker 
25*d9f75844SAndroid Build Coastguard Worker const char* const RTCStatsIceCandidatePairState::kFrozen = "frozen";
26*d9f75844SAndroid Build Coastguard Worker const char* const RTCStatsIceCandidatePairState::kWaiting = "waiting";
27*d9f75844SAndroid Build Coastguard Worker const char* const RTCStatsIceCandidatePairState::kInProgress = "in-progress";
28*d9f75844SAndroid Build Coastguard Worker const char* const RTCStatsIceCandidatePairState::kFailed = "failed";
29*d9f75844SAndroid Build Coastguard Worker const char* const RTCStatsIceCandidatePairState::kSucceeded = "succeeded";
30*d9f75844SAndroid Build Coastguard Worker 
31*d9f75844SAndroid Build Coastguard Worker // Strings defined in https://tools.ietf.org/html/rfc5245.
32*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceCandidateType::kHost = "host";
33*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceCandidateType::kSrflx = "srflx";
34*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceCandidateType::kPrflx = "prflx";
35*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceCandidateType::kRelay = "relay";
36*d9f75844SAndroid Build Coastguard Worker 
37*d9f75844SAndroid Build Coastguard Worker const char* const RTCDtlsTransportState::kNew = "new";
38*d9f75844SAndroid Build Coastguard Worker const char* const RTCDtlsTransportState::kConnecting = "connecting";
39*d9f75844SAndroid Build Coastguard Worker const char* const RTCDtlsTransportState::kConnected = "connected";
40*d9f75844SAndroid Build Coastguard Worker const char* const RTCDtlsTransportState::kClosed = "closed";
41*d9f75844SAndroid Build Coastguard Worker const char* const RTCDtlsTransportState::kFailed = "failed";
42*d9f75844SAndroid Build Coastguard Worker 
43*d9f75844SAndroid Build Coastguard Worker const char* const RTCMediaStreamTrackKind::kAudio = "audio";
44*d9f75844SAndroid Build Coastguard Worker const char* const RTCMediaStreamTrackKind::kVideo = "video";
45*d9f75844SAndroid Build Coastguard Worker 
46*d9f75844SAndroid Build Coastguard Worker // https://w3c.github.io/webrtc-stats/#dom-rtcnetworktype
47*d9f75844SAndroid Build Coastguard Worker const char* const RTCNetworkType::kBluetooth = "bluetooth";
48*d9f75844SAndroid Build Coastguard Worker const char* const RTCNetworkType::kCellular = "cellular";
49*d9f75844SAndroid Build Coastguard Worker const char* const RTCNetworkType::kEthernet = "ethernet";
50*d9f75844SAndroid Build Coastguard Worker const char* const RTCNetworkType::kWifi = "wifi";
51*d9f75844SAndroid Build Coastguard Worker const char* const RTCNetworkType::kWimax = "wimax";
52*d9f75844SAndroid Build Coastguard Worker const char* const RTCNetworkType::kVpn = "vpn";
53*d9f75844SAndroid Build Coastguard Worker const char* const RTCNetworkType::kUnknown = "unknown";
54*d9f75844SAndroid Build Coastguard Worker 
55*d9f75844SAndroid Build Coastguard Worker // https://w3c.github.io/webrtc-stats/#dom-rtcqualitylimitationreason
56*d9f75844SAndroid Build Coastguard Worker const char* const RTCQualityLimitationReason::kNone = "none";
57*d9f75844SAndroid Build Coastguard Worker const char* const RTCQualityLimitationReason::kCpu = "cpu";
58*d9f75844SAndroid Build Coastguard Worker const char* const RTCQualityLimitationReason::kBandwidth = "bandwidth";
59*d9f75844SAndroid Build Coastguard Worker const char* const RTCQualityLimitationReason::kOther = "other";
60*d9f75844SAndroid Build Coastguard Worker 
61*d9f75844SAndroid Build Coastguard Worker // https://webrtc.org/experiments/rtp-hdrext/video-content-type/
62*d9f75844SAndroid Build Coastguard Worker const char* const RTCContentType::kUnspecified = "unspecified";
63*d9f75844SAndroid Build Coastguard Worker const char* const RTCContentType::kScreenshare = "screenshare";
64*d9f75844SAndroid Build Coastguard Worker 
65*d9f75844SAndroid Build Coastguard Worker // https://w3c.github.io/webrtc-stats/#dom-rtcdtlsrole
66*d9f75844SAndroid Build Coastguard Worker const char* const RTCDtlsRole::kUnknown = "unknown";
67*d9f75844SAndroid Build Coastguard Worker const char* const RTCDtlsRole::kClient = "client";
68*d9f75844SAndroid Build Coastguard Worker const char* const RTCDtlsRole::kServer = "server";
69*d9f75844SAndroid Build Coastguard Worker 
70*d9f75844SAndroid Build Coastguard Worker // https://www.w3.org/TR/webrtc/#rtcicerole
71*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceRole::kUnknown = "unknown";
72*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceRole::kControlled = "controlled";
73*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceRole::kControlling = "controlling";
74*d9f75844SAndroid Build Coastguard Worker 
75*d9f75844SAndroid Build Coastguard Worker // https://www.w3.org/TR/webrtc/#dom-rtcicetransportstate
76*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceTransportState::kNew = "new";
77*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceTransportState::kChecking = "checking";
78*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceTransportState::kConnected = "connected";
79*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceTransportState::kCompleted = "completed";
80*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceTransportState::kDisconnected = "disconnected";
81*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceTransportState::kFailed = "failed";
82*d9f75844SAndroid Build Coastguard Worker const char* const RTCIceTransportState::kClosed = "closed";
83*d9f75844SAndroid Build Coastguard Worker 
84*d9f75844SAndroid Build Coastguard Worker // clang-format off
85*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCCertificateStats, RTCStats, "certificate",
86*d9f75844SAndroid Build Coastguard Worker     &fingerprint,
87*d9f75844SAndroid Build Coastguard Worker     &fingerprint_algorithm,
88*d9f75844SAndroid Build Coastguard Worker     &base64_certificate,
89*d9f75844SAndroid Build Coastguard Worker     &issuer_certificate_id)
90*d9f75844SAndroid Build Coastguard Worker // clang-format on
91*d9f75844SAndroid Build Coastguard Worker 
RTCCertificateStats(const std::string & id,int64_t timestamp_us)92*d9f75844SAndroid Build Coastguard Worker RTCCertificateStats::RTCCertificateStats(const std::string& id,
93*d9f75844SAndroid Build Coastguard Worker                                          int64_t timestamp_us)
94*d9f75844SAndroid Build Coastguard Worker     : RTCCertificateStats(std::string(id), timestamp_us) {}
95*d9f75844SAndroid Build Coastguard Worker 
RTCCertificateStats(std::string && id,int64_t timestamp_us)96*d9f75844SAndroid Build Coastguard Worker RTCCertificateStats::RTCCertificateStats(std::string&& id, int64_t timestamp_us)
97*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
98*d9f75844SAndroid Build Coastguard Worker       fingerprint("fingerprint"),
99*d9f75844SAndroid Build Coastguard Worker       fingerprint_algorithm("fingerprintAlgorithm"),
100*d9f75844SAndroid Build Coastguard Worker       base64_certificate("base64Certificate"),
101*d9f75844SAndroid Build Coastguard Worker       issuer_certificate_id("issuerCertificateId") {}
102*d9f75844SAndroid Build Coastguard Worker 
103*d9f75844SAndroid Build Coastguard Worker RTCCertificateStats::RTCCertificateStats(const RTCCertificateStats& other) =
104*d9f75844SAndroid Build Coastguard Worker     default;
~RTCCertificateStats()105*d9f75844SAndroid Build Coastguard Worker RTCCertificateStats::~RTCCertificateStats() {}
106*d9f75844SAndroid Build Coastguard Worker 
107*d9f75844SAndroid Build Coastguard Worker // clang-format off
108*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCCodecStats, RTCStats, "codec",
109*d9f75844SAndroid Build Coastguard Worker     &transport_id,
110*d9f75844SAndroid Build Coastguard Worker     &payload_type,
111*d9f75844SAndroid Build Coastguard Worker     &mime_type,
112*d9f75844SAndroid Build Coastguard Worker     &clock_rate,
113*d9f75844SAndroid Build Coastguard Worker     &channels,
114*d9f75844SAndroid Build Coastguard Worker     &sdp_fmtp_line)
115*d9f75844SAndroid Build Coastguard Worker // clang-format on
116*d9f75844SAndroid Build Coastguard Worker 
RTCCodecStats(const std::string & id,int64_t timestamp_us)117*d9f75844SAndroid Build Coastguard Worker RTCCodecStats::RTCCodecStats(const std::string& id, int64_t timestamp_us)
118*d9f75844SAndroid Build Coastguard Worker     : RTCCodecStats(std::string(id), timestamp_us) {}
119*d9f75844SAndroid Build Coastguard Worker 
RTCCodecStats(std::string && id,int64_t timestamp_us)120*d9f75844SAndroid Build Coastguard Worker RTCCodecStats::RTCCodecStats(std::string&& id, int64_t timestamp_us)
121*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
122*d9f75844SAndroid Build Coastguard Worker       transport_id("transportId"),
123*d9f75844SAndroid Build Coastguard Worker       payload_type("payloadType"),
124*d9f75844SAndroid Build Coastguard Worker       mime_type("mimeType"),
125*d9f75844SAndroid Build Coastguard Worker       clock_rate("clockRate"),
126*d9f75844SAndroid Build Coastguard Worker       channels("channels"),
127*d9f75844SAndroid Build Coastguard Worker       sdp_fmtp_line("sdpFmtpLine") {}
128*d9f75844SAndroid Build Coastguard Worker 
129*d9f75844SAndroid Build Coastguard Worker RTCCodecStats::RTCCodecStats(const RTCCodecStats& other) = default;
130*d9f75844SAndroid Build Coastguard Worker 
~RTCCodecStats()131*d9f75844SAndroid Build Coastguard Worker RTCCodecStats::~RTCCodecStats() {}
132*d9f75844SAndroid Build Coastguard Worker 
133*d9f75844SAndroid Build Coastguard Worker // clang-format off
134*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCDataChannelStats, RTCStats, "data-channel",
135*d9f75844SAndroid Build Coastguard Worker     &label,
136*d9f75844SAndroid Build Coastguard Worker     &protocol,
137*d9f75844SAndroid Build Coastguard Worker     &data_channel_identifier,
138*d9f75844SAndroid Build Coastguard Worker     &state,
139*d9f75844SAndroid Build Coastguard Worker     &messages_sent,
140*d9f75844SAndroid Build Coastguard Worker     &bytes_sent,
141*d9f75844SAndroid Build Coastguard Worker     &messages_received,
142*d9f75844SAndroid Build Coastguard Worker     &bytes_received)
143*d9f75844SAndroid Build Coastguard Worker // clang-format on
144*d9f75844SAndroid Build Coastguard Worker 
RTCDataChannelStats(const std::string & id,int64_t timestamp_us)145*d9f75844SAndroid Build Coastguard Worker RTCDataChannelStats::RTCDataChannelStats(const std::string& id,
146*d9f75844SAndroid Build Coastguard Worker                                          int64_t timestamp_us)
147*d9f75844SAndroid Build Coastguard Worker     : RTCDataChannelStats(std::string(id), timestamp_us) {}
148*d9f75844SAndroid Build Coastguard Worker 
RTCDataChannelStats(std::string && id,int64_t timestamp_us)149*d9f75844SAndroid Build Coastguard Worker RTCDataChannelStats::RTCDataChannelStats(std::string&& id, int64_t timestamp_us)
150*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
151*d9f75844SAndroid Build Coastguard Worker       label("label"),
152*d9f75844SAndroid Build Coastguard Worker       protocol("protocol"),
153*d9f75844SAndroid Build Coastguard Worker       data_channel_identifier("dataChannelIdentifier"),
154*d9f75844SAndroid Build Coastguard Worker       state("state"),
155*d9f75844SAndroid Build Coastguard Worker       messages_sent("messagesSent"),
156*d9f75844SAndroid Build Coastguard Worker       bytes_sent("bytesSent"),
157*d9f75844SAndroid Build Coastguard Worker       messages_received("messagesReceived"),
158*d9f75844SAndroid Build Coastguard Worker       bytes_received("bytesReceived") {}
159*d9f75844SAndroid Build Coastguard Worker 
160*d9f75844SAndroid Build Coastguard Worker RTCDataChannelStats::RTCDataChannelStats(const RTCDataChannelStats& other) =
161*d9f75844SAndroid Build Coastguard Worker     default;
162*d9f75844SAndroid Build Coastguard Worker 
~RTCDataChannelStats()163*d9f75844SAndroid Build Coastguard Worker RTCDataChannelStats::~RTCDataChannelStats() {}
164*d9f75844SAndroid Build Coastguard Worker 
165*d9f75844SAndroid Build Coastguard Worker // clang-format off
166*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCIceCandidatePairStats, RTCStats, "candidate-pair",
167*d9f75844SAndroid Build Coastguard Worker     &transport_id,
168*d9f75844SAndroid Build Coastguard Worker     &local_candidate_id,
169*d9f75844SAndroid Build Coastguard Worker     &remote_candidate_id,
170*d9f75844SAndroid Build Coastguard Worker     &state,
171*d9f75844SAndroid Build Coastguard Worker     &priority,
172*d9f75844SAndroid Build Coastguard Worker     &nominated,
173*d9f75844SAndroid Build Coastguard Worker     &writable,
174*d9f75844SAndroid Build Coastguard Worker     &packets_sent,
175*d9f75844SAndroid Build Coastguard Worker     &packets_received,
176*d9f75844SAndroid Build Coastguard Worker     &bytes_sent,
177*d9f75844SAndroid Build Coastguard Worker     &bytes_received,
178*d9f75844SAndroid Build Coastguard Worker     &total_round_trip_time,
179*d9f75844SAndroid Build Coastguard Worker     &current_round_trip_time,
180*d9f75844SAndroid Build Coastguard Worker     &available_outgoing_bitrate,
181*d9f75844SAndroid Build Coastguard Worker     &available_incoming_bitrate,
182*d9f75844SAndroid Build Coastguard Worker     &requests_received,
183*d9f75844SAndroid Build Coastguard Worker     &requests_sent,
184*d9f75844SAndroid Build Coastguard Worker     &responses_received,
185*d9f75844SAndroid Build Coastguard Worker     &responses_sent,
186*d9f75844SAndroid Build Coastguard Worker     &consent_requests_sent,
187*d9f75844SAndroid Build Coastguard Worker     &packets_discarded_on_send,
188*d9f75844SAndroid Build Coastguard Worker     &bytes_discarded_on_send,
189*d9f75844SAndroid Build Coastguard Worker     &last_packet_received_timestamp,
190*d9f75844SAndroid Build Coastguard Worker     &last_packet_sent_timestamp)
191*d9f75844SAndroid Build Coastguard Worker // clang-format on
192*d9f75844SAndroid Build Coastguard Worker 
RTCIceCandidatePairStats(const std::string & id,int64_t timestamp_us)193*d9f75844SAndroid Build Coastguard Worker RTCIceCandidatePairStats::RTCIceCandidatePairStats(const std::string& id,
194*d9f75844SAndroid Build Coastguard Worker                                                    int64_t timestamp_us)
195*d9f75844SAndroid Build Coastguard Worker     : RTCIceCandidatePairStats(std::string(id), timestamp_us) {}
196*d9f75844SAndroid Build Coastguard Worker 
RTCIceCandidatePairStats(std::string && id,int64_t timestamp_us)197*d9f75844SAndroid Build Coastguard Worker RTCIceCandidatePairStats::RTCIceCandidatePairStats(std::string&& id,
198*d9f75844SAndroid Build Coastguard Worker                                                    int64_t timestamp_us)
199*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
200*d9f75844SAndroid Build Coastguard Worker       transport_id("transportId"),
201*d9f75844SAndroid Build Coastguard Worker       local_candidate_id("localCandidateId"),
202*d9f75844SAndroid Build Coastguard Worker       remote_candidate_id("remoteCandidateId"),
203*d9f75844SAndroid Build Coastguard Worker       state("state"),
204*d9f75844SAndroid Build Coastguard Worker       priority("priority"),
205*d9f75844SAndroid Build Coastguard Worker       nominated("nominated"),
206*d9f75844SAndroid Build Coastguard Worker       writable("writable"),
207*d9f75844SAndroid Build Coastguard Worker       packets_sent("packetsSent"),
208*d9f75844SAndroid Build Coastguard Worker       packets_received("packetsReceived"),
209*d9f75844SAndroid Build Coastguard Worker       bytes_sent("bytesSent"),
210*d9f75844SAndroid Build Coastguard Worker       bytes_received("bytesReceived"),
211*d9f75844SAndroid Build Coastguard Worker       total_round_trip_time("totalRoundTripTime"),
212*d9f75844SAndroid Build Coastguard Worker       current_round_trip_time("currentRoundTripTime"),
213*d9f75844SAndroid Build Coastguard Worker       available_outgoing_bitrate("availableOutgoingBitrate"),
214*d9f75844SAndroid Build Coastguard Worker       available_incoming_bitrate("availableIncomingBitrate"),
215*d9f75844SAndroid Build Coastguard Worker       requests_received("requestsReceived"),
216*d9f75844SAndroid Build Coastguard Worker       requests_sent("requestsSent"),
217*d9f75844SAndroid Build Coastguard Worker       responses_received("responsesReceived"),
218*d9f75844SAndroid Build Coastguard Worker       responses_sent("responsesSent"),
219*d9f75844SAndroid Build Coastguard Worker       consent_requests_sent("consentRequestsSent"),
220*d9f75844SAndroid Build Coastguard Worker       packets_discarded_on_send("packetsDiscardedOnSend"),
221*d9f75844SAndroid Build Coastguard Worker       bytes_discarded_on_send("bytesDiscardedOnSend"),
222*d9f75844SAndroid Build Coastguard Worker       last_packet_received_timestamp("lastPacketReceivedTimestamp"),
223*d9f75844SAndroid Build Coastguard Worker       last_packet_sent_timestamp("lastPacketSentTimestamp") {}
224*d9f75844SAndroid Build Coastguard Worker 
225*d9f75844SAndroid Build Coastguard Worker RTCIceCandidatePairStats::RTCIceCandidatePairStats(
226*d9f75844SAndroid Build Coastguard Worker     const RTCIceCandidatePairStats& other) = default;
227*d9f75844SAndroid Build Coastguard Worker 
~RTCIceCandidatePairStats()228*d9f75844SAndroid Build Coastguard Worker RTCIceCandidatePairStats::~RTCIceCandidatePairStats() {}
229*d9f75844SAndroid Build Coastguard Worker 
230*d9f75844SAndroid Build Coastguard Worker // clang-format off
231*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCIceCandidateStats, RTCStats, "abstract-ice-candidate",
232*d9f75844SAndroid Build Coastguard Worker     &transport_id,
233*d9f75844SAndroid Build Coastguard Worker     &is_remote,
234*d9f75844SAndroid Build Coastguard Worker     &network_type,
235*d9f75844SAndroid Build Coastguard Worker     &ip,
236*d9f75844SAndroid Build Coastguard Worker     &address,
237*d9f75844SAndroid Build Coastguard Worker     &port,
238*d9f75844SAndroid Build Coastguard Worker     &protocol,
239*d9f75844SAndroid Build Coastguard Worker     &relay_protocol,
240*d9f75844SAndroid Build Coastguard Worker     &candidate_type,
241*d9f75844SAndroid Build Coastguard Worker     &priority,
242*d9f75844SAndroid Build Coastguard Worker     &url,
243*d9f75844SAndroid Build Coastguard Worker     &foundation,
244*d9f75844SAndroid Build Coastguard Worker     &related_address,
245*d9f75844SAndroid Build Coastguard Worker     &related_port,
246*d9f75844SAndroid Build Coastguard Worker     &username_fragment,
247*d9f75844SAndroid Build Coastguard Worker     &tcp_type,
248*d9f75844SAndroid Build Coastguard Worker     &vpn,
249*d9f75844SAndroid Build Coastguard Worker     &network_adapter_type)
250*d9f75844SAndroid Build Coastguard Worker // clang-format on
251*d9f75844SAndroid Build Coastguard Worker 
RTCIceCandidateStats(const std::string & id,int64_t timestamp_us,bool is_remote)252*d9f75844SAndroid Build Coastguard Worker RTCIceCandidateStats::RTCIceCandidateStats(const std::string& id,
253*d9f75844SAndroid Build Coastguard Worker                                            int64_t timestamp_us,
254*d9f75844SAndroid Build Coastguard Worker                                            bool is_remote)
255*d9f75844SAndroid Build Coastguard Worker     : RTCIceCandidateStats(std::string(id), timestamp_us, is_remote) {}
256*d9f75844SAndroid Build Coastguard Worker 
RTCIceCandidateStats(std::string && id,int64_t timestamp_us,bool is_remote)257*d9f75844SAndroid Build Coastguard Worker RTCIceCandidateStats::RTCIceCandidateStats(std::string&& id,
258*d9f75844SAndroid Build Coastguard Worker                                            int64_t timestamp_us,
259*d9f75844SAndroid Build Coastguard Worker                                            bool is_remote)
260*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
261*d9f75844SAndroid Build Coastguard Worker       transport_id("transportId"),
262*d9f75844SAndroid Build Coastguard Worker       is_remote("isRemote", is_remote),
263*d9f75844SAndroid Build Coastguard Worker       network_type("networkType"),
264*d9f75844SAndroid Build Coastguard Worker       ip("ip"),
265*d9f75844SAndroid Build Coastguard Worker       address("address"),
266*d9f75844SAndroid Build Coastguard Worker       port("port"),
267*d9f75844SAndroid Build Coastguard Worker       protocol("protocol"),
268*d9f75844SAndroid Build Coastguard Worker       relay_protocol("relayProtocol"),
269*d9f75844SAndroid Build Coastguard Worker       candidate_type("candidateType"),
270*d9f75844SAndroid Build Coastguard Worker       priority("priority"),
271*d9f75844SAndroid Build Coastguard Worker       url("url"),
272*d9f75844SAndroid Build Coastguard Worker       foundation("foundation"),
273*d9f75844SAndroid Build Coastguard Worker       related_address("relatedAddress"),
274*d9f75844SAndroid Build Coastguard Worker       related_port("relatedPort"),
275*d9f75844SAndroid Build Coastguard Worker       username_fragment("usernameFragment"),
276*d9f75844SAndroid Build Coastguard Worker       tcp_type("tcpType"),
277*d9f75844SAndroid Build Coastguard Worker       vpn("vpn"),
278*d9f75844SAndroid Build Coastguard Worker       network_adapter_type("networkAdapterType") {}
279*d9f75844SAndroid Build Coastguard Worker 
280*d9f75844SAndroid Build Coastguard Worker RTCIceCandidateStats::RTCIceCandidateStats(const RTCIceCandidateStats& other) =
281*d9f75844SAndroid Build Coastguard Worker     default;
282*d9f75844SAndroid Build Coastguard Worker 
~RTCIceCandidateStats()283*d9f75844SAndroid Build Coastguard Worker RTCIceCandidateStats::~RTCIceCandidateStats() {}
284*d9f75844SAndroid Build Coastguard Worker 
285*d9f75844SAndroid Build Coastguard Worker const char RTCLocalIceCandidateStats::kType[] = "local-candidate";
286*d9f75844SAndroid Build Coastguard Worker 
RTCLocalIceCandidateStats(const std::string & id,int64_t timestamp_us)287*d9f75844SAndroid Build Coastguard Worker RTCLocalIceCandidateStats::RTCLocalIceCandidateStats(const std::string& id,
288*d9f75844SAndroid Build Coastguard Worker                                                      int64_t timestamp_us)
289*d9f75844SAndroid Build Coastguard Worker     : RTCIceCandidateStats(id, timestamp_us, false) {}
290*d9f75844SAndroid Build Coastguard Worker 
RTCLocalIceCandidateStats(std::string && id,int64_t timestamp_us)291*d9f75844SAndroid Build Coastguard Worker RTCLocalIceCandidateStats::RTCLocalIceCandidateStats(std::string&& id,
292*d9f75844SAndroid Build Coastguard Worker                                                      int64_t timestamp_us)
293*d9f75844SAndroid Build Coastguard Worker     : RTCIceCandidateStats(std::move(id), timestamp_us, false) {}
294*d9f75844SAndroid Build Coastguard Worker 
copy() const295*d9f75844SAndroid Build Coastguard Worker std::unique_ptr<RTCStats> RTCLocalIceCandidateStats::copy() const {
296*d9f75844SAndroid Build Coastguard Worker   return std::make_unique<RTCLocalIceCandidateStats>(*this);
297*d9f75844SAndroid Build Coastguard Worker }
298*d9f75844SAndroid Build Coastguard Worker 
type() const299*d9f75844SAndroid Build Coastguard Worker const char* RTCLocalIceCandidateStats::type() const {
300*d9f75844SAndroid Build Coastguard Worker   return kType;
301*d9f75844SAndroid Build Coastguard Worker }
302*d9f75844SAndroid Build Coastguard Worker 
303*d9f75844SAndroid Build Coastguard Worker const char RTCRemoteIceCandidateStats::kType[] = "remote-candidate";
304*d9f75844SAndroid Build Coastguard Worker 
RTCRemoteIceCandidateStats(const std::string & id,int64_t timestamp_us)305*d9f75844SAndroid Build Coastguard Worker RTCRemoteIceCandidateStats::RTCRemoteIceCandidateStats(const std::string& id,
306*d9f75844SAndroid Build Coastguard Worker                                                        int64_t timestamp_us)
307*d9f75844SAndroid Build Coastguard Worker     : RTCIceCandidateStats(id, timestamp_us, true) {}
308*d9f75844SAndroid Build Coastguard Worker 
RTCRemoteIceCandidateStats(std::string && id,int64_t timestamp_us)309*d9f75844SAndroid Build Coastguard Worker RTCRemoteIceCandidateStats::RTCRemoteIceCandidateStats(std::string&& id,
310*d9f75844SAndroid Build Coastguard Worker                                                        int64_t timestamp_us)
311*d9f75844SAndroid Build Coastguard Worker     : RTCIceCandidateStats(std::move(id), timestamp_us, true) {}
312*d9f75844SAndroid Build Coastguard Worker 
copy() const313*d9f75844SAndroid Build Coastguard Worker std::unique_ptr<RTCStats> RTCRemoteIceCandidateStats::copy() const {
314*d9f75844SAndroid Build Coastguard Worker   return std::make_unique<RTCRemoteIceCandidateStats>(*this);
315*d9f75844SAndroid Build Coastguard Worker }
316*d9f75844SAndroid Build Coastguard Worker 
type() const317*d9f75844SAndroid Build Coastguard Worker const char* RTCRemoteIceCandidateStats::type() const {
318*d9f75844SAndroid Build Coastguard Worker   return kType;
319*d9f75844SAndroid Build Coastguard Worker }
320*d9f75844SAndroid Build Coastguard Worker 
321*d9f75844SAndroid Build Coastguard Worker // clang-format off
322*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(DEPRECATED_RTCMediaStreamStats, RTCStats, "stream",
323*d9f75844SAndroid Build Coastguard Worker     &stream_identifier,
324*d9f75844SAndroid Build Coastguard Worker     &track_ids)
325*d9f75844SAndroid Build Coastguard Worker // clang-format on
326*d9f75844SAndroid Build Coastguard Worker 
DEPRECATED_RTCMediaStreamStats(const std::string & id,int64_t timestamp_us)327*d9f75844SAndroid Build Coastguard Worker DEPRECATED_RTCMediaStreamStats::DEPRECATED_RTCMediaStreamStats(
328*d9f75844SAndroid Build Coastguard Worker     const std::string& id,
329*d9f75844SAndroid Build Coastguard Worker     int64_t timestamp_us)
330*d9f75844SAndroid Build Coastguard Worker     : DEPRECATED_RTCMediaStreamStats(std::string(id), timestamp_us) {}
331*d9f75844SAndroid Build Coastguard Worker 
DEPRECATED_RTCMediaStreamStats(std::string && id,int64_t timestamp_us)332*d9f75844SAndroid Build Coastguard Worker DEPRECATED_RTCMediaStreamStats::DEPRECATED_RTCMediaStreamStats(
333*d9f75844SAndroid Build Coastguard Worker     std::string&& id,
334*d9f75844SAndroid Build Coastguard Worker     int64_t timestamp_us)
335*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
336*d9f75844SAndroid Build Coastguard Worker       stream_identifier("streamIdentifier"),
337*d9f75844SAndroid Build Coastguard Worker       track_ids("trackIds") {}
338*d9f75844SAndroid Build Coastguard Worker 
339*d9f75844SAndroid Build Coastguard Worker DEPRECATED_RTCMediaStreamStats::DEPRECATED_RTCMediaStreamStats(
340*d9f75844SAndroid Build Coastguard Worker     const DEPRECATED_RTCMediaStreamStats& other) = default;
341*d9f75844SAndroid Build Coastguard Worker 
~DEPRECATED_RTCMediaStreamStats()342*d9f75844SAndroid Build Coastguard Worker DEPRECATED_RTCMediaStreamStats::~DEPRECATED_RTCMediaStreamStats() {}
343*d9f75844SAndroid Build Coastguard Worker 
344*d9f75844SAndroid Build Coastguard Worker // clang-format off
345*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(DEPRECATED_RTCMediaStreamTrackStats, RTCStats, "track",
346*d9f75844SAndroid Build Coastguard Worker                      &track_identifier,
347*d9f75844SAndroid Build Coastguard Worker                      &media_source_id,
348*d9f75844SAndroid Build Coastguard Worker                      &remote_source,
349*d9f75844SAndroid Build Coastguard Worker                      &ended,
350*d9f75844SAndroid Build Coastguard Worker                      &detached,
351*d9f75844SAndroid Build Coastguard Worker                      &kind,
352*d9f75844SAndroid Build Coastguard Worker                      &jitter_buffer_delay,
353*d9f75844SAndroid Build Coastguard Worker                      &jitter_buffer_emitted_count,
354*d9f75844SAndroid Build Coastguard Worker                      &frame_width,
355*d9f75844SAndroid Build Coastguard Worker                      &frame_height,
356*d9f75844SAndroid Build Coastguard Worker                      &frames_sent,
357*d9f75844SAndroid Build Coastguard Worker                      &huge_frames_sent,
358*d9f75844SAndroid Build Coastguard Worker                      &frames_received,
359*d9f75844SAndroid Build Coastguard Worker                      &frames_decoded,
360*d9f75844SAndroid Build Coastguard Worker                      &frames_dropped,
361*d9f75844SAndroid Build Coastguard Worker                      &audio_level,
362*d9f75844SAndroid Build Coastguard Worker                      &total_audio_energy,
363*d9f75844SAndroid Build Coastguard Worker                      &echo_return_loss,
364*d9f75844SAndroid Build Coastguard Worker                      &echo_return_loss_enhancement,
365*d9f75844SAndroid Build Coastguard Worker                      &total_samples_received,
366*d9f75844SAndroid Build Coastguard Worker                      &total_samples_duration,
367*d9f75844SAndroid Build Coastguard Worker                      &concealed_samples,
368*d9f75844SAndroid Build Coastguard Worker                      &silent_concealed_samples,
369*d9f75844SAndroid Build Coastguard Worker                      &concealment_events,
370*d9f75844SAndroid Build Coastguard Worker                      &inserted_samples_for_deceleration,
371*d9f75844SAndroid Build Coastguard Worker                      &removed_samples_for_acceleration)
372*d9f75844SAndroid Build Coastguard Worker // clang-format on
373*d9f75844SAndroid Build Coastguard Worker 
DEPRECATED_RTCMediaStreamTrackStats(const std::string & id,int64_t timestamp_us,const char * kind)374*d9f75844SAndroid Build Coastguard Worker DEPRECATED_RTCMediaStreamTrackStats::DEPRECATED_RTCMediaStreamTrackStats(
375*d9f75844SAndroid Build Coastguard Worker     const std::string& id,
376*d9f75844SAndroid Build Coastguard Worker     int64_t timestamp_us,
377*d9f75844SAndroid Build Coastguard Worker     const char* kind)
378*d9f75844SAndroid Build Coastguard Worker     : DEPRECATED_RTCMediaStreamTrackStats(std::string(id), timestamp_us, kind) {
379*d9f75844SAndroid Build Coastguard Worker }
380*d9f75844SAndroid Build Coastguard Worker 
DEPRECATED_RTCMediaStreamTrackStats(std::string && id,int64_t timestamp_us,const char * kind)381*d9f75844SAndroid Build Coastguard Worker DEPRECATED_RTCMediaStreamTrackStats::DEPRECATED_RTCMediaStreamTrackStats(
382*d9f75844SAndroid Build Coastguard Worker     std::string&& id,
383*d9f75844SAndroid Build Coastguard Worker     int64_t timestamp_us,
384*d9f75844SAndroid Build Coastguard Worker     const char* kind)
385*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
386*d9f75844SAndroid Build Coastguard Worker       track_identifier("trackIdentifier"),
387*d9f75844SAndroid Build Coastguard Worker       media_source_id("mediaSourceId"),
388*d9f75844SAndroid Build Coastguard Worker       remote_source("remoteSource"),
389*d9f75844SAndroid Build Coastguard Worker       ended("ended"),
390*d9f75844SAndroid Build Coastguard Worker       detached("detached"),
391*d9f75844SAndroid Build Coastguard Worker       kind("kind", kind),
392*d9f75844SAndroid Build Coastguard Worker       jitter_buffer_delay("jitterBufferDelay"),
393*d9f75844SAndroid Build Coastguard Worker       jitter_buffer_emitted_count("jitterBufferEmittedCount"),
394*d9f75844SAndroid Build Coastguard Worker       frame_width("frameWidth"),
395*d9f75844SAndroid Build Coastguard Worker       frame_height("frameHeight"),
396*d9f75844SAndroid Build Coastguard Worker       frames_sent("framesSent"),
397*d9f75844SAndroid Build Coastguard Worker       huge_frames_sent("hugeFramesSent"),
398*d9f75844SAndroid Build Coastguard Worker       frames_received("framesReceived"),
399*d9f75844SAndroid Build Coastguard Worker       frames_decoded("framesDecoded"),
400*d9f75844SAndroid Build Coastguard Worker       frames_dropped("framesDropped"),
401*d9f75844SAndroid Build Coastguard Worker       audio_level("audioLevel"),
402*d9f75844SAndroid Build Coastguard Worker       total_audio_energy("totalAudioEnergy"),
403*d9f75844SAndroid Build Coastguard Worker       echo_return_loss("echoReturnLoss"),
404*d9f75844SAndroid Build Coastguard Worker       echo_return_loss_enhancement("echoReturnLossEnhancement"),
405*d9f75844SAndroid Build Coastguard Worker       total_samples_received("totalSamplesReceived"),
406*d9f75844SAndroid Build Coastguard Worker       total_samples_duration("totalSamplesDuration"),
407*d9f75844SAndroid Build Coastguard Worker       concealed_samples("concealedSamples"),
408*d9f75844SAndroid Build Coastguard Worker       silent_concealed_samples("silentConcealedSamples"),
409*d9f75844SAndroid Build Coastguard Worker       concealment_events("concealmentEvents"),
410*d9f75844SAndroid Build Coastguard Worker       inserted_samples_for_deceleration("insertedSamplesForDeceleration"),
411*d9f75844SAndroid Build Coastguard Worker       removed_samples_for_acceleration("removedSamplesForAcceleration") {
412*d9f75844SAndroid Build Coastguard Worker   RTC_DCHECK(kind == RTCMediaStreamTrackKind::kAudio ||
413*d9f75844SAndroid Build Coastguard Worker              kind == RTCMediaStreamTrackKind::kVideo);
414*d9f75844SAndroid Build Coastguard Worker }
415*d9f75844SAndroid Build Coastguard Worker 
416*d9f75844SAndroid Build Coastguard Worker DEPRECATED_RTCMediaStreamTrackStats::DEPRECATED_RTCMediaStreamTrackStats(
417*d9f75844SAndroid Build Coastguard Worker     const DEPRECATED_RTCMediaStreamTrackStats& other) = default;
418*d9f75844SAndroid Build Coastguard Worker 
~DEPRECATED_RTCMediaStreamTrackStats()419*d9f75844SAndroid Build Coastguard Worker DEPRECATED_RTCMediaStreamTrackStats::~DEPRECATED_RTCMediaStreamTrackStats() {}
420*d9f75844SAndroid Build Coastguard Worker 
421*d9f75844SAndroid Build Coastguard Worker // clang-format off
422*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCPeerConnectionStats, RTCStats, "peer-connection",
423*d9f75844SAndroid Build Coastguard Worker     &data_channels_opened,
424*d9f75844SAndroid Build Coastguard Worker     &data_channels_closed)
425*d9f75844SAndroid Build Coastguard Worker // clang-format on
426*d9f75844SAndroid Build Coastguard Worker 
RTCPeerConnectionStats(const std::string & id,int64_t timestamp_us)427*d9f75844SAndroid Build Coastguard Worker RTCPeerConnectionStats::RTCPeerConnectionStats(const std::string& id,
428*d9f75844SAndroid Build Coastguard Worker                                                int64_t timestamp_us)
429*d9f75844SAndroid Build Coastguard Worker     : RTCPeerConnectionStats(std::string(id), timestamp_us) {}
430*d9f75844SAndroid Build Coastguard Worker 
RTCPeerConnectionStats(std::string && id,int64_t timestamp_us)431*d9f75844SAndroid Build Coastguard Worker RTCPeerConnectionStats::RTCPeerConnectionStats(std::string&& id,
432*d9f75844SAndroid Build Coastguard Worker                                                int64_t timestamp_us)
433*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
434*d9f75844SAndroid Build Coastguard Worker       data_channels_opened("dataChannelsOpened"),
435*d9f75844SAndroid Build Coastguard Worker       data_channels_closed("dataChannelsClosed") {}
436*d9f75844SAndroid Build Coastguard Worker 
437*d9f75844SAndroid Build Coastguard Worker RTCPeerConnectionStats::RTCPeerConnectionStats(
438*d9f75844SAndroid Build Coastguard Worker     const RTCPeerConnectionStats& other) = default;
439*d9f75844SAndroid Build Coastguard Worker 
~RTCPeerConnectionStats()440*d9f75844SAndroid Build Coastguard Worker RTCPeerConnectionStats::~RTCPeerConnectionStats() {}
441*d9f75844SAndroid Build Coastguard Worker 
442*d9f75844SAndroid Build Coastguard Worker // clang-format off
443*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCRTPStreamStats, RTCStats, "rtp",
444*d9f75844SAndroid Build Coastguard Worker     &ssrc,
445*d9f75844SAndroid Build Coastguard Worker     &kind,
446*d9f75844SAndroid Build Coastguard Worker     &track_id,
447*d9f75844SAndroid Build Coastguard Worker     &transport_id,
448*d9f75844SAndroid Build Coastguard Worker     &codec_id,
449*d9f75844SAndroid Build Coastguard Worker     &media_type)
450*d9f75844SAndroid Build Coastguard Worker // clang-format on
451*d9f75844SAndroid Build Coastguard Worker 
RTCRTPStreamStats(const std::string & id,int64_t timestamp_us)452*d9f75844SAndroid Build Coastguard Worker RTCRTPStreamStats::RTCRTPStreamStats(const std::string& id,
453*d9f75844SAndroid Build Coastguard Worker                                      int64_t timestamp_us)
454*d9f75844SAndroid Build Coastguard Worker     : RTCRTPStreamStats(std::string(id), timestamp_us) {}
455*d9f75844SAndroid Build Coastguard Worker 
RTCRTPStreamStats(std::string && id,int64_t timestamp_us)456*d9f75844SAndroid Build Coastguard Worker RTCRTPStreamStats::RTCRTPStreamStats(std::string&& id, int64_t timestamp_us)
457*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
458*d9f75844SAndroid Build Coastguard Worker       ssrc("ssrc"),
459*d9f75844SAndroid Build Coastguard Worker       kind("kind"),
460*d9f75844SAndroid Build Coastguard Worker       track_id("trackId"),
461*d9f75844SAndroid Build Coastguard Worker       transport_id("transportId"),
462*d9f75844SAndroid Build Coastguard Worker       codec_id("codecId"),
463*d9f75844SAndroid Build Coastguard Worker       media_type("mediaType") {}
464*d9f75844SAndroid Build Coastguard Worker 
465*d9f75844SAndroid Build Coastguard Worker RTCRTPStreamStats::RTCRTPStreamStats(const RTCRTPStreamStats& other) = default;
466*d9f75844SAndroid Build Coastguard Worker 
~RTCRTPStreamStats()467*d9f75844SAndroid Build Coastguard Worker RTCRTPStreamStats::~RTCRTPStreamStats() {}
468*d9f75844SAndroid Build Coastguard Worker 
469*d9f75844SAndroid Build Coastguard Worker // clang-format off
470*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(
471*d9f75844SAndroid Build Coastguard Worker     RTCReceivedRtpStreamStats, RTCRTPStreamStats, "received-rtp",
472*d9f75844SAndroid Build Coastguard Worker     &jitter,
473*d9f75844SAndroid Build Coastguard Worker     &packets_lost)
474*d9f75844SAndroid Build Coastguard Worker // clang-format on
475*d9f75844SAndroid Build Coastguard Worker 
RTCReceivedRtpStreamStats(const std::string && id,int64_t timestamp_us)476*d9f75844SAndroid Build Coastguard Worker RTCReceivedRtpStreamStats::RTCReceivedRtpStreamStats(const std::string&& id,
477*d9f75844SAndroid Build Coastguard Worker                                                      int64_t timestamp_us)
478*d9f75844SAndroid Build Coastguard Worker     : RTCReceivedRtpStreamStats(std::string(id), timestamp_us) {}
479*d9f75844SAndroid Build Coastguard Worker 
RTCReceivedRtpStreamStats(std::string && id,int64_t timestamp_us)480*d9f75844SAndroid Build Coastguard Worker RTCReceivedRtpStreamStats::RTCReceivedRtpStreamStats(std::string&& id,
481*d9f75844SAndroid Build Coastguard Worker                                                      int64_t timestamp_us)
482*d9f75844SAndroid Build Coastguard Worker     : RTCRTPStreamStats(std::move(id), timestamp_us),
483*d9f75844SAndroid Build Coastguard Worker       jitter("jitter"),
484*d9f75844SAndroid Build Coastguard Worker       packets_lost("packetsLost") {}
485*d9f75844SAndroid Build Coastguard Worker 
486*d9f75844SAndroid Build Coastguard Worker RTCReceivedRtpStreamStats::RTCReceivedRtpStreamStats(
487*d9f75844SAndroid Build Coastguard Worker     const RTCReceivedRtpStreamStats& other) = default;
488*d9f75844SAndroid Build Coastguard Worker 
~RTCReceivedRtpStreamStats()489*d9f75844SAndroid Build Coastguard Worker RTCReceivedRtpStreamStats::~RTCReceivedRtpStreamStats() {}
490*d9f75844SAndroid Build Coastguard Worker 
491*d9f75844SAndroid Build Coastguard Worker // clang-format off
492*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(
493*d9f75844SAndroid Build Coastguard Worker     RTCSentRtpStreamStats, RTCRTPStreamStats, "sent-rtp",
494*d9f75844SAndroid Build Coastguard Worker     &packets_sent,
495*d9f75844SAndroid Build Coastguard Worker     &bytes_sent)
496*d9f75844SAndroid Build Coastguard Worker // clang-format on
497*d9f75844SAndroid Build Coastguard Worker 
RTCSentRtpStreamStats(const std::string && id,int64_t timestamp_us)498*d9f75844SAndroid Build Coastguard Worker RTCSentRtpStreamStats::RTCSentRtpStreamStats(const std::string&& id,
499*d9f75844SAndroid Build Coastguard Worker                                              int64_t timestamp_us)
500*d9f75844SAndroid Build Coastguard Worker     : RTCSentRtpStreamStats(std::string(id), timestamp_us) {}
501*d9f75844SAndroid Build Coastguard Worker 
RTCSentRtpStreamStats(std::string && id,int64_t timestamp_us)502*d9f75844SAndroid Build Coastguard Worker RTCSentRtpStreamStats::RTCSentRtpStreamStats(std::string&& id,
503*d9f75844SAndroid Build Coastguard Worker                                              int64_t timestamp_us)
504*d9f75844SAndroid Build Coastguard Worker     : RTCRTPStreamStats(std::move(id), timestamp_us),
505*d9f75844SAndroid Build Coastguard Worker       packets_sent("packetsSent"),
506*d9f75844SAndroid Build Coastguard Worker       bytes_sent("bytesSent") {}
507*d9f75844SAndroid Build Coastguard Worker 
508*d9f75844SAndroid Build Coastguard Worker RTCSentRtpStreamStats::RTCSentRtpStreamStats(
509*d9f75844SAndroid Build Coastguard Worker     const RTCSentRtpStreamStats& other) = default;
510*d9f75844SAndroid Build Coastguard Worker 
~RTCSentRtpStreamStats()511*d9f75844SAndroid Build Coastguard Worker RTCSentRtpStreamStats::~RTCSentRtpStreamStats() {}
512*d9f75844SAndroid Build Coastguard Worker 
513*d9f75844SAndroid Build Coastguard Worker // clang-format off
514*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(
515*d9f75844SAndroid Build Coastguard Worker     RTCInboundRTPStreamStats, RTCReceivedRtpStreamStats, "inbound-rtp",
516*d9f75844SAndroid Build Coastguard Worker     &track_identifier,
517*d9f75844SAndroid Build Coastguard Worker     &mid,
518*d9f75844SAndroid Build Coastguard Worker     &remote_id,
519*d9f75844SAndroid Build Coastguard Worker     &packets_received,
520*d9f75844SAndroid Build Coastguard Worker     &packets_discarded,
521*d9f75844SAndroid Build Coastguard Worker     &fec_packets_received,
522*d9f75844SAndroid Build Coastguard Worker     &fec_packets_discarded,
523*d9f75844SAndroid Build Coastguard Worker     &bytes_received,
524*d9f75844SAndroid Build Coastguard Worker     &header_bytes_received,
525*d9f75844SAndroid Build Coastguard Worker     &last_packet_received_timestamp,
526*d9f75844SAndroid Build Coastguard Worker     &jitter_buffer_delay,
527*d9f75844SAndroid Build Coastguard Worker     &jitter_buffer_target_delay,
528*d9f75844SAndroid Build Coastguard Worker     &jitter_buffer_minimum_delay,
529*d9f75844SAndroid Build Coastguard Worker     &jitter_buffer_emitted_count,
530*d9f75844SAndroid Build Coastguard Worker     &total_samples_received,
531*d9f75844SAndroid Build Coastguard Worker     &concealed_samples,
532*d9f75844SAndroid Build Coastguard Worker     &silent_concealed_samples,
533*d9f75844SAndroid Build Coastguard Worker     &concealment_events,
534*d9f75844SAndroid Build Coastguard Worker     &inserted_samples_for_deceleration,
535*d9f75844SAndroid Build Coastguard Worker     &removed_samples_for_acceleration,
536*d9f75844SAndroid Build Coastguard Worker     &audio_level,
537*d9f75844SAndroid Build Coastguard Worker     &total_audio_energy,
538*d9f75844SAndroid Build Coastguard Worker     &total_samples_duration,
539*d9f75844SAndroid Build Coastguard Worker     &frames_received,
540*d9f75844SAndroid Build Coastguard Worker     &frame_width,
541*d9f75844SAndroid Build Coastguard Worker     &frame_height,
542*d9f75844SAndroid Build Coastguard Worker     &frames_per_second,
543*d9f75844SAndroid Build Coastguard Worker     &frames_decoded,
544*d9f75844SAndroid Build Coastguard Worker     &key_frames_decoded,
545*d9f75844SAndroid Build Coastguard Worker     &frames_dropped,
546*d9f75844SAndroid Build Coastguard Worker     &total_decode_time,
547*d9f75844SAndroid Build Coastguard Worker     &total_processing_delay,
548*d9f75844SAndroid Build Coastguard Worker     &total_assembly_time,
549*d9f75844SAndroid Build Coastguard Worker     &frames_assembled_from_multiple_packets,
550*d9f75844SAndroid Build Coastguard Worker     &total_inter_frame_delay,
551*d9f75844SAndroid Build Coastguard Worker     &total_squared_inter_frame_delay,
552*d9f75844SAndroid Build Coastguard Worker     &pause_count,
553*d9f75844SAndroid Build Coastguard Worker     &total_pauses_duration,
554*d9f75844SAndroid Build Coastguard Worker     &freeze_count,
555*d9f75844SAndroid Build Coastguard Worker     &total_freezes_duration,
556*d9f75844SAndroid Build Coastguard Worker     &content_type,
557*d9f75844SAndroid Build Coastguard Worker     &estimated_playout_timestamp,
558*d9f75844SAndroid Build Coastguard Worker     &decoder_implementation,
559*d9f75844SAndroid Build Coastguard Worker     &fir_count,
560*d9f75844SAndroid Build Coastguard Worker     &pli_count,
561*d9f75844SAndroid Build Coastguard Worker     &nack_count,
562*d9f75844SAndroid Build Coastguard Worker     &qp_sum,
563*d9f75844SAndroid Build Coastguard Worker     &goog_timing_frame_info,
564*d9f75844SAndroid Build Coastguard Worker     &power_efficient_decoder,
565*d9f75844SAndroid Build Coastguard Worker     &jitter_buffer_flushes,
566*d9f75844SAndroid Build Coastguard Worker     &delayed_packet_outage_samples,
567*d9f75844SAndroid Build Coastguard Worker     &relative_packet_arrival_delay,
568*d9f75844SAndroid Build Coastguard Worker     &interruption_count,
569*d9f75844SAndroid Build Coastguard Worker     &total_interruption_duration,
570*d9f75844SAndroid Build Coastguard Worker     &min_playout_delay)
571*d9f75844SAndroid Build Coastguard Worker // clang-format on
572*d9f75844SAndroid Build Coastguard Worker 
RTCInboundRTPStreamStats(const std::string & id,int64_t timestamp_us)573*d9f75844SAndroid Build Coastguard Worker RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(const std::string& id,
574*d9f75844SAndroid Build Coastguard Worker                                                    int64_t timestamp_us)
575*d9f75844SAndroid Build Coastguard Worker     : RTCInboundRTPStreamStats(std::string(id), timestamp_us) {}
576*d9f75844SAndroid Build Coastguard Worker 
RTCInboundRTPStreamStats(std::string && id,int64_t timestamp_us)577*d9f75844SAndroid Build Coastguard Worker RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(std::string&& id,
578*d9f75844SAndroid Build Coastguard Worker                                                    int64_t timestamp_us)
579*d9f75844SAndroid Build Coastguard Worker     : RTCReceivedRtpStreamStats(std::move(id), timestamp_us),
580*d9f75844SAndroid Build Coastguard Worker       track_identifier("trackIdentifier"),
581*d9f75844SAndroid Build Coastguard Worker       mid("mid"),
582*d9f75844SAndroid Build Coastguard Worker       remote_id("remoteId"),
583*d9f75844SAndroid Build Coastguard Worker       packets_received("packetsReceived"),
584*d9f75844SAndroid Build Coastguard Worker       packets_discarded("packetsDiscarded"),
585*d9f75844SAndroid Build Coastguard Worker       fec_packets_received("fecPacketsReceived"),
586*d9f75844SAndroid Build Coastguard Worker       fec_packets_discarded("fecPacketsDiscarded"),
587*d9f75844SAndroid Build Coastguard Worker       bytes_received("bytesReceived"),
588*d9f75844SAndroid Build Coastguard Worker       header_bytes_received("headerBytesReceived"),
589*d9f75844SAndroid Build Coastguard Worker       last_packet_received_timestamp("lastPacketReceivedTimestamp"),
590*d9f75844SAndroid Build Coastguard Worker       jitter_buffer_delay("jitterBufferDelay"),
591*d9f75844SAndroid Build Coastguard Worker       jitter_buffer_target_delay("jitterBufferTargetDelay"),
592*d9f75844SAndroid Build Coastguard Worker       jitter_buffer_minimum_delay("jitterBufferMinimumDelay"),
593*d9f75844SAndroid Build Coastguard Worker       jitter_buffer_emitted_count("jitterBufferEmittedCount"),
594*d9f75844SAndroid Build Coastguard Worker       total_samples_received("totalSamplesReceived"),
595*d9f75844SAndroid Build Coastguard Worker       concealed_samples("concealedSamples"),
596*d9f75844SAndroid Build Coastguard Worker       silent_concealed_samples("silentConcealedSamples"),
597*d9f75844SAndroid Build Coastguard Worker       concealment_events("concealmentEvents"),
598*d9f75844SAndroid Build Coastguard Worker       inserted_samples_for_deceleration("insertedSamplesForDeceleration"),
599*d9f75844SAndroid Build Coastguard Worker       removed_samples_for_acceleration("removedSamplesForAcceleration"),
600*d9f75844SAndroid Build Coastguard Worker       audio_level("audioLevel"),
601*d9f75844SAndroid Build Coastguard Worker       total_audio_energy("totalAudioEnergy"),
602*d9f75844SAndroid Build Coastguard Worker       total_samples_duration("totalSamplesDuration"),
603*d9f75844SAndroid Build Coastguard Worker       frames_received("framesReceived"),
604*d9f75844SAndroid Build Coastguard Worker       frame_width("frameWidth"),
605*d9f75844SAndroid Build Coastguard Worker       frame_height("frameHeight"),
606*d9f75844SAndroid Build Coastguard Worker       frames_per_second("framesPerSecond"),
607*d9f75844SAndroid Build Coastguard Worker       frames_decoded("framesDecoded"),
608*d9f75844SAndroid Build Coastguard Worker       key_frames_decoded("keyFramesDecoded"),
609*d9f75844SAndroid Build Coastguard Worker       frames_dropped("framesDropped"),
610*d9f75844SAndroid Build Coastguard Worker       total_decode_time("totalDecodeTime"),
611*d9f75844SAndroid Build Coastguard Worker       total_processing_delay("totalProcessingDelay"),
612*d9f75844SAndroid Build Coastguard Worker       total_assembly_time("totalAssemblyTime"),
613*d9f75844SAndroid Build Coastguard Worker       frames_assembled_from_multiple_packets(
614*d9f75844SAndroid Build Coastguard Worker           "framesAssembledFromMultiplePackets"),
615*d9f75844SAndroid Build Coastguard Worker       total_inter_frame_delay("totalInterFrameDelay"),
616*d9f75844SAndroid Build Coastguard Worker       total_squared_inter_frame_delay("totalSquaredInterFrameDelay"),
617*d9f75844SAndroid Build Coastguard Worker       pause_count("pauseCount"),
618*d9f75844SAndroid Build Coastguard Worker       total_pauses_duration("totalPausesDuration"),
619*d9f75844SAndroid Build Coastguard Worker       freeze_count("freezeCount"),
620*d9f75844SAndroid Build Coastguard Worker       total_freezes_duration("totalFreezesDuration"),
621*d9f75844SAndroid Build Coastguard Worker       content_type("contentType"),
622*d9f75844SAndroid Build Coastguard Worker       estimated_playout_timestamp("estimatedPlayoutTimestamp"),
623*d9f75844SAndroid Build Coastguard Worker       decoder_implementation("decoderImplementation"),
624*d9f75844SAndroid Build Coastguard Worker       fir_count("firCount"),
625*d9f75844SAndroid Build Coastguard Worker       pli_count("pliCount"),
626*d9f75844SAndroid Build Coastguard Worker       nack_count("nackCount"),
627*d9f75844SAndroid Build Coastguard Worker       qp_sum("qpSum"),
628*d9f75844SAndroid Build Coastguard Worker       goog_timing_frame_info("googTimingFrameInfo"),
629*d9f75844SAndroid Build Coastguard Worker       power_efficient_decoder("powerEfficientDecoder"),
630*d9f75844SAndroid Build Coastguard Worker       jitter_buffer_flushes(
631*d9f75844SAndroid Build Coastguard Worker           "jitterBufferFlushes",
632*d9f75844SAndroid Build Coastguard Worker           {NonStandardGroupId::kRtcAudioJitterBufferMaxPackets}),
633*d9f75844SAndroid Build Coastguard Worker       delayed_packet_outage_samples(
634*d9f75844SAndroid Build Coastguard Worker           "delayedPacketOutageSamples",
635*d9f75844SAndroid Build Coastguard Worker           {NonStandardGroupId::kRtcAudioJitterBufferMaxPackets,
636*d9f75844SAndroid Build Coastguard Worker            NonStandardGroupId::kRtcStatsRelativePacketArrivalDelay}),
637*d9f75844SAndroid Build Coastguard Worker       relative_packet_arrival_delay(
638*d9f75844SAndroid Build Coastguard Worker           "relativePacketArrivalDelay",
639*d9f75844SAndroid Build Coastguard Worker           {NonStandardGroupId::kRtcStatsRelativePacketArrivalDelay}),
640*d9f75844SAndroid Build Coastguard Worker       interruption_count("interruptionCount"),
641*d9f75844SAndroid Build Coastguard Worker       total_interruption_duration("totalInterruptionDuration"),
642*d9f75844SAndroid Build Coastguard Worker       min_playout_delay("minPlayoutDelay") {}
643*d9f75844SAndroid Build Coastguard Worker 
644*d9f75844SAndroid Build Coastguard Worker RTCInboundRTPStreamStats::RTCInboundRTPStreamStats(
645*d9f75844SAndroid Build Coastguard Worker     const RTCInboundRTPStreamStats& other) = default;
~RTCInboundRTPStreamStats()646*d9f75844SAndroid Build Coastguard Worker RTCInboundRTPStreamStats::~RTCInboundRTPStreamStats() {}
647*d9f75844SAndroid Build Coastguard Worker 
648*d9f75844SAndroid Build Coastguard Worker // clang-format off
649*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(
650*d9f75844SAndroid Build Coastguard Worker     RTCOutboundRTPStreamStats, RTCRTPStreamStats, "outbound-rtp",
651*d9f75844SAndroid Build Coastguard Worker     &media_source_id,
652*d9f75844SAndroid Build Coastguard Worker     &remote_id,
653*d9f75844SAndroid Build Coastguard Worker     &mid,
654*d9f75844SAndroid Build Coastguard Worker     &rid,
655*d9f75844SAndroid Build Coastguard Worker     &packets_sent,
656*d9f75844SAndroid Build Coastguard Worker     &retransmitted_packets_sent,
657*d9f75844SAndroid Build Coastguard Worker     &bytes_sent,
658*d9f75844SAndroid Build Coastguard Worker     &header_bytes_sent,
659*d9f75844SAndroid Build Coastguard Worker     &retransmitted_bytes_sent,
660*d9f75844SAndroid Build Coastguard Worker     &target_bitrate,
661*d9f75844SAndroid Build Coastguard Worker     &frames_encoded,
662*d9f75844SAndroid Build Coastguard Worker     &key_frames_encoded,
663*d9f75844SAndroid Build Coastguard Worker     &total_encode_time,
664*d9f75844SAndroid Build Coastguard Worker     &total_encoded_bytes_target,
665*d9f75844SAndroid Build Coastguard Worker     &frame_width,
666*d9f75844SAndroid Build Coastguard Worker     &frame_height,
667*d9f75844SAndroid Build Coastguard Worker     &frames_per_second,
668*d9f75844SAndroid Build Coastguard Worker     &frames_sent,
669*d9f75844SAndroid Build Coastguard Worker     &huge_frames_sent,
670*d9f75844SAndroid Build Coastguard Worker     &total_packet_send_delay,
671*d9f75844SAndroid Build Coastguard Worker     &quality_limitation_reason,
672*d9f75844SAndroid Build Coastguard Worker     &quality_limitation_durations,
673*d9f75844SAndroid Build Coastguard Worker     &quality_limitation_resolution_changes,
674*d9f75844SAndroid Build Coastguard Worker     &content_type,
675*d9f75844SAndroid Build Coastguard Worker     &encoder_implementation,
676*d9f75844SAndroid Build Coastguard Worker     &fir_count,
677*d9f75844SAndroid Build Coastguard Worker     &pli_count,
678*d9f75844SAndroid Build Coastguard Worker     &nack_count,
679*d9f75844SAndroid Build Coastguard Worker     &qp_sum,
680*d9f75844SAndroid Build Coastguard Worker     &active,
681*d9f75844SAndroid Build Coastguard Worker     &power_efficient_encoder)
682*d9f75844SAndroid Build Coastguard Worker // clang-format on
683*d9f75844SAndroid Build Coastguard Worker 
RTCOutboundRTPStreamStats(const std::string & id,int64_t timestamp_us)684*d9f75844SAndroid Build Coastguard Worker RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(const std::string& id,
685*d9f75844SAndroid Build Coastguard Worker                                                      int64_t timestamp_us)
686*d9f75844SAndroid Build Coastguard Worker     : RTCOutboundRTPStreamStats(std::string(id), timestamp_us) {}
687*d9f75844SAndroid Build Coastguard Worker 
RTCOutboundRTPStreamStats(std::string && id,int64_t timestamp_us)688*d9f75844SAndroid Build Coastguard Worker RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(std::string&& id,
689*d9f75844SAndroid Build Coastguard Worker                                                      int64_t timestamp_us)
690*d9f75844SAndroid Build Coastguard Worker     : RTCRTPStreamStats(std::move(id), timestamp_us),
691*d9f75844SAndroid Build Coastguard Worker       media_source_id("mediaSourceId"),
692*d9f75844SAndroid Build Coastguard Worker       remote_id("remoteId"),
693*d9f75844SAndroid Build Coastguard Worker       mid("mid"),
694*d9f75844SAndroid Build Coastguard Worker       rid("rid"),
695*d9f75844SAndroid Build Coastguard Worker       packets_sent("packetsSent"),
696*d9f75844SAndroid Build Coastguard Worker       retransmitted_packets_sent("retransmittedPacketsSent"),
697*d9f75844SAndroid Build Coastguard Worker       bytes_sent("bytesSent"),
698*d9f75844SAndroid Build Coastguard Worker       header_bytes_sent("headerBytesSent"),
699*d9f75844SAndroid Build Coastguard Worker       retransmitted_bytes_sent("retransmittedBytesSent"),
700*d9f75844SAndroid Build Coastguard Worker       target_bitrate("targetBitrate"),
701*d9f75844SAndroid Build Coastguard Worker       frames_encoded("framesEncoded"),
702*d9f75844SAndroid Build Coastguard Worker       key_frames_encoded("keyFramesEncoded"),
703*d9f75844SAndroid Build Coastguard Worker       total_encode_time("totalEncodeTime"),
704*d9f75844SAndroid Build Coastguard Worker       total_encoded_bytes_target("totalEncodedBytesTarget"),
705*d9f75844SAndroid Build Coastguard Worker       frame_width("frameWidth"),
706*d9f75844SAndroid Build Coastguard Worker       frame_height("frameHeight"),
707*d9f75844SAndroid Build Coastguard Worker       frames_per_second("framesPerSecond"),
708*d9f75844SAndroid Build Coastguard Worker       frames_sent("framesSent"),
709*d9f75844SAndroid Build Coastguard Worker       huge_frames_sent("hugeFramesSent"),
710*d9f75844SAndroid Build Coastguard Worker       total_packet_send_delay("totalPacketSendDelay"),
711*d9f75844SAndroid Build Coastguard Worker       quality_limitation_reason("qualityLimitationReason"),
712*d9f75844SAndroid Build Coastguard Worker       quality_limitation_durations("qualityLimitationDurations"),
713*d9f75844SAndroid Build Coastguard Worker       quality_limitation_resolution_changes(
714*d9f75844SAndroid Build Coastguard Worker           "qualityLimitationResolutionChanges"),
715*d9f75844SAndroid Build Coastguard Worker       content_type("contentType"),
716*d9f75844SAndroid Build Coastguard Worker       encoder_implementation("encoderImplementation"),
717*d9f75844SAndroid Build Coastguard Worker       fir_count("firCount"),
718*d9f75844SAndroid Build Coastguard Worker       pli_count("pliCount"),
719*d9f75844SAndroid Build Coastguard Worker       nack_count("nackCount"),
720*d9f75844SAndroid Build Coastguard Worker       qp_sum("qpSum"),
721*d9f75844SAndroid Build Coastguard Worker       active("active"),
722*d9f75844SAndroid Build Coastguard Worker       power_efficient_encoder("powerEfficientEncoder") {}
723*d9f75844SAndroid Build Coastguard Worker 
724*d9f75844SAndroid Build Coastguard Worker RTCOutboundRTPStreamStats::RTCOutboundRTPStreamStats(
725*d9f75844SAndroid Build Coastguard Worker     const RTCOutboundRTPStreamStats& other) = default;
726*d9f75844SAndroid Build Coastguard Worker 
~RTCOutboundRTPStreamStats()727*d9f75844SAndroid Build Coastguard Worker RTCOutboundRTPStreamStats::~RTCOutboundRTPStreamStats() {}
728*d9f75844SAndroid Build Coastguard Worker 
729*d9f75844SAndroid Build Coastguard Worker // clang-format off
730*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(
731*d9f75844SAndroid Build Coastguard Worker     RTCRemoteInboundRtpStreamStats, RTCReceivedRtpStreamStats,
732*d9f75844SAndroid Build Coastguard Worker         "remote-inbound-rtp",
733*d9f75844SAndroid Build Coastguard Worker     &local_id,
734*d9f75844SAndroid Build Coastguard Worker     &round_trip_time,
735*d9f75844SAndroid Build Coastguard Worker     &fraction_lost,
736*d9f75844SAndroid Build Coastguard Worker     &total_round_trip_time,
737*d9f75844SAndroid Build Coastguard Worker     &round_trip_time_measurements)
738*d9f75844SAndroid Build Coastguard Worker // clang-format on
739*d9f75844SAndroid Build Coastguard Worker 
RTCRemoteInboundRtpStreamStats(const std::string & id,int64_t timestamp_us)740*d9f75844SAndroid Build Coastguard Worker RTCRemoteInboundRtpStreamStats::RTCRemoteInboundRtpStreamStats(
741*d9f75844SAndroid Build Coastguard Worker     const std::string& id,
742*d9f75844SAndroid Build Coastguard Worker     int64_t timestamp_us)
743*d9f75844SAndroid Build Coastguard Worker     : RTCRemoteInboundRtpStreamStats(std::string(id), timestamp_us) {}
744*d9f75844SAndroid Build Coastguard Worker 
RTCRemoteInboundRtpStreamStats(std::string && id,int64_t timestamp_us)745*d9f75844SAndroid Build Coastguard Worker RTCRemoteInboundRtpStreamStats::RTCRemoteInboundRtpStreamStats(
746*d9f75844SAndroid Build Coastguard Worker     std::string&& id,
747*d9f75844SAndroid Build Coastguard Worker     int64_t timestamp_us)
748*d9f75844SAndroid Build Coastguard Worker     : RTCReceivedRtpStreamStats(std::move(id), timestamp_us),
749*d9f75844SAndroid Build Coastguard Worker       local_id("localId"),
750*d9f75844SAndroid Build Coastguard Worker       round_trip_time("roundTripTime"),
751*d9f75844SAndroid Build Coastguard Worker       fraction_lost("fractionLost"),
752*d9f75844SAndroid Build Coastguard Worker       total_round_trip_time("totalRoundTripTime"),
753*d9f75844SAndroid Build Coastguard Worker       round_trip_time_measurements("roundTripTimeMeasurements") {}
754*d9f75844SAndroid Build Coastguard Worker 
755*d9f75844SAndroid Build Coastguard Worker RTCRemoteInboundRtpStreamStats::RTCRemoteInboundRtpStreamStats(
756*d9f75844SAndroid Build Coastguard Worker     const RTCRemoteInboundRtpStreamStats& other) = default;
757*d9f75844SAndroid Build Coastguard Worker 
~RTCRemoteInboundRtpStreamStats()758*d9f75844SAndroid Build Coastguard Worker RTCRemoteInboundRtpStreamStats::~RTCRemoteInboundRtpStreamStats() {}
759*d9f75844SAndroid Build Coastguard Worker 
760*d9f75844SAndroid Build Coastguard Worker // clang-format off
761*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(
762*d9f75844SAndroid Build Coastguard Worker     RTCRemoteOutboundRtpStreamStats, RTCSentRtpStreamStats,
763*d9f75844SAndroid Build Coastguard Worker     "remote-outbound-rtp",
764*d9f75844SAndroid Build Coastguard Worker     &local_id,
765*d9f75844SAndroid Build Coastguard Worker     &remote_timestamp,
766*d9f75844SAndroid Build Coastguard Worker     &reports_sent,
767*d9f75844SAndroid Build Coastguard Worker     &round_trip_time,
768*d9f75844SAndroid Build Coastguard Worker     &round_trip_time_measurements,
769*d9f75844SAndroid Build Coastguard Worker     &total_round_trip_time)
770*d9f75844SAndroid Build Coastguard Worker // clang-format on
771*d9f75844SAndroid Build Coastguard Worker 
RTCRemoteOutboundRtpStreamStats(const std::string & id,int64_t timestamp_us)772*d9f75844SAndroid Build Coastguard Worker RTCRemoteOutboundRtpStreamStats::RTCRemoteOutboundRtpStreamStats(
773*d9f75844SAndroid Build Coastguard Worker     const std::string& id,
774*d9f75844SAndroid Build Coastguard Worker     int64_t timestamp_us)
775*d9f75844SAndroid Build Coastguard Worker     : RTCRemoteOutboundRtpStreamStats(std::string(id), timestamp_us) {}
776*d9f75844SAndroid Build Coastguard Worker 
RTCRemoteOutboundRtpStreamStats(std::string && id,int64_t timestamp_us)777*d9f75844SAndroid Build Coastguard Worker RTCRemoteOutboundRtpStreamStats::RTCRemoteOutboundRtpStreamStats(
778*d9f75844SAndroid Build Coastguard Worker     std::string&& id,
779*d9f75844SAndroid Build Coastguard Worker     int64_t timestamp_us)
780*d9f75844SAndroid Build Coastguard Worker     : RTCSentRtpStreamStats(std::move(id), timestamp_us),
781*d9f75844SAndroid Build Coastguard Worker       local_id("localId"),
782*d9f75844SAndroid Build Coastguard Worker       remote_timestamp("remoteTimestamp"),
783*d9f75844SAndroid Build Coastguard Worker       reports_sent("reportsSent"),
784*d9f75844SAndroid Build Coastguard Worker       round_trip_time("roundTripTime"),
785*d9f75844SAndroid Build Coastguard Worker       round_trip_time_measurements("roundTripTimeMeasurements"),
786*d9f75844SAndroid Build Coastguard Worker       total_round_trip_time("totalRoundTripTime") {}
787*d9f75844SAndroid Build Coastguard Worker 
788*d9f75844SAndroid Build Coastguard Worker RTCRemoteOutboundRtpStreamStats::RTCRemoteOutboundRtpStreamStats(
789*d9f75844SAndroid Build Coastguard Worker     const RTCRemoteOutboundRtpStreamStats& other) = default;
790*d9f75844SAndroid Build Coastguard Worker 
~RTCRemoteOutboundRtpStreamStats()791*d9f75844SAndroid Build Coastguard Worker RTCRemoteOutboundRtpStreamStats::~RTCRemoteOutboundRtpStreamStats() {}
792*d9f75844SAndroid Build Coastguard Worker 
793*d9f75844SAndroid Build Coastguard Worker // clang-format off
794*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCMediaSourceStats, RTCStats, "parent-media-source",
795*d9f75844SAndroid Build Coastguard Worker     &track_identifier,
796*d9f75844SAndroid Build Coastguard Worker     &kind)
797*d9f75844SAndroid Build Coastguard Worker // clang-format on
798*d9f75844SAndroid Build Coastguard Worker 
RTCMediaSourceStats(const std::string & id,int64_t timestamp_us)799*d9f75844SAndroid Build Coastguard Worker RTCMediaSourceStats::RTCMediaSourceStats(const std::string& id,
800*d9f75844SAndroid Build Coastguard Worker                                          int64_t timestamp_us)
801*d9f75844SAndroid Build Coastguard Worker     : RTCMediaSourceStats(std::string(id), timestamp_us) {}
802*d9f75844SAndroid Build Coastguard Worker 
RTCMediaSourceStats(std::string && id,int64_t timestamp_us)803*d9f75844SAndroid Build Coastguard Worker RTCMediaSourceStats::RTCMediaSourceStats(std::string&& id, int64_t timestamp_us)
804*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
805*d9f75844SAndroid Build Coastguard Worker       track_identifier("trackIdentifier"),
806*d9f75844SAndroid Build Coastguard Worker       kind("kind") {}
807*d9f75844SAndroid Build Coastguard Worker 
808*d9f75844SAndroid Build Coastguard Worker RTCMediaSourceStats::RTCMediaSourceStats(const RTCMediaSourceStats& other) =
809*d9f75844SAndroid Build Coastguard Worker     default;
810*d9f75844SAndroid Build Coastguard Worker 
~RTCMediaSourceStats()811*d9f75844SAndroid Build Coastguard Worker RTCMediaSourceStats::~RTCMediaSourceStats() {}
812*d9f75844SAndroid Build Coastguard Worker 
813*d9f75844SAndroid Build Coastguard Worker // clang-format off
814*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCAudioSourceStats, RTCMediaSourceStats, "media-source",
815*d9f75844SAndroid Build Coastguard Worker     &audio_level,
816*d9f75844SAndroid Build Coastguard Worker     &total_audio_energy,
817*d9f75844SAndroid Build Coastguard Worker     &total_samples_duration,
818*d9f75844SAndroid Build Coastguard Worker     &echo_return_loss,
819*d9f75844SAndroid Build Coastguard Worker     &echo_return_loss_enhancement)
820*d9f75844SAndroid Build Coastguard Worker // clang-format on
821*d9f75844SAndroid Build Coastguard Worker 
RTCAudioSourceStats(const std::string & id,int64_t timestamp_us)822*d9f75844SAndroid Build Coastguard Worker RTCAudioSourceStats::RTCAudioSourceStats(const std::string& id,
823*d9f75844SAndroid Build Coastguard Worker                                          int64_t timestamp_us)
824*d9f75844SAndroid Build Coastguard Worker     : RTCAudioSourceStats(std::string(id), timestamp_us) {}
825*d9f75844SAndroid Build Coastguard Worker 
RTCAudioSourceStats(std::string && id,int64_t timestamp_us)826*d9f75844SAndroid Build Coastguard Worker RTCAudioSourceStats::RTCAudioSourceStats(std::string&& id, int64_t timestamp_us)
827*d9f75844SAndroid Build Coastguard Worker     : RTCMediaSourceStats(std::move(id), timestamp_us),
828*d9f75844SAndroid Build Coastguard Worker       audio_level("audioLevel"),
829*d9f75844SAndroid Build Coastguard Worker       total_audio_energy("totalAudioEnergy"),
830*d9f75844SAndroid Build Coastguard Worker       total_samples_duration("totalSamplesDuration"),
831*d9f75844SAndroid Build Coastguard Worker       echo_return_loss("echoReturnLoss"),
832*d9f75844SAndroid Build Coastguard Worker       echo_return_loss_enhancement("echoReturnLossEnhancement") {}
833*d9f75844SAndroid Build Coastguard Worker 
834*d9f75844SAndroid Build Coastguard Worker RTCAudioSourceStats::RTCAudioSourceStats(const RTCAudioSourceStats& other) =
835*d9f75844SAndroid Build Coastguard Worker     default;
836*d9f75844SAndroid Build Coastguard Worker 
~RTCAudioSourceStats()837*d9f75844SAndroid Build Coastguard Worker RTCAudioSourceStats::~RTCAudioSourceStats() {}
838*d9f75844SAndroid Build Coastguard Worker 
839*d9f75844SAndroid Build Coastguard Worker // clang-format off
840*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCVideoSourceStats, RTCMediaSourceStats, "media-source",
841*d9f75844SAndroid Build Coastguard Worker     &width,
842*d9f75844SAndroid Build Coastguard Worker     &height,
843*d9f75844SAndroid Build Coastguard Worker     &frames,
844*d9f75844SAndroid Build Coastguard Worker     &frames_per_second)
845*d9f75844SAndroid Build Coastguard Worker // clang-format on
846*d9f75844SAndroid Build Coastguard Worker 
RTCVideoSourceStats(const std::string & id,int64_t timestamp_us)847*d9f75844SAndroid Build Coastguard Worker RTCVideoSourceStats::RTCVideoSourceStats(const std::string& id,
848*d9f75844SAndroid Build Coastguard Worker                                          int64_t timestamp_us)
849*d9f75844SAndroid Build Coastguard Worker     : RTCVideoSourceStats(std::string(id), timestamp_us) {}
850*d9f75844SAndroid Build Coastguard Worker 
RTCVideoSourceStats(std::string && id,int64_t timestamp_us)851*d9f75844SAndroid Build Coastguard Worker RTCVideoSourceStats::RTCVideoSourceStats(std::string&& id, int64_t timestamp_us)
852*d9f75844SAndroid Build Coastguard Worker     : RTCMediaSourceStats(std::move(id), timestamp_us),
853*d9f75844SAndroid Build Coastguard Worker       width("width"),
854*d9f75844SAndroid Build Coastguard Worker       height("height"),
855*d9f75844SAndroid Build Coastguard Worker       frames("frames"),
856*d9f75844SAndroid Build Coastguard Worker       frames_per_second("framesPerSecond") {}
857*d9f75844SAndroid Build Coastguard Worker 
858*d9f75844SAndroid Build Coastguard Worker RTCVideoSourceStats::RTCVideoSourceStats(const RTCVideoSourceStats& other) =
859*d9f75844SAndroid Build Coastguard Worker     default;
860*d9f75844SAndroid Build Coastguard Worker 
~RTCVideoSourceStats()861*d9f75844SAndroid Build Coastguard Worker RTCVideoSourceStats::~RTCVideoSourceStats() {}
862*d9f75844SAndroid Build Coastguard Worker 
863*d9f75844SAndroid Build Coastguard Worker // clang-format off
864*d9f75844SAndroid Build Coastguard Worker WEBRTC_RTCSTATS_IMPL(RTCTransportStats, RTCStats, "transport",
865*d9f75844SAndroid Build Coastguard Worker     &bytes_sent,
866*d9f75844SAndroid Build Coastguard Worker     &packets_sent,
867*d9f75844SAndroid Build Coastguard Worker     &bytes_received,
868*d9f75844SAndroid Build Coastguard Worker     &packets_received,
869*d9f75844SAndroid Build Coastguard Worker     &rtcp_transport_stats_id,
870*d9f75844SAndroid Build Coastguard Worker     &dtls_state,
871*d9f75844SAndroid Build Coastguard Worker     &selected_candidate_pair_id,
872*d9f75844SAndroid Build Coastguard Worker     &local_certificate_id,
873*d9f75844SAndroid Build Coastguard Worker     &remote_certificate_id,
874*d9f75844SAndroid Build Coastguard Worker     &tls_version,
875*d9f75844SAndroid Build Coastguard Worker     &dtls_cipher,
876*d9f75844SAndroid Build Coastguard Worker     &dtls_role,
877*d9f75844SAndroid Build Coastguard Worker     &srtp_cipher,
878*d9f75844SAndroid Build Coastguard Worker     &selected_candidate_pair_changes,
879*d9f75844SAndroid Build Coastguard Worker     &ice_role,
880*d9f75844SAndroid Build Coastguard Worker     &ice_local_username_fragment,
881*d9f75844SAndroid Build Coastguard Worker     &ice_state)
882*d9f75844SAndroid Build Coastguard Worker // clang-format on
883*d9f75844SAndroid Build Coastguard Worker 
RTCTransportStats(const std::string & id,int64_t timestamp_us)884*d9f75844SAndroid Build Coastguard Worker RTCTransportStats::RTCTransportStats(const std::string& id,
885*d9f75844SAndroid Build Coastguard Worker                                      int64_t timestamp_us)
886*d9f75844SAndroid Build Coastguard Worker     : RTCTransportStats(std::string(id), timestamp_us) {}
887*d9f75844SAndroid Build Coastguard Worker 
RTCTransportStats(std::string && id,int64_t timestamp_us)888*d9f75844SAndroid Build Coastguard Worker RTCTransportStats::RTCTransportStats(std::string&& id, int64_t timestamp_us)
889*d9f75844SAndroid Build Coastguard Worker     : RTCStats(std::move(id), timestamp_us),
890*d9f75844SAndroid Build Coastguard Worker       bytes_sent("bytesSent"),
891*d9f75844SAndroid Build Coastguard Worker       packets_sent("packetsSent"),
892*d9f75844SAndroid Build Coastguard Worker       bytes_received("bytesReceived"),
893*d9f75844SAndroid Build Coastguard Worker       packets_received("packetsReceived"),
894*d9f75844SAndroid Build Coastguard Worker       rtcp_transport_stats_id("rtcpTransportStatsId"),
895*d9f75844SAndroid Build Coastguard Worker       dtls_state("dtlsState"),
896*d9f75844SAndroid Build Coastguard Worker       selected_candidate_pair_id("selectedCandidatePairId"),
897*d9f75844SAndroid Build Coastguard Worker       local_certificate_id("localCertificateId"),
898*d9f75844SAndroid Build Coastguard Worker       remote_certificate_id("remoteCertificateId"),
899*d9f75844SAndroid Build Coastguard Worker       tls_version("tlsVersion"),
900*d9f75844SAndroid Build Coastguard Worker       dtls_cipher("dtlsCipher"),
901*d9f75844SAndroid Build Coastguard Worker       dtls_role("dtlsRole"),
902*d9f75844SAndroid Build Coastguard Worker       srtp_cipher("srtpCipher"),
903*d9f75844SAndroid Build Coastguard Worker       selected_candidate_pair_changes("selectedCandidatePairChanges"),
904*d9f75844SAndroid Build Coastguard Worker       ice_role("iceRole"),
905*d9f75844SAndroid Build Coastguard Worker       ice_local_username_fragment("iceLocalUsernameFragment"),
906*d9f75844SAndroid Build Coastguard Worker       ice_state("iceState") {}
907*d9f75844SAndroid Build Coastguard Worker 
908*d9f75844SAndroid Build Coastguard Worker RTCTransportStats::RTCTransportStats(const RTCTransportStats& other) = default;
909*d9f75844SAndroid Build Coastguard Worker 
~RTCTransportStats()910*d9f75844SAndroid Build Coastguard Worker RTCTransportStats::~RTCTransportStats() {}
911*d9f75844SAndroid Build Coastguard Worker 
912*d9f75844SAndroid Build Coastguard Worker }  // namespace webrtc
913