| /* |
| * Copyright 2016 The WebRTC Project Authors. All rights reserved. |
| * |
| * Use of this source code is governed by a BSD-style license |
| * that can be found in the LICENSE file in the root of the source |
| * tree. An additional intellectual property rights grant can be found |
| * in the file PATENTS. All contributing project authors may |
| * be found in the AUTHORS file in the root of the source tree. |
| */ |
| |
| #include "api/stats/rtcstats_objects.h" |
| |
| #include <utility> |
| |
| #include "api/stats/attribute.h" |
| #include "api/stats/rtc_stats.h" |
| #include "rtc_base/checks.h" |
| |
| namespace webrtc { |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCCertificateStats, RTCStats, "certificate", |
| AttributeInit("fingerprint", &fingerprint), |
| AttributeInit("fingerprintAlgorithm", &fingerprint_algorithm), |
| AttributeInit("base64Certificate", &base64_certificate), |
| AttributeInit("issuerCertificateId", &issuer_certificate_id)) |
| // clang-format on |
| |
| RTCCertificateStats::RTCCertificateStats(std::string id, Timestamp timestamp) |
| : RTCStats(std::move(id), timestamp) {} |
| |
| RTCCertificateStats::~RTCCertificateStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCCodecStats, RTCStats, "codec", |
| AttributeInit("transportId", &transport_id), |
| AttributeInit("payloadType", &payload_type), |
| AttributeInit("mimeType", &mime_type), |
| AttributeInit("clockRate", &clock_rate), |
| AttributeInit("channels", &channels), |
| AttributeInit("sdpFmtpLine", &sdp_fmtp_line)) |
| // clang-format on |
| |
| RTCCodecStats::RTCCodecStats(std::string id, Timestamp timestamp) |
| : RTCStats(std::move(id), timestamp) {} |
| |
| RTCCodecStats::~RTCCodecStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCDataChannelStats, RTCStats, "data-channel", |
| AttributeInit("label", &label), |
| AttributeInit("protocol", &protocol), |
| AttributeInit("dataChannelIdentifier", &data_channel_identifier), |
| AttributeInit("state", &state), |
| AttributeInit("messagesSent", &messages_sent), |
| AttributeInit("bytesSent", &bytes_sent), |
| AttributeInit("messagesReceived", &messages_received), |
| AttributeInit("bytesReceived", &bytes_received)) |
| // clang-format on |
| |
| RTCDataChannelStats::RTCDataChannelStats(std::string id, Timestamp timestamp) |
| : RTCStats(std::move(id), timestamp) {} |
| |
| RTCDataChannelStats::~RTCDataChannelStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCIceCandidatePairStats, RTCStats, "candidate-pair", |
| AttributeInit("transportId", &transport_id), |
| AttributeInit("localCandidateId", &local_candidate_id), |
| AttributeInit("remoteCandidateId", &remote_candidate_id), |
| AttributeInit("state", &state), |
| AttributeInit("priority", &priority), |
| AttributeInit("nominated", &nominated), |
| AttributeInit("writable", &writable), |
| AttributeInit("packetsSent", &packets_sent), |
| AttributeInit("packetsReceived", &packets_received), |
| AttributeInit("bytesSent", &bytes_sent), |
| AttributeInit("bytesReceived", &bytes_received), |
| AttributeInit("totalRoundTripTime", &total_round_trip_time), |
| AttributeInit("currentRoundTripTime", ¤t_round_trip_time), |
| AttributeInit("availableOutgoingBitrate", &available_outgoing_bitrate), |
| AttributeInit("availableIncomingBitrate", &available_incoming_bitrate), |
| AttributeInit("requestsReceived", &requests_received), |
| AttributeInit("requestsSent", &requests_sent), |
| AttributeInit("responsesReceived", &responses_received), |
| AttributeInit("responsesSent", &responses_sent), |
| AttributeInit("consentRequestsSent", &consent_requests_sent), |
| AttributeInit("packetsDiscardedOnSend", &packets_discarded_on_send), |
| AttributeInit("bytesDiscardedOnSend", &bytes_discarded_on_send), |
| AttributeInit("lastPacketReceivedTimestamp", |
| &last_packet_received_timestamp), |
| AttributeInit("lastPacketSentTimestamp", &last_packet_sent_timestamp)) |
| // clang-format on |
| |
| RTCIceCandidatePairStats::RTCIceCandidatePairStats(std::string id, |
| Timestamp timestamp) |
| : RTCStats(std::move(id), timestamp) {} |
| |
| RTCIceCandidatePairStats::~RTCIceCandidatePairStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCIceCandidateStats, RTCStats, "abstract-ice-candidate", |
| AttributeInit("transportId", &transport_id), |
| AttributeInit("isRemote", &is_remote), |
| AttributeInit("networkType", &network_type), |
| AttributeInit("ip", &ip), |
| AttributeInit("address", &address), |
| AttributeInit("port", &port), |
| AttributeInit("protocol", &protocol), |
| AttributeInit("relayProtocol", &relay_protocol), |
| AttributeInit("candidateType", &candidate_type), |
| AttributeInit("priority", &priority), |
| AttributeInit("url", &url), |
| AttributeInit("foundation", &foundation), |
| AttributeInit("relatedAddress", &related_address), |
| AttributeInit("relatedPort", &related_port), |
| AttributeInit("usernameFragment", &username_fragment), |
| AttributeInit("tcpType", &tcp_type), |
| AttributeInit("vpn", &vpn), |
| AttributeInit("networkAdapterType", &network_adapter_type)) |
| // clang-format on |
| |
| RTCIceCandidateStats::RTCIceCandidateStats(std::string id, |
| Timestamp timestamp, |
| bool is_remote) |
| : RTCStats(std::move(id), timestamp), is_remote(is_remote) {} |
| |
| RTCIceCandidateStats::~RTCIceCandidateStats() {} |
| |
| const char RTCLocalIceCandidateStats::kType[] = "local-candidate"; |
| |
| RTCLocalIceCandidateStats::RTCLocalIceCandidateStats(std::string id, |
| Timestamp timestamp) |
| : RTCIceCandidateStats(std::move(id), timestamp, false) {} |
| |
| std::unique_ptr<RTCStats> RTCLocalIceCandidateStats::copy() const { |
| return std::make_unique<RTCLocalIceCandidateStats>(*this); |
| } |
| |
| const char* RTCLocalIceCandidateStats::type() const { |
| return kType; |
| } |
| |
| const char RTCRemoteIceCandidateStats::kType[] = "remote-candidate"; |
| |
| RTCRemoteIceCandidateStats::RTCRemoteIceCandidateStats(std::string id, |
| Timestamp timestamp) |
| : RTCIceCandidateStats(std::move(id), timestamp, true) {} |
| |
| std::unique_ptr<RTCStats> RTCRemoteIceCandidateStats::copy() const { |
| return std::make_unique<RTCRemoteIceCandidateStats>(*this); |
| } |
| |
| const char* RTCRemoteIceCandidateStats::type() const { |
| return kType; |
| } |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCPeerConnectionStats, RTCStats, "peer-connection", |
| AttributeInit("dataChannelsOpened", &data_channels_opened), |
| AttributeInit("dataChannelsClosed", &data_channels_closed)) |
| // clang-format on |
| |
| RTCPeerConnectionStats::RTCPeerConnectionStats(std::string id, |
| Timestamp timestamp) |
| : RTCStats(std::move(id), timestamp) {} |
| |
| RTCPeerConnectionStats::~RTCPeerConnectionStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCRtpStreamStats, RTCStats, "rtp", |
| AttributeInit("ssrc", &ssrc), |
| AttributeInit("kind", &kind), |
| AttributeInit("transportId", &transport_id), |
| AttributeInit("codecId", &codec_id)) |
| // clang-format on |
| |
| RTCRtpStreamStats::RTCRtpStreamStats(std::string id, Timestamp timestamp) |
| : RTCStats(std::move(id), timestamp) {} |
| |
| RTCRtpStreamStats::~RTCRtpStreamStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL( |
| RTCReceivedRtpStreamStats, RTCRtpStreamStats, "received-rtp", |
| AttributeInit("jitter", &jitter), |
| AttributeInit("packetsLost", &packets_lost)) |
| // clang-format on |
| |
| RTCReceivedRtpStreamStats::RTCReceivedRtpStreamStats(std::string id, |
| Timestamp timestamp) |
| : RTCRtpStreamStats(std::move(id), timestamp) {} |
| |
| RTCReceivedRtpStreamStats::~RTCReceivedRtpStreamStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCSentRtpStreamStats, RTCRtpStreamStats, "sent-rtp", |
| AttributeInit("packetsSent", &packets_sent), |
| AttributeInit("bytesSent", &bytes_sent)) |
| // clang-format on |
| |
| RTCSentRtpStreamStats::RTCSentRtpStreamStats(std::string id, |
| Timestamp timestamp) |
| : RTCRtpStreamStats(std::move(id), timestamp) {} |
| |
| RTCSentRtpStreamStats::~RTCSentRtpStreamStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL( |
| RTCInboundRtpStreamStats, RTCReceivedRtpStreamStats, "inbound-rtp", |
| AttributeInit("playoutId", &playout_id), |
| AttributeInit("trackIdentifier", &track_identifier), |
| AttributeInit("mid", &mid), |
| AttributeInit("remoteId", &remote_id), |
| AttributeInit("packetsReceived", &packets_received), |
| AttributeInit("packetsDiscarded", &packets_discarded), |
| AttributeInit("fecPacketsReceived", &fec_packets_received), |
| AttributeInit("fecBytesReceived", &fec_bytes_received), |
| AttributeInit("fecPacketsDiscarded", &fec_packets_discarded), |
| AttributeInit("fecSsrc", &fec_ssrc), |
| AttributeInit("bytesReceived", &bytes_received), |
| AttributeInit("headerBytesReceived", &header_bytes_received), |
| AttributeInit("retransmittedPacketsReceived", |
| &retransmitted_packets_received), |
| AttributeInit("retransmittedBytesReceived", &retransmitted_bytes_received), |
| AttributeInit("rtxSsrc", &rtx_ssrc), |
| AttributeInit("lastPacketReceivedTimestamp", |
| &last_packet_received_timestamp), |
| AttributeInit("jitterBufferDelay", &jitter_buffer_delay), |
| AttributeInit("jitterBufferTargetDelay", &jitter_buffer_target_delay), |
| AttributeInit("jitterBufferMinimumDelay", &jitter_buffer_minimum_delay), |
| AttributeInit("jitterBufferEmittedCount", &jitter_buffer_emitted_count), |
| AttributeInit("totalSamplesReceived", &total_samples_received), |
| AttributeInit("concealedSamples", &concealed_samples), |
| AttributeInit("silentConcealedSamples", &silent_concealed_samples), |
| AttributeInit("concealmentEvents", &concealment_events), |
| AttributeInit("insertedSamplesForDeceleration", |
| &inserted_samples_for_deceleration), |
| AttributeInit("removedSamplesForAcceleration", |
| &removed_samples_for_acceleration), |
| AttributeInit("audioLevel", &audio_level), |
| AttributeInit("totalAudioEnergy", &total_audio_energy), |
| AttributeInit("totalSamplesDuration", &total_samples_duration), |
| AttributeInit("framesReceived", &frames_received), |
| AttributeInit("frameWidth", &frame_width), |
| AttributeInit("frameHeight", &frame_height), |
| AttributeInit("framesPerSecond", &frames_per_second), |
| AttributeInit("framesDecoded", &frames_decoded), |
| AttributeInit("keyFramesDecoded", &key_frames_decoded), |
| AttributeInit("framesDropped", &frames_dropped), |
| AttributeInit("totalDecodeTime", &total_decode_time), |
| AttributeInit("totalProcessingDelay", &total_processing_delay), |
| AttributeInit("totalAssemblyTime", &total_assembly_time), |
| AttributeInit("framesAssembledFromMultiplePackets", |
| &frames_assembled_from_multiple_packets), |
| AttributeInit("totalInterFrameDelay", &total_inter_frame_delay), |
| AttributeInit("totalSquaredInterFrameDelay", |
| &total_squared_inter_frame_delay), |
| AttributeInit("pauseCount", &pause_count), |
| AttributeInit("totalPausesDuration", &total_pauses_duration), |
| AttributeInit("freezeCount", &freeze_count), |
| AttributeInit("totalFreezesDuration", &total_freezes_duration), |
| AttributeInit("contentType", &content_type), |
| AttributeInit("estimatedPlayoutTimestamp", &estimated_playout_timestamp), |
| AttributeInit("decoderImplementation", &decoder_implementation), |
| AttributeInit("firCount", &fir_count), |
| AttributeInit("pliCount", &pli_count), |
| AttributeInit("nackCount", &nack_count), |
| AttributeInit("qpSum", &qp_sum), |
| AttributeInit("googTimingFrameInfo", &goog_timing_frame_info), |
| AttributeInit("powerEfficientDecoder", &power_efficient_decoder), |
| AttributeInit("jitterBufferFlushes", &jitter_buffer_flushes), |
| AttributeInit("delayedPacketOutageSamples", &delayed_packet_outage_samples), |
| AttributeInit("relativePacketArrivalDelay", &relative_packet_arrival_delay), |
| AttributeInit("interruptionCount", &interruption_count), |
| AttributeInit("totalInterruptionDuration", &total_interruption_duration), |
| AttributeInit("minPlayoutDelay", &min_playout_delay)) |
| // clang-format on |
| |
| RTCInboundRtpStreamStats::RTCInboundRtpStreamStats(std::string id, |
| Timestamp timestamp) |
| : RTCReceivedRtpStreamStats(std::move(id), timestamp) {} |
| |
| RTCInboundRtpStreamStats::~RTCInboundRtpStreamStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL( |
| RTCOutboundRtpStreamStats, RTCSentRtpStreamStats, "outbound-rtp", |
| AttributeInit("mediaSourceId", &media_source_id), |
| AttributeInit("remoteId", &remote_id), |
| AttributeInit("mid", &mid), |
| AttributeInit("rid", &rid), |
| AttributeInit("retransmittedPacketsSent", &retransmitted_packets_sent), |
| AttributeInit("headerBytesSent", &header_bytes_sent), |
| AttributeInit("retransmittedBytesSent", &retransmitted_bytes_sent), |
| AttributeInit("targetBitrate", &target_bitrate), |
| AttributeInit("framesEncoded", &frames_encoded), |
| AttributeInit("keyFramesEncoded", &key_frames_encoded), |
| AttributeInit("totalEncodeTime", &total_encode_time), |
| AttributeInit("totalEncodedBytesTarget", &total_encoded_bytes_target), |
| AttributeInit("frameWidth", &frame_width), |
| AttributeInit("frameHeight", &frame_height), |
| AttributeInit("framesPerSecond", &frames_per_second), |
| AttributeInit("framesSent", &frames_sent), |
| AttributeInit("hugeFramesSent", &huge_frames_sent), |
| AttributeInit("totalPacketSendDelay", &total_packet_send_delay), |
| AttributeInit("qualityLimitationReason", &quality_limitation_reason), |
| AttributeInit("qualityLimitationDurations", &quality_limitation_durations), |
| AttributeInit("qualityLimitationResolutionChanges", |
| &quality_limitation_resolution_changes), |
| AttributeInit("contentType", &content_type), |
| AttributeInit("encoderImplementation", &encoder_implementation), |
| AttributeInit("firCount", &fir_count), |
| AttributeInit("pliCount", &pli_count), |
| AttributeInit("nackCount", &nack_count), |
| AttributeInit("qpSum", &qp_sum), |
| AttributeInit("active", &active), |
| AttributeInit("powerEfficientEncoder", &power_efficient_encoder), |
| AttributeInit("scalabilityMode", &scalability_mode), |
| AttributeInit("rtxSsrc", &rtx_ssrc)) |
| // clang-format on |
| |
| RTCOutboundRtpStreamStats::RTCOutboundRtpStreamStats(std::string id, |
| Timestamp timestamp) |
| : RTCSentRtpStreamStats(std::move(id), timestamp) {} |
| |
| RTCOutboundRtpStreamStats::~RTCOutboundRtpStreamStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL( |
| RTCRemoteInboundRtpStreamStats, RTCReceivedRtpStreamStats, |
| "remote-inbound-rtp", |
| AttributeInit("localId", &local_id), |
| AttributeInit("roundTripTime", &round_trip_time), |
| AttributeInit("fractionLost", &fraction_lost), |
| AttributeInit("totalRoundTripTime", &total_round_trip_time), |
| AttributeInit("roundTripTimeMeasurements", &round_trip_time_measurements)) |
| // clang-format on |
| |
| RTCRemoteInboundRtpStreamStats::RTCRemoteInboundRtpStreamStats( |
| std::string id, |
| Timestamp timestamp) |
| : RTCReceivedRtpStreamStats(std::move(id), timestamp) {} |
| |
| RTCRemoteInboundRtpStreamStats::~RTCRemoteInboundRtpStreamStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL( |
| RTCRemoteOutboundRtpStreamStats, RTCSentRtpStreamStats, |
| "remote-outbound-rtp", |
| AttributeInit("localId", &local_id), |
| AttributeInit("remoteTimestamp", &remote_timestamp), |
| AttributeInit("reportsSent", &reports_sent), |
| AttributeInit("roundTripTime", &round_trip_time), |
| AttributeInit("roundTripTimeMeasurements", &round_trip_time_measurements), |
| AttributeInit("totalRoundTripTime", &total_round_trip_time)) |
| // clang-format on |
| |
| RTCRemoteOutboundRtpStreamStats::RTCRemoteOutboundRtpStreamStats( |
| std::string id, |
| Timestamp timestamp) |
| : RTCSentRtpStreamStats(std::move(id), timestamp) {} |
| |
| RTCRemoteOutboundRtpStreamStats::~RTCRemoteOutboundRtpStreamStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCMediaSourceStats, RTCStats, "parent-media-source", |
| AttributeInit("trackIdentifier", &track_identifier), |
| AttributeInit("kind", &kind)) |
| // clang-format on |
| |
| RTCMediaSourceStats::RTCMediaSourceStats(std::string id, Timestamp timestamp) |
| : RTCStats(std::move(id), timestamp) {} |
| |
| RTCMediaSourceStats::~RTCMediaSourceStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCAudioSourceStats, RTCMediaSourceStats, "media-source", |
| AttributeInit("audioLevel", &audio_level), |
| AttributeInit("totalAudioEnergy", &total_audio_energy), |
| AttributeInit("totalSamplesDuration", &total_samples_duration), |
| AttributeInit("echoReturnLoss", &echo_return_loss), |
| AttributeInit("echoReturnLossEnhancement", &echo_return_loss_enhancement)) |
| // clang-format on |
| |
| RTCAudioSourceStats::RTCAudioSourceStats(std::string id, Timestamp timestamp) |
| : RTCMediaSourceStats(std::move(id), timestamp) {} |
| |
| RTCAudioSourceStats::~RTCAudioSourceStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCVideoSourceStats, RTCMediaSourceStats, "media-source", |
| AttributeInit("width", &width), |
| AttributeInit("height", &height), |
| AttributeInit("frames", &frames), |
| AttributeInit("framesPerSecond", &frames_per_second)) |
| // clang-format on |
| |
| RTCVideoSourceStats::RTCVideoSourceStats(std::string id, Timestamp timestamp) |
| : RTCMediaSourceStats(std::move(id), timestamp) {} |
| |
| RTCVideoSourceStats::~RTCVideoSourceStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCTransportStats, RTCStats, "transport", |
| AttributeInit("bytesSent", &bytes_sent), |
| AttributeInit("packetsSent", &packets_sent), |
| AttributeInit("bytesReceived", &bytes_received), |
| AttributeInit("packetsReceived", &packets_received), |
| AttributeInit("rtcpTransportStatsId", &rtcp_transport_stats_id), |
| AttributeInit("dtlsState", &dtls_state), |
| AttributeInit("selectedCandidatePairId", &selected_candidate_pair_id), |
| AttributeInit("localCertificateId", &local_certificate_id), |
| AttributeInit("remoteCertificateId", &remote_certificate_id), |
| AttributeInit("tlsVersion", &tls_version), |
| AttributeInit("dtlsCipher", &dtls_cipher), |
| AttributeInit("dtlsRole", &dtls_role), |
| AttributeInit("srtpCipher", &srtp_cipher), |
| AttributeInit("selectedCandidatePairChanges", |
| &selected_candidate_pair_changes), |
| AttributeInit("iceRole", &ice_role), |
| AttributeInit("iceLocalUsernameFragment", &ice_local_username_fragment), |
| AttributeInit("iceState", &ice_state)) |
| // clang-format on |
| |
| RTCTransportStats::RTCTransportStats(std::string id, Timestamp timestamp) |
| : RTCStats(std::move(id), timestamp) {} |
| |
| RTCTransportStats::~RTCTransportStats() {} |
| |
| // clang-format off |
| WEBRTC_RTCSTATS_IMPL(RTCAudioPlayoutStats, RTCStats, "media-playout", |
| AttributeInit("kind", &kind), |
| AttributeInit("synthesizedSamplesDuration", &synthesized_samples_duration), |
| AttributeInit("synthesizedSamplesEvents", &synthesized_samples_events), |
| AttributeInit("totalSamplesDuration", &total_samples_duration), |
| AttributeInit("totalPlayoutDelay", &total_playout_delay), |
| AttributeInit("totalSamplesCount", &total_samples_count)) |
| // clang-format on |
| |
| RTCAudioPlayoutStats::RTCAudioPlayoutStats(const std::string& id, |
| Timestamp timestamp) |
| : RTCStats(std::move(id), timestamp), kind("audio") {} |
| |
| RTCAudioPlayoutStats::~RTCAudioPlayoutStats() {} |
| |
| } // namespace webrtc |